:root{--bg:#dfe4ee;--bg-2:#cfd6e6;--fg:#1d2233;--muted:#5a6178;--panel:#f7f8fcd1;--line:#1d22331f;--accent:#b8581c;--accent-soft:#b8581c1f;--ok:#2f8f5b;--font-display:"Bricolage Grotesque", "Avenir Next", "Segoe UI", sans-serif;--font-body:"Instrument Sans", "Helvetica Neue", Arial, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, "SFMono-Regular", Menlo, monospace}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#11131e;--bg-2:#1b1e30;--fg:#e9ebf5;--muted:#9aa1bd;--panel:#161928cc;--line:#e9ebf51f;--accent:#f0a647;--accent-soft:#f0a64724;--ok:#5fd08f;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--bg:#11131e;--bg-2:#1b1e30;--fg:#e9ebf5;--muted:#9aa1bd;--panel:#161928cc;--line:#e9ebf51f;--accent:#f0a647;--accent-soft:#f0a64724;--ok:#5fd08f;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html{scroll-behavior:smooth}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}body{background:radial-gradient(120% 90% at 70% 30%, var(--bg-2), var(--bg) 70%) fixed, var(--bg);color:var(--fg);font-family:var(--font-body);margin:0;font-size:16px;line-height:1.6;transition:background-color .6s,color .6s}#scene{z-index:0;outline:none;width:100%;height:100%;display:block;position:fixed;inset:0}.bar{z-index:10;padding:calc(env(safe-area-inset-top,0px) + 14px) 24px 14px;pointer-events:none;justify-content:space-between;align-items:center;gap:16px;display:flex;position:fixed;top:0;left:0;right:0}.bar>*{pointer-events:auto}.mark{font-family:var(--font-mono);color:var(--fg);letter-spacing:.02em;align-items:center;gap:8px;font-size:13px;font-weight:600;text-decoration:none;display:inline-flex}.mark .dot{background:var(--ok);width:8px;height:8px;box-shadow:0 0 0 4px color-mix(in srgb, var(--ok) 22%, transparent);border-radius:50%}.nav{background:var(--panel);border:1px solid var(--line);-webkit-backdrop-filter:blur(12px);border-radius:999px;align-items:center;gap:4px;padding:4px;display:flex}.nav a{color:var(--muted);border-radius:999px;padding:6px 12px;font-size:13px;font-weight:500;text-decoration:none;transition:color .2s,background .2s}.nav a:hover,.nav a.on{color:var(--fg);background:var(--accent-soft)}.nav a:focus-visible,.toggle:focus-visible,.btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.toggle{cursor:pointer;width:34px;height:34px;color:var(--fg);background:0 0;border:0;border-radius:50%;place-items:center;display:grid}.toggle:hover{background:var(--accent-soft)}.toggle svg{width:18px;height:18px}.toggle .moon,.is-dark .toggle .sun{display:none}.is-dark .toggle .moon{display:block}main{z-index:1;pointer-events:none;position:relative}section{justify-content:flex-end;align-items:center;min-height:100vh;padding-block:96px;padding-inline:clamp(16px,5vw,72px);display:flex}section.left{justify-content:flex-start}.panel{pointer-events:auto;background:var(--panel);border:1px solid var(--line);-webkit-backdrop-filter:blur(14px);border-radius:20px;width:100%;min-width:0;max-width:30rem;padding:28px;transition:background-color .6s,border-color .6s;box-shadow:0 30px 60px -30px #0a0c1e59}.route{font-family:var(--font-mono);color:var(--muted);align-items:center;gap:8px;margin:0 0 14px;font-size:12px;display:flex}.route b{color:var(--accent);font-weight:600}.route .code{color:var(--ok);margin-left:auto}h1,h2,h3{font-family:var(--font-display);text-wrap:balance;margin:0}h2{letter-spacing:-.02em;margin-bottom:14px;font-size:clamp(28px,3.4vw,40px);font-weight:800;line-height:1.05}h3{letter-spacing:-.01em;font-size:19px;font-weight:800}p{margin:0 0 12px}p:last-child{margin-bottom:0}.muted{color:var(--muted)}.hero .panel{max-width:34rem;box-shadow:none;-webkit-backdrop-filter:none;background:0 0;border-color:#0000;padding:0}.hero h1{letter-spacing:-.045em;margin-bottom:18px;font-size:clamp(56px,10vw,128px);font-weight:800;line-height:.86}.hero h1>span:not(.ch),.hero h1>span .ch{color:var(--accent)}.hero .lede{max-width:26em;font-size:clamp(17px,1.6vw,20px)}.term{font-family:var(--font-mono);background:var(--panel);border:1px solid var(--line);-webkit-backdrop-filter:blur(10px);border-radius:12px;flex-wrap:wrap;align-items:center;gap:6px 12px;margin-top:22px;padding:10px 14px;font-size:13px;display:inline-flex}.term .ps{color:var(--accent)}.term .ok{color:var(--ok)}.hint{color:var(--muted);align-items:center;gap:10px;margin-top:26px;font-size:13px;display:flex}.hint .mouse{border:1.5px solid var(--muted);border-radius:10px;width:18px;height:28px;position:relative}.hint .mouse:after{content:"";background:var(--muted);border-radius:2px;width:2px;height:6px;margin-left:-1px;animation:1.6s ease-in-out infinite wheel;position:absolute;top:5px;left:50%}@keyframes wheel{0%,to{opacity:1;transform:translateY(0)}60%{opacity:0;transform:translateY(8px)}}@media (prefers-reduced-motion:reduce){.hint .mouse:after{animation:none}}.chips{flex-wrap:wrap;gap:6px;margin-top:16px;padding:0;list-style:none;display:flex}.chips li{font-family:var(--font-mono);border:1px solid var(--line);color:var(--fg);border-radius:999px;padding:4px 10px;font-size:12px}.log{gap:16px;margin:18px 0 0;padding:0;list-style:none;display:grid}.log li{grid-template-columns:88px 1fr;gap:14px;display:grid}.log time{font-family:var(--font-mono);color:var(--muted);font-variant-numeric:tabular-nums;padding-top:3px;font-size:12px}.log h3{font-size:16px}.log p{color:var(--muted);margin-top:4px;font-size:14.5px}.projects{gap:12px;margin-top:18px;display:grid}.proj{border-top:1px solid var(--line);min-width:0;padding-top:14px}.proj-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:12px;display:flex}.state{font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;background:var(--accent-soft);color:var(--accent);border-radius:6px;padding:2px 8px;font-size:11px}.state.live{background:color-mix(in srgb, var(--ok) 16%, transparent);color:var(--ok)}.proj p{color:var(--muted);margin-top:6px;font-size:14.5px}.contact-row{flex-wrap:wrap;gap:10px;margin-top:18px;display:flex}.btn{font:600 14px var(--font-body);cursor:pointer;border:1px solid var(--line);color:var(--fg);background:0 0;border-radius:12px;padding:10px 16px;text-decoration:none}.btn.primary{background:var(--fg);color:var(--bg);border-color:var(--fg)}.btn:hover{border-color:var(--accent)}.addr{font-family:var(--font-mono);-webkit-user-select:all;user-select:all;font-size:14px}.foot{color:var(--muted);font-size:12px;font-family:var(--font-mono);margin-top:22px}#tip{z-index:20;pointer-events:none;font-family:var(--font-mono);background:var(--fg);color:var(--bg);white-space:nowrap;border-radius:8px;padding:6px 10px;font-size:12px;position:fixed;top:0;left:0;transform:translate(14px,14px)}@media (width<=760px){.bar{padding-inline:16px}.nav a{padding:6px 9px;font-size:12px}.nav a.hide-sm{display:none}section,section.left{justify-content:center;align-items:flex-end;padding-block:88px 28px}.panel{padding:22px}.hero .panel{background:var(--panel);border-color:var(--line);-webkit-backdrop-filter:blur(14px);padding:22px}.log li{grid-template-columns:1fr;gap:2px}}.rail{z-index:10;flex-direction:column;gap:14px;display:flex;position:fixed;top:50%;right:18px;transform:translateY(-50%)}.rail a{border:1.5px solid var(--muted);border-radius:50%;width:10px;height:10px;transition:background .25s,border-color .25s,transform .25s;display:block;position:relative}.rail a.on{background:var(--accent);border-color:var(--accent);transform:scale(1.25)}.rail a span{font:500 12px var(--font-mono);color:var(--fg);white-space:nowrap;background:var(--panel);border:1px solid var(--line);opacity:0;pointer-events:none;border-radius:6px;padding:3px 8px;transition:opacity .2s;position:absolute;top:50%;right:20px;transform:translateY(-50%)}.rail a:hover span,.rail a:focus-visible span{opacity:1}.rail a:focus-visible{outline:2px solid var(--accent);outline-offset:3px}@media (width<=1000px){.rail{display:none}}.proj{cursor:default;border-radius:4px;transition:color .2s}.proj:focus-visible{outline:2px solid var(--accent);outline-offset:4px}.proj h3{transition:color .2s}.proj.on h3{color:var(--accent)}.toggle .snd-on{display:none}.sound-is-on .toggle .snd-on{display:block}.sound-is-on .toggle .snd-off{display:none}.sound-cta{font:500 13px var(--font-mono);color:var(--fg);cursor:pointer;border:1px solid var(--line);background:var(--panel);-webkit-backdrop-filter:blur(10px);border-radius:999px;align-items:center;gap:10px;margin-top:14px;padding:8px 14px;transition:border-color .2s;display:inline-flex}.sound-cta:hover{border-color:var(--accent)}.sound-cta:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.bars{align-items:flex-end;gap:2px;height:12px;display:inline-flex}.bars i{background:var(--accent);border-radius:1px;width:3px;height:3px}.sound-is-on .bars i{animation:.9s ease-in-out infinite eq}.sound-is-on .bars i:nth-child(2){animation-delay:-.3s}.sound-is-on .bars i:nth-child(3){animation-delay:-.6s}.sound-is-on .bars i:nth-child(4){animation-delay:-.15s}@keyframes eq{0%,to{height:3px}50%{height:12px}}@media (prefers-reduced-motion:reduce){.sound-is-on .bars i{height:8px;animation:none}}.hero h1 .ch{display:inline-block}@media (prefers-reduced-motion:no-preference){.hero h1 .ch{animation:.9s cubic-bezier(.2,.8,.2,1.2) both letter;animation-delay:calc(var(--i) * 45ms + .15s)}.hero h1:hover .ch{animation:.5s both bounce;animation-delay:calc(var(--i) * 30ms)}section.is-active .panel>*,section.is-active .panel .projects>*,section.is-active .panel .log>*{animation:.7s cubic-bezier(.2,.7,.2,1) both rise}section.is-active .panel>:nth-child(2){animation-delay:60ms}section.is-active .panel>:nth-child(3){animation-delay:.12s}section.is-active .panel>:nth-child(4){animation-delay:.18s}section.is-active .panel>:nth-child(5){animation-delay:.24s}section.is-active .panel>:nth-child(n+6){animation-delay:.3s}section.is-active .panel .projects>:nth-child(2),section.is-active .panel .log>:nth-child(2){animation-delay:.26s}section.is-active .panel .projects>:nth-child(3){animation-delay:.34s}.hero.is-active .panel>*{animation:none}}@keyframes letter{0%{opacity:0;transform:translateY(.5em)rotate(6deg)}to{opacity:1;transform:none}}@keyframes bounce{40%{transform:translateY(-.12em)}}@keyframes rise{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}.panel{transition:background-color .6s,border-color .6s,transform .4s,box-shadow .4s}section:not(.hero) .panel:hover{transform:translateY(-2px);box-shadow:0 40px 70px -30px #0a0c1e73}.grain{z-index:5;pointer-events:none;opacity:.07;mix-blend-mode:overlay;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='180' height='180'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");position:fixed;inset:0}.nav a.nav-cv{color:var(--fg);border:1px solid var(--line);margin-left:2px}.nav a.nav-cv:hover{border-color:var(--accent)}.status{font:500 12.5px var(--font-mono);color:var(--fg);background:var(--panel);border:1px solid var(--line);-webkit-backdrop-filter:blur(10px);border-radius:999px;align-items:center;gap:8px;margin:0 0 18px;padding:6px 12px;display:inline-flex}.pulse{background:var(--ok);width:8px;height:8px;box-shadow:0 0 0 0 color-mix(in srgb, var(--ok) 60%, transparent);border-radius:50%;animation:2s infinite pulse}@keyframes pulse{70%{box-shadow:0 0 0 8px #0000}to{box-shadow:0 0 #0000}}@media (prefers-reduced-motion:reduce){.pulse{animation:none}}.hero .role{font:600 clamp(15px, 1.4vw, 17px) var(--font-mono);color:var(--accent);letter-spacing:.01em;margin:-4px 0 12px}.cta-row,.contact-row{flex-wrap:wrap;gap:10px;margin-top:20px;display:flex}.hero .btn{-webkit-backdrop-filter:blur(10px);background:var(--panel)}.hero .btn.primary{background:var(--fg)}.stats{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;max-width:30rem;margin:22px 0 0;display:grid}.stats>div{background:var(--panel);border:1px solid var(--line);-webkit-backdrop-filter:blur(10px);border-radius:14px;min-width:0;padding:12px 14px}.stats dt{font:800 clamp(24px, 2.6vw, 30px)/1 var(--font-display);letter-spacing:-.02em;color:var(--fg);font-variant-numeric:tabular-nums}.stats dd{color:var(--muted);margin:6px 0 0;font-size:12.5px;line-height:1.35}.about-head{align-items:center;gap:16px;margin-bottom:14px;display:flex}.about-head h2{margin:0;font-size:clamp(24px,2.6vw,30px)}.avatar{object-fit:cover;border:2px solid var(--panel);width:72px;height:72px;box-shadow:0 0 0 2px var(--accent);border-radius:50%;flex:none}.facts{gap:8px;margin:14px 0 0;padding:0;list-style:none;display:grid}.facts li{color:var(--muted);padding-left:16px;font-size:14.5px;position:relative}.facts li:before{content:"";background:var(--accent);border-radius:2px;width:6px;height:6px;position:absolute;top:.6em;left:0}.facts b,.wins b,.log p b{color:var(--fg);font-weight:600}.panel.wide{max-width:38rem}.log li{grid-template-columns:104px 1fr}.wins{gap:6px;margin:6px 0 0;padding-left:18px;display:grid}.wins li{color:var(--muted);font-size:14.5px;line-height:1.5;display:list-item}.wins li::marker{color:var(--accent)}.wins code{font-family:var(--font-mono);color:var(--fg);font-size:.86em}.projects{grid-template-columns:repeat(auto-fit,minmax(15.5rem,1fr));gap:14px 18px}.proj{flex-direction:column;display:flex}.tags{flex-wrap:wrap;gap:4px;margin:10px 0 0;padding:0;list-style:none;display:flex}.tags li{font:11px var(--font-mono);background:var(--accent-soft);color:var(--fg);border-radius:6px;padding:2px 7px}.proj-link{font:500 12.5px var(--font-mono);color:var(--accent);margin-top:auto;padding-top:10px;text-decoration:none}a.proj-link:hover{text-decoration:underline}p.proj-link{margin-bottom:0}.proj p.proj-link{color:var(--muted)}p.proj-link a{color:var(--accent);white-space:nowrap;text-decoration:none}p.proj-link a:hover{text-decoration:underline}@media (width<=760px){.stats dd{font-size:11.5px}.stats>div{padding:10px}.log li{grid-template-columns:1fr}.nav a.nav-cv{display:none}}.route b{font-family:var(--font-body);letter-spacing:.08em;text-transform:uppercase;font-size:12px;font-weight:600}.route .code{color:var(--muted)}.quick{border-top:1px solid var(--line);grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 16px;margin:16px 0 0;padding:14px 0 0;display:grid}.quick div{min-width:0}.quick dt{font:600 11px var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}.quick dd{margin:2px 0 0;font-size:14.5px;font-weight:500}.label{font:600 11px var(--font-mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:16px 0 0}.label+.chips,.log .tags{margin-top:8px}@media (width<=420px){.quick{grid-template-columns:1fr}}.log .tags li{grid-template-columns:none;display:block}.stats>.stat-link{transition:border-color .2s,transform .2s;position:relative}.stats>.stat-link:hover{border-color:var(--accent);transform:translateY(-2px)}.stats .see{color:var(--accent);font:500 11px var(--font-mono);margin-top:2px;text-decoration:none;display:block}.stats .see:after{content:"";border-radius:14px;position:absolute;inset:0}.stats .see:focus-visible{outline:none}.stats .see:focus-visible:after{outline:2px solid var(--accent);outline-offset:2px}.proofs{flex-wrap:wrap;gap:6px 14px;margin:8px 0 0;padding:0;list-style:none;display:flex}.log .proofs li{display:block}.proofs a{font:500 12.5px var(--font-mono);color:var(--accent);text-decoration:none}.proofs a:hover{text-decoration:underline}.quotes{gap:14px;margin:16px 0 14px;display:grid}.quote{border:1px solid var(--line);background:color-mix(in srgb, var(--panel) 60%, transparent);border-radius:14px;margin:0;padding:16px 18px}.quote.lead{background:var(--accent-soft);border-color:color-mix(in srgb, var(--accent) 35%, transparent)}.quote blockquote{margin:0}.quote blockquote p{margin:0;font-size:15px;line-height:1.55}.quote.lead blockquote p{font-size:16.5px}.quote blockquote p:before{content:"“";font:800 1.6em/0 var(--font-display);color:var(--accent);vertical-align:-.35em;margin-right:2px}.quote blockquote p:after{content:"”";color:var(--accent)}.quote figcaption{color:var(--muted);align-items:center;gap:10px;margin-top:12px;font-size:12.5px;display:flex}.quote figcaption b{color:var(--fg);font-size:13.5px;display:block}.quote figcaption em{font-style:normal;font:11px var(--font-mono);color:var(--accent);margin-top:1px;display:block}.initials{width:34px;height:34px;font:700 12px var(--font-mono);color:var(--bg);background:var(--fg);border-radius:50%;flex:none;place-items:center;display:grid}section.is-active .panel .quotes>*{animation:.7s cubic-bezier(.2,.7,.2,1) both rise}section.is-active .panel .quotes>:nth-child(2){animation-delay:.14s}section.is-active .panel .quotes>:nth-child(3){animation-delay:.22s}@media (prefers-reduced-motion:reduce){section.is-active .panel .quotes>*{animation:none}}.quick .span{grid-column:1/-1}.proj p.proof{font-size:13px}.proj p.proof b{color:var(--fg);font-weight:600}#about p a{color:var(--accent);text-underline-offset:2px}
