:root{--brand-orange: #ff822b;--brand-navy: #142c4f;--brand-cyan: #00d2ff;--brand-night: #030416;--brand-amber: #76300b;--brand-slate: #8995a7;--brand-gray: #6b7280;--brand-mist: #b5b8bf;--brand-white: #f9f9f9;--sky-golden: #fff3e6;--sky-warm: #ffe8d2;--sky-amber: #ffdcbc;--sky-ember: #ffcfa4;--horizon-burn: var(--brand-orange);--horizon-deep: var(--brand-amber);--sky-dusk: #2a2c4a;--sky-night: var(--brand-navy);--sky-void: var(--brand-night);--on-light: var(--brand-navy);--on-light-soft: #5a4a3c;--on-light-line: #d8c3ab;--status-live-light: #6e2b00;--on-dark: #f7f4f0;--on-dark-soft: #a8b6c4;--on-dark-line: #2c4265;--status-live-dark: #ff9445;--cta-bg: var(--brand-orange);--cta-fg: var(--brand-night);--cta-bg-hover: #ff9445;--accent-cool: var(--brand-cyan);--accent-cool-dim: #0086bb;--focus-ring: var(--brand-orange);--focus-halo: var(--brand-night);--surface-pill: rgba(20, 44, 79, .95);--surface-pill-solid: rgba(20, 44, 79, 1);--tint-hover-light: rgba(20, 44, 79, .05);--tint-hover-dark: rgba(249, 249, 249, .14);--blur-pill: blur(14px) saturate(1.3);--font-sans: "Plus Jakarta Sans", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--w-regular: 400;--w-medium: 500;--w-bold: 700;--w-black: 800;--t-display: clamp(2.75rem, 1.3rem + 7.25vw, 7rem);--t-display-xl: clamp(7rem, 2rem + 6.25vw, 9rem);--t-h1: clamp(2.5rem, 1.55rem + 4.75vw, 5.5rem);--t-h2: clamp(2rem, 1.3rem + 3.5vw, 4.5rem);--t-h3: clamp(1.75rem, 1.32rem + 2.14vw, 3.5rem);--t-h4: clamp(1.5rem, 1.25rem + 1.25vw, 2.75rem);--t-h5: 1.75rem;--t-h6: 1.375rem;--t-h7: 1.125rem;--b-lead: clamp(1.25rem, 1.09rem + .78vw, 1.625rem);--b-lg: 1.25rem;--b-md: 1.125rem;--b-base: 1rem;--b-sm: .875rem;--b-xs: .75rem;--lh-title: 1.1;--lh-lead: 1.3;--lh-body: 1.55;--track-display: -.035em;--track-title: -.025em;--track-body: 0em;--track-label: .08em;--measure: 68ch;--s-1: .25rem;--s-2: .5rem;--s-3: .75rem;--s-4: 1.125rem;--s-5: 1.75rem;--s-6: 2.25rem;--s-7: 3rem;--s-8: 4rem;--s-section: clamp(4rem, 2rem + 10vw, 9rem);--r-1: 6px;--r-2: 12px;--r-3: 16px;--r-4: 24px;--r-pill: 100px;--ease-base: cubic-bezier(.6, 0, .25, 1);--ease-out: cubic-bezier(.25, .46, .45, .94);--d-fast: .18s;--d-base: .32s;--d-slow: .5s;--header-h: 72px;--gutter: clamp(1.125rem, .5rem + 3vw, 4rem);--maxw: 1440px;--shadow-1: 0 1px 2px rgba(20, 44, 79, .06), 0 2px 8px rgba(20, 44, 79, .06);--shadow-2: 0 2px 4px rgba(20, 44, 79, .08), 0 8px 24px rgba(20, 44, 79, .1);--shadow-3: 0 4px 8px rgba(3, 4, 22, .14), 0 16px 48px rgba(3, 4, 22, .18);--z-canvas: 0;--z-content: 10;--z-header: 40;--z-overlay: 100}.on-light{--text: var(--on-light);--text-soft: var(--on-light-soft);--line: var(--on-light-line);--status-live: var(--status-live-light)}.on-dark{--text: var(--on-dark);--text-soft: var(--on-dark-soft);--line: var(--on-dark-line);--status-live: var(--status-live-dark)}@font-face{font-family:Plus Jakarta Sans;font-style:normal;font-weight:400 800;font-display:swap;src:url(/fonts/plus-jakarta-sans-latin.woff2) format("woff2")}@font-face{font-family:Plus Jakarta Sans;font-style:italic;font-weight:500;font-display:swap;src:url(/fonts/plus-jakarta-sans-italic-latin.woff2) format("woff2")}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400 500;font-display:swap;src:url(/fonts/jetbrains-mono-latin.woff2) format("woff2")}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:auto}body{margin:0;font-family:var(--font-sans);font-size:var(--b-base);font-weight:var(--w-regular);line-height:var(--lh-body);letter-spacing:var(--track-body);color:var(--on-light);background:var(--sky-golden);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:hidden}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;z-index:calc(var(--z-overlay) - 1);pointer-events:none;opacity:.14;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.72' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.24'/%3E%3C/svg%3E");mix-blend-mode:soft-light}h1,h2,h3,h4,h5,h6{margin:0;line-height:var(--lh-title);letter-spacing:var(--track-title);font-weight:var(--w-bold)}p{margin:0}ul,ol{margin:0;padding:0;list-style:none}img,svg,video{display:block;max-width:100%}button{font:inherit;color:inherit;background:none;border:none;padding:0;cursor:pointer}a{color:inherit}::selection{background:var(--brand-orange);color:var(--brand-night)}:root{caret-color:var(--brand-orange);accent-color:var(--brand-orange)}@supports (scrollbar-color: red blue){html{scrollbar-color:var(--brand-slate) transparent;scrollbar-width:thin}}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--brand-slate);border-radius:var(--r-pill);border:3px solid transparent;background-clip:content-box}::-webkit-scrollbar-thumb:hover{background:var(--brand-gray);background-clip:content-box}:focus-visible{outline:3px solid var(--focus-ring);outline-offset:2px;box-shadow:0 0 0 6px var(--focus-halo);border-radius:var(--r-1)}:focus:not(:focus-visible){outline:none}#main:focus,#main:focus-visible{outline:none;box-shadow:none}.tabular{font-variant-numeric:tabular-nums}.skip-link{position:absolute;left:var(--s-4);top:var(--s-4);z-index:var(--z-overlay);transform:translateY(-200%);background:var(--brand-navy);color:var(--on-dark);padding:var(--s-3) var(--s-5);border-radius:var(--r-pill);font-size:var(--b-sm);font-weight:var(--w-medium)}.skip-link:focus-visible{transform:translateY(0)}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.shell{position:relative;z-index:var(--z-content)}.route-cover{position:fixed;top:0;right:0;bottom:0;left:0;z-index:calc(var(--z-overlay) + 1);pointer-events:auto;opacity:0;background:var(--sky-night);transition:opacity var(--d-fast) var(--ease-out)}.route-cover--visible{opacity:1}.wrap{width:100%;max-width:none;margin-inline:auto;padding-inline:var(--gutter)}.section{position:relative;padding-block:var(--s-section)}.section--hero{background:linear-gradient(180deg,var(--sky-golden) 0%,var(--sky-warm) 100%);min-height:100svh;display:flex;align-items:center;padding-block:calc(var(--header-h) + var(--s-6)) var(--s-8)}.section--about{background:linear-gradient(180deg,var(--sky-warm) 0%,var(--sky-amber) 100%)}.section--projects{background:linear-gradient(180deg,var(--sky-amber) 0%,var(--sky-ember) 100%)}.section--contact{--band: max(560px, 128svh);background-color:var(--sky-night);background-image:linear-gradient(180deg,var(--sky-ember) 0%,#ffa85e 14%,var(--horizon-burn) 28%,var(--horizon-deep) 45%,var(--sky-dusk) 68%,var(--sky-night) 100%);background-size:100% var(--band);background-repeat:no-repeat;padding-top:calc(var(--band) + var(--s-7));padding-bottom:var(--s-6)}.section--footer{background:linear-gradient(180deg,var(--sky-night) 0%,var(--sky-void) 100%);padding-block:var(--s-7) var(--s-6)}.header{position:fixed;inset-inline:0;top:0;z-index:var(--z-header);height:var(--header-h);display:flex;align-items:center;pointer-events:none}.header>.wrap{display:flex;align-items:center;justify-content:space-between;gap:var(--s-3)}.header a,.header button{pointer-events:auto}.wordmark{display:inline-flex;align-items:center;min-height:44px;padding-inline:var(--s-4);border-radius:var(--r-pill);background:var(--surface-pill);backdrop-filter:var(--blur-pill);-webkit-backdrop-filter:var(--blur-pill);box-shadow:var(--shadow-2);font-size:var(--b-md);font-weight:var(--w-bold);letter-spacing:var(--track-title);text-decoration:none;color:var(--on-dark);white-space:nowrap}.wordmark em{font-style:italic;font-weight:var(--w-medium);color:var(--brand-orange)}.navpill{display:flex;align-items:center;gap:var(--s-1);padding:var(--s-1);border-radius:var(--r-pill);background:var(--surface-pill);backdrop-filter:var(--blur-pill);-webkit-backdrop-filter:var(--blur-pill);box-shadow:var(--shadow-2)}.navpill a{display:inline-flex;align-items:center;min-height:40px;padding-inline:var(--s-4);border-radius:var(--r-pill);color:var(--on-dark);font-size:var(--b-sm);font-weight:var(--w-medium);text-decoration:none;white-space:nowrap;transition:background var(--d-fast) var(--ease-out),color var(--d-fast) var(--ease-out)}.navpill a:hover{background:var(--tint-hover-dark)}.navpill a[aria-current=true]{background:var(--brand-orange);color:var(--cta-fg)}.header-right{display:flex;align-items:center;gap:var(--s-2)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--s-2);min-height:44px;padding:var(--s-3) var(--s-5);border-radius:var(--r-pill);font-size:var(--b-sm);font-weight:var(--w-bold);letter-spacing:.01em;text-decoration:none;cursor:pointer;white-space:nowrap;transition:background var(--d-fast) var(--ease-out),box-shadow var(--d-fast) var(--ease-out)}.btn--cta{background:var(--cta-bg);color:var(--cta-fg);box-shadow:var(--shadow-2)}.btn--cta:hover{background:var(--cta-bg-hover);box-shadow:var(--shadow-3)}.btn--lg{min-height:56px;padding:var(--s-4) var(--s-6);font-size:var(--b-md)}.iconbtn{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:var(--r-pill);color:var(--on-dark);background:var(--surface-pill);backdrop-filter:var(--blur-pill);-webkit-backdrop-filter:var(--blur-pill);box-shadow:var(--shadow-2);transition:background var(--d-fast) var(--ease-out)}.iconbtn:hover{background:var(--surface-pill-solid)}.soundbtn{position:relative;color:var(--on-dark);transition:color var(--d-fast) var(--ease-out),background var(--d-fast) var(--ease-out)}.soundbtn:after{content:"";position:absolute;inset:calc(var(--s-1) * -1);border:1px solid var(--accent-cool);border-radius:inherit;opacity:0;transform:scale(.95);pointer-events:none;transition:opacity var(--d-fast) var(--ease-out),transform var(--d-fast) var(--ease-out)}.soundbtn[aria-pressed=true]{color:var(--accent-cool)}.soundbtn[aria-pressed=true]:after{opacity:.64;transform:scale(1)}.scene-loader{position:fixed;left:var(--gutter);bottom:var(--s-5);z-index:var(--z-overlay);width:min(18rem,calc(100vw - var(--gutter) * 2));padding:var(--s-3) var(--s-4);border:1px solid var(--on-dark-line);border-radius:var(--r-3);color:var(--on-dark);background:var(--surface-pill);backdrop-filter:var(--blur-pill);-webkit-backdrop-filter:var(--blur-pill);box-shadow:var(--shadow-2);opacity:0;transform:translateY(25%);pointer-events:none;transition:opacity var(--d-fast) var(--ease-out),transform var(--d-fast) var(--ease-out)}.scene-loader[data-visible=true]{opacity:1;transform:translateY(0)}.scene-loader__meta{display:flex;align-items:baseline;justify-content:space-between;gap:var(--s-3);font-size:var(--b-xs);font-weight:var(--w-medium);color:var(--on-dark-soft)}.scene-loader__track{display:block;height:2px;margin-top:var(--s-2);overflow:hidden;background:var(--on-dark-line)}.scene-loader__value{display:block;width:100%;height:100%;transform-origin:left center;background:var(--brand-orange);transition:transform var(--d-fast) linear}@media (prefers-reduced-motion: reduce){.soundbtn:after{transform:none;transition-property:opacity}.scene-loader{transform:none;transition-property:opacity}.scene-loader__value{transition:none}}.hero-inner{width:100%}.hero-kicker{margin-bottom:var(--s-4);font-family:var(--font-mono);font-size:var(--b-xs);font-weight:var(--w-medium);letter-spacing:.12em;text-transform:uppercase;color:var(--status-live)}.hero-name{font-size:var(--t-display);font-weight:var(--w-black);letter-spacing:var(--track-display);line-height:.95;color:var(--text);text-wrap:balance}.hero-name span{display:block}.hero-tagline{margin-top:var(--s-5);max-width:22ch;font-size:var(--b-lead);line-height:var(--lh-lead);color:var(--text-soft);text-wrap:pretty}.hero-foot{margin-top:var(--s-7);display:flex;align-items:center;gap:var(--s-5);flex-wrap:wrap}.scroll-hint{opacity:1;transition:opacity var(--d-base) var(--ease-out);display:inline-flex;align-items:center;gap:var(--s-2);font-size:var(--b-xs);font-weight:var(--w-medium);letter-spacing:var(--track-label);text-transform:uppercase;color:var(--text-soft)}.section-heading{font-size:var(--t-h2);font-weight:var(--w-black);letter-spacing:var(--track-display);color:var(--text);text-wrap:balance}.section-heading--mobile{display:none}.about-grid{display:grid;gap:var(--s-7);margin-top:var(--s-6)}.about-place{display:inline-flex;align-items:center;gap:var(--s-2);font-size:var(--b-sm);font-weight:var(--w-medium);letter-spacing:var(--track-label);text-transform:uppercase;color:var(--text-soft)}.about-body{margin-top:var(--s-4);max-width:var(--measure);font-size:var(--b-lead);line-height:var(--lh-lead);color:var(--text);text-wrap:pretty}.skills-label{font-size:var(--b-xs);font-weight:var(--w-bold);letter-spacing:var(--track-label);text-transform:uppercase;color:var(--text-soft)}.skills{counter-reset:skill;margin-top:var(--s-4);display:grid;gap:var(--s-1)}.skills li{counter-increment:skill;display:grid;grid-template-columns:2rem 1fr;align-items:baseline;padding-block:var(--s-3);border-top:1px solid var(--line);font-size:var(--b-md);color:var(--text)}.skills li:before{content:"0" counter(skill);font-family:var(--font-mono);font-size:var(--b-xs);color:var(--text-soft)}.skills li:last-child{border-bottom:1px solid var(--line)}.projects-list{margin-top:var(--s-6)}.projects-desktop-entry,.projects-mobile-story,.projects-night-transition{display:none}.project-row{display:grid;grid-template-columns:2rem minmax(0,1fr) auto;gap:var(--s-3);align-items:start;text-decoration:none;color:inherit;border-top:1px solid var(--line);padding-block:var(--s-5);margin-inline:calc(var(--s-4) * -1);padding-inline:var(--s-4);border-radius:var(--r-3);transition:background var(--d-base) var(--ease-out),transform var(--d-base) var(--ease-out)}.projects-list li:last-child .project-row{border-bottom:1px solid var(--line)}.project-row:hover{background:var(--tint-hover-light);transform:translate(var(--s-2))}.project-row:active{transform:translate(var(--s-2)) scale(.99)}.project-index{padding-top:.48rem;font-family:var(--font-mono);font-size:var(--b-xs);color:var(--text-soft)}.project-main{min-width:0}.project-arrow{display:grid;place-items:center;width:2.5rem;height:2.5rem;border-radius:50%;color:var(--text);background:var(--tint-hover-light);transition:color var(--d-fast) var(--ease-out),background var(--d-fast) var(--ease-out),transform var(--d-base) var(--ease-out)}.project-row:hover .project-arrow{color:var(--cta-fg);background:var(--cta-bg);transform:rotate(8deg)}.project-name{display:block;font-size:var(--t-h4);font-weight:var(--w-bold);letter-spacing:var(--track-title);color:var(--text)}.project-year{font-family:var(--font-mono);font-size:var(--b-sm);color:var(--text-soft);font-variant-numeric:tabular-nums}.project-meta{display:flex;align-items:baseline;gap:var(--s-4);margin-top:var(--s-3)}.project-line{display:block;margin-top:var(--s-2);max-width:56ch;font-size:var(--b-md);line-height:var(--lh-body);color:var(--text-soft);text-wrap:pretty}.contact-inner{max-width:20ch}.contact-heading{font-size:var(--t-h1);font-weight:var(--w-black);letter-spacing:var(--track-display);color:var(--text);text-wrap:balance}.contact-body{margin-top:var(--s-5);max-width:40ch;font-size:var(--b-lead);line-height:var(--lh-lead);color:var(--text-soft)}.contact-actions{margin-top:var(--s-6);display:flex;align-items:center;gap:var(--s-5);flex-wrap:wrap}.contact-mail{font-size:var(--b-md);color:var(--accent-cool);text-decoration:none;border-bottom:1px solid transparent;text-underline-offset:4px;transition:border-color var(--d-fast) var(--ease-out)}.contact-mail:hover{border-bottom-color:var(--accent-cool)}.footer-inner{display:flex;flex-direction:column;gap:var(--s-4);padding-top:var(--s-5);border-top:1px solid var(--line);font-size:var(--b-sm);color:var(--text-soft)}.footer-links{display:flex;gap:var(--s-5);flex-wrap:wrap}.footer-links a{display:inline-flex;align-items:center;min-height:var(--s-5);text-decoration:none;border-bottom:1px solid transparent;text-underline-offset:4px;transition:border-color var(--d-fast) var(--ease-out)}.footer-links a:hover{border-bottom-color:currentColor}.langswitch{display:inline-flex;align-items:center;gap:var(--s-1)}.langswitch button{min-height:36px;padding-inline:var(--s-3);border-radius:var(--r-pill);font-size:var(--b-sm);font-weight:var(--w-medium);color:var(--text-soft);transition:color var(--d-fast) var(--ease-out),background var(--d-fast) var(--ease-out)}.langswitch button:hover{color:var(--text)}.langswitch button[aria-pressed=true]{color:var(--cta-fg);background:var(--brand-orange)}.projectpage{background:linear-gradient(180deg,var(--sky-night) 0%,var(--sky-void) 100%);min-height:100svh;padding-top:calc(var(--header-h) + var(--s-7));padding-bottom:var(--s-8)}.backlink{display:inline-flex;align-items:center;gap:var(--s-2);min-height:44px;font-size:var(--b-sm);font-weight:var(--w-medium);color:var(--text-soft);text-decoration:none;transition:color var(--d-fast) var(--ease-out)}.backlink:hover{color:var(--text)}.projectpage h1{margin-top:var(--s-4);font-size:var(--t-h1);font-weight:var(--w-black);letter-spacing:var(--track-display);color:var(--text);text-wrap:balance}.projectpage .lead{margin-top:var(--s-4);max-width:46ch;font-size:var(--b-lead);line-height:var(--lh-lead);color:var(--text-soft)}.notfound{min-height:100svh;overflow:hidden;padding-top:calc(var(--header-h) + var(--s-4));padding-bottom:var(--s-5)}.notfound>.wrap{min-height:calc(100svh - var(--header-h) - var(--s-4) - var(--s-5));display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:auto 1fr}.notfound .backlink{align-self:start;justify-self:start}.notfound__content{align-self:start;padding-top:var(--s-4);max-width:var(--measure)}.notfound__code{font-size:var(--t-display-xl);line-height:var(--lh-title);letter-spacing:var(--track-display);font-weight:var(--w-black);color:var(--status-live)}.notfound h1{margin-top:var(--s-2);max-width:12ch;font-size:var(--t-h2)}.notfound .lead{margin-top:var(--s-4);max-width:30ch}.notfound .contact-actions{margin-top:var(--s-5)}.notfound .btn{white-space:nowrap}@media (min-width: 840px){.notfound>.wrap{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.notfound .backlink,.notfound__content{grid-column:1}.notfound__content{align-self:center;padding-top:0;padding-bottom:var(--s-7)}}@media (max-width: 839.98px){.notfound__code{font-size:var(--t-display)}.notfound h1{font-size:var(--t-h3)}.notfound .lead{font-size:var(--b-md)}}.meta{margin-top:var(--s-7);display:grid;gap:var(--s-4);padding-block:var(--s-5);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.meta dt{font-size:var(--b-xs);font-weight:var(--w-bold);letter-spacing:var(--track-label);text-transform:uppercase;color:var(--text-soft)}.meta dd{margin:0;margin-top:var(--s-1);font-size:var(--b-md);color:var(--text)}.prose{margin-top:var(--s-7);display:grid;gap:var(--s-4);max-width:var(--measure)}.prose p{font-size:var(--b-md);line-height:var(--lh-body);color:var(--text);text-wrap:pretty}.nextlink{margin-top:var(--s-8);display:inline-flex;align-items:center;gap:var(--s-3);font-size:var(--t-h6);font-weight:var(--w-bold);color:var(--text);text-decoration:none}.nextlink:hover{color:var(--accent-cool)}.review-note{margin-top:var(--s-5);padding:var(--s-3) var(--s-4);border:1px dashed var(--brand-orange);border-radius:var(--r-2);font-size:var(--b-sm);color:var(--text-soft);max-width:var(--measure)}@media (max-width: 839.98px){.has-3d{--mobile-copy: 48svh;--mobile-stage: 52svh}.has-3d .section-heading--desktop{display:none}.has-3d .section-heading--mobile{display:block}.section--hero{align-items:stretch;padding-top:calc(var(--header-h) + var(--s-6));padding-bottom:calc(var(--s-8) + 3.5rem)}.has-3d .section--hero{min-height:100svh;padding-top:calc(var(--header-h) + var(--s-3));padding-bottom:var(--mobile-stage)}.hero-inner{display:flex;flex-direction:column}.has-3d .hero-foot{margin-top:var(--s-4)}.has-3d .section--about,.has-3d .section--projects{padding-block:0}.has-3d .section--about .about-grid{margin-top:0;gap:0}.has-3d .section--about .about-grid>div{min-height:100svh;padding-top:calc(var(--header-h) + var(--s-3));padding-bottom:var(--mobile-stage)}.has-3d .section--about .story-copy{background:color-mix(in srgb,var(--sky-golden) 92%,transparent);border:1px solid var(--line);box-shadow:var(--shadow-2);backdrop-filter:blur(12px) saturate(1.08);-webkit-backdrop-filter:blur(12px) saturate(1.08)}.has-3d .section--about .story-copy{padding:var(--s-4);border-radius:var(--r-3)}.has-3d .section--about .section-heading--mobile{margin-bottom:var(--s-3)}.has-3d .section--about .about-body{margin-top:var(--s-3);font-size:var(--b-base);line-height:1.45}.has-3d .section--about .skills{margin-top:var(--s-2)}.has-3d .section--about .skills li{padding-block:var(--s-2);font-size:var(--b-base)}.has-3d .section--projects .projects-list--desktop{display:none}.has-3d .section--projects .projects-mobile-story{display:block}.has-3d .section--projects .projects-night-transition{display:block;min-height:90svh}.has-3d .section--projects .projects-mobile-pin{position:sticky;top:0;z-index:var(--z-content);height:100svh;padding-top:calc(var(--header-h) + var(--s-3));padding-bottom:var(--mobile-stage);display:flex;flex-direction:column;justify-content:flex-start}.has-3d .section--projects .projects-mobile-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:var(--s-3);padding:var(--s-3) var(--s-4);border:1px solid var(--on-dark-line);border-radius:var(--r-3);background:var(--surface-pill-solid);box-shadow:var(--shadow-2)}.has-3d .section--projects .projects-mobile-heading .section-heading{max-width:12ch;font-size:var(--t-h4);line-height:var(--lh-title)}.projects-mobile-count{flex:0 0 auto;padding-bottom:var(--s-1);font-family:var(--font-mono);font-size:var(--b-xs);color:var(--text-soft)}.projects-mobile-window{flex:0 0 auto;margin-top:var(--s-3);overflow:hidden}.projects-mobile-track{display:flex;align-items:stretch;gap:var(--s-3);width:max-content;transform:translateZ(0);will-change:transform}.projects-mobile-track>li{flex:0 0 calc(100vw - var(--gutter) - var(--gutter) - var(--s-5));width:calc(100vw - var(--gutter) - var(--gutter) - var(--s-5))}.has-3d .section--projects .project-row--mobile{width:100%;height:100%;min-height:10.75rem;margin-inline:0;padding:var(--s-4);grid-template-columns:1.5rem minmax(0,1fr) auto;border:1px solid var(--on-dark-line);box-shadow:var(--shadow-2);backdrop-filter:blur(12px) saturate(1.08);-webkit-backdrop-filter:blur(12px) saturate(1.08)}.has-3d .section--projects .project-row--mobile .project-name{font-size:var(--t-h6)}.has-3d .section--projects .project-row--mobile .project-line{display:-webkit-box;margin-top:var(--s-1);overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:3;font-size:var(--b-sm);line-height:1.45}.has-3d .section--projects .project-row--mobile .project-meta{gap:var(--s-3);margin-top:var(--s-2)}.has-3d .section--projects .project-row--mobile .project-arrow{width:var(--s-6);height:var(--s-6)}.projects-mobile-progress{display:grid;grid-template-columns:repeat(5,1fr);gap:var(--s-2);margin-top:var(--s-3)}.projects-mobile-progress span{height:2px;border-radius:var(--r-pill);background:var(--on-dark-line);transition:background var(--d-fast) var(--ease-out)}.projects-mobile-progress span[data-active]{background:var(--brand-orange)}.projects-mobile-steps{margin-top:-100svh}.project-entry-step,.project-scroll-step{min-height:100svh}.has-3d .section--contact{--band: 0px;min-height:100svh;padding-top:calc(var(--header-h) + var(--s-5) + 1.25rem);padding-bottom:var(--mobile-stage)}.has-3d .section--contact .contact-inner{max-width:none;text-align:center}.has-3d .section--contact .contact-body{margin:var(--s-3) auto 0;text-align:center}.has-3d .section--contact .contact-actions{margin-top:var(--s-4);display:grid;grid-template-columns:minmax(0,1fr);gap:var(--s-3)}.has-3d .section--contact .contact-actions .btn{justify-self:center}.has-3d .section--contact .contact-mail{justify-self:center;transform:translateY(2.5rem)}.has-3d .section--footer{min-height:0;height:0;padding-block:0;overflow:visible}.has-3d .section--footer>.wrap{height:0}.has-3d .section--footer .footer-inner{position:relative;z-index:var(--z-content);transform:translateY(calc(-100% - var(--s-3) - env(safe-area-inset-bottom)));display:grid;grid-template-columns:1fr auto;align-items:center;gap:var(--s-2) var(--s-3);padding:var(--s-4);border:1px solid var(--on-dark-line);border-radius:var(--r-3);background:var(--surface-pill);box-shadow:var(--shadow-2);backdrop-filter:var(--blur-pill);-webkit-backdrop-filter:var(--blur-pill)}.has-3d .section--footer .footer-links{gap:var(--s-4)}.has-3d .section--footer .langswitch{justify-self:end}.has-3d .section--footer .footer-inner>p{grid-column:1 / -1}}@media (max-width: 839.98px) and (max-height: 720px){.has-3d{--mobile-copy: 52svh;--mobile-stage: 48svh}.has-3d .section--contact .contact-heading{font-size:2.25rem}.has-3d .section--contact .contact-body{font-size:var(--b-base)}.has-3d .section--contact .btn--lg{min-height:52px;padding:var(--s-3) var(--s-5);font-size:var(--b-base)}.has-3d .section--projects .projects-mobile-heading{padding:var(--s-2) var(--s-3)}.has-3d .section--projects .projects-mobile-heading .section-heading{font-size:var(--t-h6)}.has-3d .section--projects .project-row--mobile{min-height:9rem;padding:var(--s-3)}.has-3d .section--projects .project-row--mobile .project-line{-webkit-line-clamp:2}}@media (min-width: 840px){.has-3d .section--contact{--band: 48svh}.has-3d .projects-desktop-entry{display:block;min-height:55svh}.projects-list--desktop{display:grid;gap:var(--s-4)}.projects-list--desktop .project-row{margin-inline:0;border:1px solid var(--line)}.has-3d .section--projects .projects-night-transition{display:block;min-height:70svh}.about-grid{grid-template-columns:1.15fr 1fr;gap:var(--s-8);align-items:start}.footer-inner{flex-direction:row;align-items:center;justify-content:space-between}.meta{grid-template-columns:repeat(3,1fr);gap:var(--s-6)}.hero-tagline{max-width:30ch}}@media (min-width: 1024px){.project-line{font-size:var(--b-lg)}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}.header-desktop-nav,.header-mobile-nav{display:none}@media (max-width: 359px){.header>.wrap{gap:var(--s-1)}.header .wordmark{padding-inline:var(--s-3);font-size:var(--b-sm)}.header-right{gap:var(--s-1)}.header-right .btn{padding-inline:var(--s-3)}.contact-mail{font-size:var(--b-base)}}@media (min-width: 840px){.header-desktop-nav{display:block}.header-mobile-nav{display:none}.header>.wrap{display:grid;grid-template-columns:1fr auto 1fr}.header>.wrap>.wordmark{justify-self:start;min-height:var(--s-7);padding-inline:var(--s-5)}.header-desktop-nav .navpill a{min-height:44px;padding-inline:var(--s-5);font-size:var(--b-base)}.header-right{justify-self:end}.header-right .btn{min-height:var(--s-7);padding-inline:var(--s-5)}}.status{display:inline-flex;align-items:center;gap:var(--s-2);font-size:var(--b-xs);font-weight:var(--w-bold);letter-spacing:var(--track-label);text-transform:uppercase;color:var(--text-soft);white-space:nowrap}.status:before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor}.status--production{color:var(--status-live)}.status--personal{color:var(--text)}.projectpage .status{margin-bottom:var(--s-3)}.col-edge{display:block;width:100%;height:0}.has-scrolled .scroll-hint{opacity:0}@media (max-width: 839.98px){.scroll-hint{transition:none}.has-scrolled .scroll-hint{visibility:hidden}}.scene{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--z-canvas);pointer-events:none}.has-3d .section--hero,.has-3d .section--about,.has-3d .section--projects,.has-3d .section--contact,.has-3d .section--footer,.has-3d .projectpage{background:none}.has-3d .section--projects{--text: var(--on-dark);--text-soft: var(--on-dark-soft);--line: var(--on-dark-line);--status-live: var(--status-live-dark);--projects-ui-opacity: 0;--projects-ui-events: none}.has-3d .section--projects .section-heading--desktop,.has-3d .section--projects .projects-list--desktop,.has-3d .section--projects .projects-mobile-pin{opacity:var(--projects-ui-opacity);pointer-events:var(--projects-ui-events)}.has-3d .section--projects .project-row{background:var(--surface-pill);border-color:var(--on-dark-line);box-shadow:var(--shadow-2);backdrop-filter:blur(14px) saturate(1.15);-webkit-backdrop-filter:blur(14px) saturate(1.15)}.has-3d .section--projects .project-row:hover{background:var(--surface-pill-solid)}@media (max-width: 839.98px){.has-3d .section--projects>.wrap>.section-heading{background:var(--surface-pill);border-color:var(--on-dark-line)}.has-3d .section--projects .project-row{background:var(--surface-pill);border-color:var(--on-dark-line)}}.perf{position:fixed;right:var(--s-3);bottom:var(--s-3);z-index:var(--z-overlay);padding:var(--s-1) var(--s-3);border-radius:var(--r-1);background:var(--surface-pill);color:var(--on-dark);font-family:var(--font-mono);font-size:var(--b-xs);font-variant-numeric:tabular-nums;pointer-events:none}@media (min-width: 840px){.section .wrap>*,.section .wrap>.footer-inner{max-width:calc(40vw - var(--gutter))}.about-grid{grid-template-columns:1fr;gap:var(--s-6)}}@media (min-width: 1440px){.about-grid{grid-template-columns:1.15fr 1fr;gap:var(--s-7)}}@media (min-width: 1600px){.hero-name{font-size:var(--t-display-xl)}}.projectpage .wrap>*{max-width:none}.projectpage.textpage .prose{max-width:40ch}.textpage--legal .prose{gap:var(--s-3)}.legal-contact{display:flex;align-items:baseline;gap:var(--s-2);font-size:var(--b-base);white-space:nowrap}.legal-contact svg{flex:none}.legal-contact a{color:var(--accent-cool);text-decoration:none;border-bottom:1px solid transparent;text-underline-offset:var(--s-1);transition:border-color var(--d-fast) var(--ease-out)}.legal-contact a:hover{border-bottom-color:currentColor}@media (min-width: 1024px){.projectpage.textpage .prose{max-width:min(var(--measure),calc(50vw - var(--gutter) - var(--s-4)));margin-top:var(--s-8);gap:var(--s-5)}.projectpage.textpage .prose p{font-size:var(--b-lead);line-height:var(--lh-lead)}.textpage--legal .prose{gap:var(--s-5)}.legal-contact{font-size:var(--b-lg)}}@media (max-width: 479.98px){.legal-contact{font-size:var(--b-base)}}@media (max-width: 359.98px){.legal-contact{font-size:var(--b-sm)}}
