html.lenis,html.lenis body{height:auto}.lenis:not(.lenis-autoToggle).lenis-stopped{overflow:clip}.lenis [data-lenis-prevent],.lenis [data-lenis-prevent-wheel],.lenis [data-lenis-prevent-touch],.lenis [data-lenis-prevent-vertical],.lenis [data-lenis-prevent-horizontal]{overscroll-behavior:contain}.lenis.lenis-smooth iframe{pointer-events:none}.lenis.lenis-autoToggle{transition-behavior:allow-discrete;transition-property:overflow;transition-duration:1ms}:root{--bg:oklch(9% .012 155);--bg-raised:oklch(13% .02 155/.78);--bg-solid:oklch(12% .018 155);--phosphor:oklch(87% .23 148);--phosphor-soft:oklch(74% .17 148);--phosphor-deep:oklch(42% .11 150);--text:oklch(95% .025 150);--text-muted:oklch(76% .045 150);--text-dim:oklch(60% .05 150);--line:oklch(87% .23 148/.16);--line-strong:oklch(87% .23 148/.38);--glow:0 0 24px oklch(87% .23 148/.35);--font-display:"Space Grotesk", system-ui, sans-serif;--font-body:"IBM Plex Sans", system-ui, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, Consolas, monospace;--fs-label:.8125rem;--fs-body:1.0625rem;--fs-lead:clamp(1.2rem, 1.1rem + .5vw, 1.45rem);--fs-h3:clamp(1.85rem, 1.4rem + 1.8vw, 2.75rem);--fs-h2:clamp(2.5rem, 1.6rem + 4.2vw, 5rem);--fs-hero:clamp(3.4rem, 1rem + 10.5vw, 10rem);--ease:cubic-bezier(.16, 1, .3, 1);--gutter:clamp(1rem, 4vw, 3rem);--maxw:1240px;--z-scene:0;--z-content:10;--z-nav:30;--z-overlay:50;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*,:before,:after{box-sizing:border-box}html{background:var(--bg);-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--text);font-family:var(--font-body);font-size:var(--fs-body);-webkit-font-smoothing:antialiased;margin:0;line-height:1.65;overflow-x:hidden}::selection{background:var(--phosphor);color:var(--bg)}a{color:inherit;text-decoration:none}:focus-visible{outline:2px solid var(--phosphor);outline-offset:4px;border-radius:4px}h1,h2,h3,p,ul,ol{margin:0}ul,ol{padding:0;list-style:none}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0}.container{width:100%;max-width:var(--maxw);padding-inline:var(--gutter);margin-inline:auto}.mono-label{font-family:var(--font-mono);font-size:var(--fs-label);letter-spacing:.04em;color:var(--text-muted)}.dim{color:var(--text-dim)}.accent{color:var(--phosphor)}.prompt{color:var(--phosphor);margin-right:.15em}.cursor{vertical-align:text-bottom;background:var(--phosphor);width:.55em;height:1.05em;box-shadow:var(--glow);margin-left:.25em;animation:1.05s step-end infinite blink;display:inline-block}@keyframes blink{50%{opacity:0}}.btn{min-height:48px;font-family:var(--font-mono);letter-spacing:.02em;transition:background .25s var(--ease), color .25s var(--ease), box-shadow .25s var(--ease), border-color .25s var(--ease), transform .25s var(--ease);border-radius:999px;align-items:center;gap:.5rem;padding:0 1.4rem;font-size:.875rem;font-weight:500;display:inline-flex}.btn-primary{background:var(--phosphor);color:oklch(15% .04 150);box-shadow:0 0 oklch(87% .23 148/0)}.btn-primary:hover{transform:translateY(-2px);box-shadow:0 0 32px oklch(87% .23 148/.55)}.btn-ghost{border:1px solid var(--line-strong);color:var(--text);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:oklch(10% .02 150/.5)}.btn-ghost:hover{border-color:var(--phosphor);color:var(--phosphor)}.scene{z-index:var(--z-scene);pointer-events:none;position:fixed;inset:0}.scene canvas{display:block}.grain-lines{z-index:calc(var(--z-nav) - 1);pointer-events:none;mix-blend-mode:multiply;opacity:.5;background:repeating-linear-gradient(oklch(0% 0 0/.16) 0 1px,#0000 1px 3px);position:fixed;inset:0}main{z-index:var(--z-content);position:relative}.boot{z-index:var(--z-overlay);background:var(--bg);cursor:pointer;place-items:center;display:grid;position:fixed;inset:0}.boot-lines{min-width:min(30rem,86vw);color:var(--phosphor-soft);line-height:2}.nav{z-index:var(--z-nav);padding:1.1rem var(--gutter);transition:background .4s var(--ease), border-color .4s var(--ease), padding .4s var(--ease);border-bottom:1px solid #0000;justify-content:space-between;align-items:center;gap:1rem;display:flex;position:fixed;inset:0 0 auto}.nav.is-solid{-webkit-backdrop-filter:blur(14px)saturate(1.2);backdrop-filter:blur(14px)saturate(1.2);border-bottom-color:var(--line);background:oklch(8% .015 155/.72);padding-block:.8rem}.nav-brand{font-family:var(--font-mono);color:var(--text);align-items:center;min-height:44px;font-size:.95rem;font-weight:700;display:inline-flex}.nav-brand .cursor{width:.5em;height:1em}.nav ul{gap:.25rem;display:flex}.nav li a{min-height:44px;font-family:var(--font-mono);font-size:var(--fs-label);color:var(--text-muted);transition:color .2s var(--ease), background .2s var(--ease);border-radius:999px;align-items:center;gap:.4rem;padding:0 .85rem;display:inline-flex}.nav li a .n{color:var(--phosphor-deep);transition:color .2s var(--ease)}.nav li a:hover{color:var(--text)}.nav li a:hover .n{color:var(--phosphor)}.nav li.is-cta a{border:1px solid var(--line-strong);color:var(--phosphor);margin-left:.5rem}.nav li.is-cta a:hover{background:var(--phosphor);color:var(--bg)}.nav li.is-cta a:hover .n{color:var(--bg)}.nav li.is-term button{min-width:44px;min-height:44px;color:var(--text-muted);transition:color .2s var(--ease), background .2s var(--ease);border-radius:999px;align-items:center;gap:.4rem;margin-left:.25rem;padding:0 .7rem;display:inline-flex}.nav li.is-term button:hover{color:var(--phosphor);background:oklch(87% .23 148/.08)}.nav li.is-term kbd{font-size:.7rem}.hover-scramble{white-space:pre;display:inline-block}.depth{z-index:var(--z-nav);font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--text-dim);pointer-events:none;flex-direction:column;align-items:center;gap:.7rem;font-size:.68rem;display:flex;position:fixed;top:50%;right:clamp(.75rem,1.6vw,1.75rem);transform:translateY(-50%)}.depth-track{background:var(--line);width:1px;height:28vh;position:relative}.depth-fill{background:var(--phosphor);box-shadow:var(--glow);transform-origin:top;position:absolute;inset:0}.depth-value{color:var(--phosphor);font-variant-numeric:tabular-nums}.depth-section{writing-mode:vertical-rl;color:var(--text-muted)}.terminal-overlay{z-index:var(--z-overlay);padding:var(--gutter);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);perspective:1200px;background:oklch(4% .01 155/.6);place-items:center;display:grid;position:fixed;inset:0}.shell{border:1px solid var(--line-strong);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:oklch(9% .02 155/.92);border-radius:14px;width:min(46rem,100%);overflow:hidden;box-shadow:0 50px 120px -30px oklch(0% 0 0/.95),0 0 80px -20px oklch(87% .23 148/.3)}.shell .window-bar{align-items:center;padding-block:.4rem}.shell-close{width:36px;height:36px;color:var(--text-muted);transition:color .2s var(--ease), background .2s var(--ease);border-radius:8px;place-items:center;display:grid}.shell-close:hover{color:var(--phosphor);background:oklch(87% .23 148/.08)}.shell-body{height:min(24rem,58vh);font-family:var(--font-mono);overscroll-behavior:contain;padding:1.1rem 1.25rem;font-size:.875rem;line-height:1.75;overflow-y:auto}.shell-line{white-space:pre-wrap;word-break:break-word;color:var(--text-muted)}.shell-line .prompt{margin-right:.6em}.shell-line.cmd{color:var(--text);margin-top:.6rem}.shell-line.ok{color:var(--phosphor)}.shell-line.err{color:oklch(75% .16 30)}.shell-line.dim{color:var(--text-dim)}.shell-input{align-items:center;margin-top:.6rem;display:flex}.shell-input .prompt{margin-right:.6em}.shell-input input{min-width:0;font:inherit;color:var(--text);caret-color:var(--phosphor);background:0 0;border:0;outline:none;flex:1;font-size:16px}.shell-hints{border-top:1px solid var(--line);flex-wrap:wrap;align-items:center;gap:.5rem;padding:.75rem 1.25rem 1rem;display:flex}.shell-hints button{border:1px solid var(--line);min-height:36px;font-family:var(--font-mono);color:var(--phosphor-soft);transition:border-color .2s var(--ease), color .2s var(--ease);border-radius:999px;padding:0 .8rem;font-size:.75rem}.shell-hints button:hover{border-color:var(--phosphor);color:var(--phosphor)}.hero{height:230vh;position:relative}.hero-sticky{align-items:center;height:100svh;display:flex;position:sticky;top:0;overflow:hidden}.hero-content{will-change:transform, opacity, filter;position:relative}.hero-content>*{max-width:46rem}.hero-name{font-family:var(--font-display);font-weight:700;font-size:var(--fs-hero);letter-spacing:-.045em;color:var(--text);text-shadow:0 0 40px oklch(87% .23 148/.25);text-wrap:balance;margin:1.1rem 0 1.4rem;line-height:.92;max-width:min(60vw,11ch)!important}.hero-role{font-family:var(--font-mono);color:var(--phosphor);letter-spacing:.02em;font-size:clamp(.95rem,.85rem + .4vw,1.15rem)}.hero-role .slash{color:var(--phosphor-deep);margin-inline:.4em}.hero-tagline{font-size:var(--fs-lead);color:var(--text-muted);text-wrap:pretty;margin-top:1rem;line-height:1.5;max-width:min(31rem,56vw)!important}.hero-actions{flex-wrap:wrap;gap:.75rem;margin-top:2.25rem;display:flex}.hero-meta{flex-wrap:wrap;align-items:center;gap:.5rem 2rem;margin-top:2rem;display:flex}.hero-term{min-height:44px;color:var(--text-dim);transition:color .2s var(--ease);align-items:center;gap:.45em;display:inline-flex}.hero-term:hover{color:var(--phosphor)}kbd{border:1px solid var(--line-strong);min-width:1.6em;height:1.6em;font-family:var(--font-mono);color:var(--phosphor);border-bottom-width:2px;border-radius:5px;place-items:center;padding:0 .3em;font-size:1.05em;font-weight:700;line-height:1;display:inline-grid}.sr-only{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.hero-status{font-family:var(--font-mono);font-size:var(--fs-label);color:var(--text-muted);align-items:center;gap:.6rem;display:inline-flex}.status-dot{background:var(--phosphor);width:8px;height:8px;animation:ping 2s var(--ease) infinite;border-radius:50%;box-shadow:0 0 oklch(87% .23 148/.7)}@keyframes ping{70%{box-shadow:0 0 0 10px oklch(87% .23 148/0)}to{box-shadow:0 0 oklch(87% .23 148/0)}}.hero-caption{color:var(--phosphor);text-transform:uppercase;white-space:nowrap;opacity:0;text-shadow:var(--glow);font-size:.85rem;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.scroll-hint{font-family:var(--font-mono);letter-spacing:.2em;text-transform:uppercase;color:var(--text-dim);flex-direction:column;align-items:center;gap:.5rem;font-size:.72rem;display:flex;position:absolute;bottom:2rem;left:50%;transform:translate(-50%)}.scroll-hint svg{animation:nudge 1.8s var(--ease) infinite;color:var(--phosphor)}@keyframes nudge{50%{transform:translateY(5px)}}.content{background:linear-gradient(#0000 0,oklch(6% .012 155/.55) 30vh calc(100% - 30vh),oklch(6% .012 155/.85) 100%);position:relative}.section{padding-block:clamp(6rem,14vh,10rem);position:relative}.anchor{position:absolute;top:2rem}.section-head{margin-bottom:clamp(2.5rem,6vh,4.5rem)}.eyebrow{font-family:var(--font-mono);font-size:var(--fs-label);text-transform:uppercase;letter-spacing:.18em;color:var(--text-muted);align-items:center;gap:.85rem;display:flex}.eyebrow-index{color:var(--phosphor)}.eyebrow-rule{background:linear-gradient(to right, var(--phosphor), transparent);width:3rem;height:1px}.section-title{font-family:var(--font-display);font-weight:700;font-size:var(--fs-h2);letter-spacing:-.035em;text-wrap:balance;margin-top:1rem;line-height:1}.window-bar{border-bottom:1px solid var(--line);background:oklch(15% .025 155/.6);justify-content:space-between;gap:1rem;padding:.8rem 1.1rem;display:flex}.window-bar .mono-label{text-overflow:ellipsis;white-space:nowrap;font-size:.75rem;overflow:hidden}.about-grid{grid-template-columns:1.15fr 1fr;align-items:start;gap:clamp(2.5rem,6vw,6rem);display:grid}.about-bio{gap:1.25rem;max-width:38rem;display:grid}.about-bio p{color:var(--text-muted)}.about-bio .lead{font-size:var(--fs-lead);color:var(--text);line-height:1.5}.code-window{border:1px solid var(--line);background:var(--bg-raised);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-radius:14px;overflow:hidden;box-shadow:0 30px 80px -30px oklch(0% 0 0/.8)}.code{font-family:var(--font-mono);color:var(--text);margin:0;padding:1.25rem 1.1rem 1.5rem;font-size:clamp(.75rem,.55rem + .35vw,.875rem);line-height:1.85;overflow-x:auto}.code-line{white-space:pre;display:block}.ln{width:2.4em;color:var(--phosphor-deep);-webkit-user-select:none;user-select:none;display:inline-block}.tok-kw{color:oklch(80% .12 200)}.tok-key{color:var(--phosphor-soft)}.tok-str{color:oklch(90% .11 105)}.tok-ok{color:var(--phosphor-deep)}.about-resume{justify-self:start;margin-top:.75rem}.projects{gap:clamp(6rem,16vh,11rem);display:grid}.project{grid-template-columns:1fr 1.1fr;align-items:center;gap:clamp(2rem,6vw,6rem);display:grid}.project.is-flipped .project-copy{order:2}.project-index{margin-bottom:1rem}.project-title{font-family:var(--font-display);font-weight:700;font-size:var(--fs-h3);letter-spacing:-.03em;line-height:1.05}.project-blurb{color:var(--text-muted);text-wrap:pretty;max-width:32rem;margin-top:1.1rem}.tags{flex-wrap:wrap;gap:.5rem;margin-top:1.5rem;display:flex}.tags li{font-family:var(--font-mono);border:1px solid var(--line);color:var(--phosphor-soft);border-radius:999px;padding:.3rem .7rem;font-size:.75rem}.project-links{flex-wrap:wrap;gap:1.5rem;margin-top:1.75rem;display:flex}.link-arrow{min-height:44px;font-family:var(--font-mono);color:var(--text);background:linear-gradient(var(--phosphor), var(--phosphor)) left calc(100% - 10px) / 0 1px no-repeat;transition:background-size .35s var(--ease), color .2s var(--ease);align-items:center;gap:.4rem;font-size:.875rem;display:inline-flex}.link-arrow:hover{color:var(--phosphor);background-size:100% 1px}.link-arrow svg{transition:transform .3s var(--ease)}.link-arrow:hover svg:last-child{transform:translate(2px,-2px)}.panel-stage{perspective:1100px;perspective-origin:50% 40%}.terminal{border:1px solid var(--line-strong);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);transform-style:preserve-3d;will-change:transform;background:oklch(10% .02 155/.82);border-radius:14px;position:relative;overflow:hidden;box-shadow:0 0 0 1px oklch(87% .23 148/.05),0 40px 90px -30px oklch(0% 0 0/.9),0 0 60px -20px oklch(87% .23 148/.25)}.terminal-body{min-height:15rem;font-family:var(--font-mono);padding:1.4rem 1.3rem 1.6rem;font-size:clamp(.8rem,.75rem + .2vw,.92rem);line-height:1.95}.terminal-body p{white-space:pre-wrap}.terminal-body .cmd{color:var(--text)}.terminal-body .out{color:var(--text-muted)}.terminal-body .ok{color:var(--phosphor);text-shadow:var(--glow)}.terminal-glare{pointer-events:none;background:radial-gradient(circle at var(--glare-x,50%) 0%, oklch(87% .23 148/.12), transparent 55%);position:absolute;inset:0}.terminal-body .comment{color:var(--text-dim);font-style:italic}.terminal-body .warn{color:oklch(80% .14 70)}.project-org{color:var(--phosphor-soft);margin-top:.6rem}.projects-more{margin-top:clamp(4rem,10vh,7rem)}.inline-link{color:var(--phosphor);text-underline-offset:3px;text-decoration:underline;-webkit-text-decoration-color:var(--line-strong);text-decoration-color:var(--line-strong);transition:text-decoration-color .2s var(--ease)}.inline-link:hover{-webkit-text-decoration-color:var(--phosphor);text-decoration-color:var(--phosphor)}.now-log{border:1px solid var(--line);background:var(--bg-raised);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-radius:14px;padding:clamp(1.25rem,3vw,2.25rem)}.now-log>.cmd{color:var(--text);margin-bottom:1.25rem}.now-list{display:grid}.now-item{border-top:1px dashed var(--line);grid-template-columns:8.5rem 1fr minmax(9rem,14rem);align-items:center;gap:1.25rem;padding:1.1rem 0;display:grid}.now-tag{font-family:var(--font-mono);font-size:var(--fs-label);color:var(--phosphor)}.now-text{color:var(--text)}.now-progress{align-items:center;gap:.75rem;display:flex}.now-progress .bar{background:oklch(87% .23 148/.1);border-radius:999px;flex:1;height:6px;overflow:hidden}.now-progress .fill{background:var(--phosphor);height:100%;box-shadow:var(--glow);transform-origin:0;display:block}.now-progress .pct{font-family:var(--font-mono);color:var(--text-muted);text-align:right;min-width:2.5rem;font-size:.75rem}.marquee{border-block:1px solid var(--line);margin-bottom:clamp(3rem,8vh,5rem);padding-block:1.1rem;overflow:hidden;-webkit-mask-image:linear-gradient(90deg,#0000,#000 10% 90%,#0000);mask-image:linear-gradient(90deg,#0000,#000 10% 90%,#0000)}.marquee-track{width:max-content;font-family:var(--font-display);letter-spacing:-.02em;color:var(--text-dim);white-space:nowrap;gap:2.5rem;font-size:clamp(1.6rem,1.2rem + 1.8vw,2.75rem);font-weight:500;display:flex}.marquee-track span{align-items:center;gap:2.5rem;display:inline-flex}.marquee-track i{color:var(--phosphor);font-size:.4em;font-style:normal}.stack-grid{grid-template-columns:repeat(4,1fr);gap:2rem;display:grid}.stack-group h3{border-bottom:1px solid var(--line);text-transform:uppercase;letter-spacing:.14em;margin-bottom:1rem;padding-bottom:.9rem;font-weight:500}.stack-group li{color:var(--text);padding:.35rem 0}.contact{flex-direction:column;justify-content:center;min-height:100svh;padding-bottom:2rem;display:flex}.contact-title{font-family:var(--font-display);letter-spacing:-.045em;margin-top:1.25rem;font-size:clamp(3rem,1.2rem + 8vw,8.5rem);font-weight:700;line-height:.95}.contact-title .line{display:block}.contact-title .accent{text-shadow:0 0 50px oklch(87% .23 148/.35)}.contact-copy{max-width:36rem;font-size:var(--fs-lead);color:var(--text-muted);margin-top:2rem;line-height:1.5}.contact-actions{flex-wrap:wrap;gap:.9rem;margin-top:2.5rem;display:flex}.pill{min-height:56px;font-family:var(--font-mono);transition:transform .3s var(--ease), box-shadow .3s var(--ease), border-color .3s var(--ease), color .3s var(--ease);border-radius:999px;align-items:center;gap:.65rem;padding:0 1.75rem;font-size:.95rem;display:inline-flex}.pill-primary{background:var(--phosphor);color:oklch(15% .04 150);font-weight:500}.pill-primary:hover{transform:translateY(-3px);box-shadow:0 0 44px oklch(87% .23 148/.55)}.pill-ghost{border:1px solid var(--line-strong);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:oklch(10% .02 150/.55)}.pill-ghost:hover{border-color:var(--phosphor);color:var(--phosphor);transform:translateY(-3px)}.socials{flex-wrap:wrap;gap:.25rem 1.75rem;margin-top:2.25rem;display:flex}.socials a{min-height:44px;font-family:var(--font-mono);color:var(--text-muted);transition:color .2s var(--ease);align-items:center;gap:.55rem;font-size:.875rem;display:inline-flex}.socials a:hover{color:var(--phosphor)}.footer{border-top:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin-top:clamp(4rem,10vh,6rem);padding-top:1.5rem;display:flex}.to-top{min-height:44px;transition:color .2s var(--ease);align-items:center;gap:.4rem;display:inline-flex}.to-top:hover{color:var(--phosphor)}@media (width<=1180px){.depth{display:none}}@media (width<=960px){.about-grid,.project{grid-template-columns:1fr}.project.is-flipped .project-copy{order:0}.stack-grid{grid-template-columns:repeat(2,1fr)}.now-item{grid-template-columns:7rem 1fr}.depth{display:none}.now-progress{grid-column:2}}@media (width<=767px){.nav li:not(.is-cta):not(.is-term),.nav li.is-term kbd,.hero-term{display:none}.hero-sticky{align-items:flex-end;padding-bottom:6rem}.hero-name{max-width:none!important}.scroll-hint{display:none}.now-item{grid-template-columns:1fr;gap:.4rem}.now-progress{grid-column:1}.stack-grid{gap:1.5rem}.pill{justify-content:center;width:100%}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}.cursor{animation:none}}
