@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-ease:initial}}}@layer theme{:root,:host{--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-serif:ui-serif, Georgia, Cambria, "Times New Roman", Times, serif;--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--spacing:.25rem;--ease-out:cubic-bezier(0, 0, .2, 1);--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.invisible{visibility:hidden}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.inset-0{inset:0}.z-30{z-index:30}.z-50{z-index:50}.z-90{z-index:90}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.table{display:table}.h-full{height:100%}.min-h-8{min-height:calc(var(--spacing) * 8)}.min-h-11{min-height:calc(var(--spacing) * 11)}.min-h-full{min-height:100%}.w-full{width:100%}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.touch-none{touch-action:none}.resize{resize:both}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-end{justify-content:flex-end}.gap-7{gap:calc(var(--spacing) * 7)}.gap-8{gap:calc(var(--spacing) * 8)}.gap-x-6{column-gap:calc(var(--spacing) * 6)}.gap-y-2{row-gap:calc(var(--spacing) * 2)}.border{border-style:var(--tw-border-style);border-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-transparent{border-color:#0000}.bg-\[var\(--void-bg\)\]{background-color:var(--void-bg)}.px-1{padding-inline:var(--spacing)}.px-5{padding-inline:calc(var(--spacing) * 5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-7{padding-block:calc(var(--spacing) * 7)}.pt-1\.5{padding-top:calc(var(--spacing) * 1.5)}.text-\[0\.6rem\]{font-size:.6rem}.text-\[0\.68rem\]{font-size:.68rem}.tracking-\[0\.2em\]{--tw-tracking:.2em;letter-spacing:.2em}.tracking-\[0\.24em\]{--tw-tracking:.24em;letter-spacing:.24em}.tracking-\[0\.38em\]{--tw-tracking:.38em;letter-spacing:.38em}.text-\[var\(--void-accent\)\]{color:var(--void-accent)}.text-\[var\(--void-muted\)\],.text-\[var\(--void-muted\)\]\/70{color:var(--void-muted)}@supports (color:color-mix(in lab,red,red)){.text-\[var\(--void-muted\)\]\/70{color:color-mix(in oklab,var(--void-muted) 70%,transparent)}}.text-\[var\(--void-muted\)\]\/80{color:var(--void-muted)}@supports (color:color-mix(in lab,red,red)){.text-\[var\(--void-muted\)\]\/80{color:color-mix(in oklab,var(--void-muted) 80%,transparent)}}.uppercase{text-transform:uppercase}.italic{font-style:italic}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}@media(hover:hover){.hover\:border-\[var\(--void-glow\)\]:hover{border-color:var(--void-glow)}.hover\:text-\[var\(--void-ink\)\]:hover{color:var(--void-ink)}}.focus\:not-sr-only:focus{clip-path:none;white-space:normal;width:auto;height:auto;margin:0;padding:0;position:static;overflow:visible}.focus\:absolute:focus{position:absolute}.focus\:top-4:focus{top:calc(var(--spacing) * 4)}.focus\:left-4:focus{left:calc(var(--spacing) * 4)}.focus\:z-\[100\]:focus{z-index:100}.focus\:bg-\[var\(--void-fog\)\]:focus{background-color:var(--void-fog)}.focus\:px-3:focus{padding-inline:calc(var(--spacing) * 3)}.focus\:py-2:focus{padding-block:calc(var(--spacing) * 2)}.focus\:text-\[var\(--void-ink\)\]:focus{color:var(--void-ink)}.focus-visible\:border-\[var\(--void-glow\)\]:focus-visible{border-color:var(--void-glow)}.focus-visible\:text-\[var\(--void-ink\)\]:focus-visible{color:var(--void-ink)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}@media(min-width:40rem){.sm\:min-h-0{min-height:0}.sm\:px-10{padding-inline:calc(var(--spacing) * 10)}.sm\:py-0\.5{padding-block:calc(var(--spacing) * .5)}.sm\:py-10{padding-block:calc(var(--spacing) * 10)}}}:root{--void-bg:#050508;--void-bg-soft:#0a0a0f;--void-fog:#101018;--surface-1:#0b0a11;--surface-2:#100e18;--surface-3:#16131f;--nebula-deep:#1a0b2e;--nebula-mid:#2d1b4e;--void-glow:#ff4fd8;--magenta-soft:#ff8ae4;--violet:#7c3aed;--violet-soft:#a78bfa;--cyan:#06b6d4;--cyan-soft:#22d3ee;--void-accent:var(--magenta-soft);--void-ice:#b8daf0;--void-ink:#f6f4fa;--void-muted:#b3aec4;--void-dim:#7b7591;--void-line:var(--void-ink)}@supports (color:color-mix(in lab,red,red)){:root{--void-line:color-mix(in srgb, var(--void-ink) 12%, transparent)}}:root{--void-line-soft:var(--void-ink)}@supports (color:color-mix(in lab,red,red)){:root{--void-line-soft:color-mix(in srgb, var(--void-ink) 7%, transparent)}}:root{--void-ease:cubic-bezier(.22, 1, .36, 1);--ease-out-soft:cubic-bezier(.16, 1, .3, 1);--font-display:"Syne", sans-serif;--font-body:"IBM Plex Sans", sans-serif;--font-mono:"IBM Plex Mono", ui-monospace, monospace;--font-serif:"Instrument Serif", Georgia, serif;--ui-ink:var(--void-ink);--ui-muted:var(--void-muted);color:var(--void-ink);background:var(--void-bg);font-family:var(--font-body),sans-serif;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}html,body,#root{background:var(--void-bg);width:100%;height:100%;margin:0;overflow:hidden}html.portfolio-active,html.portfolio-active body,html.portfolio-active #root{height:auto;min-height:100%;overflow:hidden auto}html.portfolio-sheet-open,html.portfolio-sheet-open body{overflow:hidden}html.portfolio-active{scrollbar-width:thin;scrollbar-color:#2a2438 transparent}html.portfolio-active ::-webkit-scrollbar{width:10px}html.portfolio-active ::-webkit-scrollbar-track{background:0 0}html.portfolio-active ::-webkit-scrollbar-thumb{border:3px solid var(--void-bg);background:#2a2438;border-radius:8px}html.portfolio-active ::-webkit-scrollbar-thumb:hover{background:#3d3454}button{font:inherit;-webkit-tap-highlight-color:transparent}@media(pointer:coarse){button,a{touch-action:manipulation}}.font-display{font-family:var(--font-display),sans-serif;font-feature-settings:"ss01" on,"kern" on}::selection{background:var(--void-glow)}@supports (color:color-mix(in lab,red,red)){::selection{background:color-mix(in srgb,var(--void-glow) 38%,transparent)}}::selection{color:var(--void-ink)}:focus-visible{outline:2px solid var(--void-ink)}@supports (color:color-mix(in lab,red,red)){:focus-visible{outline:2px solid color-mix(in srgb,var(--void-ink) 55%,transparent)}}:focus-visible{outline-offset:3px;border-radius:2px}@keyframes portfolio-in{0%{opacity:0}to{opacity:1}}@keyframes intro-skip-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.intro-skip{z-index:40;color:var(--void-dim);cursor:pointer;font-family:var(--font-mono),monospace;letter-spacing:.22em;text-transform:uppercase;transition:color .35s var(--void-ease);animation:intro-skip-in .9s var(--void-ease) .4s both;background:0 0;border:0;align-items:center;gap:.6rem;padding:.55rem .15rem;font-size:.64rem;display:inline-flex;position:fixed;bottom:clamp(1.1rem,4vw,2.5rem);right:clamp(1.1rem,4vw,2.75rem)}.intro-skip kbd{border:1px solid var(--void-line);min-width:2.05rem;font:inherit;letter-spacing:.14em;transition:border-color .35s var(--void-ease),color .35s var(--void-ease);border-radius:3px;place-items:center;padding:.2rem .4rem .16rem;font-size:.56rem;display:grid}.intro-skip:hover,.intro-skip:focus-visible{color:var(--void-ink)}.intro-skip:hover kbd,.intro-skip:focus-visible kbd{border-color:var(--void-glow)}@supports (color:color-mix(in lab,red,red)){.intro-skip:hover kbd,.intro-skip:focus-visible kbd{border-color:color-mix(in srgb,var(--void-glow) 55%,transparent)}}.intro-skip:hover kbd,.intro-skip:focus-visible kbd{color:var(--void-accent)}.intro-overture{z-index:30;text-align:center;transition:opacity .45s var(--void-ease),transform .45s var(--void-ease);justify-items:center;gap:.95rem;display:grid;position:fixed;bottom:clamp(4.5rem,13vh,8.5rem);left:50%;transform:translate(-50%)}.intro-overture[data-gone=true]{opacity:0;transform:translate(-50%,14px)}.intro-overture__line{font-family:var(--font-serif),serif;letter-spacing:.01em;color:var(--void-ink);margin:0;font-size:clamp(1.3rem,2.8vw,1.85rem);font-style:italic;line-height:1.35}@supports (color:color-mix(in lab,red,red)){.intro-overture__line{color:color-mix(in srgb,var(--void-ink) 88%,transparent)}}.intro-overture__line{text-wrap:balance;animation:overture-in 1.6s var(--void-ease) .5s both}.intro-overture__hint{font-family:var(--font-mono),monospace;letter-spacing:.3em;text-transform:uppercase;color:var(--void-dim);animation:overture-in 1.6s var(--void-ease) 1.15s both;margin:0;font-size:.66rem}@keyframes overture-in{0%{opacity:0;filter:blur(4px);transform:translateY(10px)}to{opacity:1;filter:blur();transform:translateY(0)}}.intro-letterbox{z-index:32;pointer-events:none;position:fixed;inset:0}.intro-letterbox span{background:#000;height:clamp(2.2rem,6vh,4rem);transition:transform 1.1s cubic-bezier(.22,1,.36,1);position:absolute;left:0;right:0}.intro-letterbox span:first-child{top:0;transform:translateY(-101%)}.intro-letterbox span:last-child{bottom:0;transform:translateY(101%)}.intro-letterbox[data-on=true] span{transform:translateY(0)}.intro-veil{z-index:70;background:var(--void-bg);opacity:0;pointer-events:none;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.6,1);position:fixed;inset:0}.intro-veil[data-lit=true]{opacity:1}@media(pointer:coarse){.intro-skip{min-height:2.75rem;padding-inline:.5rem}.intro-skip kbd{display:none}}.portfolio-page{--pad-x:clamp(1.15rem, 5vw, 4.5rem);--max-w:76rem;--section-y:clamp(5.5rem, 12vh, 9.5rem);isolation:isolate;animation:portfolio-in .45s var(--void-ease);position:relative}.portfolio-main{z-index:1;position:relative}.portfolio-section{padding:var(--section-y) var(--pad-x);scroll-margin-top:5rem;position:relative}.portfolio-inner{width:100%;max-width:var(--max-w);margin:0 auto}.portfolio-page[data-motion=pending] :is([data-reveal],[data-hero-reveal]){opacity:0}.section-kicker{font-family:var(--font-mono),monospace;letter-spacing:.16em;text-transform:uppercase;color:var(--void-accent);align-items:center;gap:.6rem;margin:0 0 1.1rem;font-size:.7rem;display:inline-flex}.section-title{font-family:var(--font-display),sans-serif;letter-spacing:-.045em;text-wrap:balance;color:var(--void-ink);margin:0;font-size:clamp(2.6rem,7.5vw,6.2rem);font-weight:700;line-height:.94}.section-lede{max-width:40ch;font-family:var(--font-serif),serif;color:var(--void-muted);text-wrap:pretty;margin:1.15rem 0 0;font-size:clamp(1.12rem,2vw,1.32rem);font-style:italic;line-height:1.5}.section-head{border-top:1px solid var(--void-line);margin-bottom:clamp(2.75rem,5.5vw,4.5rem);padding-top:clamp(1.5rem,3vw,2.5rem)}@media(min-width:900px){.section-head{grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);align-items:end;gap:clamp(1rem,2vw,1.6rem) clamp(2rem,5vw,5rem);display:grid}.section-head .section-kicker{grid-column:1/-1;margin:0}.section-head .section-lede{margin:0 0 .65rem}}.cta{border:1px solid var(--void-line);min-height:2.95rem;font-family:var(--font-mono),monospace;letter-spacing:.16em;text-transform:uppercase;color:var(--void-ink);background:var(--void-fog);border-radius:999px;justify-content:center;align-items:center;gap:.55rem;padding:0 1.5rem;font-size:.76rem;text-decoration:none;display:inline-flex}@supports (color:color-mix(in lab,red,red)){.cta{background:color-mix(in srgb,var(--void-fog) 70%,transparent)}}.cta{cursor:pointer;transform:translateY(var(--rise,0px));transition:border-color .35s var(--void-ease),background .35s var(--void-ease),transform .35s var(--void-ease),color .35s var(--void-ease)}.cta:hover,.cta:focus-visible{--rise:-2px;border-color:var(--void-ink)}@supports (color:color-mix(in lab,red,red)){.cta:hover,.cta:focus-visible{border-color:color-mix(in srgb,var(--void-ink) 35%,transparent)}}.cta:hover,.cta:focus-visible{color:var(--void-ink)}.cta--primary{color:#08060d;background:var(--void-ink);border-color:#0000;font-weight:600}.cta--primary:hover,.cta--primary:focus-visible{color:#08060d;background:#fff;border-color:#0000}.chips{flex-wrap:wrap;gap:.45rem;margin:0;padding:0;list-style:none;display:flex}.chips li,.chip{border:1px solid var(--void-line-soft);background:var(--void-ink);border-radius:999px;padding:.28rem .72rem}@supports (color:color-mix(in lab,red,red)){.chips li,.chip{background:color-mix(in srgb,var(--void-ink) 4%,transparent)}}.chips li,.chip{font-family:var(--font-mono),monospace;letter-spacing:.09em;color:var(--void-muted);white-space:nowrap;font-size:.66rem}.backdrop{z-index:0;pointer-events:none;contain:strict;position:fixed;inset:0;overflow:hidden}.backdrop__canvas{position:absolute;inset:0}.backdrop__grain{opacity:.03;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)'/%3E%3C/svg%3E");animation:6s steps(6,end) infinite grain-drift;position:absolute;inset:-120%}@keyframes grain-drift{0%{transform:translate(0)}20%{transform:translate(-6%,4%)}40%{transform:translate(4%,-5%)}60%{transform:translate(-3%,-3%)}80%{transform:translate(5%,3%)}to{transform:translate(0)}}.portfolio-boot{z-index:88;pointer-events:none;background:var(--void-bg);transition-property:opacity;transition-timing-function:ease-out;position:fixed;inset:0}html.cursor-active,html.cursor-active *{cursor:none}:is(html.cursor-active :fullscreen,html.cursor-active :fullscreen *){cursor:auto}.mass-cursor{z-index:90;pointer-events:none;will-change:transform;position:fixed;top:0;left:0}html:not(.cursor-active) .mass-cursor,.mass-cursor[data-hidden]{display:none}.mass-cursor__dot{width:5px;height:5px;transition:opacity .2s var(--void-ease);background:#fff;border-radius:999px;margin:-2.5px 0 0 -2.5px;position:absolute;top:0;left:0;box-shadow:0 0 0 1px #08060d80}.mass-cursor__ring{border:1.5px solid var(--void-glow);opacity:.6;width:26px;height:26px;transition:scale .22s var(--void-ease),opacity .22s var(--void-ease),background .22s var(--void-ease);background:0 0;border-radius:999px;margin:-13px 0 0 -13px;position:absolute;top:0;left:0}.mass-cursor[data-hover] .mass-cursor__ring{opacity:.9;background:var(--void-glow);scale:1.45}@supports (color:color-mix(in lab,red,red)){.mass-cursor[data-hover] .mass-cursor__ring{background:color-mix(in srgb,var(--void-glow) 12%,transparent)}}.mass-cursor[data-press] .mass-cursor__ring{opacity:1;scale:.8}@media(prefers-reduced-motion:reduce){.mass-cursor__ring{transition:opacity .2s var(--void-ease),background .2s var(--void-ease)}}.nav{z-index:60;padding:.85rem var(--pad-x);transition:background .4s var(--void-ease),border-color .4s var(--void-ease);border-bottom:1px solid #0000;justify-content:space-between;align-items:center;gap:1rem;display:flex;position:fixed;top:0;left:0;right:0}.nav[data-scrolled=true]{background:var(--surface-1);border-bottom-color:var(--void-line-soft)}.nav__progress{transform-origin:0;background:var(--void-glow);width:100%;height:1px;position:absolute;bottom:-1px;left:0;transform:scaleX(0)}.nav__brand{font-family:var(--font-display),sans-serif;letter-spacing:-.01em;color:var(--void-ink);align-items:baseline;gap:.5rem;font-size:.98rem;font-weight:700;text-decoration:none;display:inline-flex}.nav__brand-dot{background:var(--void-glow);border-radius:50%;width:.42rem;height:.42rem}.nav__links{align-items:center;gap:clamp(.9rem,2.2vw,1.9rem);margin:0;padding:0;list-style:none;display:none}@media(min-width:880px){.nav__links{display:flex}}.nav__link{font-family:var(--font-mono),monospace;letter-spacing:.14em;text-transform:uppercase;color:var(--void-dim);transition:color .3s var(--void-ease);align-items:center;padding:.5rem 0;font-size:.7rem;text-decoration:none;display:inline-flex;position:relative}.nav__link:after{content:"";background:var(--void-glow);transform-origin:0;height:1px;transition:transform .35s var(--void-ease);position:absolute;bottom:.28rem;left:0;right:0;transform:scaleX(0)}.nav__link:hover,.nav__link:focus-visible{color:var(--void-ink)}.nav__link:hover:after,.nav__link:focus-visible:after{transform:scaleX(1)}.nav__link[aria-current=true]{color:var(--void-ink)}.nav__link[aria-current=true]:after{transform:scaleX(1)}.nav__actions{align-items:center;gap:.6rem;display:flex}.nav__cta{display:none}@media(min-width:880px){.nav__cta{min-height:2.4rem;padding:0 1.05rem;font-size:.68rem;display:inline-flex}}.nav__burger{border:1px solid var(--void-line-soft);background:var(--surface-1);cursor:pointer;border-radius:999px;flex-direction:column;justify-content:center;align-items:center;gap:5px;width:2.75rem;height:2.75rem;padding:0;display:inline-flex}@media(min-width:880px){.nav__burger{display:none}}.nav__burger span{background:var(--void-ink);width:1.05rem;height:1.5px;transition:transform .35s var(--void-ease),opacity .2s linear;border-radius:2px;display:block}.nav__burger[aria-expanded=true] span:first-child{transform:translateY(6.5px)rotate(45deg)}.nav__burger[aria-expanded=true] span:nth-child(2){opacity:0}.nav__burger[aria-expanded=true] span:nth-child(3){transform:translateY(-6.5px)rotate(-45deg)}.nav-drawer{z-index:55;padding:6rem var(--pad-x) 3rem;background:var(--void-bg);flex-direction:column;justify-content:center;gap:.35rem;display:flex;position:fixed;inset:0}@media(min-width:880px){.nav-drawer{display:none}}.nav-drawer__link{border-bottom:1px solid var(--void-line-soft);font-family:var(--font-display),sans-serif;letter-spacing:-.03em;color:var(--void-ink);animation:drawer-link-in .55s var(--ease-out-soft) backwards;animation-delay:calc(var(--i,0) * 55ms + 60ms);align-items:baseline;gap:1rem;padding:.75rem 0;font-size:clamp(1.7rem,9vw,2.4rem);font-weight:700;text-decoration:none;display:flex}@keyframes drawer-link-in{0%{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}.nav-drawer{animation:portfolio-in .3s var(--void-ease)}.nav-drawer__index{font-family:var(--font-mono),monospace;letter-spacing:.2em;color:var(--violet-soft);font-size:.7rem}.nav-drawer__foot{font-family:var(--font-mono),monospace;letter-spacing:.12em;color:var(--void-dim);margin-top:2rem;font-size:.72rem}.nav-drawer__foot a{color:var(--magenta-soft);text-decoration:none}.hero{align-items:center;min-height:100svh;padding-top:clamp(6rem,14vh,9rem);padding-bottom:clamp(4rem,10vh,7rem);display:flex;position:relative;overflow:hidden}.hero__grid{align-items:center;gap:clamp(2.5rem,6vw,4.5rem);display:grid}@media(min-width:1000px){.hero__grid{grid-template-columns:minmax(0,1.35fr) minmax(0,1fr)}}.hero__status{border:1px solid var(--void-line-soft);background:var(--void-fog);border-radius:999px;align-items:center;gap:.6rem;padding:.4rem .9rem .4rem .7rem;display:inline-flex}@supports (color:color-mix(in lab,red,red)){.hero__status{background:color-mix(in srgb,var(--void-fog) 60%,transparent)}}.hero__status{font-family:var(--font-mono),monospace;letter-spacing:.14em;text-transform:uppercase;color:var(--void-muted);font-size:.68rem}.hero__status-dot{background:var(--void-glow);border-radius:50%;width:.42rem;height:.42rem;position:relative}.hero__status-dot:after{content:"";border:1px solid var(--void-glow);animation:status-pulse 2.4s var(--void-ease) infinite;border-radius:50%;position:absolute;inset:-3px}@keyframes status-pulse{0%{opacity:.9;transform:scale(.7)}70%,to{opacity:0;transform:scale(1.9)}}.hero__copy{container-type:inline-size}.hero__name{font-family:var(--font-display),sans-serif;letter-spacing:-.05em;color:var(--void-ink);transform-style:preserve-3d;margin:1.5rem 0 0;font-size:clamp(3rem,23cqi,9.2rem);font-weight:800;line-height:.86}.hero__name-line{width:fit-content;display:block}.hero__name-line--outline{color:var(--void-dim)}@supports (-webkit-text-stroke:1px black){.hero__name-line--outline{color:#0000;-webkit-text-stroke:1.4px var(--void-ink)}@supports (color:color-mix(in lab,red,red)){.hero__name-line--outline{-webkit-text-stroke:1.4px color-mix(in srgb,var(--void-ink) 55%,transparent)}}}.hero__tilt{transform-style:preserve-3d;will-change:transform}.hero__role{font-family:var(--font-mono),monospace;letter-spacing:.14em;text-transform:uppercase;color:var(--void-muted);align-items:center;min-height:1.6em;margin:1.5rem 0 0;font-size:clamp(.78rem,2.4vw,.92rem);display:flex}.hero__bio{max-width:34ch;font-family:var(--font-serif),serif;letter-spacing:.01em;color:var(--void-ink);margin:1.7rem 0 0;font-size:clamp(1.35rem,2.6vw,1.7rem);font-style:italic;line-height:1.42}@supports (color:color-mix(in lab,red,red)){.hero__bio{color:color-mix(in srgb,var(--void-ink) 86%,transparent)}}.hero__bio{text-wrap:pretty}.hero__actions{flex-wrap:wrap;gap:.75rem;margin-top:2.2rem;display:flex}.hero__visual{aspect-ratio:1;cursor:grab;touch-action:pan-y;width:100%;max-width:clamp(15rem,42vw,30rem);margin-inline:auto;position:relative}.hero__visual:active{cursor:grabbing}.hero__visual:before{content:"";background:radial-gradient(circle at 50% 50%,var(--void-ink) 0%,transparent 62%);border-radius:50%;position:absolute;inset:-12%}@supports (color:color-mix(in lab,red,red)){.hero__visual:before{background:radial-gradient(circle at 50% 50%,color-mix(in srgb,var(--void-ink) 4%,transparent) 0%,transparent 62%)}}.hero__visual:before{filter:blur(18px);pointer-events:none}.hero__visual-canvas{z-index:1;pointer-events:none;position:relative}.hero__visual-hint{font-family:var(--font-mono),monospace;letter-spacing:.24em;text-transform:uppercase;white-space:nowrap;color:var(--void-dim);pointer-events:none;opacity:.85;transition:opacity .6s var(--void-ease);font-size:.6rem;position:absolute;bottom:-.25rem;left:50%;transform:translate(-50%)}.hero__visual-hint[data-done=true]{opacity:0}@media(max-width:640px){.hero__visual-hint{display:none}}.hero__visual-still{background:radial-gradient(circle at 50% 50%,#050309 58%,var(--void-glow) 88%,var(--void-glow) 100%);border-radius:50%;position:absolute;inset:24%}@supports (color:color-mix(in lab,red,red)){.hero__visual-still{background:radial-gradient(circle at 50% 50%,#050309 58%,color-mix(in srgb,var(--void-glow) 12%,#050309) 88%,color-mix(in srgb,var(--void-glow) 70%,transparent))}}.hero__visual-still{box-shadow:inset 0 0 40px -12px var(--void-glow),0 0 90px -30px var(--void-glow)}@supports (color:color-mix(in lab,red,red)){.hero__visual-still{box-shadow:inset 0 0 40px -12px color-mix(in srgb,var(--void-glow) 45%,transparent),0 0 90px -30px color-mix(in srgb,var(--void-glow) 65%,transparent)}}.hero__visual-still:after{content:"";border:1px solid var(--violet-soft);border-radius:50%;position:absolute;inset:-26% -46%}@supports (color:color-mix(in lab,red,red)){.hero__visual-still:after{border:1px solid color-mix(in srgb,var(--violet-soft) 42%,transparent)}}.hero__visual-still:after{transform:rotate(-24deg)}.hero__cue{font-family:var(--font-mono),monospace;letter-spacing:.3em;text-transform:uppercase;color:var(--void-dim);transition:opacity .5s var(--void-ease),transform .5s var(--void-ease);flex-direction:column;align-items:center;gap:.6rem;font-size:.62rem;display:flex;position:absolute;bottom:clamp(5.2rem,12vh,6.4rem);left:50%;transform:translate(-50%)}.hero__cue[data-hidden=true]{opacity:0;pointer-events:none;transform:translate(-50%,12px)}.hero__cue-arrow{background:linear-gradient(180deg,transparent,var(--magenta-soft));width:1px;height:2.2rem;animation:cue-fall 2s var(--void-ease) infinite;display:block}@keyframes cue-fall{0%{transform-origin:top;opacity:0;transform:scaleY(.3)}40%{opacity:1}to{transform-origin:top;opacity:0;transform:scaleY(1)}}.about__grid{align-items:start;gap:clamp(2.5rem,6vw,4.5rem);display:grid}.about__grid--simple{border-top:1px solid var(--void-line);padding-top:clamp(1.5rem,3vw,2.5rem)}@media(min-width:920px){.about__grid{grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr)}}.lift{width:100%;font:inherit;color:inherit;cursor:zoom-in;perspective:1000px;--px:0;--py:0;--tilt:10deg;--lift-z:44px;--lift-radius:16px;background:0 0;border:0;padding:0;display:block;position:relative}.lift__img{border-radius:var(--lift-radius);width:100%;height:auto;transform:rotateX(calc(var(--py) * -1 * var(--tilt))) rotateY(calc(var(--px) * var(--tilt))) translateZ(0);will-change:transform;transition:transform .3s cubic-bezier(.22,1,.36,1),box-shadow .45s;display:block;position:relative;box-shadow:0 10px 30px -18px #000000e6}.lift:hover .lift__img,.lift:focus-visible .lift__img{transform:rotateX(calc(var(--py) * -1 * var(--tilt))) rotateY(calc(var(--px) * var(--tilt))) translateZ(var(--lift-z)) scale(var(--lift-scale,1));box-shadow:0 42px 70px -26px #000000f2}.lift:focus-visible{outline:2px solid var(--void-glow)}@supports (color:color-mix(in lab,red,red)){.lift:focus-visible{outline:2px solid color-mix(in srgb,var(--void-glow) 70%,transparent)}}.lift:focus-visible{outline-offset:6px;border-radius:var(--lift-radius)}@media(hover:none),(prefers-reduced-motion:reduce){.lift:hover .lift__img,.lift:focus-visible .lift__img{transform:none;box-shadow:0 10px 30px -18px #000000e6}}.lightbox{z-index:200;cursor:zoom-out;background:#04030af0;place-items:center;padding:clamp(1rem,4vw,3rem);animation:.28s both lightbox-in;display:grid;position:fixed;inset:0}.lightbox__img{object-fit:contain;border-radius:10px;width:auto;max-width:100%;height:auto;max-height:calc(100vh - 7rem);animation:.34s cubic-bezier(.22,1,.36,1) both lightbox-img-in;display:block;box-shadow:0 60px 120px -40px #000}.lightbox__close{cursor:pointer;font-family:var(--font-mono),monospace;letter-spacing:.16em;text-transform:uppercase;color:var(--void-ink);border:1px solid var(--void-ink);border-radius:999px;padding:.5rem 1rem;font-size:.68rem;position:absolute;top:clamp(1rem,3vw,2rem);right:clamp(1rem,3vw,2rem)}@supports (color:color-mix(in lab,red,red)){.lightbox__close{border:1px solid color-mix(in srgb,var(--void-ink) 28%,transparent)}}.lightbox__close{background:var(--void-bg)}@supports (color:color-mix(in lab,red,red)){.lightbox__close{background:color-mix(in srgb,var(--void-bg) 60%,transparent)}}.lightbox__close{transition:border-color .3s,background .3s}.lightbox__close:hover,.lightbox__close:focus-visible{border-color:var(--void-glow)}@supports (color:color-mix(in lab,red,red)){.lightbox__close:hover,.lightbox__close:focus-visible{border-color:color-mix(in srgb,var(--void-glow) 70%,transparent)}}.lightbox__close:hover,.lightbox__close:focus-visible{background:var(--void-glow)}@supports (color:color-mix(in lab,red,red)){.lightbox__close:hover,.lightbox__close:focus-visible{background:color-mix(in srgb,var(--void-glow) 20%,transparent)}}@keyframes lightbox-in{0%{opacity:0}}@keyframes lightbox-img-in{0%{opacity:0;transform:scale(.94)translateY(10px)}}@media(prefers-reduced-motion:reduce){.lightbox,.lightbox__img{animation-duration:.01ms}}.about__photo{width:min(100%,20rem);margin:0 auto;position:relative}.about__photo .lift__img{aspect-ratio:4/5;object-fit:cover;object-position:50% 42%}.about__avatar--empty{aspect-ratio:4/5;background:radial-gradient(circle at 50% 42%,#060409 48%,var(--void-glow) 82%,var(--void-glow) 100%);border-radius:16px;place-items:center;width:100%;display:grid;position:relative;overflow:hidden}@supports (color:color-mix(in lab,red,red)){.about__avatar--empty{background:radial-gradient(circle at 50% 42%,#060409 48%,color-mix(in srgb,var(--void-glow) 14%,#060409) 82%,color-mix(in srgb,var(--void-glow) 55%,transparent))}}.about__photo-caption{font-family:var(--font-mono),monospace;letter-spacing:.16em;text-transform:uppercase;color:var(--void-muted);justify-content:center;align-items:center;margin:1.9rem 0 0;font-size:.68rem;transition:color .35s;display:flex}.about__photo:hover .about__photo-caption{color:var(--void-ink)}@media(hover:none),(prefers-reduced-motion:reduce){.about__photo:hover .about__photo-base,.about__photo:hover .about__avatar{transform:none;box-shadow:0 10px 30px -18px #000000e6}}.about__avatar-initials{font-family:var(--font-display),sans-serif;letter-spacing:-.04em;color:var(--void-ink);font-size:clamp(2.5rem,8vw,3.6rem);font-weight:800}.about__intro{font-family:var(--font-body),sans-serif;letter-spacing:-.01em;color:var(--void-ink);text-wrap:pretty;margin:0;font-size:clamp(1.3rem,2.4vw,1.7rem);font-style:normal;font-weight:500;line-height:1.5}.about__word{display:inline-block}.about__facts{gap:.7rem;margin:1.75rem 0 0;padding:0;list-style:none;display:grid}.about__facts li{color:var(--void-muted);padding-left:1.5rem;font-size:.95rem;line-height:1.6;position:relative}.about__facts li:before{content:"";background:var(--void-glow);border-radius:50%;width:.42rem;height:.42rem;position:absolute;top:.62em;left:0}.about__building{border-top:1px solid var(--void-line);gap:1rem;margin:2.25rem 0 0;padding-top:1.35rem;display:grid}.about__building-row{flex-wrap:wrap;align-items:baseline;gap:.75rem 1.25rem;margin:0;display:flex}.about__building-label{font-family:var(--font-mono),monospace;letter-spacing:.18em;text-transform:uppercase;color:var(--void-muted);font-size:.68rem}.about__building-value{font-family:var(--font-display),sans-serif;letter-spacing:-.02em;color:var(--void-ink);font-size:clamp(1.05rem,2vw,1.25rem);font-weight:600}.about__links{flex-wrap:wrap;align-items:center;gap:.35rem;margin:0;padding:0;list-style:none;display:flex}.about__link{width:2.35rem;height:2.35rem;color:var(--void-muted);transition:color .28s var(--void-ease),background-color .28s var(--void-ease),transform .28s var(--ease-out-soft);border-radius:999px;place-items:center;text-decoration:none;display:grid}.about__link svg{width:1.1rem;height:1.1rem}.about__link:hover,.about__link:focus-visible{color:var(--void-ink);background-color:var(--void-glow)}@supports (color:color-mix(in lab,red,red)){.about__link:hover,.about__link:focus-visible{background-color:color-mix(in srgb,var(--void-glow) 12%,transparent)}}.about__link:hover,.about__link:focus-visible{transform:translateY(-1px)}.projects__filters{flex-wrap:wrap;gap:.5rem;margin-bottom:2rem;display:flex}.filter{border:1px solid var(--void-line-soft);font-family:var(--font-mono),monospace;letter-spacing:.14em;text-transform:uppercase;color:var(--void-dim);cursor:pointer;transition:color .3s var(--void-ease),border-color .3s var(--void-ease),background .3s var(--void-ease);background:0 0;border-radius:999px;padding:.5rem 1.05rem;font-size:.7rem}.filter:hover{color:var(--void-ink);border-color:var(--void-ink)}@supports (color:color-mix(in lab,red,red)){.filter:hover{border-color:color-mix(in srgb,var(--void-ink) 22%,transparent)}}.filter[aria-pressed=true]{color:var(--void-ink);border-color:var(--void-ink)}@supports (color:color-mix(in lab,red,red)){.filter[aria-pressed=true]{border-color:color-mix(in srgb,var(--void-ink) 28%,transparent)}}.filter[aria-pressed=true]{background:var(--void-ink)}@supports (color:color-mix(in lab,red,red)){.filter[aria-pressed=true]{background:color-mix(in srgb,var(--void-ink) 8%,transparent)}}.bento{grid-template-columns:1fr;gap:1rem;margin:0;padding:0;list-style:none;display:grid}@media(min-width:700px){.bento{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:1100px){.bento{grid-template-columns:repeat(3,minmax(0,1fr));grid-auto-rows:minmax(15rem,auto)}.bento__item--wide{grid-column:span 2}}.bento__item{animation:card-in .55s var(--ease-out-soft) backwards;animation-delay:calc(var(--i,0) * 45ms)}@keyframes card-in{0%{opacity:0;transform:translateY(16px)scale(.985)}to{opacity:1;transform:none}}.card{--tilt-x:0deg;--tilt-y:0deg;--lift:0px;border:1px solid var(--void-line-soft);background:linear-gradient(168deg,var(--surface-2),var(--surface-1) 62%);height:100%;min-height:15rem;transform:perspective(1000px) translateY(var(--lift)) rotateX(var(--tilt-x)) rotateY(var(--tilt-y));transition:transform .3s var(--ease-out-soft),border-color .45s var(--void-ease),box-shadow .45s var(--void-ease);border-radius:.5rem;flex-direction:column;padding:1.6rem;display:flex;position:relative;overflow:hidden}.card:after{content:"";z-index:3;opacity:0;background:radial-gradient(circle 16rem at var(--sheen-x,50%) var(--sheen-y,50%),var(--card-accent),transparent 62%);position:absolute;inset:0}@supports (color:color-mix(in lab,red,red)){.card:after{background:radial-gradient(circle 16rem at var(--sheen-x,50%) var(--sheen-y,50%),color-mix(in srgb,var(--card-accent) 15%,transparent),transparent 62%)}}.card:after{transition:opacity .4s var(--void-ease);pointer-events:none}.card:hover:after,.card:focus-within:after{opacity:1}.card:before{content:"";opacity:0;background:radial-gradient(ellipse 80% 60% at 50% 0%,var(--card-accent),transparent 70%);position:absolute;inset:0}@supports (color:color-mix(in lab,red,red)){.card:before{background:radial-gradient(ellipse 80% 60% at 50% 0%,color-mix(in srgb,var(--card-accent) 22%,transparent),transparent 70%)}}.card:before{transition:opacity .45s var(--void-ease);pointer-events:none}.card:hover,.card:focus-within{--lift:-6px;border-color:var(--card-accent)}@supports (color:color-mix(in lab,red,red)){.card:hover,.card:focus-within{border-color:color-mix(in srgb,var(--card-accent) 42%,transparent)}}.card:hover,.card:focus-within{box-shadow:0 28px 60px -34px #000,0 2px 0 0 var(--card-accent) inset}@supports (color:color-mix(in lab,red,red)){.card:hover,.card:focus-within{box-shadow:0 28px 60px -34px #000,0 2px color-mix(in srgb,var(--card-accent) 10%,transparent) inset}}.card:hover:before,.card:focus-within:before{opacity:1}.card[data-accent=magenta]{--card-accent:var(--void-glow)}.card[data-accent=violet]{--card-accent:var(--violet-soft)}.card[data-accent=cyan]{--card-accent:var(--void-ice)}.card__head{justify-content:space-between;align-items:baseline;gap:1rem;display:flex;position:relative}.card__category{font-family:var(--font-mono),monospace;letter-spacing:.2em;text-transform:uppercase;color:var(--void-dim);font-size:.62rem}.card__year{font-family:var(--font-mono),monospace;color:var(--void-dim);font-variant-numeric:tabular-nums;font-size:.68rem}.card__title{font-family:var(--font-display),sans-serif;letter-spacing:-.03em;color:var(--void-ink);margin:.9rem 0 0;font-size:clamp(1.45rem,2.9vw,1.95rem);font-weight:700;line-height:1.1;position:relative}.card__blurb{color:var(--void-muted);text-wrap:pretty;margin:.75rem 0 0;font-size:.93rem;line-height:1.65;position:relative}.card__foot{margin-top:auto;padding-top:1.35rem;position:relative}.card__links{opacity:0;max-height:0;transition:max-height .45s var(--ease-out-soft),opacity .35s var(--void-ease),margin-top .45s var(--ease-out-soft);flex-wrap:wrap;align-items:center;gap:1.1rem;margin-top:1rem;display:flex;overflow:hidden}.card:hover .card__links,.card:focus-within .card__links{opacity:1;max-height:4rem}@media(hover:none){.card__links{opacity:1;max-height:none}.card__link{padding-block:.7rem}.about__link{width:2.75rem;height:2.75rem}}.card__link{font-family:var(--font-mono),monospace;letter-spacing:.12em;text-transform:uppercase;color:var(--void-ink);cursor:pointer;transition:border-color .3s var(--void-ease),color .3s var(--void-ease);background:0 0;border:0;border-bottom:1px solid #0000;align-items:center;gap:.4rem;padding:0;font-size:.7rem;text-decoration:none;display:inline-flex}.card__link:hover,.card__link:focus-visible{color:var(--card-accent);border-bottom-color:var(--card-accent)}.card__expand{z-index:1;cursor:pointer;font:inherit;color:#0000;background:0 0;border:0;padding:0;position:absolute;inset:0}.card__links,.card__link{z-index:2;position:relative}.projects__empty{font-family:var(--font-mono),monospace;letter-spacing:.1em;color:var(--void-dim);padding:3rem 0;font-size:.8rem}.stack{border-top:1px solid var(--void-line-soft)}.stack__row{border-bottom:1px solid var(--void-line-soft);gap:.9rem 2.5rem;padding:clamp(1.25rem,3vw,1.85rem) 0;display:grid}@media(min-width:780px){.stack__row{grid-template-columns:12rem minmax(0,1fr);align-items:baseline}}.stack__meta{align-items:baseline;gap:.75rem;display:flex}.stack__index{font-family:var(--font-mono),monospace;letter-spacing:.14em;color:var(--row-accent);font-variant-numeric:tabular-nums;font-size:.66rem}.stack__title{font-family:var(--font-display),sans-serif;letter-spacing:-.02em;color:var(--void-ink);margin:0;font-size:clamp(1.08rem,2.4vw,1.3rem);font-weight:600}.stack__count{font-family:var(--font-mono),monospace;color:var(--void-dim);font-variant-numeric:tabular-nums;margin-left:auto;font-size:.66rem}@media(min-width:780px){.stack__count{margin-left:0}}.stack__items{flex-wrap:wrap;gap:.4rem .45rem;margin:0;padding:0;list-style:none;display:flex}.stack__item{border:1px solid var(--void-line-soft);background:var(--surface-1);font-family:var(--font-mono),monospace;letter-spacing:.04em;color:var(--void-muted);cursor:pointer;transition:color .25s var(--void-ease),border-color .25s var(--void-ease),background .25s var(--void-ease),opacity .25s var(--void-ease);border-radius:.35rem;padding:.34rem .7rem;font-size:.73rem}.stack__item:hover,.stack__item[data-state=lit]{color:var(--void-ink);border-color:var(--row-accent)}@supports (color:color-mix(in lab,red,red)){.stack__item:hover,.stack__item[data-state=lit]{border-color:color-mix(in srgb,var(--row-accent) 50%,transparent)}}.stack__item:hover,.stack__item[data-state=lit]{background:var(--surface-3)}.stack__item[data-state=dim]{opacity:.3}.stack__caption{min-height:1.5rem;font-family:var(--font-mono),monospace;letter-spacing:.05em;color:var(--void-muted);flex-wrap:wrap;gap:.5rem;margin:1.4rem 0 0;font-size:.72rem;display:flex}.stack__caption-key{color:var(--void-ink)}.stack__caption-sep,.stack__caption-idle{color:var(--void-dim)}.edu-list{gap:clamp(1.5rem,3vw,2.2rem);margin:0;padding:0;list-style:none;display:grid}.edu-card{border:1px solid var(--void-line-soft);background:linear-gradient(168deg,var(--surface-2),var(--surface-1) 62%);color:inherit;transition:transform .35s var(--ease-out-soft),border-color .45s var(--void-ease),box-shadow .45s var(--void-ease);border-radius:.75rem;text-decoration:none;display:grid;position:relative;overflow:hidden}a.edu-card:hover,a.edu-card:focus-visible{border-color:var(--magenta-soft);transform:translateY(-5px)}@supports (color:color-mix(in lab,red,red)){a.edu-card:hover,a.edu-card:focus-visible{border-color:color-mix(in srgb,var(--magenta-soft) 42%,transparent)}}a.edu-card:hover,a.edu-card:focus-visible{box-shadow:0 34px 80px -40px #000,0 2px 0 0 var(--magenta-soft) inset}@supports (color:color-mix(in lab,red,red)){a.edu-card:hover,a.edu-card:focus-visible{box-shadow:0 34px 80px -40px #000,0 2px color-mix(in srgb,var(--magenta-soft) 10%,transparent) inset}}a.edu-card:hover,a.edu-card:focus-visible{outline:none}.edu-card__mark{aspect-ratio:16/9;border-bottom:1px solid var(--void-line-soft);background:radial-gradient(ellipse 70% 80% at 50% 60%,var(--violet),transparent 70%),#0a0a0a;place-items:center;display:grid;position:relative;overflow:hidden}@supports (color:color-mix(in lab,red,red)){.edu-card__mark{background:radial-gradient(ellipse 70% 80% at 50% 60%,color-mix(in srgb,var(--violet) 18%,transparent),transparent 70%),#0a0a0a}}.edu-card__mark img{aspect-ratio:1;object-fit:cover;border-radius:.7rem;width:min(56%,11rem);height:auto;display:block}.edu-card__body{align-content:center;gap:.35rem;min-width:0;padding:clamp(1.3rem,2.6vw,1.9rem);display:grid}.edu-card__years{font-family:var(--font-mono),monospace;letter-spacing:.2em;text-transform:uppercase;color:var(--void-accent);font-size:.68rem}.edu-card__title{font-family:var(--font-display),sans-serif;letter-spacing:-.03em;color:var(--void-ink);font-size:clamp(1.5rem,2.8vw,2rem);font-weight:700;line-height:1.08}.edu-card__detail{color:var(--void-muted);margin-top:.25rem;font-size:.98rem;line-height:1.5}@media(min-width:900px){.edu-card{grid-template-columns:minmax(0,5fr) minmax(0,7fr);align-items:stretch}.edu-card__mark{aspect-ratio:auto;border-bottom:none;border-right:1px solid var(--void-line-soft);height:100%;min-height:15rem}.edu-card__mark img{width:min(58%,10.5rem)}}.contact{position:relative;overflow:hidden}.contact__aurora{z-index:-1;background:radial-gradient(ellipse 50% 40% at 20% 30%,var(--violet),transparent 65%),radial-gradient(ellipse 45% 35% at 78% 65%,var(--nebula-mid),transparent 65%),radial-gradient(ellipse 40% 30% at 55% 90%,var(--void-glow),transparent 65%);position:absolute;inset:-30% -10%}@supports (color:color-mix(in lab,red,red)){.contact__aurora{background:radial-gradient(ellipse 50% 40% at 20% 30%,color-mix(in srgb,var(--violet) 14%,transparent),transparent 65%),radial-gradient(ellipse 45% 35% at 78% 65%,color-mix(in srgb,var(--nebula-mid) 30%,transparent),transparent 65%),radial-gradient(ellipse 40% 30% at 55% 90%,color-mix(in srgb,var(--void-glow) 9%,transparent),transparent 65%)}}.contact__aurora{filter:blur(40px);animation:26s ease-in-out infinite alternate aurora-drift}@keyframes aurora-drift{0%{transform:translate(-2%,-1%)scale(1)}50%{transform:translate(3%,2%)scale(1.08)}to{transform:translate(-1%,3%)scale(1.02)}}.contact__title{font-size:clamp(2.3rem,8vw,5rem);line-height:.98}.contact__panel{max-width:34rem;margin-top:clamp(2.5rem,5vw,3.5rem)}.form,.form__row{gap:1.35rem;display:grid}@media(min-width:620px){.form__row{grid-template-columns:repeat(2,minmax(0,1fr))}}.field{gap:.5rem;display:grid}.field__label{font-family:var(--font-mono),monospace;letter-spacing:.2em;text-transform:uppercase;color:var(--void-dim);font-size:.63rem}.field input,.field textarea{border:0;border-bottom:1px solid var(--void-line);width:100%;color:var(--void-ink);resize:vertical;transition:border-color .3s var(--void-ease);background:0 0;border-radius:0;padding:.6rem 0;font-family:inherit;font-size:1rem}.field input:focus,.field textarea:focus{border-bottom-color:var(--void-glow);outline:none}.field[data-invalid=true] input,.field[data-invalid=true] textarea{border-bottom-color:var(--void-glow)}@supports (color:color-mix(in lab,red,red)){.field[data-invalid=true] input,.field[data-invalid=true] textarea{border-bottom-color:color-mix(in srgb,var(--void-glow) 78%,transparent)}}.field__error{font-family:var(--font-mono),monospace;letter-spacing:.06em;color:var(--magenta-soft);margin:0;font-size:.66rem}.form__foot{flex-wrap:wrap;align-items:center;gap:1.1rem;margin-top:.35rem;display:flex}.form__hint{font-family:var(--font-mono),monospace;color:var(--void-dim);margin:0;font-size:.66rem}.contact__label{font-family:var(--font-mono),monospace;letter-spacing:.24em;text-transform:uppercase;color:var(--void-dim);margin:0 0 .7rem;font-size:.63rem}.contact__label--spaced{margin-top:2.4rem}.contact__mail{font-family:var(--font-display),sans-serif;letter-spacing:-.025em;color:var(--void-ink);border-bottom:1px solid var(--void-glow);font-size:clamp(1.15rem,3vw,1.6rem);font-weight:600;text-decoration:none;display:inline-block}@supports (color:color-mix(in lab,red,red)){.contact__mail{border-bottom:1px solid color-mix(in srgb,var(--void-glow) 45%,transparent)}}.contact__mail{transition:border-color .3s var(--void-ease),color .3s var(--void-ease);overflow-wrap:anywhere}.contact__mail:hover,.contact__mail:focus-visible{color:var(--void-accent);border-bottom-color:var(--void-glow)}.contact__loc{color:var(--void-muted);margin:.9rem 0 0;font-size:.92rem}.contact__socials{flex-wrap:wrap;gap:.7rem;margin:0;padding:0;list-style:none;display:flex}.contact__social{border:1px solid var(--void-line-soft);color:var(--void-muted);transition:color .28s var(--void-ease),border-color .28s var(--void-ease),transform .28s var(--ease-out-soft),background-color .28s var(--void-ease);border-radius:999px;align-items:center;gap:.6rem;padding:.62rem .95rem .62rem .72rem;text-decoration:none;display:inline-flex}.contact__social svg{flex:none;width:1.2rem;height:1.2rem}.contact__social-name{font-family:var(--font-mono),monospace;letter-spacing:.14em;text-transform:uppercase;font-size:.7rem}.contact__social:hover,.contact__social:focus-visible{color:var(--void-ink);border-color:var(--void-glow)}@supports (color:color-mix(in lab,red,red)){.contact__social:hover,.contact__social:focus-visible{border-color:color-mix(in srgb,var(--void-glow) 55%,transparent)}}.contact__social:hover,.contact__social:focus-visible{background-color:var(--void-glow)}@supports (color:color-mix(in lab,red,red)){.contact__social:hover,.contact__social:focus-visible{background-color:color-mix(in srgb,var(--void-glow) 8%,transparent)}}.contact__social:hover,.contact__social:focus-visible{transform:translateY(-2px)}.site-footer{z-index:1;padding:clamp(3rem,7vw,5rem) var(--pad-x) 8.5rem;border-top:1px solid var(--void-line-soft);font-family:var(--font-mono),monospace;letter-spacing:.12em;color:var(--void-dim);gap:clamp(1.6rem,4vw,2.4rem);font-size:.68rem;display:grid;position:relative}.site-footer__meta{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem 2rem;display:flex}.site-footer a{color:var(--void-muted);transition:color .3s var(--void-ease);text-decoration:none}.site-footer a:hover,.site-footer a:focus-visible{color:var(--void-ink)}.site-footer__top{letter-spacing:.18em;text-transform:uppercase}.replay-intro{z-index:55;border:1px solid var(--void-line-soft);background:var(--surface-1);height:2.4rem;color:var(--void-dim);cursor:pointer;font-family:var(--font-mono),monospace;letter-spacing:.2em;text-transform:uppercase;transition:color .35s var(--void-ease),border-color .35s var(--void-ease),transform .35s var(--ease-out-soft);border-radius:999px;align-items:center;gap:.55rem;padding:0 .9rem 0 .75rem;font-size:.62rem;display:inline-flex;position:fixed;bottom:clamp(.9rem,3vw,1.9rem);left:clamp(.9rem,3vw,1.9rem)}.replay-intro__glyph{width:.4rem;height:.4rem;transition:background .35s var(--void-ease),transform .45s var(--void-ease);background:currentColor;border-radius:50%}.replay-intro:hover,.replay-intro:focus-visible{color:var(--void-ink);border-color:var(--void-ink)}@supports (color:color-mix(in lab,red,red)){.replay-intro:hover,.replay-intro:focus-visible{border-color:color-mix(in srgb,var(--void-ink) 28%,transparent)}}.replay-intro:hover,.replay-intro:focus-visible{transform:translateY(-1px)}.replay-intro:hover .replay-intro__glyph,.replay-intro:focus-visible .replay-intro__glyph{background:var(--void-glow);transform:scale(1.15)}@media(max-width:640px){.replay-intro{letter-spacing:.14em;gap:.4rem;height:2rem;padding:0 .6rem 0 .55rem;font-size:.52rem}.replay-intro__glyph{width:.32rem;height:.32rem}}.sound-toggle{z-index:56;border:1px solid var(--void-line-soft);background:var(--surface-1);height:2.4rem;color:var(--void-dim);cursor:pointer;font-family:var(--font-mono),monospace;letter-spacing:.2em;text-transform:uppercase;transition:color .35s var(--void-ease),border-color .35s var(--void-ease),bottom .45s var(--void-ease),transform .35s var(--ease-out-soft);border-radius:999px;align-items:center;gap:.55rem;padding:0 .9rem 0 .8rem;font-size:.62rem;display:inline-flex;position:fixed;bottom:clamp(.9rem,3vw,1.9rem);left:clamp(.9rem,3vw,1.9rem)}.sound-toggle[data-stacked]{bottom:calc(clamp(.9rem,3vw,1.9rem) + 3rem)}.sound-toggle:hover,.sound-toggle:focus-visible{color:var(--void-ink);border-color:var(--void-ink)}@supports (color:color-mix(in lab,red,red)){.sound-toggle:hover,.sound-toggle:focus-visible{border-color:color-mix(in srgb,var(--void-ink) 28%,transparent)}}.sound-toggle:hover,.sound-toggle:focus-visible{transform:translateY(-1px)}.sound-toggle__bars{align-items:center;gap:.13rem;height:.8rem;display:flex}.sound-toggle__bars span{width:.11rem;height:.22rem;transition:height .3s var(--void-ease),background .35s var(--void-ease);background:currentColor;border-radius:999px}.sound-toggle[data-state=on]{color:var(--void-muted)}.sound-toggle[data-state=on] .sound-toggle__bars span{animation:sound-bar 1.15s var(--void-ease) infinite alternate;background:#3b6ea5}.sound-toggle[data-state=on] .sound-toggle__bars span:nth-child(2){animation-duration:.78s;animation-delay:-.3s}.sound-toggle[data-state=on] .sound-toggle__bars span:nth-child(3){animation-duration:1.42s;animation-delay:-.62s}.sound-toggle[data-state=on] .sound-toggle__bars span:nth-child(4){animation-duration:.94s;animation-delay:-.16s}@keyframes sound-bar{0%{height:.16rem}to{height:.8rem}}.sound-toggle[data-state=pending]{color:var(--void-muted)}.sound-toggle[data-state=pending] .sound-toggle__bars span{background:var(--void-dim);height:.28rem;animation:sound-pending 1.8s var(--void-ease) infinite}.sound-toggle[data-state=pending] .sound-toggle__bars span:nth-child(2){animation-delay:.12s}.sound-toggle[data-state=pending] .sound-toggle__bars span:nth-child(3){animation-delay:.24s}.sound-toggle[data-state=pending] .sound-toggle__bars span:nth-child(4){animation-delay:.36s}@keyframes sound-pending{0%,to{opacity:.35}50%{opacity:1}}.sound-toggle[data-state=off] .sound-toggle__bars span{background:var(--void-dim);height:.11rem}@media(prefers-reduced-motion:reduce){.sound-toggle .sound-toggle__bars span{animation:none}.sound-toggle[data-state=on] .sound-toggle__bars span:nth-child(2){height:.6rem}.sound-toggle[data-state=on] .sound-toggle__bars span:nth-child(3){height:.42rem}}@media(max-width:640px){.sound-toggle{letter-spacing:.14em;gap:.4rem;height:2rem;padding:0 .6rem 0 .55rem;font-size:.52rem}.sound-toggle[data-stacked]{bottom:calc(clamp(.9rem,3vw,1.9rem) + 2.45rem)}.sound-toggle__bars{height:.65rem}.sound-toggle__bars span{width:.1rem}}.sheet{z-index:80;background:0 0;border:0;place-items:end center;padding:0;display:grid;position:fixed;inset:0}@media(min-width:760px){.sheet{place-items:center;padding:2rem}}.sheet__backdrop{background:#020206e0;position:absolute;inset:0}.sheet__panel{border:1px solid var(--void-line);background:var(--void-bg-soft);border-radius:1.25rem 1.25rem 0 0;width:min(46rem,100%);max-height:min(86svh,46rem);padding:clamp(1.5rem,4vw,2.5rem);position:relative;overflow-y:auto}@supports (color:color-mix(in lab,red,red)){.sheet__panel{background:color-mix(in srgb,var(--void-bg-soft) 94%,transparent)}}.sheet__panel{box-shadow:0 -20px 80px -30px #000}@media(min-width:760px){.sheet__panel{border-radius:1.25rem}}.sheet__close{border:1px solid var(--void-line-soft);width:2.4rem;height:2.4rem;color:var(--void-muted);cursor:pointer;transition:color .3s var(--void-ease),border-color .3s var(--void-ease);background:0 0;border-radius:50%;place-items:center;display:grid;position:absolute;top:1rem;right:1rem}.sheet__close:hover,.sheet__close:focus-visible{color:var(--void-ink);border-color:var(--void-glow)}@supports (color:color-mix(in lab,red,red)){.sheet__close:hover,.sheet__close:focus-visible{border-color:color-mix(in srgb,var(--void-glow) 60%,transparent)}}.sheet__title{font-family:var(--font-display),sans-serif;letter-spacing:-.035em;color:var(--void-ink);margin:.75rem 0 0;font-size:clamp(1.7rem,5vw,2.5rem);font-weight:700;line-height:1.05}.sheet__body{color:var(--void-muted);text-wrap:pretty;margin:1.2rem 0 0;font-size:1rem;line-height:1.75}.sheet__links{flex-wrap:wrap;gap:.75rem;margin-top:1.75rem;display:flex}@media(prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.portfolio-page{animation:none}.backdrop__grain,.contact__aurora{display:none}.card__links{opacity:1;max-height:4rem}}[data-accent=magenta]{--accent-color:var(--void-glow)}[data-accent=violet]{--accent-color:var(--violet-soft)}[data-accent=cyan]{--accent-color:var(--void-ice)}.card__media{aspect-ratio:16/9;border-bottom:1px solid var(--void-line-soft);background:linear-gradient(168deg,var(--surface-2),var(--surface-1));margin:-1.6rem -1.6rem 1.35rem;position:relative;overflow:hidden}.card__media img{object-fit:cover;object-position:top center;width:100%;height:100%;transition:transform .6s var(--ease-out-soft);display:block;transform:scale(1.001)}.card:hover .card__media img,.card:focus-within .card__media img{transform:scale(1.045)}.card__media--empty{place-items:center;display:grid}.card__media--empty:before{content:"";background:radial-gradient(ellipse 75% 90% at 50% 110%,var(--accent-color,var(--void-glow)),transparent 70%);position:absolute;inset:0}@supports (color:color-mix(in lab,red,red)){.card__media--empty:before{background:radial-gradient(ellipse 75% 90% at 50% 110%,color-mix(in srgb,var(--accent-color,var(--void-glow)) 16%,transparent),transparent 70%)}}.project-nav__back{font-family:var(--font-mono),monospace;letter-spacing:.14em;text-transform:uppercase;color:var(--void-muted);transition:color .35s var(--void-ease);align-items:center;gap:.5rem;margin-bottom:1.6rem;font-size:.72rem;display:inline-flex}.project-nav__back:hover,.project-nav__back:focus-visible{color:var(--void-ink)}.project-main{z-index:1;max-width:72rem;padding:clamp(6.5rem,14vh,9rem) var(--pad-x) 2rem;margin:0 auto;position:relative}.project-hero>*{animation:card-in .6s var(--ease-out-soft) backwards}.project-hero>:first-child{animation-delay:50ms}.project-hero>:nth-child(2){animation-delay:.12s}.project-hero>:nth-child(3){animation-delay:.19s}.project-hero>:nth-child(4){animation-delay:.26s}.project-hero>:nth-child(5){animation-delay:.33s}.project-hero>:nth-child(6){animation-delay:.4s}.project-hero .section-kicker{color:var(--void-dim)}.project-hero__title{font-family:var(--font-display),sans-serif;letter-spacing:-.04em;color:var(--void-ink);margin:1rem 0 0;font-size:clamp(2.8rem,8vw,5rem);font-weight:700;line-height:1.02}.project-hero__tagline{font-family:var(--font-serif),serif;color:var(--accent-color,var(--void-glow));margin:1.2rem 0 0;font-size:clamp(1.25rem,2.7vw,1.65rem);font-style:italic;line-height:1.4}@supports (color:color-mix(in lab,red,red)){.project-hero__tagline{color:color-mix(in srgb,var(--accent-color,var(--void-glow)) 55%,var(--void-ink))}}.project-hero__lede{max-width:62ch;color:var(--void-muted);text-wrap:pretty;margin:1.5rem 0 0;font-size:1.02rem;line-height:1.75}.project-hero__meta{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1.4rem;margin-top:2.1rem;display:flex}.project-hero__links{flex-wrap:wrap;gap:.8rem;display:flex}.project-hero__media{margin-top:2.8rem}.project-media{border:1px solid var(--void-line-soft);background:linear-gradient(168deg,var(--surface-2),var(--surface-1));border-radius:.6rem;margin-left:0;margin-right:0;position:relative;overflow:hidden;box-shadow:0 48px 110px -60px #000}.project-media img{width:100%;height:auto;display:block}.project-media--lift{box-shadow:none;background:0 0;border:0;overflow:visible}.project-media--lift .lift{--lift-radius:.6rem}.project-media--lift .lift__img{border:1px solid var(--void-line-soft)}.project-media--video{aspect-ratio:16/9;background:#000}.project-video{object-fit:contain;background:#000;width:100%;height:100%;display:block}.video-play{z-index:2;background:radial-gradient(ellipse 60% 60% at 50% 50%,var(--void-bg),var(--void-bg) 70%);border:0;flex-direction:column;justify-content:center;align-items:center;gap:.9rem;display:flex;position:absolute;inset:0}@supports (color:color-mix(in lab,red,red)){.video-play{background:radial-gradient(ellipse 60% 60% at 50% 50%,color-mix(in srgb,var(--void-bg) 42%,transparent),color-mix(in srgb,var(--void-bg) 12%,transparent) 70%)}}.video-play{cursor:pointer}.video-play__ring{width:5rem;height:5rem;color:var(--void-ink);border:1px solid var(--void-ink);border-radius:50%;place-items:center;display:grid}@supports (color:color-mix(in lab,red,red)){.video-play__ring{border:1px solid color-mix(in srgb,var(--void-ink) 55%,transparent)}}.video-play__ring{background:var(--void-bg)}@supports (color:color-mix(in lab,red,red)){.video-play__ring{background:color-mix(in srgb,var(--void-bg) 78%,transparent)}}.video-play__ring{transition:transform .4s var(--ease-out-soft),border-color .4s var(--void-ease),background .4s var(--void-ease),box-shadow .45s var(--void-ease);box-shadow:0 18px 50px -22px #000}.video-play__ring svg{width:1.9rem;height:1.9rem;margin-left:.28rem}.video-play__label{font-family:var(--font-mono),monospace;letter-spacing:.24em;text-transform:uppercase;color:var(--void-muted);transition:color .4s var(--void-ease);font-size:.66rem}.video-play:hover .video-play__ring,.video-play:focus-visible .video-play__ring{border-color:var(--void-ink);transform:scale(1.08)}@supports (color:color-mix(in lab,red,red)){.video-play:hover .video-play__ring,.video-play:focus-visible .video-play__ring{border-color:color-mix(in srgb,var(--void-ink) 55%,transparent)}}.video-play:hover .video-play__ring,.video-play:focus-visible .video-play__ring{background:var(--void-bg)}@supports (color:color-mix(in lab,red,red)){.video-play:hover .video-play__ring,.video-play:focus-visible .video-play__ring{background:color-mix(in srgb,var(--void-bg) 70%,transparent)}}.video-play:hover .video-play__label,.video-play:focus-visible .video-play__label{color:var(--void-ink)}.video-expand{z-index:4;width:2.15rem;height:2.15rem;color:var(--void-ink);border:1px solid var(--void-ink);border-radius:.5rem;place-items:center;padding:0;display:grid;position:absolute;top:.6rem;right:.6rem}@supports (color:color-mix(in lab,red,red)){.video-expand{border:1px solid color-mix(in srgb,var(--void-ink) 30%,transparent)}}.video-expand{background:var(--void-bg)}@supports (color:color-mix(in lab,red,red)){.video-expand{background:color-mix(in srgb,var(--void-bg) 82%,transparent)}}.video-expand{cursor:pointer;opacity:0;transition:opacity .3s var(--void-ease),border-color .3s var(--void-ease),background .3s var(--void-ease)}.video-expand svg{width:1.05rem;height:1.05rem}.video-expand:hover,.video-expand:focus-visible{border-color:var(--accent-color,var(--void-glow))}@supports (color:color-mix(in lab,red,red)){.video-expand:hover,.video-expand:focus-visible{border-color:color-mix(in srgb,var(--accent-color,var(--void-glow)) 70%,transparent)}}.video-expand:hover,.video-expand:focus-visible{background:var(--void-glow)}@supports (color:color-mix(in lab,red,red)){.video-expand:hover,.video-expand:focus-visible{background:color-mix(in srgb,var(--void-glow) 24%,transparent)}}.project-media--video:hover .video-expand,.project-media--video:focus-within .video-expand,.row-card__media--video:hover .video-expand,.row-card__media--video:focus-within .video-expand,[data-expanded] .video-expand{opacity:1}:fullscreen .video-expand{opacity:1}.project-media[data-expanded],.row-card__media[data-expanded]{z-index:85;aspect-ratio:auto;background:#000;border:0;border-radius:0;width:100vw;height:100vh;margin:0;position:fixed;inset:0}html.player-expanded,html.player-expanded body{overflow:hidden}html.player-expanded .dock,html.player-expanded .sound-toggle,html.player-expanded .site-footer{opacity:0;pointer-events:none}:is(.project-media[data-expanded] .project-video,.row-card__media[data-expanded] .row-card__video,.project-media:fullscreen .project-video,.row-card__media:fullscreen .row-card__video){object-fit:contain;width:100%;height:100%}:is(.project-media:fullscreen,.row-card__media:fullscreen){background:#000}:fullscreen{cursor:auto}.project-media--empty{aspect-ratio:16/9;place-items:center;display:grid}.project-media--empty:before{content:"";background:radial-gradient(ellipse 70% 85% at 50% 115%,var(--accent-color,var(--void-glow)),transparent 72%);position:absolute;inset:0}@supports (color:color-mix(in lab,red,red)){.project-media--empty:before{background:radial-gradient(ellipse 70% 85% at 50% 115%,color-mix(in srgb,var(--accent-color,var(--void-glow)) 18%,transparent),transparent 72%)}}.project-media__glyph{border:1px solid var(--accent-color,var(--void-glow));border-radius:999px;width:3.4rem;height:3.4rem}@supports (color:color-mix(in lab,red,red)){.project-media__glyph{border:1px solid color-mix(in srgb,var(--accent-color,var(--void-glow)) 55%,transparent)}}.project-media__glyph{background:var(--accent-color,var(--void-glow))}@supports (color:color-mix(in lab,red,red)){.project-media__glyph{background:color-mix(in srgb,var(--accent-color,var(--void-glow)) 14%,transparent)}}.project-case{flex-direction:column;gap:3.2rem;max-width:50rem;margin-top:4.8rem;display:flex}.project-case__block{border-top:1px solid var(--void-line-soft);animation:card-in .55s var(--ease-out-soft) backwards;animation-delay:calc(.35s + var(--i,0) * 70ms);padding-top:2.3rem}.project-case__heading{font-family:var(--font-display),sans-serif;letter-spacing:-.02em;color:var(--void-ink);align-items:baseline;gap:.95rem;margin:0;font-size:clamp(1.35rem,2.7vw,1.75rem);font-weight:700;display:flex}.project-case__index{font-family:var(--font-mono),monospace;letter-spacing:.18em;color:var(--accent-color,var(--void-glow));font-variant-numeric:tabular-nums;font-size:.72rem}.project-case__body{color:var(--void-muted);text-wrap:pretty;margin:1.05rem 0 0;font-size:1rem;line-height:1.8}.project-case__media{margin-top:1.9rem}.project-next{border-top:1px solid var(--void-line);margin-top:5.5rem;padding-top:2.5rem}.project-next__link{width:fit-content;font-family:var(--font-display),sans-serif;letter-spacing:-.03em;color:var(--void-ink);transition:color .35s var(--void-ease),gap .35s var(--ease-out-soft);align-items:center;gap:1.1rem;margin-top:.5rem;font-size:clamp(2rem,5.5vw,3.2rem);font-weight:700;line-height:1.05;display:flex}.project-next__link:hover,.project-next__link:focus-visible{color:var(--accent-color,var(--void-glow));gap:1.7rem}.project-next__arrow{transform:translateY(.08em)}.projects-list{flex-direction:column;gap:clamp(1.5rem,3vw,2.2rem);margin:2.6rem 0 0;padding:0;list-style:none;display:flex}.projects-list__item{animation:card-in .6s var(--ease-out-soft) backwards;animation-delay:calc(var(--i,0) * 80ms)}.row-card{border:1px solid var(--void-line-soft);background:linear-gradient(168deg,var(--surface-2),var(--surface-1) 62%);transition:transform .35s var(--ease-out-soft),border-color .45s var(--void-ease),box-shadow .45s var(--void-ease);border-radius:.75rem;position:relative;overflow:hidden}.row-card:hover,.row-card:focus-within{border-color:var(--accent-color,var(--void-glow));transform:translateY(-5px)}@supports (color:color-mix(in lab,red,red)){.row-card:hover,.row-card:focus-within{border-color:color-mix(in srgb,var(--accent-color,var(--void-glow)) 42%,transparent)}}.row-card:hover,.row-card:focus-within{box-shadow:0 34px 80px -40px #000,0 2px 0 0 var(--accent-color,var(--void-glow)) inset}@supports (color:color-mix(in lab,red,red)){.row-card:hover,.row-card:focus-within{box-shadow:0 34px 80px -40px #000,0 2px color-mix(in srgb,var(--accent-color,var(--void-glow)) 10%,transparent) inset}}:is(.row-card:has(:fullscreen),.row-card:has([data-expanded])){transform:none}.row-card:before{content:"";z-index:1;opacity:0;background:radial-gradient(ellipse 85% 45% at 50% 0%,var(--accent-color,var(--void-glow)),transparent 70%);position:absolute;inset:0}@supports (color:color-mix(in lab,red,red)){.row-card:before{background:radial-gradient(ellipse 85% 45% at 50% 0%,color-mix(in srgb,var(--accent-color,var(--void-glow)) 16%,transparent),transparent 70%)}}.row-card:before{transition:opacity .45s var(--void-ease);pointer-events:none}.row-card:hover:before,.row-card:focus-within:before{opacity:1}.row-card__media{aspect-ratio:16/9;border-bottom:1px solid var(--void-line-soft);background:linear-gradient(168deg,var(--surface-2),var(--surface-1));position:relative;overflow:hidden}@media(min-width:900px){.row-card{grid-template-columns:minmax(0,5fr) minmax(0,7fr);display:grid}.row-card__media{aspect-ratio:auto;border-bottom:0;border-right:1px solid var(--void-line-soft);height:100%;min-height:15rem}}.row-card__media .lift{z-index:2;--lift-z:26px;--lift-scale:1.06;--lift-radius:0;height:100%}.row-card__media .lift__img{object-fit:cover;object-position:top center;height:100%}.row-card:hover .row-card__media .lift:not(:hover) .lift__img,.row-card:focus-within .row-card__media .lift:not(:focus-visible) .lift__img{transform:scale(1.03)}.row-card__play{z-index:3;cursor:pointer;pointer-events:none;background:radial-gradient(ellipse 55% 55% at 50% 50%,var(--void-bg),transparent 72%);border:0;place-items:center;padding:0;display:grid;position:absolute;inset:0}@supports (color:color-mix(in lab,red,red)){.row-card__play{background:radial-gradient(ellipse 55% 55% at 50% 50%,color-mix(in srgb,var(--void-bg) 34%,transparent),transparent 72%)}}.row-card__play-badge{pointer-events:auto;width:3.7rem;height:3.7rem;color:var(--void-ink);border:1px solid var(--void-ink);border-radius:50%;place-items:center;display:grid}@supports (color:color-mix(in lab,red,red)){.row-card__play-badge{border:1px solid color-mix(in srgb,var(--void-ink) 55%,transparent)}}.row-card__play-badge{background:var(--void-bg)}@supports (color:color-mix(in lab,red,red)){.row-card__play-badge{background:color-mix(in srgb,var(--void-bg) 78%,transparent)}}.row-card__play-badge{transition:transform .35s var(--ease-out-soft),border-color .35s var(--void-ease),background .35s var(--void-ease),box-shadow .4s var(--void-ease);box-shadow:0 14px 40px -20px #000}.row-card__play-badge svg{width:1.4rem;height:1.4rem;margin-left:.18rem}.row-card__play-badge:hover,.row-card__play:focus-visible .row-card__play-badge,.row-card:hover .row-card__play-badge{border-color:var(--void-ink);transform:scale(1.08)}@supports (color:color-mix(in lab,red,red)){.row-card__play-badge:hover,.row-card__play:focus-visible .row-card__play-badge,.row-card:hover .row-card__play-badge{border-color:color-mix(in srgb,var(--void-ink) 70%,transparent)}}.row-card__play-badge:hover,.row-card__play:focus-visible .row-card__play-badge,.row-card:hover .row-card__play-badge{background:var(--void-bg)}@supports (color:color-mix(in lab,red,red)){.row-card__play-badge:hover,.row-card__play:focus-visible .row-card__play-badge,.row-card:hover .row-card__play-badge{background:color-mix(in srgb,var(--void-bg) 88%,transparent)}}.row-card__video{z-index:3;object-fit:cover;background:#000;width:100%;height:100%;display:block;position:relative}.row-card__video:fullscreen{object-fit:contain}.row-card__media--empty{place-items:center;display:grid}.row-card__media--empty:before{content:"";background:radial-gradient(ellipse 75% 90% at 50% 110%,var(--accent-color,var(--void-glow)),transparent 70%);position:absolute;inset:0}@supports (color:color-mix(in lab,red,red)){.row-card__media--empty:before{background:radial-gradient(ellipse 75% 90% at 50% 110%,color-mix(in srgb,var(--accent-color,var(--void-glow)) 16%,transparent),transparent 70%)}}.row-card__body{padding:clamp(1.3rem,2.6vw,1.9rem);position:relative}.row-card__head{justify-content:space-between;align-items:baseline;gap:1rem;display:flex}.row-card__category{font-family:var(--font-mono),monospace;letter-spacing:.2em;text-transform:uppercase;color:var(--void-dim);font-size:.66rem}.row-card__year{font-family:var(--font-mono),monospace;color:var(--void-dim);font-variant-numeric:tabular-nums;font-size:.7rem}.row-card__title{font-family:var(--font-display),sans-serif;letter-spacing:-.03em;color:var(--void-ink);margin:.7rem 0 0;font-size:clamp(1.5rem,2.8vw,2rem);font-weight:700;line-height:1.08}.proj-flags{flex-wrap:wrap;align-items:center;gap:.55rem .9rem;margin-top:.85rem;display:flex}.row-card__body .proj-flag{margin-top:.7rem}.proj-flag{border:1px solid var(--void-line-soft);background:var(--void-fog);border-radius:999px;align-items:center;gap:.5rem;padding:.32rem .72rem .32rem .6rem;display:inline-flex}@supports (color:color-mix(in lab,red,red)){.proj-flag{background:color-mix(in srgb,var(--void-fog) 55%,transparent)}}.proj-flag{font-family:var(--font-mono),monospace;letter-spacing:.14em;text-transform:uppercase;color:var(--void-muted);font-size:.64rem;line-height:1}.proj-flag--live{border-color:var(--void-line);color:var(--void-muted)}.proj-flag__dot{background:var(--void-muted);border-radius:50%;width:.42rem;height:.42rem}.proj-flag--done{border-color:var(--void-ice)}@supports (color:color-mix(in lab,red,red)){.proj-flag--done{border-color:color-mix(in srgb,var(--void-ice) 32%,transparent)}}.proj-flag--done{color:var(--void-ice);text-transform:none;letter-spacing:.01em;font-size:.72rem}.proj-flag__check{flex:none;width:.85rem;height:.85rem}.row-card__blurb{max-width:62ch;color:var(--void-muted);text-wrap:pretty;margin:.8rem 0 0;font-size:.95rem;line-height:1.65}.row-card__foot{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1.1rem;margin-top:1.3rem;display:flex}.row-card__links{z-index:2;flex-wrap:wrap;gap:1.1rem;display:flex;position:relative}.projects-more{place-items:center;margin-top:clamp(1.6rem,4vw,2.6rem);display:grid;position:relative}.projects-more:before{content:"";background:var(--void-line-soft);height:1px;position:absolute;top:50%;left:0;right:0;-webkit-mask-image:linear-gradient(90deg,#0000,#000 24% 76%,#0000);mask-image:linear-gradient(90deg,#0000,#000 24% 76%,#0000)}.projects-more__btn{border:1px solid var(--void-line-soft);background:var(--surface-1);height:2.7rem;color:var(--void-muted);cursor:pointer;font-family:var(--font-mono),monospace;letter-spacing:.2em;text-transform:uppercase;transition:color .35s var(--void-ease),border-color .35s var(--void-ease),transform .35s var(--ease-out-soft);border-radius:999px;align-items:center;gap:.7rem;padding:0 1.2rem 0 .85rem;font-size:.66rem;display:inline-flex;position:relative}.projects-more__btn:hover,.projects-more__btn:focus-visible{color:var(--void-ink);border-color:var(--void-ink)}@supports (color:color-mix(in lab,red,red)){.projects-more__btn:hover,.projects-more__btn:focus-visible{border-color:color-mix(in srgb,var(--void-ink) 28%,transparent)}}.projects-more__btn:hover,.projects-more__btn:focus-visible{transform:translateY(-1px)}.projects-more__glyph{border:1px solid var(--void-ink);border-radius:50%;place-items:center;width:1.35rem;height:1.35rem;display:grid}@supports (color:color-mix(in lab,red,red)){.projects-more__glyph{border:1px solid color-mix(in srgb,var(--void-ink) 22%,transparent)}}.projects-more__glyph{transition:border-color .35s var(--void-ease)}.projects-more__glyph svg{width:.72rem;height:.72rem;transition:transform .4s var(--ease-out-soft)}.projects-more__btn[aria-expanded=true] .projects-more__glyph svg{transform:rotate(180deg)}.projects-more__btn:hover .projects-more__glyph,.projects-more__btn:focus-visible .projects-more__glyph{border-color:var(--void-ink)}@supports (color:color-mix(in lab,red,red)){.projects-more__btn:hover .projects-more__glyph,.projects-more__btn:focus-visible .projects-more__glyph{border-color:color-mix(in srgb,var(--void-ink) 40%,transparent)}}.projects-more__count{color:var(--void-glow);font-variant-numeric:tabular-nums}.dock{z-index:70;border:1px solid var(--void-line-soft);background:var(--surface-1);animation:dock-in .7s var(--ease-out-soft) .25s backwards;border-radius:999px;align-items:center;gap:.3rem;padding:.42rem .5rem;display:flex;position:fixed;bottom:clamp(1rem,3.2vh,1.7rem);left:50%;transform:translate(-50%);box-shadow:0 18px 40px -28px #000}@keyframes dock-in{0%{opacity:0;transform:translate(-50%)translateY(14px)}to{opacity:1;transform:translate(-50%)translateY(0)}}.dock__item{width:2.6rem;height:2.6rem;color:var(--void-muted);cursor:pointer;transition:color .25s var(--void-ease),background .25s var(--void-ease);background:0 0;border:0;border-radius:999px;place-items:center;padding:0;display:grid;position:relative}.dock__item svg{z-index:1;width:1.15rem;height:1.15rem;position:relative}.dock__item:hover,.dock__item:focus-visible{color:var(--void-ink)}.dock__item[aria-current=page],.dock__item[data-copied]{color:#3b6ea5;background:0 0}.dock__item[aria-current=page]:hover,.dock__item[aria-current=page]:focus-visible,.dock__item[data-copied]:hover,.dock__item[data-copied]:focus-visible{color:#4f86c4;background:0 0}.dock__item:after{content:attr(data-tip);border:1px solid var(--void-line-soft);background:var(--void-fog);border-radius:.4rem;padding:.32rem .6rem;position:absolute;bottom:calc(100% + .65rem);left:50%}@supports (color:color-mix(in lab,red,red)){.dock__item:after{background:color-mix(in srgb,var(--void-fog) 92%,transparent)}}.dock__item:after{color:var(--void-muted);font-family:var(--font-mono),monospace;letter-spacing:.14em;text-transform:uppercase;white-space:nowrap;opacity:0;transition:opacity .25s var(--void-ease),transform .25s var(--ease-out-soft);pointer-events:none;font-size:.6rem;transform:translate(-50%)translateY(3px)}.dock__item:hover:after,.dock__item:focus-visible:after,.dock__item[data-copied]:after{opacity:1;transform:translate(-50%)translateY(0)}@media(hover:none){.dock__item:after{display:none}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}
