@font-face{font-family:Onest;font-style:normal;font-weight:300 800;font-display:swap;src:url(/fonts/onest-latin.woff2)format("woff2")}:root{--bg:oklch(99% .003 255);--surface:oklch(96.7% .008 255);--surface-2:oklch(94.5% .012 258);--ink:oklch(24.5% .032 262);--muted:oklch(48% .032 258);--line:oklch(91.2% .012 255);--c1:oklch(50% .19 262);--c2:oklch(52% .1 205);--c3:oklch(50% .2 295);--glow-1:oklch(63% .17 258/.35);--glow-3:oklch(62% .18 298/.32);--r-card:14px;--r-ctl:11px;--font:"Onest", system-ui, -apple-system, sans-serif;--wght-display:700;--track-display:-.022em;--ease-out:cubic-bezier(.22, 1, .36, 1);--content:1060px;--gutter:clamp(20px, 4vw, 44px)}:root[data-theme=dark]{--bg:oklch(16.8% .02 262);--surface:oklch(21.3% .024 262);--surface-2:oklch(25% .026 262);--ink:oklch(93% .012 255);--muted:oklch(71% .02 255);--line:oklch(30% .02 260);--c1:oklch(72% .14 258);--c2:oklch(78% .12 195);--c3:oklch(73% .15 300);--glow-1:oklch(66% .17 258/.4);--glow-3:oklch(66% .18 298/.38)}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--bg);color:var(--ink);font-family:var(--font);font-kerning:normal;-webkit-font-smoothing:antialiased;margin:0;font-size:16.5px;line-height:1.62;transition:background-color .45s,color .45s}h1,h2,h3{font-weight:var(--wght-display);letter-spacing:var(--track-display);text-wrap:balance;text-transform:lowercase;margin:0;line-height:1.12}p{text-wrap:pretty;margin:0}a{color:var(--c1);text-decoration:none;transition:color .25s}a:hover{color:var(--c3)}img,svg,canvas{max-width:100%;display:block}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:none;padding:0}::selection{background:color-mix(in oklch, var(--c3) 30%, transparent)}:focus-visible{outline:2px solid var(--c3);outline-offset:3px;border-radius:4px}.skip-link{z-index:60;background:var(--ink);color:var(--bg);border-radius:999px;padding:10px 18px;font-size:14px;font-weight:650;text-decoration:none;position:fixed;top:12px;left:12px;transform:translateY(-200%)}.skip-link:focus-visible{transform:none}.container{width:min(100% - 2 * var(--gutter), var(--content));margin-inline:auto}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important;animation-delay:0s!important}}.logo-badge{background:var(--c1);width:36px;height:36px;color:var(--bg);font-weight:var(--wght-display);letter-spacing:-.02em;text-transform:lowercase;transition:box-shadow .3s ease, transform .25s var(--ease-out);border-radius:11px;place-items:center;font-size:15px;display:inline-grid}a.logo-badge:hover{color:var(--bg);box-shadow:0 6px 22px -6px var(--glow-1);transform:translateY(-1px)}.nav{z-index:5;position:relative}.nav-inner{align-items:center;gap:22px;padding-block:22px;display:flex}.nav-links{align-items:center;gap:22px;margin-left:auto;display:flex}.nav-link{color:var(--muted);text-transform:lowercase;font-size:14.5px;font-weight:560;position:relative}.nav-link:after{content:"";background:linear-gradient(90deg, var(--c1), var(--c3));height:2px;transition:right .3s var(--ease-out);border-radius:2px;position:absolute;bottom:-5px;left:0;right:100%}.nav-link:hover{color:var(--ink)}.nav-link:hover:after,.nav-link[aria-current=page]:after{right:0}.nav-link[aria-current=page]{color:var(--ink)}.mode-btn{border:1px solid var(--line);border-radius:999px;place-items:center;width:34px;height:34px;font-size:14px;transition:border-color .25s,box-shadow .3s;display:inline-grid}.mode-btn:hover{border-color:var(--c3);box-shadow:0 4px 18px -4px var(--glow-3)}.site-nav{z-index:40;transition:transform .38s var(--ease-out);background:color-mix(in oklch, var(--bg) 86%, transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-bottom:1px solid var(--line);position:fixed;top:0;left:0;right:0;transform:translateY(-110%)}.site-nav.on{transform:translateY(0)}.site-nav .nav-inner{padding-block:10px}.site-nav .logo-badge{border-radius:10px;width:32px;height:32px;font-size:13.5px}.hero{border-bottom:1px solid var(--line);margin-top:-80px;padding-top:80px;position:relative;overflow:clip}.scene-sky{filter:blur(38px)saturate(1.25);opacity:.85;pointer-events:none;width:124%;max-width:none;height:114%;position:absolute;inset:-12% -12% 0;-webkit-mask-image:linear-gradient(#000 55%,#0000 94%);mask-image:linear-gradient(#000 55%,#0000 94%)}:root[data-theme=dark] .scene-sky{filter:blur(44px)saturate(1.25);opacity:.9}.scene-sky--subtle{opacity:.45}:root[data-theme=dark] .scene-sky--subtle{opacity:.55}.hero-in{z-index:2;padding-block:clamp(40px,6vw,80px) 0;position:relative}.hero--page .hero-in{padding-block:clamp(24px,3.5vw,48px) clamp(40px,6vw,72px)}.hero h1{max-width:16ch;font-size:clamp(2.9rem,7.2vw,5.1rem)}.hero--page h1{font-size:clamp(2.1rem,4.6vw,3.2rem)}.hero-sub{max-width:52ch;color:var(--muted);margin-top:22px;font-size:clamp(1.02rem,1.5vw,1.16rem)}.hero-sub strong{color:var(--ink);font-weight:640}.hero-cta{flex-wrap:wrap;gap:12px;margin-top:34px;display:flex}.skyline-zone{z-index:1;height:clamp(110px,15vw,185px);margin-top:clamp(24px,4vw,48px);position:relative}.skyline-zone canvas{image-rendering:pixelated;position:absolute;bottom:0;left:0}.about-hero{grid-template-columns:1.5fr 1fr;align-items:start;gap:clamp(28px,5vw,64px);display:grid}.about-hero h1{font-size:clamp(2.1rem,4.6vw,3.2rem)}.voice-copy{max-width:56ch;margin-top:22px}.voice-copy p{color:var(--muted);font-size:1.04rem}.voice-copy p:first-child{color:var(--ink)}.voice-copy p+p{margin-top:12px}.route{max-width:74ch;margin:40px 0 0;padding-left:0;list-style:none;position:relative}.route:before{content:"";background:linear-gradient(to bottom, var(--c3), var(--c1) 45%, var(--c2));border-radius:2px;width:2px;position:absolute;top:10px;bottom:26px;left:7px}.route li{padding-left:40px;padding-block:18px 22px;position:relative}.route .station{background:var(--bg);border:3px solid var(--c1);border-radius:50%;width:16px;height:16px;position:absolute;top:24px;left:0}.route li.now .station{border-color:var(--c3);box-shadow:0 0 18px -2px var(--glow-3)}@media (prefers-reduced-motion:no-preference){.route li.now .station{animation:2.6s ease-in-out infinite station-pulse}}@keyframes station-pulse{50%{box-shadow:0 0 26px 0 var(--glow-3)}}.route .stop .when{color:var(--muted);font-variant-numeric:tabular-nums;font-size:12.5px;font-weight:650;display:block}.route .stop b{margin-top:3px;font-size:1.06rem;font-weight:660;display:block}.route .stop i{color:var(--c1);margin-top:2px;font-size:.92rem;font-style:normal;font-weight:580;display:block}.route li.now .stop i{color:var(--c3)}.route li.now .stop:has(.sub-roles) i{color:var(--c1)}.route .stop .note{color:var(--muted);max-width:58ch;margin-top:6px;font-size:.95rem;display:block}.route .sub-roles{border-left:2px solid var(--line);gap:18px;margin-top:16px;padding-left:20px;display:grid}.route .sub-role-head{flex-wrap:wrap;align-items:baseline;gap:10px;display:flex}.route .sub-role .team{color:var(--c1);font-size:.98rem;font-weight:650}.route .sub-role .team-time{color:var(--muted);font-variant-numeric:tabular-nums;font-size:.8rem}.route .sub-role .note{margin-top:4px}.skill-line{color:var(--muted);margin-top:4px;font-size:.92rem}.hero-in>*{animation:rise .7s var(--ease-out) both}.hero-in>:nth-child(2){animation-delay:80ms}.hero-in>:nth-child(3){animation-delay:.16s}.hero-in>:nth-child(4){animation-delay:.24s}@keyframes rise{0%{opacity:0;translate:0 14px}}.btn{letter-spacing:.005em;cursor:pointer;transition:transform .25s var(--ease-out), box-shadow .35s ease, background-color .3s ease, color .25s ease, border-color .3s ease;border-radius:999px;align-items:center;gap:9px;padding:14px 24px;font-size:15px;font-weight:620;display:inline-flex}.btn:active{transform:scale(.97)}a.btn-primary,.btn-primary{background:var(--ink);color:var(--bg)}a.btn-primary:hover,.btn-primary:hover{box-shadow:0 10px 34px -8px var(--glow-1), 0 10px 34px -8px var(--glow-3);color:var(--bg);transform:translateY(-2px)}.btn .arrow{transition:translate .25s var(--ease-out)}.btn:hover .arrow{translate:4px}a.btn-ghost,.btn-ghost{background:color-mix(in oklch, var(--bg) 72%, transparent);color:var(--ink);border:1.5px solid var(--line)}a.btn-ghost:hover,.btn-ghost:hover{border-color:var(--c3);color:var(--c3);box-shadow:0 6px 26px -6px var(--glow-3)}.pills{flex-wrap:wrap;gap:8px;display:flex}.pill{border:1px solid #0000;border-radius:999px;padding:6px 13px;font-size:12.5px;font-weight:620}.pill-ux{color:var(--c1);background:color-mix(in oklch, var(--c1) 12%, var(--bg));border-color:color-mix(in oklch, var(--c1) 26%, transparent)}.pill-fe{color:var(--c3);background:color-mix(in oklch, var(--c3) 12%, var(--bg));border-color:color-mix(in oklch, var(--c3) 26%, transparent)}.pill-research{color:var(--c2);background:color-mix(in oklch, var(--c2) 13%, var(--bg));border-color:color-mix(in oklch, var(--c2) 30%, transparent)}.sec{padding-block:clamp(52px,8vw,96px)}.sec+.sec{border-top:1px solid var(--line)}.sec h2{align-items:center;gap:14px;font-size:clamp(1.7rem,3.2vw,2.4rem);display:flex}.sec h2 .dot{background:linear-gradient(135deg, var(--c1), var(--c2) 55%, var(--c3));border-radius:50%;flex-shrink:0;width:13px;height:13px}.sec-lede{max-width:62ch;color:var(--muted);margin-top:14px;font-size:1.03rem}.sec-lede strong,.sec-lede b{color:var(--ink)}.highlights{gap:0;max-width:74ch;margin-top:30px;padding-left:0;list-style:none;display:grid}.highlights li{border-bottom:1px solid var(--line);grid-template-columns:92px 1fr;gap:18px;padding-block:16px;font-size:1.02rem;display:grid}.highlights li:first-child{border-top:1px solid var(--line)}.highlights .k{text-transform:lowercase;color:var(--c1);padding-top:1px;font-weight:660}.highlights li span:last-child{color:var(--muted)}.home-more{margin-top:30px}.about-prose{max-width:58ch;font-size:1.04rem}.about-prose p+p{margin-top:14px}.about-prose .quiet{color:var(--muted)}.about-photo{aspect-ratio:841/1100;object-fit:cover;border-radius:var(--r-card);border:1px solid var(--line);width:100%;height:auto}.texture{flex-wrap:wrap;gap:9px;margin-top:20px;display:flex}.chip{color:var(--ink);background:var(--surface);border:1px solid var(--line);cursor:default;transition:transform .25s var(--ease-out), border-color .25s ease, box-shadow .35s ease;border-radius:999px;align-items:center;gap:7px;padding:8px 15px;font-size:13.5px;font-weight:580;display:inline-flex}.chip:hover{border-color:color-mix(in oklch, var(--c2) 60%, var(--line));box-shadow:0 8px 24px -6px var(--glow-1);transform:translateY(-2px)rotate(-1.5deg)}.timeline{gap:0;margin-top:26px;padding-left:0;list-style:none;display:grid}.timeline li{border-bottom:1px solid var(--line);grid-template-columns:150px 1fr;gap:18px;padding-block:16px;font-size:.97rem;display:grid}.timeline li:first-child{border-top:1px solid var(--line)}.timeline .when{color:var(--muted);font-variant-numeric:tabular-nums;padding-top:1px;font-size:.9rem;font-weight:650}.timeline .what b{font-size:1.02rem;font-weight:650;display:block}.timeline .what i{color:var(--c1);margin-top:2px;font-size:.9rem;font-style:normal;font-weight:580;display:block}.timeline .what span{color:var(--muted);max-width:62ch;margin-top:4px;font-size:.94rem;display:block}.skill-groups{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:28px 36px;margin-top:34px;display:grid}.skill-group h3{font-size:1.05rem}.skill-group .pills{margin-top:12px}.contact-links{flex-wrap:wrap;gap:12px;margin-top:30px;display:flex}.foot{border-top:1px solid var(--line);padding-block:40px 56px}.foot-in{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:20px 30px;display:flex}.foot-left{color:var(--muted);align-items:center;gap:16px;font-size:14px;display:flex}.foot-links{gap:20px;font-size:14px;font-weight:580;display:flex}.notfound{text-align:left;padding-block:clamp(64px,12vw,140px)}.notfound h1{font-size:clamp(2.4rem,6vw,4rem)}.notfound p{color:var(--muted);max-width:46ch;margin-top:18px;font-size:1.05rem}.notfound .btn{margin-top:30px}.page{animation:.28s both page-in}@keyframes page-in{0%{opacity:0;translate:0 6px}}@media (width<=720px){.about-hero{grid-template-columns:1fr}.timeline li{grid-template-columns:1fr;gap:4px}.nav-links{gap:16px}.foot-in{flex-direction:column;align-items:flex-start}}
