.dm-cinematic{display:none}@media (prefers-reduced-motion:no-preference){.dm-cinematic{display:block}}:root{--dm-z-canvas:0;--dm-z-content:10;--dm-z-dais:20;--dm-z-quick-index:30;--dm-z-a11y:40;--dm-z-reading:10;--dm-font-ritual:ui-serif,Georgia,"Times New Roman",serif;--dm-font-functional:ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;--dm-font-mono:ui-monospace,"Cascadia Mono","Segoe UI Mono",monospace;--dm-panel:#0a0c10;--dm-ink:#e8eaed}*{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--dm-panel);color:var(--dm-ink);font-family:var(--dm-font-functional)}:focus-visible{outline:2px solid #e8eaed;outline-offset:2px;box-shadow:0 0 0 3px #0a0c10}.dm-skip-link{position:absolute;left:-9999px;z-index:var(--dm-z-a11y);padding:.75rem 1rem;background:var(--dm-panel);color:var(--dm-ink)}.dm-skip-link:focus{left:0;top:0}.dm-panel{position:fixed;z-index:var(--dm-z-content);overflow-y:auto;overscroll-behavior:contain;left:0;right:0;top:22%;height:62%}@media (min-aspect-ratio:4/5){.dm-panel{top:28%;height:52%}}@media (min-aspect-ratio:6/5){.dm-panel{left:58%;right:0;top:0;height:100%}}@media (min-aspect-ratio:19/10){.dm-panel{left:62%;top:8%;height:80%}}.dm-content{max-width:68ch;margin:0 auto;padding:2rem 1.25rem 1rem}.dm-dais-ui{position:fixed;z-index:var(--dm-z-dais);left:0;bottom:0;padding:1rem 1.25rem}@media (min-aspect-ratio:6/5){.dm-dais-ui{right:42%}}@media (min-aspect-ratio:19/10){.dm-dais-ui{right:38%}}.dm-dais-ui ul{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:1rem}.dm-dais-ui a{display:block;padding:.5rem 0;color:var(--dm-ink)}.dm-dais-label{display:block;font-family:var(--dm-font-mono);letter-spacing:.08em}.dm-dais-gloss{display:block;opacity:.75;font-size:.875em}.dm-quick-index{position:relative;z-index:var(--dm-z-quick-index);max-width:68ch;margin:0 auto;padding:0 1.25rem 1rem}.dm-quick-index-panel{padding-top:1rem}.dm-quick-index-name{font-family:var(--dm-font-ritual);font-size:1.25rem}.dm-a11y{position:relative;z-index:var(--dm-z-a11y);max-width:68ch;margin:0 auto;padding:0 1.25rem 2rem}.dm-live-region{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}body,html{height:100%;overflow:hidden}.dm-a11y-controls label{display:block;padding:.25rem 0}:root{--dm-link:#a8c8e8}a{color:var(--dm-link);text-decoration:underline;text-underline-offset:.15em}a:hover{text-decoration-thickness:2px}.dm-dais-ui a,.dm-quick-index>summary{color:var(--dm-ink);text-decoration:none}.dm-dais-ui a:focus-visible,.dm-dais-ui a:hover{text-decoration:underline}.dm-canvas-layer{position:fixed;inset:0;z-index:var(--dm-z-canvas);pointer-events:none}.dm-panel{background:var(--dm-panel)}:root{--dm-ink:#e8e5dc;--dm-link:#c8d9da;--dm-gold:#c8b18b}.dm-static-art{position:fixed;inset:0;z-index:0;pointer-events:none}.dm-static-art img{width:100%;height:100%;object-fit:cover}.dm-panel{border-left:1px solid #3d3d35;scrollbar-width:thin;scrollbar-color:#58594f transparent}.dm-panel-toolbar{display:flex;align-items:center;justify-content:space-between;gap:1rem;position:sticky;top:0;padding:1.1rem 1.5rem;border-bottom:1px solid #303330;background:var(--dm-panel);z-index:3}.dm-panel-toolbar>span{font:.6rem var(--dm-font-mono);letter-spacing:.2em;color:var(--dm-gold)}.dm-panel-toolbar .dm-quick-index{margin:0;padding:0;font-size:.75rem}.dm-quick-index-panel{position:absolute;top:2rem;right:0;width:min(27rem,85vw);max-height:65vh;overflow:auto;padding:1.5rem;border:1px solid #55564a;background:var(--dm-panel)}.dm-content{padding:2.5rem 2rem 1.5rem;font-size:.95rem;line-height:1.75}.dm-content h1{font-family:var(--dm-font-ritual);font-weight:400;font-size:clamp(2rem,3.2vw,3.7rem);line-height:1.12;letter-spacing:-.035em;margin:0 0 1.8rem;overflow-wrap:anywhere}.dm-content h2:not(.arcade-root *){font-family:var(--dm-font-ritual);font-size:1.5rem;font-weight:400;line-height:1.3;margin-top:2.5rem}.dm-content>p:first-of-type{color:#d2c3a9}.dm-content ul:not(.arcade-root *){padding-left:1.2rem}.dm-content li:not(.arcade-root *){margin-bottom:1rem}.dm-content pre{overflow-x:auto;padding:1rem;background:#171e20}.dm-content article{border-top:1px solid #313631;padding-top:1rem}.dm-a11y{padding:1rem 2rem 2rem;border-top:1px solid #303330}.dm-a11y h2{font:.65rem var(--dm-font-mono);text-transform:uppercase;letter-spacing:.2em;color:var(--dm-gold)}.dm-a11y-controls label{font-size:.75rem;padding:.3rem 0}.dm-a11y-controls input{accent-color:#bca37d}.dm-dais-ui{padding:1.2rem 2rem;background:linear-gradient(transparent,#080f12 35%)}.dm-dais-ui ul{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:.5rem}.dm-dais-ui a{min-height:54px;padding:.8rem .45rem;border-top:1px solid #62685c}.dm-dais-ui a[aria-current=page]{border-color:#e6c58f;color:#f3d7a9;background:linear-gradient(#b09a6220,transparent)}.dm-dais-ui a[data-pending=true]{border-color:#f3d7a9;color:#fff3d4;background:#66512b;outline:2px solid #f3d7a9;outline-offset:-2px}.dm-dais-label{font-size:.65rem;letter-spacing:.09em}.dm-dais-gloss{font-size:.7rem;opacity:1;color:#b6c3be;margin-top:.3rem}@media (max-aspect-ratio:6/5){.dm-panel{border-top:1px solid #55564a;border-left:0}.dm-panel-toolbar{padding:.75rem 1.2rem}.dm-content{padding:1.5rem 1.25rem}.dm-dais-ui{right:0;height:20%;padding:1rem;display:grid;align-items:center;background:#080f12}}@media (max-aspect-ratio:4/5){.dm-dais-ui{height:16%;padding:.4rem .7rem}.dm-dais-ui ul{grid-template-columns:repeat(3,minmax(0,1fr));gap:.25rem .7rem}.dm-dais-ui a{min-height:44px;padding:.35rem .2rem}.dm-dais-gloss{font-size:.62rem;margin-top:.2rem}.dm-content h1{font-size:2.1rem}}@media (max-height:500px) and (min-aspect-ratio:6/5){.dm-dais-ui{padding:.5rem}.dm-dais-ui a{padding:.5rem .1rem}}.dm-panel[hidden]{display:none!important}.dm-v5-enhanced .dm-panel{position:fixed;inset:0;top:var(--dm-tools-clearance,0);width:100%;height:calc(100dvh - var(--dm-tools-clearance, 0px));max-height:none;z-index:var(--dm-z-reading);overflow:auto;background:#070d10bd;border:0;padding-top:0;padding-bottom:calc(5vh + var(--dm-dais-clearance, 0px))}.dm-v5-enhanced .dm-panel-toolbar{max-width:1140px;margin:0 auto;padding:16px 24px;background:#101615f5}.dm-v5-enhanced .dm-reading-layout{display:grid;grid-template-columns:180px minmax(0,860px);align-items:start;gap:24px;max-width:1140px;margin:24px auto;padding:0 24px}.dm-v5-enhanced .dm-content{grid-column:2;min-width:0;padding:40px;background:#101615f5;border:1px solid #655740;box-shadow:0 18px 75px #0005;font-size:1rem;line-height:1.85}.dm-v5-enhanced .dm-content h2,.dm-v5-enhanced .dm-content h3{scroll-margin-top:90px}.dm-v5-enhanced .dm-content h1{font-size:clamp(2rem,4vw,3.5rem)}.dm-v5 button,.dm-v5 summary,.dm-v5-tools>a{color:#f2e7d1;background:#111a1af2;border:1px solid #75634b;border-radius:2px;padding:10px 14px;font:inherit;cursor:pointer;min-height:44px}.dm-v5 :focus-visible{outline:3px solid #ffe1a7;outline-offset:4px}.dm-v5-tools{position:fixed;top:22px;right:24px;z-index:var(--dm-z-quick-index);display:flex;align-items:start;gap:8px;font:12px var(--dm-font-mono)}.dm-v5-tools .dm-quick-index{margin:0;padding:0}.dm-v5-tools .dm-quick-index-panel{top:52px}.dm-v5-settings{position:relative}.dm-v5-settings>div,.dm-v5-settings>section{position:absolute;right:0;top:55px;width:240px;padding:18px;background:#101615;border:1px solid #75634b}.dm-v5-enhanced .dm-dais-ui{left:0;right:0;bottom:0;width:100%;height:auto;padding:12px max(24px,calc((100vw - 1080px)/2));background:linear-gradient(transparent,#05090cf2 30%);z-index:var(--dm-z-dais)}@media (max-width:650px){.dm-v5-tools{top:60px;left:12px;right:12px;justify-content:flex-end;gap:5px;font-size:10px}.dm-v5 button,.dm-v5 summary,.dm-v5-tools>a{padding:9px 8px}.dm-v5-enhanced .dm-panel-toolbar{padding:10px 12px}.dm-v5-enhanced .dm-reading-layout{grid-template-columns:92px minmax(0,1fr);gap:10px;padding:0 10px;margin:14px auto}.dm-v5-enhanced .dm-content{padding:16px;font-size:.9rem}.dm-v5-enhanced .dm-content h1{font-size:1.9rem}.dm-v5-enhanced .dm-dais-ui{padding:8px 12px}}.dm-v5 .dm-exhibit-center{position:fixed;z-index:3;visibility:hidden;transform:translate(-50%,-50%);width:56px;height:56px;padding:0;border:0;border-radius:50%;background:transparent}.dm-exhibit-halo{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:160px;height:160px;max-width:none;pointer-events:none}.dm-exhibit-halo-active{opacity:0}.dm-v5 .dm-exhibit-center span{position:absolute;top:calc(100% + 8px);left:50%;transform:translateX(-50%);padding:4px 8px;background:#111a1af2;border:1px solid #75634b;color:#ffe1a7;font:11px var(--dm-font-mono);letter-spacing:.08em}.dm-exhibit-center:is(:hover,:focus-visible) .dm-exhibit-halo{opacity:0}.dm-exhibit-center:is(:hover,:focus-visible) .dm-exhibit-halo-active{opacity:1}html:has(.portfolio-shell){color-scheme:light;scrollbar-gutter:stable}body:has(.portfolio-shell),html:has(.portfolio-shell){height:auto;min-height:100%;overflow:visible;background:#f5f5f2;color:#141414}.portfolio-shell{--paper:#f5f5f2;--paper-2:#ecece7;--paper-3:#e2e2dc;--ink:#141414;--ink-2:#3b3b38;--muted:#66665f;--line:#d6d6cf;--line-strong:#141414;--accent:#8a3b26;--accent-ink:#6f2d1b;--signal:#2f6b45;--olive:var(--accent);--display:var(--font-loaded-display),"EB Garamond",Garamond,Georgia,serif;--sans:var(--font-loaded-text),Geist,system-ui,-apple-system,"Segoe UI",sans-serif;--mono:var(--font-loaded-label),"Geist Mono",ui-monospace,"Cascadia Mono",Menlo,monospace;--gutter:clamp(16px,4vw,40px);max-width:1200px;margin:0 auto;padding:0 var(--gutter);font:400 18px/1.6 var(--sans);color:var(--ink);overflow-wrap:break-word}.portfolio-shell [id]{scroll-margin-top:calc(var(--portfolio-header-height,72px) + 24px)}.portfolio-shell a{color:inherit;text-decoration-color:color-mix(in srgb,currentColor 35%,transparent);text-decoration-thickness:1px;text-underline-offset:.22em}.portfolio-shell a:hover{text-decoration-color:currentColor}.portfolio-shell :focus-visible{outline:2px solid var(--accent);outline-offset:4px;border-radius:2px;box-shadow:none}.portfolio-shell ::selection{background:#8a3b2633}.sv-visually-hidden{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.sv-button{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:48px;padding:0 24px;border:1px solid var(--ink);border-radius:999px;background:var(--ink);color:var(--paper)!important;font:500 16px/1 var(--sans);text-decoration:none!important;transition:background .2s,color .2s}.sv-button:hover{background:var(--accent);border-color:var(--accent)}.sv-button-small{min-height:44px;padding:0 18px;font-size:15px;background:transparent;color:var(--ink)!important}.sv-button-small:hover{background:var(--ink);border-color:var(--ink);color:var(--paper)!important}.sv-text-button{display:inline-flex;align-items:center;min-height:44px;padding:0 4px;border:0;background:none;color:var(--ink-2);font:500 15px/1 var(--sans);text-decoration:underline;text-decoration-color:var(--line);text-underline-offset:.3em;cursor:pointer}.sv-text-button:hover{color:var(--accent);text-decoration-color:currentColor}.sv-text-button[data-copied]{color:var(--signal)}.sv-icon-button{position:relative;display:inline-grid;place-items:center;flex:none;width:40px;height:40px;padding:0;border:1px solid var(--line);border-radius:50%;background:transparent;color:var(--ink-2);cursor:pointer;transition:background .18s,border-color .18s,color .18s}.sv-icon-button:before{content:"";position:absolute;inset:-2px}.sv-icon-button:hover{border-color:var(--ink);color:var(--ink)}.sv-icon-button svg{display:block}.sv-copy-done{opacity:0}.sv-icon-button[data-copied=ok]{border-color:var(--signal);color:var(--signal)}.sv-icon-button[data-copied=ok] .sv-copy-idle{opacity:0}.sv-icon-button[data-copied=ok] .sv-copy-done{opacity:1}.sv-icon-button[data-copied=fail]{border-color:var(--accent);color:var(--accent)}.sv-link-arrow{display:inline-flex;align-items:center;gap:6px;min-height:48px;font:500 16px/1 var(--sans);text-decoration:none!important}.sv-link-arrow span{transition:transform .2s}.sv-link-arrow:hover span{transform:translateX(3px)}.sv-meta{display:flex;flex-wrap:wrap;gap:4px 14px;margin:0;overflow-wrap:anywhere;font:500 12px/1.6 var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}.sv-status{color:var(--signal)}.sv-subhead{margin:0 0 20px;font:600 12px/1.4 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}.sv-chips{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0 0;padding:0;list-style:none}.sv-chips li{padding:4px 12px;border:1px solid var(--line);border-radius:999px;background:#fbfbf8;font:500 13px/1.5 var(--sans);color:var(--ink-2)}.sv-header{position:sticky;top:0;z-index:50;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:8px 32px;padding:12px 0;border-bottom:1px solid transparent;transition:border-color .2s;background:var(--paper);box-shadow:0 0 0 100vmax var(--paper);clip-path:inset(0 -100vmax)}.sv-header[data-scrolled]{border-bottom-color:var(--line)}.sv-wordmark{display:inline-flex;align-items:center;min-height:44px;font:500 22px/1 var(--display);letter-spacing:-.01em;text-decoration:none!important;white-space:nowrap}.sv-nav{display:flex;flex-wrap:wrap;justify-content:center;gap:0 4px}.sv-nav a{position:relative;display:inline-flex;align-items:center;min-height:44px;padding:0 12px;color:var(--ink-2);font:500 15px/1 var(--sans);text-decoration:none}.sv-nav a:after{content:"";position:absolute;left:12px;right:12px;bottom:9px;height:1.5px;background:var(--accent);transform:scaleX(0);transform-origin:left;transition:transform .25s}.sv-nav a:hover{color:var(--ink)}.sv-nav a:hover:after,.sv-nav a[aria-current]:after{transform:scaleX(1)}.sv-nav a[aria-current]{color:var(--ink)}.sv-header-actions{display:flex;align-items:center;justify-content:flex-end;gap:12px}.sv-explore{position:relative;display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 18px 0 14px;overflow:hidden;border:1px solid var(--accent);border-radius:999px;background:color-mix(in srgb,var(--accent) 7%,var(--paper));color:var(--accent-ink);font:600 15px/1 var(--sans);cursor:pointer;transition:background-color .2s,color .2s,box-shadow .2s}.sv-explore:hover{background:var(--accent);color:var(--paper);box-shadow:0 6px 18px -8px color-mix(in srgb,var(--accent) 70%,transparent)}.sv-explore .sv-cube{flex:none;transition:transform .5s cubic-bezier(.2,.75,.2,1)}.sv-explore:focus-visible .sv-cube,.sv-explore:hover .sv-cube{transform:rotate(60deg)}.sv-explore:after{content:"";position:absolute;inset:0;background:linear-gradient(100deg,transparent 30%,#fff8 50%,transparent 70%);transform:translateX(-120%);pointer-events:none}@media (prefers-reduced-motion:no-preference){.sv-explore:after{animation:sv-glint 1.1s ease-in-out 1.2s 1 both}}@media (prefers-reduced-motion:reduce){.sv-explore .sv-cube{transition:none;transform:none!important}}@keyframes sv-glint{to{transform:translateX(120%)}}.sv-hero{position:relative;display:grid;align-content:center;gap:40px 56px;min-height:calc(100svh - var(--portfolio-header-height,72px));padding:72px 0 96px;box-sizing:border-box}.sv-hero>:not(.sv-scroll-cue){position:relative;z-index:1}.sv-scroll-cue{position:absolute;left:50%;bottom:24px;display:grid;place-items:center;width:44px;height:44px;margin-left:-22px;border:1.5px solid var(--line-strong);border-radius:50%;color:var(--ink);background:var(--paper);transition:background-color .2s,color .2s,transform .2s}.sv-scroll-cue:focus-visible,.sv-scroll-cue:hover{background:var(--ink);color:var(--paper);transform:translateY(2px)}.sv-scroll-cue-ring{position:absolute;inset:-1.5px;border-radius:50%;border:1.5px solid var(--accent);opacity:0;pointer-events:none}@media (prefers-reduced-motion:no-preference){.sv-scroll-cue svg{animation:sv-cue-hop 2.6s cubic-bezier(.3,.7,.4,1) infinite}.sv-scroll-cue-ring{animation:sv-cue-ring 2.6s ease-out infinite}.sv-scroll-cue:hover svg{animation-duration:1.3s}}@keyframes sv-cue-hop{0%,46%,to{transform:translateY(0)}10%{transform:translateY(5px)}18%{transform:translateY(-1px)}26%{transform:translateY(4px)}34%{transform:translateY(0)}}@keyframes sv-cue-ring{0%,8%{opacity:0;transform:scale(1)}12%{opacity:.55}48%,to{opacity:0;transform:scale(1.55)}}@media (min-width:960px){.sv-hero{grid-template-columns:minmax(0,1fr) minmax(380px,420px);align-items:center}}.sv-hero h1{margin:0;padding-bottom:.1em;font:500 clamp(56px,10vw,144px)/1.1 var(--display);letter-spacing:-.025em;white-space:nowrap}.sv-role-line{margin:12px 0 0;font:italic 400 clamp(26px,2.8vw,38px)/1.2 var(--display);letter-spacing:0;color:var(--accent-ink)}.sv-intro{max-width:46ch;margin:20px 0 0;font:400 clamp(17px,1.35vw,20px)/1.6 var(--sans);color:var(--ink-2);text-wrap:pretty}.sv-hero-actions{display:flex;flex-wrap:wrap;align-items:center;gap:12px 24px;margin:28px 0 0}.sv-hero-email{display:inline-flex;align-items:center;gap:6px}.sv-hero-email a,.sv-hero-links a{display:inline-flex;align-items:center;gap:4px;min-height:48px;font:500 16px/1 var(--sans)}.sv-hero-email .sv-icon-button{width:36px;height:36px}.sv-hero-links{display:flex;flex-wrap:wrap;gap:0 20px}.sv-facts{margin:0;border-top:1px solid var(--line-strong)}.sv-facts>div{display:grid;grid-template-columns:84px minmax(0,1fr);gap:16px;align-items:baseline;padding:12px 0;border-bottom:1px solid var(--line)}.sv-facts dt{font:500 12px/1.4 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.sv-facts dd{margin:0;font:400 15px/1.45 var(--sans);color:var(--ink)}@media (min-width:1200px){.sv-facts dd{white-space:nowrap}}.sv-open{display:flex;align-items:baseline;gap:8px}.sv-open .sv-signal{transform:translateY(-1px)}.sv-signal{position:relative;flex:none;width:8px;height:8px;border-radius:50%;background:var(--signal)}@media (max-width:600px){.sv-hero{gap:32px;padding:32px 0 96px}.sv-hero h1{font-size:clamp(52px,18vw,104px)}.sv-role-line{font-size:24px}.sv-intro{font-size:16px}.sv-hero-actions{gap:8px 20px}}.portfolio-content>.sv-band{margin-top:clamp(72px,10vw,128px)}.sv-stack{display:grid;gap:0 40px}@media (min-width:640px){.sv-stack{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1000px){.sv-stack{grid-template-columns:repeat(3,minmax(0,1fr))}}.sv-stack-group{padding:14px 0 18px;border-top:1px solid var(--line)}.sv-stack-group .sv-subhead{margin:0 0 6px}.sv-stack-items{display:flex;flex-wrap:wrap;margin:0;padding:0;list-style:none;font:400 16px/1.6 var(--sans);color:var(--ink)}.sv-stack-items li:not(:last-child):after{content:"·";margin:0 .5em;color:var(--muted)}.sv-band{position:relative;display:flex;align-items:center;gap:12px;min-width:0;border-block:1px solid var(--line-strong)}.sv-band-window{flex:1 1;min-width:0;overflow:hidden;padding:12px 0}.sv-band-track ul{display:flex;flex-wrap:wrap;justify-content:center;gap:4px 0;margin:0;padding:0;list-style:none}.sv-band-track li{font:italic 400 clamp(19px,1.8vw,25px)/1.3 var(--display);color:var(--ink-2);white-space:nowrap}.sv-band-track li:after{content:"✳";display:inline-block;margin:0 .9em;font-style:normal;font-size:.6em;vertical-align:.25em;color:var(--accent)}.sv-band-track [aria-hidden=true]{display:none}.sv-band-toggle{flex:none;width:44px;height:44px;border:1px solid var(--line);border-radius:50%;background:transparent;color:var(--ink-2);font:12px/1 var(--sans);cursor:pointer}.sv-band-toggle:hover{border-color:var(--ink)}@media (prefers-reduced-motion:no-preference){.sv-band[data-moving=true] .sv-band-window{-webkit-mask-image:linear-gradient(90deg,transparent,#000 48px,#000 calc(100% - 48px),transparent);mask-image:linear-gradient(90deg,transparent,#000 48px,#000 calc(100% - 48px),transparent)}.sv-band[data-moving=true] .sv-band-track{display:flex;width:max-content;animation:sv-band-drift 48s linear infinite}.sv-band[data-moving=true] .sv-band-track ul{flex-wrap:nowrap}.sv-band[data-moving=true] .sv-band-track [aria-hidden=true]{display:flex}.sv-band:focus-within .sv-band-track,.sv-band:hover .sv-band-track,html[data-entry-open] .sv-band-track{animation-play-state:paused}}@media (prefers-reduced-motion:reduce){.sv-band-toggle{display:none}}@keyframes sv-band-drift{to{transform:translateX(-50%)}}.sv-section{padding:clamp(72px,10vw,128px) 0 0}.sv-section-head{display:grid;grid-template-columns:minmax(0,1fr);gap:10px;margin-bottom:clamp(32px,5vw,56px)}.sv-section-index{font:500 13px/1 var(--mono);letter-spacing:.1em;color:var(--accent)}.sv-section-head h2{margin:0;font:500 clamp(44px,6.5vw,80px)/1 var(--display);letter-spacing:-.02em}.sv-section-lede{max-width:46ch;margin:6px 0 0;font-size:17px;color:var(--muted)}@media (min-width:900px){.sv-section-head{grid-template-columns:72px minmax(0,1fr) minmax(0,.8fr);align-items:end;gap:24px}.sv-section-index{align-self:start;padding-top:14px}.sv-section-lede{justify-self:end;text-align:right;margin:0 0 8px}}.sv-roles{margin:0;padding:0;list-style:none;border-bottom:1px solid var(--line)}.sv-role{position:relative;display:grid;grid-template-columns:minmax(0,1fr);gap:6px 16px;padding:22px 0;border-top:1px solid var(--line);transition:background .2s}.sv-role-org{margin:0 0 6px;font:600 12px/1.4 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--accent-ink)}.sv-role h3{margin:0;font:500 clamp(26px,2.8vw,34px)/1.15 var(--display);letter-spacing:-.015em}.sv-role h3 a{text-decoration:none}.sv-role h3 a:after{content:"";position:absolute;inset:0}.sv-role h3 a:focus-visible{outline:none}.sv-role:has(h3 a:focus-visible){outline:2px solid var(--accent);outline-offset:4px}.sv-role-meta{display:flex;flex-wrap:wrap;gap:2px 16px;margin:4px 0 0;font:500 13px/1.6 var(--mono);color:var(--muted)}.sv-role-more{margin-top:6px;font:500 14px/1 var(--sans);color:var(--accent);transition:transform .2s}.sv-role:hover .sv-role-more{transform:translateX(3px)}.sv-role:hover{background:linear-gradient(90deg,transparent,#ede6d880 20%,#ede6d880 80%,transparent)}.sv-role:hover h3{color:var(--accent-ink)}@media (min-width:900px){.sv-role{grid-template-columns:72px minmax(0,1fr) 220px;gap:0 24px;padding:30px 0}.sv-role-main{grid-column:2}.sv-role-meta{flex-direction:column;align-items:flex-end;padding-top:4px;text-align:right}.sv-role-meta,.sv-role-more{grid-column:3;grid-row:1;margin:0}.sv-role-more{align-self:end;justify-self:end}}.sv-features{display:grid;grid-template-columns:minmax(0,1fr);gap:48px 40px}@media (min-width:760px){.sv-features{grid-template-columns:repeat(2,minmax(0,1fr));gap:64px 40px}}.sv-feature{position:relative;display:flex;flex-direction:column;min-width:0}.sv-feature-visual{position:relative;aspect-ratio:16/10;overflow:hidden;border-radius:4px;background:var(--paper-2)}.sv-feature .sv-feature-visual img{display:block;width:100%;height:100%;object-fit:cover;object-position:top left;transition:transform .5s cubic-bezier(.2,.7,.2,1)}.sv-plate{display:flex;flex-direction:column;justify-content:flex-end;gap:10px;height:100%;margin:0;padding:clamp(20px,3vw,32px);background-color:var(--paper-2);background-image:repeating-linear-gradient(0deg,transparent 0 31px,#16140f0f 31px 32px),repeating-linear-gradient(90deg,transparent 0 31px,#16140f0f 31px 32px);transition:background-color .3s}.sv-plate-figure{font:500 clamp(44px,6vw,84px)/.95 var(--display);letter-spacing:-.02em;color:var(--accent-ink)}.sv-plate-caption{max-width:28ch;font:500 13px/1.5 var(--mono);letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}.sv-feature:hover .sv-plate{background-color:var(--paper-3)}.sv-feature:hover .sv-feature-visual img{transform:scale(1.025)}.sv-feature-copy{display:flex;flex-direction:column;flex:1 1;padding-top:20px}.sv-feature h3{margin:10px 0 0;font:500 clamp(28px,2.8vw,36px)/1.1 var(--display);letter-spacing:-.02em}.sv-feature h3 a{text-decoration:none}.sv-feature h3 a:after{content:"";position:absolute;inset:0;z-index:1}.sv-feature h3 a:focus-visible{outline:none}.sv-feature:has(h3 a:focus-visible){outline:2px solid var(--accent);outline-offset:6px}.sv-feature:hover h3{color:var(--accent-ink)}.sv-feature-summary{max-width:56ch;margin:10px 0 0;font-size:17px;line-height:1.6;color:var(--ink-2)}.sv-feature-foot{justify-content:space-between;align-items:center;gap:8px 20px;margin:auto 0 0;padding-top:18px;font:500 14px/1.4 var(--sans)}.sv-feature-foot,.sv-tags{display:flex;flex-wrap:wrap}.sv-tags{gap:6px;margin:0;padding:0;list-style:none}.sv-tags li{padding:2px 10px;border:1px solid var(--line);border-radius:999px;font:500 12px/1.7 var(--mono);letter-spacing:.04em;color:var(--muted)}.sv-feature-cta{margin-left:auto;color:var(--accent);transition:transform .2s}.sv-feature:hover .sv-feature-cta{transform:translateX(3px)}.sv-index-title{margin-top:clamp(56px,8vw,96px)}.sv-index{margin:0;padding:0;list-style:none;border-bottom:1px solid var(--line)}.sv-index-row{position:relative;display:grid;grid-template-columns:56px minmax(0,1fr) 24px;gap:2px 16px;align-items:baseline;padding:12px 0;border-top:1px solid var(--line);transition:background .2s}.sv-index-year{font:500 13px/1.6 var(--mono);color:var(--muted)}.sv-index-row h4{margin:0;font:500 21px/1.2 var(--display);letter-spacing:-.01em}.sv-index-row h4 a{text-decoration:none}.sv-index-row h4 a:after{content:"";position:absolute;inset:0}.sv-index-row h4 a:focus-visible{outline:none}.sv-index-row:has(h4 a:focus-visible){outline:2px solid var(--accent);outline-offset:2px}.sv-index-row p{grid-column:2;margin:0;font-size:15px;line-height:1.45;color:var(--muted)}.sv-index-row .sv-tags{grid-column:2;margin-top:4px}.sv-index-arrow{grid-column:3;grid-row:1;color:var(--accent);transition:transform .2s}.sv-index-row:hover{background:#ede6d880}.sv-index-row:hover h4{color:var(--accent-ink)}.sv-index-row:hover .sv-index-arrow{transform:translateX(3px)}@media (min-width:900px){.sv-index-row{grid-template-columns:72px minmax(0,.8fr) minmax(0,1.3fr) 176px 24px;gap:0 24px;align-items:center;padding:14px 0}.sv-index-row p{grid-column:3;grid-row:1}.sv-index-row .sv-tags{grid-column:4;grid-row:1;justify-content:flex-end;margin-top:0}.sv-index-arrow{grid-column:5}}.sv-recognition-more{display:grid;grid-template-columns:minmax(0,1fr);gap:56px}@media (min-width:900px){.sv-recognition-more{grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:64px}}.sv-honour-list{margin:0;padding:0;list-style:none;border-top:1px solid var(--line)}.sv-honour-list li{display:flex;justify-content:space-between;align-items:baseline;gap:4px 20px;padding:12px 0;border-bottom:1px solid var(--line)}.sv-honour-detail{flex:none;white-space:nowrap}@media (max-width:560px){.sv-honour-list li{flex-direction:column}.sv-honour-detail{white-space:normal}}.sv-honour-name{font:500 16px/1.45 var(--sans)}.sv-honour-detail{font:500 13px/1.5 var(--mono);color:var(--muted)}.sv-pubs{margin:0;padding:0;list-style:none;border-top:1px solid var(--line)}.sv-pubs li{display:flex;flex-direction:column;gap:6px;padding:18px 0;border-bottom:1px solid var(--line)}.sv-pub-kind{font:600 12px/1.4 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--accent-ink)}.sv-pubs cite{font:italic 400 21px/1.35 var(--display)}.sv-pubs cite a{text-decoration-color:var(--line)}.sv-pub-venue{font-size:15px;color:var(--muted)}.sv-footer{margin-top:clamp(56px,8vw,96px);padding:24px 0 28px;border-top:1px solid var(--line-strong)}.sv-footer-bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 32px}.sv-colophon{margin:0;font:500 14px/1.5 var(--sans);color:var(--muted)}.sv-footer-links{display:flex;flex-wrap:wrap;align-items:center;gap:0 24px}.sv-footer-links a{display:inline-flex;align-items:center;gap:6px;min-height:44px;font:500 15px/1 var(--sans);text-decoration:none}.sv-footer-links a:hover{color:var(--accent)}.sv-footer-email{display:inline-flex;align-items:center;gap:6px}.sv-footer-email a{text-decoration:underline;text-decoration-color:var(--accent);text-underline-offset:.25em}.sv-footer-email .sv-icon-button{width:36px;height:36px}.portfolio-mirrors summary{cursor:pointer}.sv-sheet{width:min(920px,calc(100% - 64px));scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent;max-width:none;height:calc(100dvh - 48px);max-height:none;margin:auto;padding:0;border:1px solid var(--line);border-radius:12px;background:var(--paper);color:var(--ink);overflow:auto;overscroll-behavior:contain;box-shadow:0 24px 64px -24px #16140f66;font:400 18px/1.65 var(--sans)}.sv-sheet:not([open]){display:none}.sv-sheet::backdrop{background:#16140f73}.sv-confirm{width:min(540px,calc(100% - 32px));margin:auto;padding:0;border:1px solid var(--line);border-radius:12px;background:var(--paper);color:var(--ink);box-shadow:0 24px 64px -24px #16140f66;text-align:center}.sv-confirm::backdrop{background:#16140f73}.sv-confirm-inner{display:flex;flex-direction:column;align-items:center;padding:36px}.sv-confirm-mark{display:inline-grid;place-items:center;width:48px;height:48px;border-radius:50%;background:color-mix(in srgb,var(--accent) 10%,var(--paper));color:var(--accent-ink)}.sv-confirm-mark .sv-cube{width:26px;height:26px}.sv-confirm h2{margin:16px 0 0;font:500 34px/1.1 var(--display);letter-spacing:-.02em;text-wrap:balance}.sv-confirm-lede{max-width:36ch;margin:14px auto 0;font:400 18px/1.55 var(--sans);color:var(--ink-2);text-wrap:pretty}.sv-confirm-body{width:100%}.sv-confirm-setup{margin-top:24px;padding-top:18px;border-top:1px solid var(--line)}.sv-confirm-label{margin:0 0 10px;font:600 11px/1.4 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}.sv-confirm-setup ul{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin:0;padding:0;list-style:none}.sv-confirm-setup li{padding:6px 12px;border:1px solid var(--line);border-radius:999px;background:#fbfbf8;font:500 14px/1.3 var(--sans);color:var(--ink-2)}.sv-confirm-note{margin:10px 0 0;font:400 13px/1.4 var(--sans);color:var(--muted)}.sv-confirm-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;margin-top:28px}.sv-confirm-actions .sv-button{min-height:44px;padding:0 20px;font-size:15px}.sv-confirm-actions .sv-button-small{background:transparent}.sv-confirm-actions .sv-button-small:hover{background:var(--ink);color:var(--paper)!important}@media (prefers-reduced-motion:no-preference){.sv-confirm:modal{animation:sv-sheet-in .28s cubic-bezier(.2,.75,.2,1)}.sv-confirm:modal::backdrop{animation:sv-fade .24s ease-out}.sv-confirm[data-closing]{animation:sv-sheet-out .2s cubic-bezier(.4,0,1,1) forwards}.sv-confirm[data-closing]::backdrop{animation:sv-fade-out .2s ease-in forwards}}.sv-sheet:modal{animation:sv-fade .2s ease-out}.sv-sheet:modal::backdrop{animation:sv-fade .24s ease-out}.sv-sheet[data-closing]{animation:sv-fade-out .16s ease-in forwards}.sv-sheet[data-closing]::backdrop{animation:sv-fade-out .2s ease-in forwards}@media (prefers-reduced-motion:no-preference){.sv-sheet:modal{animation:sv-sheet-in .32s cubic-bezier(.2,.75,.2,1)}.sv-sheet[data-closing]{animation:sv-sheet-out .18s cubic-bezier(.4,0,1,1) forwards}.sv-sheet[data-stepping]:modal,.sv-sheet[data-stepping]:modal::backdrop{animation:none}.sv-sheet[data-stepping=next] .sv-sheet-inner{animation:sv-step-next .28s cubic-bezier(.2,.75,.2,1)}.sv-sheet[data-stepping=prev] .sv-sheet-inner{animation:sv-step-prev .28s cubic-bezier(.2,.75,.2,1)}}@keyframes sv-sheet-in{0%{opacity:0;transform:translateY(14px) scale(.985)}}@keyframes sv-sheet-out{to{opacity:0;transform:translateY(8px) scale(.99)}}@keyframes sv-step-next{0%{opacity:0;transform:translateX(20px)}}@keyframes sv-step-prev{0%{opacity:0;transform:translateX(-20px)}}@keyframes sv-fade-out{to{opacity:0}}@keyframes sv-fade{0%{opacity:0}}.sv-sheet-inner{display:flex;flex-direction:column;min-height:100%}.sv-sheet-header{position:sticky;top:0;z-index:3;display:flex;align-items:flex-start;justify-content:space-between;gap:16px 24px;padding:20px clamp(20px,5vw,48px);background:var(--paper);border-bottom:1px solid var(--line)}.sv-sheet-heading{min-width:0}.sv-sheet-kicker{margin:0 0 8px;font:600 12px/1.4 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--accent-ink)}.sv-sheet-header h2{margin:0;font:500 clamp(30px,4vw,46px)/1.05 var(--display);letter-spacing:-.025em;overflow-wrap:anywhere}.sv-sheet-actions{display:flex;align-items:center;gap:8px;flex:none}.sv-close{color:var(--ink)}.sv-close:hover{background:var(--ink);border-color:var(--ink);color:var(--paper)}.sv-sheet-body{flex:1 1;padding:4px clamp(20px,5vw,48px) 40px}.sv-sheet-meta{display:flex;flex-wrap:wrap;gap:2px 18px;margin:20px 0 0;font:500 13px/1.6 var(--mono);color:var(--muted)}.sv-sheet-steps{display:grid;grid-template-columns:1fr 1fr;gap:16px;padding:24px clamp(20px,5vw,48px) 32px;border-top:1px solid var(--line)}.sv-sheet-steps a{display:flex;flex-direction:column;gap:4px;min-height:44px;padding:8px 0;text-decoration:none}.sv-sheet-steps a[rel=next]{grid-column:2;align-items:flex-end;text-align:right}.sv-sheet-steps a>[aria-hidden]{display:none}.sv-step-label{font:600 12px/1.4 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}.sv-step-label:before{content:"← "}a[rel=next] .sv-step-label:before{content:none}a[rel=next] .sv-step-label:after{content:" →"}.sv-step-title{font:500 21px/1.25 var(--display)}.sv-sheet-steps a:hover .sv-step-title{color:var(--accent-ink)}.sv-prose,.sv-sheet .portfolio-dialog-copy{max-width:70ch;margin-inline:auto}.sv-sheet :is(.sv-prose,.portfolio-dialog-copy) :is(h2,h3){margin:40px 0 12px;font:500 26px/1.2 var(--display);letter-spacing:-.01em}.sv-sheet :is(.sv-prose,.portfolio-dialog-copy) p{margin:14px 0}.sv-sheet :is(.sv-prose,.portfolio-dialog-copy) :is(ul,ol):not(.portfolio-technologies){margin:14px 0;padding-left:1.2em}.sv-sheet :is(.sv-prose,.portfolio-dialog-copy) li{margin:8px 0;padding-left:4px}.sv-sheet :is(.sv-prose,.portfolio-dialog-copy) li::marker{color:var(--accent)}.sv-sheet :is(.sv-prose,.portfolio-dialog-copy) strong{font-weight:600}.sv-sheet :is(.sv-prose,.portfolio-dialog-copy) a{color:var(--accent-ink)}.sv-sheet .portfolio-dialog-copy>p:first-child{margin-top:24px;font:500 22px/1.45 var(--display);color:var(--ink)}.sv-sheet .portfolio-dialog-copy dl{display:grid;grid-template-columns:minmax(0,180px) minmax(0,1fr);gap:12px 24px;margin:28px 0;padding:24px;border:0;border-radius:4px;background:var(--paper-2);font-size:15px}.sv-sheet .portfolio-dialog-copy dt{margin:0;font:600 12px/1.6 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.sv-sheet .portfolio-dialog-copy dd{margin:0;color:var(--ink)}.sv-sheet .portfolio-dialog-copy dd .portfolio-technologies{margin:0}.sv-sheet .portfolio-gallery{margin:28px 0}@media (max-width:560px){.sv-sheet .portfolio-dialog-copy dl{grid-template-columns:1fr;gap:4px}.sv-sheet .portfolio-dialog-copy dd+dt{margin-top:12px}}.portfolio-case-studies:not([data-enhanced]) .sv-sheet[open]{position:static;display:block;width:100%;height:auto;max-height:none;margin:96px 0 0;border:0;border-top:1px solid var(--line-strong);border-radius:0;box-shadow:none;overflow:visible;animation:none}.portfolio-case-studies:not([data-enhanced]) .sv-sheet-header{position:static;padding-inline:0;background:none}.portfolio-case-studies:not([data-enhanced]) :is(.sv-sheet-body,.sv-sheet-steps){padding-inline:0}.portfolio-case-studies:not([data-enhanced]) :is([data-close-entry],[data-copy-link]){display:none}@media (max-width:760px){.sv-header{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"brand actions" "nav nav";padding-block:6px;gap:0 12px}.sv-wordmark{grid-area:brand;font-size:20px}.sv-header-actions{grid-area:actions;gap:4px}.sv-nav{grid-area:nav;flex-wrap:nowrap;justify-content:space-between;margin:0 -10px}.sv-nav a{padding:0 10px;font-size:14px;white-space:nowrap}.sv-nav a:after{left:10px;right:10px}.sv-sheet{width:100%;height:100dvh;border:0;border-radius:0;box-shadow:none}.sv-sheet-header{gap:12px;padding-block:14px}.sv-sheet-steps{grid-template-columns:1fr}.sv-sheet-steps a[rel=next]{grid-column:1}}@media (max-width:420px){.sv-header .sv-explore{padding:0 12px 0 10px;font-size:14px}.sv-explore-long{display:none}.sv-header .sv-button-small{padding:0 14px}.sv-wordmark{font-size:19px}}@media (max-height:500px){.sv-sheet-header{position:static}}@media print{body:has(.portfolio-shell),html:has(.portfolio-shell){background:#fff}.portfolio-shell{max-width:none;padding:0;font-size:10.5pt}.dm-skip-link,.portfolio-gallery-controls,.sv-band,.sv-copy,.sv-feature-cta,.sv-feature-visual,.sv-header,.sv-hero-actions,.sv-index-arrow,.sv-role-more,.sv-sheet-actions,.sv-sheet-steps{display:none!important}.sv-hero{display:block;min-height:0;padding:0 0 12pt}.sv-scroll-cue{display:none!important}.sv-hero h1{font-size:40pt}.sv-section{padding-top:24pt}.sv-section-head h2{font-size:24pt}.sv-features{display:block}.sv-feature,.sv-index-row,.sv-role{page-break-inside:avoid;break-inside:avoid}.sv-feature{margin-bottom:12pt}.sv-role-more{display:none}.sv-sheet[data-section=experience]{position:static!important;display:block!important;width:auto;height:auto;max-height:none;margin:12pt 0 0;border:0;border-top:1px solid #999;overflow:visible}.sv-sheet[data-section=projects]{display:none!important}.sv-sheet-header{position:static;padding:8pt 0;background:none}.sv-sheet-body{padding:0}.sv-footer a[href^=http]:after,.sv-prose a[href^=http]:after,.sv-pubs a:after{content:" (" attr(href) ")";font:9pt var(--mono);color:#555}.portfolio-shell :is(h1,h2,h3,h4){page-break-after:avoid;break-after:avoid}.sv-footer{margin-top:24pt}.portfolio-shell a{color:#000}}.portfolio-content>:is(h1,.portfolio-intro h1){margin:clamp(48px,8vw,96px) 0 20px;font:500 clamp(44px,7vw,80px)/1 var(--display);letter-spacing:-.02em}.portfolio-intro{padding:clamp(48px,8vw,96px) 0 32px}.portfolio-intro h1{margin:0 0 20px;font:500 clamp(44px,7vw,80px)/1 var(--display);letter-spacing:-.02em}.portfolio-shell .portfolio-eyebrow{margin:0 0 16px;font:500 13px/1.6 var(--mono);letter-spacing:.1em;color:var(--accent)}.portfolio-name-dot{color:var(--accent)}.portfolio-shell .portfolio-tagline{max-width:36ch;font:500 clamp(22px,2.6vw,30px)/1.3 var(--display);color:var(--ink-2)}.portfolio-contact-links{display:flex;flex-wrap:wrap;gap:4px 24px}.portfolio-contact-links a{display:inline-flex;align-items:center;min-height:44px}.portfolio-content>:not(.sv-hero,.sv-band,.sv-section,.portfolio-case-studies,.portfolio-intro,.arcade-root,script){max-width:72ch}.portfolio-content>h2{margin:48px 0 16px;font:500 32px/1.2 var(--display)}.portfolio-content img{max-width:100%;height:auto}.portfolio-content pre{max-width:100%;overflow-x:auto;padding:16px;background:var(--paper-2)}.portfolio-content>.portfolio-dialog-copy dl,.portfolio-content>dl{padding:20px;border-radius:4px;background:var(--paper-2);font-size:15px}.portfolio-content dt{font-weight:600;margin-top:12px}.portfolio-content dt:first-child{margin-top:0}.portfolio-content dd{margin-left:0;color:var(--muted)}.portfolio-technologies{display:flex;flex-wrap:wrap;gap:6px;list-style:none;padding:0;margin:14px 0 0}.portfolio-technologies li{padding:2px 10px;border:1px solid var(--line,#e1e1d5);border-radius:999px;color:var(--muted,#b6c3be);font:13px/1.7 var(--mono,ui-monospace,monospace)}.portfolio-year{color:var(--muted);font:13px/1.5 var(--mono,ui-monospace,monospace)}.portfolio-project-links{display:flex;flex-wrap:wrap;align-items:center;gap:8px 24px;margin-top:16px;font-size:15px}.portfolio-project-links a{display:inline-flex;align-items:center;min-height:44px}.portfolio-role{border-top:1px solid var(--line);padding-top:10px;margin:36px 0}.portfolio-project-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-bottom:20px}.portfolio-project-grid:empty{display:none}.portfolio-project-card{position:relative;display:flex;flex-direction:column;border:1px solid var(--line,#55564a);border-radius:8px;padding:0;margin:0;background:var(--paper,#17201f)}.portfolio-card-image{aspect-ratio:16/10;overflow:hidden;border-radius:7px 7px 0 0;border-bottom:1px solid var(--line,#55564a)}.portfolio-card-image img{width:100%;height:100%;object-fit:cover}.portfolio-image-pending{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;width:100%;height:100%;min-height:100px;padding:16px;background:var(--paper-2,#eeeee3);color:var(--muted,#64675e);text-align:center}.portfolio-image-pending>span{font:500 24px/1.2 var(--display,system-ui,sans-serif);color:var(--accent,#4e613c)}.portfolio-card-copy{display:flex;flex-direction:column;flex:1 1;padding:20px}.portfolio-card-copy .portfolio-year{margin-bottom:6px}.portfolio-card-copy h2,.portfolio-card-copy h3{font:600 19px/1.35 system-ui,sans-serif;margin:0;letter-spacing:0}.portfolio-card-copy h2 a,.portfolio-card-copy h3 a{color:var(--ink,inherit);text-decoration:none}.portfolio-card-copy a:after{content:"";position:absolute;inset:0;border-radius:8px}.portfolio-card-copy a:focus-visible{outline:none}.portfolio-card-copy a:focus-visible:after{outline:2px solid var(--accent,#b8c7a9);outline-offset:4px}.portfolio-card-copy p{font-size:16px;line-height:1.6;margin:10px 0 0}.portfolio-gallery{margin:24px 0}.portfolio-gallery>.portfolio-image-pending{aspect-ratio:16/9;height:auto}.portfolio-gallery-track{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;overscroll-behavior-x:contain;border:1px solid var(--line,#55564a);border-radius:6px}.portfolio-gallery-slide{flex:0 0 100%;min-width:0;margin:0;scroll-snap-align:start}.portfolio-gallery-slide img,.portfolio-gallery-slide video{display:block;width:100%;height:auto;aspect-ratio:16/10;object-fit:contain;background:var(--paper-2,#eeeee3)}.portfolio-gallery-slide video{max-height:60dvh}.portfolio-dialog-copy [data-hologram-details] img{display:block;width:100%;height:auto;margin:24px 0 8px;border:1px solid var(--line,#d6d6cf);border-radius:6px}.portfolio-dialog-copy [data-hologram-details] p:has(>a>img)+p:has(>em:only-child){margin-top:4px;font-size:14px;line-height:1.5;color:var(--muted,inherit)}.portfolio-gallery-slide figcaption{padding:12px 16px;font-size:14px;line-height:1.6;color:var(--muted,inherit)}.portfolio-gallery-controls{display:flex;align-items:center;justify-content:center;gap:20px;margin-top:12px;font:13px var(--mono,ui-monospace,monospace)}.portfolio-gallery-controls button{flex-shrink:0;width:44px;height:44px;border:1px solid var(--line,#dddcd2);border-radius:50%;background:transparent;color:var(--ink,inherit);font:20px/1 system-ui,sans-serif;cursor:pointer}.portfolio-gallery-controls button:disabled{opacity:.4;cursor:default}@media (max-width:600px){.portfolio-project-grid{grid-template-columns:1fr;gap:12px}}