@font-face{font-family:Space Grotesk Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/assets/space-grotesk-vietnamese-wght-normal-D0rl6rjA.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Space Grotesk Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/assets/space-grotesk-latin-ext-wght-normal-D9tNdqV9.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Space Grotesk Variable;font-style:normal;font-display:swap;font-weight:300 700;src:url(/assets/space-grotesk-latin-wght-normal-BhU9QXUp.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-cyrillic-wght-normal-DqGufNeO.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-ext-wght-normal-DlzME5K_.woff2) format("woff2-variations");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-greek-wght-normal-CkhJZR-_.woff2) format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-vietnamese-wght-normal-CBcvBZtf.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-ext-wght-normal-DO1Apj_S.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/inter-latin-wght-normal-Dx4kXJAl.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(data:font/woff2;base64,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) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-cyrillic-wght-normal-D73BlboJ.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-greek-wght-normal-Bw9x6K1M.woff2) format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-vietnamese-wght-normal-Bt-aOZkq.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg-0: #0b0d10;--bg-1: #12151a;--bg-2: #1a1e25;--hairline: rgba(232, 234, 237, .08);--hairline-strong: rgba(232, 234, 237, .16);--ink: #e8eaed;--ink-dim: #9aa1ab;--ink-faint: #5c636d;--accent: #5eead4;--accent-dim: rgba(94, 234, 212, .35);--accent-glow: rgba(94, 234, 212, .12);--amber: #f4b860;--amber-dim: rgba(244, 184, 96, .35);--font-display: "Space Grotesk Variable", system-ui, sans-serif;--font-body: "Inter Variable", system-ui, sans-serif;--font-mono: "JetBrains Mono Variable", ui-monospace, monospace;--text-hero: clamp(3rem, 10vw, 7.5rem);--text-h2: clamp(1.75rem, 4vw, 2.75rem);--text-h3: clamp(1.125rem, 2vw, 1.375rem);--text-body: 1.0625rem;--text-small: .875rem;--text-label: .6875rem;--space-section: clamp(6rem, 12vw, 10rem);--space-lg: clamp(2.5rem, 5vw, 4rem);--space-md: 1.5rem;--space-sm: .75rem;--gutter: clamp(1.25rem, 5vw, 4rem);--content-max: 72rem;--ease-out: cubic-bezier(.22, 1, .36, 1);--dur-fast: .2s;--dur-med: .35s;--dur-slow: .6s;--z-nav: 100;--z-cursor: 9999;--z-boot: 9000;--z-rail: 90}*,*:before,*:after{box-sizing:border-box;margin:0}html{scroll-behavior:smooth;color-scheme:dark}body{background:var(--bg-0);color:var(--ink);font-family:var(--font-body);font-size:var(--text-body);line-height:1.6;-webkit-font-smoothing:antialiased;overflow-x:hidden}::-webkit-scrollbar{width:3px;height:3px}::-webkit-scrollbar-track{background:var(--bg-0)}::-webkit-scrollbar-thumb{background:var(--accent-dim);border-radius:0}::-webkit-scrollbar-thumb:hover{background:var(--accent)}@supports not selector(::-webkit-scrollbar){html{scrollbar-width:thin;scrollbar-color:var(--accent-dim) var(--bg-0)}}::selection{background:var(--accent);color:var(--bg-0)}:focus-visible{outline:1.5px solid var(--accent);outline-offset:3px}h1,h2,h3,h4{font-family:var(--font-display);font-weight:600;line-height:1.1;letter-spacing:-.02em}a{color:var(--accent);text-decoration:none}img,svg{max-width:100%;display:block}button{font:inherit;color:inherit;background:none;border:none;cursor:pointer}.label{font-family:var(--font-mono);font-size:var(--text-label);font-weight:500;text-transform:uppercase;letter-spacing:.14em;color:var(--ink-dim)}.label--accent{color:var(--accent)}.label--amber{color:var(--amber)}.label--faint{color:var(--ink-faint)}.num,td,.tick{font-variant-numeric:tabular-nums}.container{max-width:var(--content-max);margin-inline:auto;padding-inline:var(--gutter)}.section{padding-block:calc(var(--space-section) / 2);position:relative}.section-head{display:flex;align-items:baseline;gap:var(--space-md);margin-bottom:var(--space-lg)}.section-head .index{font-family:var(--font-mono);font-size:var(--text-small);color:var(--accent)}.section-head h2{font-size:var(--text-h2)}.section-head .rule{flex:1;height:1px;background:var(--hairline);transform-origin:left}.section-head .exp-id{white-space:nowrap}@media(max-width:640px){.section-head .exp-id{display:none}}.ticked{position:relative}.ticked:before,.ticked:after,.ticked>.tick-b:before,.ticked>.tick-b:after{content:"";position:absolute;width:10px;height:10px;border-color:var(--accent-dim);border-style:solid;transition:border-color var(--dur-fast) var(--ease-out),width var(--dur-fast) var(--ease-out),height var(--dur-fast) var(--ease-out)}.ticked:before{top:-1px;left:-1px;border-width:1.5px 0 0 1.5px}.ticked:after{top:-1px;right:-1px;border-width:1.5px 1.5px 0 0}.ticked>.tick-b:before{bottom:-1px;left:-1px;border-width:0 0 1.5px 1.5px}.ticked>.tick-b:after{bottom:-1px;right:-1px;border-width:0 1.5px 1.5px 0}.ticked:hover:before,.ticked:hover:after,.ticked:hover>.tick-b:before,.ticked:hover>.tick-b:after{border-color:var(--accent);width:16px;height:16px}.reveal{opacity:0;transform:translateY(24px);transition:opacity var(--dur-slow) var(--ease-out),transform var(--dur-slow) var(--ease-out)}.reveal.is-visible{opacity:1;transform:none}.reveal-rule{transform:scaleX(0);transition:transform .8s var(--ease-out)}.reveal-rule.is-visible{transform:scaleX(1)}.stagger>*{transition-delay:0ms}.stagger>*:nth-child(2){transition-delay:60ms}.stagger>*:nth-child(3){transition-delay:.12s}.stagger>*:nth-child(4){transition-delay:.18s}.stagger>*:nth-child(5){transition-delay:.24s}.stagger>*:nth-child(6){transition-delay:.3s}.stagger>*:nth-child(7){transition-delay:.36s}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.reveal,.reveal-rule{opacity:1;transform:none}}.cursor-dot,.cursor-ring{position:fixed;top:0;left:0;pointer-events:none;z-index:var(--z-cursor);border-radius:50%;will-change:transform}.cursor-dot{width:5px;height:5px;background:var(--accent)}.cursor-ring{width:34px;height:34px;border:1px solid var(--accent-dim);transition:width var(--dur-fast) var(--ease-out),height var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out),background var(--dur-fast) var(--ease-out)}.cursor-ring.is-hover{width:56px;height:56px;border-color:var(--accent);background:var(--accent-glow)}@media(hover:none),(pointer:coarse){.cursor-dot,.cursor-ring{display:none}}@media(prefers-reduced-motion:reduce){.cursor-dot,.cursor-ring{display:none}}.cursor-coords{position:fixed;left:var(--space-md);bottom:calc(var(--space-md) + 64px);z-index:var(--z-nav);pointer-events:none;white-space:nowrap}@media(hover:none),(pointer:coarse){.cursor-coords{display:none}}@media(prefers-reduced-motion:reduce){.cursor-coords{display:none}}.boot{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--bg-0);z-index:var(--z-boot);display:grid;place-items:center;transition:opacity .5s var(--ease-out),visibility .5s}.boot.is-done{opacity:0;visibility:hidden}.boot-line{font-family:var(--font-mono);font-size:var(--text-small);color:var(--accent);letter-spacing:.1em}.boot-line:after{content:"_";animation:blink .7s steps(1) infinite}@keyframes blink{50%{opacity:0}}.boot-progress{display:block;margin-top:.65rem;font-family:var(--font-mono);font-size:var(--text-small);letter-spacing:.08em;color:var(--ink-dim);white-space:pre}.boot-progress .ok{color:var(--accent)}.rail{position:fixed;right:0;top:0;bottom:0;width:3rem;z-index:var(--z-rail);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1.25rem;pointer-events:none}.rail a{pointer-events:auto;display:block;padding:10px 8px;position:relative}.rail a:before{content:"";display:block;width:18px;height:3px;background:var(--ink-faint);transition:background var(--dur-fast),width var(--dur-fast) var(--ease-out)}.rail a.is-active:before{width:30px;background:var(--accent)}.rail a .rail-label{position:absolute;right:22px;top:50%;translate:0 -50%;font-family:var(--font-mono);font-size:var(--text-label);text-transform:uppercase;letter-spacing:.12em;color:var(--accent);opacity:0;transition:opacity var(--dur-fast);white-space:nowrap}.rail a:hover .rail-label,.rail a:focus-visible .rail-label{opacity:1}@media(max-width:768px){.rail{display:none}}.nav{position:fixed;top:0;left:0;right:0;z-index:var(--z-nav);display:flex;justify-content:space-between;align-items:center;padding:1.25rem var(--gutter);mix-blend-mode:normal;transition:background var(--dur-med),backdrop-filter var(--dur-med)}.nav.is-scrolled{background:color-mix(in srgb,var(--bg-0) 82%,transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--hairline)}.nav-mark{font-family:var(--font-mono);font-weight:700;font-size:1rem;color:var(--ink);letter-spacing:.05em}.nav-mark span{color:var(--accent)}.nav-links{display:flex;gap:2rem;list-style:none;padding:0}.nav-links a{font-family:var(--font-mono);font-size:var(--text-label);text-transform:uppercase;letter-spacing:.14em;color:var(--ink-dim);position:relative;padding-block:4px;transition:color var(--dur-fast)}.nav-links a:after{content:"";position:absolute;left:0;bottom:0;height:1px;width:100%;background:var(--accent);transform:scaleX(0);transform-origin:right;transition:transform var(--dur-med) var(--ease-out)}.nav-links a:hover,.nav-links a.is-active{color:var(--ink)}.nav-links a:hover:after,.nav-links a.is-active:after{transform:scaleX(1);transform-origin:left}@media(max-width:768px){.nav-links{display:none}}.menu-btn{display:none;font-family:var(--font-mono);font-size:var(--text-label);text-transform:uppercase;letter-spacing:.14em;color:var(--ink);padding:.5rem;min-height:44px}@media(max-width:768px){.menu-btn{display:block}}.menu-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--bg-0);z-index:calc(var(--z-nav) - 1);display:grid;place-items:center;opacity:0;visibility:hidden;transition:opacity var(--dur-med) var(--ease-out),visibility var(--dur-med)}.menu-overlay.is-open{opacity:1;visibility:visible}.menu-overlay ul{list-style:none;padding:0;display:grid;gap:1.5rem;text-align:center}.menu-overlay a{font-family:var(--font-display);font-size:2rem;color:var(--ink);display:inline-block;padding:.25rem 1rem}.btn{display:inline-flex;align-items:center;gap:.6em;font-family:var(--font-mono);font-size:var(--text-small);font-weight:500;text-transform:uppercase;letter-spacing:.12em;color:var(--ink);padding:.9rem 1.6rem;min-height:44px;position:relative;background:transparent;transition:color var(--dur-fast),background var(--dur-fast)}.btn:hover{background:var(--accent-glow);color:var(--accent)}.btn--solid{background:var(--accent);color:var(--bg-0)}.btn--solid:hover{background:color-mix(in srgb,var(--accent) 85%,white);color:var(--bg-0)}.nav-cv{padding:.45rem .9rem;min-height:36px;margin-left:1.25rem}@media(max-width:768px){.nav-cv{margin-left:auto;margin-right:.75rem}}.divider{height:clamp(90px,12vw,150px);overflow:hidden;-webkit-mask-image:linear-gradient(to bottom,transparent,black 30%,black 70%,transparent);mask-image:linear-gradient(to bottom,transparent,black 30%,black 70%,transparent)}.divider img{width:100%;height:100%;object-fit:cover;opacity:.45}.card-media{aspect-ratio:16 / 10;overflow:hidden;border-bottom:1px solid var(--hairline)}.card-media img{width:100%;height:100%;object-fit:cover;opacity:.85;transition:opacity var(--dur-med) var(--ease-out),transform var(--dur-med) var(--ease-out)}.proj-card:hover .card-media img{opacity:1;transform:scale(1.03)}.card-media.card-media--empty{display:grid;place-items:center;background:var(--bg-1);border:1px dashed var(--hairline-strong);border-bottom:1px dashed var(--hairline-strong)}.dossier-empty-label{text-align:center;line-height:1.7;color:var(--ink-faint)}.hero{min-height:100svh;display:grid;align-content:center;position:relative;overflow:hidden;padding-top:4.5rem}.hero-canvas{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;z-index:0}.hero-content{position:relative;z-index:1;display:grid;grid-template-columns:1fr auto;gap:var(--space-lg);align-items:center}@media(max-width:900px){.hero-content{grid-template-columns:1fr}}.hero-status{display:inline-flex;align-items:center;gap:.6em;margin-bottom:var(--space-md)}.hero-status-text{display:inline-block;transition:opacity .15s var(--ease-out)}.hero-status .pulse{width:8px;height:8px;border-radius:50%;background:var(--accent);animation:pulse 2.4s var(--ease-out) infinite}@keyframes pulse{0%{box-shadow:0 0 0 0 var(--accent-dim)}70%{box-shadow:0 0 0 10px transparent}to{box-shadow:0 0 0 0 transparent}}.hero h1{font-size:var(--text-hero);font-weight:700;letter-spacing:-.03em;line-height:.95}.hero h1 .line{display:block;overflow:hidden}.hero h1 .line>span{display:inline-block}.hero-tagline{margin-top:var(--space-md);font-size:var(--text-h3);color:var(--ink-dim);max-width:34ch;font-family:var(--font-display);font-weight:400}.hero-tagline .hl{color:var(--accent)}.hero-readout{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,auto));gap:1px;background:var(--hairline);border:1px solid var(--hairline);margin-top:var(--space-lg);width:fit-content;max-width:100%}.hero-readout-item{background:var(--bg-1);padding:.6rem 1rem;display:grid;gap:.3rem}.hero-readout-value{font-family:var(--font-mono);font-size:var(--text-small);color:var(--ink);letter-spacing:.04em}.hero-caption{margin-top:var(--space-sm)}.lab-doors{padding-block:var(--space-lg)}.lab-doors-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:var(--space-sm)}.lab-door{position:relative;display:flex;flex-direction:column;gap:.5rem;background:var(--bg-1);border:1px solid var(--hairline);padding:var(--space-sm) var(--space-md);transition:border-color var(--dur-med) var(--ease-out),transform var(--dur-med) var(--ease-out)}.lab-door:hover,.lab-door:focus-visible{border-color:var(--accent);transform:translateY(-2px)}.lab-door-mod{display:block}.lab-door-name{font-size:var(--text-small);color:var(--ink)}.lab-door-arrow{align-self:flex-end;margin-top:auto;font-family:var(--font-mono);color:var(--ink-dim);transition:transform var(--dur-fast) var(--ease-out),color var(--dur-fast)}.lab-door:hover .lab-door-arrow,.lab-door:focus-visible .lab-door-arrow{transform:translate(4px);color:var(--accent)}.portrait{width:min(300px,70vw);aspect-ratio:4 / 5;background:var(--bg-1);border:1px solid var(--hairline-strong);display:grid;place-items:center;position:relative}.portrait img{width:100%;height:100%;object-fit:cover}@media(max-width:900px){.portrait{justify-self:center;margin-inline:auto}}.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:1px;background:var(--hairline) url(/img/about-grid.webp) center / cover;border:1px solid var(--hairline)}.stat{background:var(--bg-1);padding:var(--space-md);min-width:0;container-type:inline-size}.stat .label{overflow-wrap:break-word}.stat .value{font-family:var(--font-display);display:block;font-size:clamp(1.35rem,17cqi,2.5rem);font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums;white-space:nowrap}.stat .value .unit{font-size:.5em;color:var(--accent)}.stat--gold .value{color:var(--amber)}.card{background:var(--bg-1);border:1px solid var(--hairline);padding:var(--space-md);transition:transform var(--dur-med) var(--ease-out),border-color var(--dur-med),background var(--dur-med)}.card:hover{transform:translateY(-4px);border-color:var(--hairline-strong);background:var(--bg-2)}.chips{display:flex;flex-wrap:wrap;gap:.5rem}.chip{display:inline-flex;align-items:center;gap:.4em;font-family:var(--font-mono);font-size:var(--text-label);text-transform:uppercase;letter-spacing:.08em;color:var(--ink-dim);border:1px solid var(--hairline-strong);padding:.3rem .6rem}.chip-icon{width:12px;height:12px;flex-shrink:0;opacity:.85;transition:fill .2s}.tabs{display:flex;gap:1.5rem;border-bottom:1px solid var(--hairline);position:relative;overflow-x:auto}.tab{font-family:var(--font-mono);font-size:var(--text-small);text-transform:uppercase;letter-spacing:.1em;color:var(--ink-dim);padding:.75rem .25rem;min-height:44px;white-space:nowrap;transition:color var(--dur-fast)}.tab[aria-selected=true],.tab:hover{color:var(--ink)}.tabs .tab-indicator{position:absolute;bottom:-1px;height:2px;background:var(--accent);transition:left var(--dur-med) var(--ease-out),width var(--dur-med) var(--ease-out)}.timeline{--spine: 1;position:relative;padding-left:2rem}.timeline:before{content:"";position:absolute;left:4px;top:0;bottom:0;width:1px;background:var(--hairline-strong);transform:scaleY(var(--spine));transform-origin:top}.timeline-item{position:relative;padding-bottom:var(--space-lg)}.timeline-item:before{content:"";position:absolute;left:calc(-2rem + 1px);top:8px;width:7px;height:7px;background:var(--bg-0);border:1.5px solid var(--accent);border-radius:50%;transform:scale(0);transition:transform .3s cubic-bezier(.34,1.56,.64,1)}.timeline-item.is-lit:before{transform:scale(1)}@media(prefers-reduced-motion:reduce){.timeline-item:before{transform:scale(1)}}.projects-grid{perspective:800px}.ledger{border-top:1px solid var(--hairline)}.ledger-row{display:grid;grid-template-columns:minmax(90px,.5fr) 1fr auto;align-items:center;gap:var(--space-md);padding:1.1rem .75rem;border-bottom:1px solid var(--hairline);font-family:var(--font-mono);font-size:var(--text-small);color:var(--ink-dim);transition:background var(--dur-fast),color var(--dur-fast),padding-left var(--dur-med) var(--ease-out)}.ledger-row .arrow{color:var(--ink-faint);transition:transform var(--dur-med) var(--ease-out),color var(--dur-fast)}.ledger-row:hover{background:var(--accent);color:var(--bg-0);padding-left:1.5rem}.ledger-row:hover .arrow{color:var(--bg-0);transform:translate(3px,-3px)}dialog.cmd-palette{position:fixed;top:0;right:0;bottom:0;left:0;margin:auto;width:min(560px,calc(100vw - 2rem));max-height:min(70vh,calc(100vh - 4rem));padding:0;background:var(--bg-1);border:1px solid var(--hairline-strong);color:var(--ink);flex-direction:column;opacity:0;transform:translateY(12px);transition:opacity .25s var(--ease-out),transform .25s var(--ease-out)}dialog.cmd-palette[open]{display:flex}dialog.cmd-palette.is-shown{opacity:1;transform:none}dialog.cmd-palette::backdrop{background:color-mix(in srgb,var(--bg-0) 78%,transparent);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}dialog.cmd-palette .dossier-titlebar{flex-shrink:0}.cmd-esc{color:var(--ink-dim);white-space:nowrap}.cmd-input{flex-shrink:0;width:100%;background:var(--bg-1);border:none;border-bottom:1px solid var(--hairline);color:var(--ink);font-family:var(--font-mono);font-size:var(--text-small);padding:.85rem .9rem;caret-color:var(--accent)}.cmd-input::placeholder{color:var(--ink-faint)}.cmd-input:focus{outline:none;border-bottom-color:var(--accent)}.cmd-list{list-style:none;margin:0;padding:.35rem;overflow-y:auto;display:flex;flex-direction:column;gap:1px}.cmd-row{font-family:var(--font-mono);font-size:var(--text-small);color:var(--ink-dim);padding:.6rem .75rem;border-left:2px solid transparent;cursor:pointer;transition:background var(--dur-fast),color var(--dur-fast),border-color var(--dur-fast)}.cmd-row[hidden]{display:none}.cmd-row.is-selected{background:var(--bg-2);color:var(--ink);border-left-color:var(--accent)}.cmd-kind{color:var(--accent)}@media(prefers-reduced-motion:reduce){dialog.cmd-palette{transition:none;opacity:1;transform:none}}.blueprint-grid{position:fixed;top:0;right:0;bottom:0;left:0;z-index:calc(var(--z-nav) - 2);pointer-events:none;opacity:0;background-image:repeating-linear-gradient(to right,var(--accent) 0 1px,transparent 1px 40px),repeating-linear-gradient(to bottom,var(--accent) 0 1px,transparent 1px 40px);transition:opacity var(--dur-med) var(--ease-out)}.dev-mode .blueprint-grid{opacity:.15}.dev-badge{position:fixed;left:var(--space-md);bottom:calc(var(--space-md) + 104px);z-index:calc(var(--z-nav) + 1);display:none;align-items:center;gap:.75em;font-family:var(--font-mono);font-size:var(--text-label);text-transform:uppercase;letter-spacing:.12em;color:var(--accent);background:color-mix(in srgb,var(--bg-1) 90%,transparent);border:1px solid var(--accent);padding:.5rem .75rem}.dev-mode .dev-badge{display:inline-flex}.dev-fps{color:var(--ink-dim)}.dev-toast{position:fixed;top:var(--space-md);left:50%;translate:-50% 0;z-index:calc(var(--z-nav) + 2);font-family:var(--font-mono);font-size:var(--text-label);text-transform:uppercase;letter-spacing:.12em;color:var(--accent);background:color-mix(in srgb,var(--bg-1) 90%,transparent);border:1px solid var(--accent);padding:.5rem .9rem;opacity:0;visibility:hidden;transition:opacity var(--dur-med) var(--ease-out),visibility var(--dur-med)}.dev-toast.is-visible{opacity:1;visibility:visible}.shell-launcher{position:fixed;left:var(--space-md);bottom:var(--space-md);z-index:calc(var(--z-nav) + 10);min-height:44px;padding:.6rem 1rem;font-family:var(--font-mono);font-size:var(--text-small);letter-spacing:.08em;color:var(--accent);background:color-mix(in srgb,var(--bg-1) 92%,transparent);border:1px solid var(--accent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);transition:background var(--dur-fast),color var(--dur-fast)}.shell-launcher:hover,.shell-launcher:focus-visible{background:var(--accent-glow)}.shell-panel{position:fixed;left:var(--space-md);bottom:var(--space-md);z-index:calc(var(--z-nav) + 11);width:min(380px,calc(100vw - 2rem));height:min(480px,calc(100vh - 2rem));display:flex;flex-direction:column;background:var(--bg-1);border:1px solid var(--hairline-strong);font-family:var(--font-mono);font-size:13px;line-height:1.5;box-shadow:0 12px 40px #00000080}.shell-panel[hidden]{display:none}.shell-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm);padding:.6rem .75rem;border-bottom:1px solid var(--hairline);background:var(--bg-2)}.shell-title{color:var(--ink-dim);font-size:var(--text-label);letter-spacing:.06em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.shell-close{flex-shrink:0;min-height:24px;padding:0 .35rem;font-family:var(--font-mono);font-size:13px;color:var(--ink-dim);transition:color var(--dur-fast)}.shell-close:hover,.shell-close:focus-visible{color:var(--accent)}.shell-log{flex:1;min-height:0;overflow-y:auto;padding:.75rem;display:flex;flex-direction:column;gap:.35rem}.shell-line{margin:0;font-family:var(--font-mono);font-size:13px;line-height:1.5;color:var(--ink);white-space:pre-wrap;overflow-wrap:anywhere}.shell-accent{color:var(--accent)}.shell-dim{color:var(--ink-dim)}.shell-faint{color:var(--ink-faint)}.shell-echo{color:var(--ink-dim)}.shell-thinking:after{content:" _";animation:blink .7s steps(1) infinite}.shell-prompt{display:flex;align-items:center;gap:.5rem;padding:.6rem .75rem;border-top:1px solid var(--hairline)}.shell-sigil{color:var(--accent);flex-shrink:0}.shell-input{flex:1;min-width:0;background:transparent;border:none;color:var(--ink);font-family:var(--font-mono);font-size:13px;caret-color:var(--accent)}.shell-input:focus{outline:none}@media(prefers-reduced-motion:reduce){.shell-thinking:after{animation:none}}.footer{border-top:1px solid var(--hairline);padding:var(--space-lg) 0;display:flex;justify-content:space-between;flex-wrap:wrap;gap:var(--space-md)}.about-grid{display:grid;gap:var(--space-lg)}.about-prose p{max-width:46ch;font-size:var(--text-h3);color:var(--ink)}@media(min-width:900px){.about-grid{grid-template-columns:1fr 1fr;align-items:start}}.about-log{background:var(--bg-1);border:1px solid var(--hairline)}.about-log .about-prose{padding:var(--space-md)}.about-entry{margin-bottom:.5rem}.skills-grid{display:grid;gap:var(--space-lg)}.skill-boxes{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:var(--space-md)}.skill-box{background:var(--bg-1);border:1px solid var(--hairline);padding:var(--space-md);display:grid;gap:var(--space-sm);align-content:start}.skill-box-title{margin-bottom:.25rem}.skill-box:hover .chip-icon{fill:var(--brand)}.brief-panel{background:var(--bg-1);border:1px solid var(--hairline);padding:var(--space-md);display:grid;gap:var(--space-md)}.brief-head{display:flex;align-items:baseline;justify-content:space-between;flex-wrap:wrap;gap:var(--space-sm);padding-bottom:var(--space-sm);border-bottom:1px solid var(--hairline)}.brief-intro{color:var(--ink-dim);font-size:var(--text-small);max-width:60ch}.brief-presets{display:grid;gap:.5rem}.brief-preset{text-align:left;font-family:var(--font-mono);font-size:var(--text-small);color:var(--ink-dim);border:1px solid var(--hairline-strong);padding:.6rem .85rem;min-height:44px;transition:border-color var(--dur-fast),color var(--dur-fast),background var(--dur-fast)}.brief-preset:hover,.brief-preset:focus-visible,.brief-preset.is-active{border-color:var(--accent);color:var(--ink);background:var(--accent-glow)}.brief-output{display:grid;gap:.5rem;min-height:4.5rem}.brief-line{font-family:var(--font-mono);font-size:var(--text-small);color:var(--ink);display:grid;grid-template-columns:auto 1fr;gap:.6em;align-items:baseline}.brief-key{white-space:nowrap}.brief-val{color:var(--ink-dim);overflow-wrap:anywhere}.brief-action{display:inline-block;font-family:var(--font-mono);font-size:var(--text-small);color:var(--accent);border:1px solid var(--accent-dim);padding:.15rem .5rem;transition:border-color var(--dur-fast),background var(--dur-fast)}.brief-action:hover,.brief-action:focus-visible{border-color:var(--accent);background:var(--accent-glow)}.badge{font-family:var(--font-mono);font-size:var(--text-label);text-transform:uppercase;letter-spacing:.08em;color:var(--ink-dim);border:1px solid var(--hairline-strong);padding:.15rem .45rem}.projects-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:var(--space-md);margin-top:var(--space-lg)}.proj-card{background:var(--bg-1);border:1px solid var(--hairline);opacity:1;transform:none;transition:transform var(--dur-med) var(--ease-out),border-color var(--dur-med),opacity var(--dur-med) var(--ease-out)}.proj-card:hover{transform:translateY(-4px);border-color:var(--hairline-strong)}.proj-card.is-out{opacity:0;transform:translateY(10px);pointer-events:none}.proj-card:hover .chip-icon{fill:var(--brand)}.proj-title{font-size:var(--text-h3)}.proj-highlights{list-style:none;padding:0;display:grid;gap:var(--space-sm)}.proj-highlights li{position:relative;padding-left:1rem;font-size:var(--text-small);color:var(--ink-dim)}.proj-highlights li:before{content:"";position:absolute;left:0;top:.6em;width:5px;height:5px;background:var(--accent-dim)}.dossier-titlebar{position:relative;display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm);padding:.5rem .75rem;background:var(--bg-2);border-bottom:1px solid var(--hairline)}.dossier-titlebar:after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:1px;background:var(--accent);transform:scaleX(0);transform-origin:left;transition:transform .25s var(--ease-out)}.proj-card:hover .dossier-titlebar:after{transform:scaleX(1)}.dossier-rec{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.badge--shipped{color:var(--accent);border-color:var(--accent)}.badge--coursework{color:var(--ink-dim);border-color:var(--ink-dim)}.dossier-body{padding:var(--space-md);display:grid;gap:var(--space-sm);align-content:start}.cta-row{justify-self:start;display:flex;flex-wrap:wrap;gap:var(--space-sm)}.proj-cta{display:inline-flex;padding:.35rem .6rem}@media(min-width:1024px){.proj-featured{grid-column:1 / -1;display:grid;grid-template-columns:55% 1fr}.proj-featured .dossier-titlebar{grid-column:1 / -1}}dialog.case-study{position:fixed;top:0;right:0;bottom:0;left:0;margin:auto;width:min(640px,calc(100vw - 2rem));max-height:min(720px,calc(100vh - 4rem));padding:0;background:var(--bg-1);border:1px solid var(--hairline-strong);color:var(--ink);flex-direction:column;opacity:0;transform:translateY(12px);transition:opacity .25s var(--ease-out),transform .25s var(--ease-out)}dialog.case-study[open]{display:flex}dialog.case-study.is-shown{opacity:1;transform:none}dialog.case-study::backdrop{background:color-mix(in srgb,var(--bg-0) 78%,transparent);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}dialog.case-study .dossier-titlebar,dialog.case-study .card-media,dialog.case-study .card-media--empty{flex-shrink:0}.case-close{min-height:32px;padding:.2rem .5rem;transition:color var(--dur-fast)}.case-close:hover,.case-close:focus-visible{color:var(--accent)}.case-study-body{overflow-y:auto}.case-section{display:grid;gap:.4rem}.case-key{display:block}.case-body p{color:var(--ink-dim);font-size:var(--text-small)}@media(prefers-reduced-motion:reduce){dialog.case-study{transition:none;opacity:1;transform:none}}.exp-dates{margin-bottom:.35rem}.exp-head{display:flex;align-items:center;gap:.75rem}.exp-role{font-size:var(--text-h3);margin-bottom:var(--space-sm)}.co-logo{height:28px;width:auto;filter:grayscale(1);opacity:.65;transition:filter .25s var(--ease-out),opacity .25s}.timeline-item:hover .co-logo{filter:grayscale(0);opacity:1}.co-logo--mono{display:inline-flex;align-items:center;justify-content:center;height:28px;width:28px;flex-shrink:0;font-family:var(--font-mono);font-size:var(--text-label);font-weight:700;letter-spacing:.04em;color:var(--ink-dim);border:1px solid var(--hairline-strong);filter:none;opacity:1;transition:color .25s var(--ease-out),border-color .25s}.timeline-item:hover .co-logo--mono{color:var(--accent);border-color:var(--accent-dim)}.exp-company{color:var(--ink-dim);font-weight:400}.exp-bullets{list-style:none;padding:0;display:grid;gap:.5rem;max-width:68ch}.exp-bullets li{position:relative;padding-left:1rem;font-size:var(--text-small);color:var(--ink-dim)}.exp-bullets li:before{content:"";position:absolute;left:0;top:.6em;width:5px;height:5px;background:var(--accent-dim)}.co-logo-box{display:inline-flex;align-items:center;height:28px;flex-shrink:0}.timeline-item--origin:before{border-color:var(--ink-faint)}.timeline-item--origin .exp-role,.timeline-item--origin .exp-dates{color:var(--ink-dim)}.proj-readout{display:block;margin-top:var(--space-md)}.proj-lines{display:grid;gap:var(--space-sm)}.proj-line{font-size:var(--text-small);color:var(--ink-dim);display:grid;grid-template-columns:auto 1fr;gap:.6em;align-items:baseline}.proj-line-key{white-space:nowrap}.proj-line-key--impact{color:var(--ink-faint)}.proj-line-val{color:var(--ink-dim)}.proj-metrics{color:var(--ink-dim);letter-spacing:.1em}.quest-intro{color:var(--ink-dim);font-size:var(--text-small);max-width:60ch;margin-bottom:var(--space-lg)}.quest-log{display:grid;gap:var(--space-md)}@media(min-width:1024px){.quest-log{grid-template-columns:repeat(3,1fr);align-items:stretch}}.quest-entry{background:var(--bg-1);border:1px solid var(--hairline);padding:var(--space-md);display:grid;gap:var(--space-sm);transition:transform var(--dur-med) var(--ease-out),border-color var(--dur-med),background var(--dur-med)}.quest-entry:hover{transform:translateY(-4px);border-color:var(--hairline-strong);background:var(--bg-2)}.quest-header{letter-spacing:.08em}.quest-title{font-size:var(--text-h3)}.quest-line{font-size:var(--text-small);color:var(--ink);display:grid;grid-template-columns:auto 1fr;gap:.6em;align-items:baseline}.quest-key{white-space:nowrap}.quest-key--log{color:var(--ink-faint)}.quest-log-val{color:var(--ink-dim)}.section--hobbies{padding-block:calc(var(--space-section) * .3)}.hobby-strip{display:grid;grid-template-columns:repeat(auto-fit,minmax(175px,1fr));gap:1px;background:var(--hairline);border:1px solid var(--hairline)}.hobby-tile{background:var(--bg-1);padding:var(--space-md);display:grid;gap:.5rem;justify-items:start}.hobby-icon svg{width:28px;height:28px;stroke:var(--accent);fill:none;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;transition:transform var(--dur-fast) var(--ease-out),filter var(--dur-fast) var(--ease-out)}.hobby-tile:hover .hobby-icon svg{transform:translateY(-2px);filter:drop-shadow(0 0 6px rgba(94,234,212,.2))}.hobby-label{color:var(--ink-dim);transition:color var(--dur-fast);overflow-wrap:anywhere;min-width:0;max-width:100%}.hobby-tile:hover .hobby-label{color:var(--accent)}.hobby-sub{font-size:var(--text-small);color:var(--ink-dim)}.contact-lead{font-size:var(--text-h3);color:var(--ink);margin-bottom:var(--space-md);max-width:46ch}.ledger-value{color:var(--ink);overflow-wrap:anywhere}.contact-grid{display:grid;gap:var(--space-lg)}@media(min-width:1024px){.contact-grid{grid-template-columns:1fr 1fr;align-items:start}}.mission-form{background:var(--bg-1);border:1px solid var(--hairline)}.mission-form .dossier-body{gap:var(--space-md)}.field{display:grid;gap:.4rem}.mission-input{width:100%;background:var(--bg-1);border:1px solid var(--hairline);border-radius:0;color:var(--ink);font-family:var(--font-mono);font-size:var(--text-small);padding:.7rem .85rem;min-height:44px;transition:border-color var(--dur-fast)}textarea.mission-input{min-height:120px;resize:vertical}.mission-input:focus{outline:none;border-color:var(--accent)}.mission-submit{justify-self:start}.mission-note{margin-top:-.25rem}
