@font-face{font-family:Space Grotesk;font-style:normal;font-weight:400 700;font-display:swap;src:url(/fonts/space-grotesk-latin.woff2) format("woff2");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;font-style:normal;font-weight:400 700;font-display:swap;src:url(/fonts/jetbrains-mono-latin.woff2) format("woff2");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{--ink-950:#08090b;--ink-900:#0c0e11;--ink-850:#101316;--ink-800:#14171b;--ink-700:#1a1e23;--ink-600:#23282f;--ink-500:#2e343c;--ink-400:#3a424b;--bone-100:#f3f5f7;--bone-200:#d6dadf;--bone-300:#aab1ba;--bone-400:#7e868f;--bone-500:#5a626c;--bone-600:#3d444c;--cyan-300:#7df0f5;--cyan-400:#38dde6;--cyan-500:#1ec8d2;--cyan-600:#15a3ac;--cyan-700:#0e767d;--amber-400:#f3b557;--amber-500:#e89c33;--wave-cyan:#1ec8d2;--wave-teal:#1aa39a;--wave-amber:#f3b557;--wave-coral:#ef6a4d;--wave-cyan-bright:#1ec8d2;--wave-teal-bright:#19b3a6;--wave-coral-bright:#f2724f;--wave-gradient:linear-gradient(90deg,var(--wave-cyan),var(--wave-teal) 34%,var(--wave-amber) 64%,var(--wave-coral));--green-500:#35d08a;--red-500:#f2585f;--yellow-500:#f3b557;--bg-page:var(--ink-900);--bg-page-alt:var(--ink-850);--surface:var(--ink-800);--surface-raised:var(--ink-700);--surface-hover:var(--ink-600);--surface-active:var(--ink-500);--surface-inset:var(--ink-950);--text-strong:var(--bone-100);--text-default:var(--bone-200);--text-muted:var(--bone-300);--text-faint:var(--bone-400);--text-disabled:var(--bone-500);--text-on-accent:var(--ink-950);--border-subtle:rgba(243,245,247,.06);--border-default:rgba(243,245,247,.11);--border-strong:rgba(243,245,247,.18);--border-accent:var(--cyan-500);--accent:var(--cyan-500);--accent-hover:var(--cyan-400);--accent-press:var(--cyan-600);--accent-soft:rgba(30,200,210,.12);--accent-glow:rgba(30,200,210,.28);--accent-text:var(--cyan-300);--secondary:var(--amber-400);--secondary-soft:rgba(243,181,87,.12);--success:var(--green-500);--danger:var(--red-500);--warning:var(--yellow-500);--info:var(--cyan-500);--focus-ring:rgba(30,200,210,.55);--font-sans:"Space Grotesk",ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;--font-mono:"JetBrains Mono",ui-monospace,"SFMono-Regular",Menlo,Consolas,monospace;--text-2xs:11px;--text-xs:12px;--text-sm:14px;--text-base:16px;--text-md:18px;--text-lg:22px;--text-xl:28px;--text-2xl:36px;--text-3xl:48px;--text-4xl:64px;--text-5xl:84px;--leading-tight:1.04;--leading-snug:1.18;--leading-normal:1.5;--leading-relaxed:1.65;--tracking-tight:-.02em;--tracking-snug:-.01em;--tracking-wide:.04em;--tracking-caps:.14em;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--space-10:40px;--space-12:48px;--space-16:64px;--space-20:80px;--space-24:96px;--space-32:128px;--space-40:160px;--radius-xs:4px;--radius-sm:6px;--radius-md:10px;--radius-lg:14px;--radius-xl:20px;--radius-2xl:28px;--radius-full:999px;--container-max:1120px;--container-wide:1280px;--gutter:var(--space-6);--shadow-sm:0 1px 2px rgba(0,0,0,.4);--shadow-md:0 4px 14px rgba(0,0,0,.45);--shadow-lg:0 18px 48px rgba(0,0,0,.55);--shadow-xl:0 32px 80px rgba(0,0,0,.6);--shadow-inset-top:inset 0 1px 0 rgba(243,245,247,.05);--glow-accent:0 0 0 1px var(--accent),0 8px 30px var(--accent-glow);--glow-soft:0 6px 26px var(--accent-glow);--grid-line:rgba(243,245,247,.035);--grid-bg:linear-gradient(var(--grid-line) 1px,transparent 1px),linear-gradient(90deg,var(--grid-line) 1px,transparent 1px);--grid-size:44px 44px;--spotlight:radial-gradient(60% 60% at 50% 0%,rgba(30,200,210,.1),transparent 70%);--ease-out:cubic-bezier(.22,1,.36,1);--ease-in-out:cubic-bezier(.65,0,.35,1);--dur-fast:.12s;--dur-base:.2s;--dur-slow:.36s;--blur-panel:blur(14px)}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg-page);color:var(--text-default);font-family:var(--font-sans);font-size:var(--text-base);line-height:var(--leading-normal);-webkit-font-smoothing:antialiased;overflow-x:hidden}a{color:inherit;text-decoration:none}.wrap{max-width:var(--container-max);margin:0 auto;padding:0 var(--space-6)}.eyebrow{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:var(--tracking-caps);text-transform:uppercase;color:var(--accent-text);margin:0 0 var(--space-4);display:flex;align-items:center;gap:10px}.eyebrow:before{content:"";width:30px;height:2px;border-radius:2px;background:var(--wave-gradient);opacity:.9}header.nav{position:sticky;top:0;z-index:50;backdrop-filter:var(--blur-panel);-webkit-backdrop-filter:var(--blur-panel);background:color-mix(in srgb,var(--bg-page) 72%,transparent);border-bottom:1px solid var(--border-subtle)}.nav-inner{display:flex;align-items:center;justify-content:space-between;height:68px}.brand{display:flex;align-items:center;gap:11px}.brand .mark{width:auto;height:42px;display:block}.brand-sys{font-family:var(--font-mono);font-size:11px;font-weight:500;letter-spacing:.3em;text-transform:uppercase;color:var(--text-muted)}.nav-links{display:flex;align-items:center;gap:var(--space-2)}.nav-links a.link{font-size:var(--text-sm);font-weight:500;color:var(--text-muted);padding:8px 12px;border-radius:var(--radius-sm);transition:color var(--dur-base) var(--ease-out),background var(--dur-base) var(--ease-out)}.nav-links a.link:hover{color:var(--text-strong);background:var(--surface-raised)}.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:var(--radius-md);border:1px solid var(--border-default);background:var(--surface-raised);color:var(--text-default);transition:all var(--dur-base) var(--ease-out)}.icon-btn:hover{color:var(--text-strong);border-color:var(--border-strong);background:var(--surface-hover)}.icon-btn svg{width:18px;height:18px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;cursor:pointer;font-family:var(--font-sans);font-weight:600;letter-spacing:-.01em;line-height:1;white-space:nowrap;border:1px solid transparent;border-radius:var(--radius-md);font-size:var(--text-base);padding:12px 20px;transition:all var(--dur-base) var(--ease-out)}.btn svg{width:17px;height:17px}.btn-primary{background:var(--accent);color:var(--text-on-accent);box-shadow:var(--glow-soft)}.btn-primary:hover{background:linear-gradient(92deg,var(--accent),var(--wave-teal));box-shadow:var(--glow-accent);transform:translateY(-1px)}.btn-ghost{background:transparent;color:var(--text-default);border-color:var(--border-default)}.btn-ghost:hover{background:var(--surface-raised);color:var(--text-strong);border-color:var(--border-strong)}.hero{position:relative;padding:var(--space-32) 0 var(--space-24);overflow:hidden}.hero-bg{position:absolute;inset:0;z-index:0;pointer-events:none;background-image:var(--spotlight),var(--grid-bg);background-size:auto,var(--grid-size),var(--grid-size);-webkit-mask-image:linear-gradient(to bottom,#000 55%,transparent);mask-image:linear-gradient(to bottom,#000 55%,transparent)}.hero-watermark{position:absolute;right:-30px;top:44%;transform:translateY(-50%);z-index:0;width:760px;height:auto;opacity:.13;pointer-events:none}.hero-inner{position:relative;z-index:1;max-width:760px}h1.hero-title{font-size:clamp(40px,6.4vw,var(--text-5xl));font-weight:700;letter-spacing:var(--tracking-tight);line-height:var(--leading-tight);color:var(--text-strong);margin:0 0 var(--space-6);text-wrap:balance}h1.hero-title .accent{background:var(--wave-gradient);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent}.hero-sub{font-size:var(--text-lg);line-height:var(--leading-relaxed);color:var(--text-muted);max-width:56ch;margin:0 0 var(--space-8)}.hero-cta{display:flex;gap:var(--space-3);flex-wrap:wrap}.hero-meta{display:flex;gap:var(--space-6);margin-top:var(--space-12);flex-wrap:wrap;font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-faint);letter-spacing:.04em}.hero-meta b{color:var(--text-muted);font-weight:500}section{padding:var(--space-24) 0;position:relative}.sec-head{margin-bottom:var(--space-12);max-width:640px}.sec-head h2{font-size:var(--text-2xl);font-weight:700;letter-spacing:var(--tracking-tight);color:var(--text-strong);margin:0 0 var(--space-3);line-height:1.1}.sec-head p{font-size:var(--text-md);color:var(--text-muted);line-height:var(--leading-relaxed);margin:0;max-width:54ch}.divider{height:1px;background:var(--wave-gradient);opacity:.5;-webkit-mask-image:linear-gradient(90deg,transparent,#000 15%,#000 85%,transparent);mask-image:linear-gradient(90deg,transparent,#000 15%,#000 85%,transparent)}.projects{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-5)}.pcard{--card-accent:var(--accent);position:relative;display:flex;flex-direction:column;gap:var(--space-4);background:var(--surface);border:1px solid var(--border-default);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm),var(--shadow-inset-top);padding:var(--space-8);transition:transform var(--dur-base) var(--ease-out),border-color var(--dur-base) var(--ease-out),box-shadow var(--dur-base) var(--ease-out)}.pcard.clickable:hover{transform:translateY(-3px);border-color:color-mix(in srgb,var(--card-accent) 55%,transparent);box-shadow:0 10px 32px color-mix(in srgb,var(--card-accent) 20%,transparent)}.pcard-top{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-4)}.pcard-name{display:flex;align-items:center;gap:12px;margin:0;font-size:var(--text-xl);font-weight:700;letter-spacing:-.01em;color:var(--text-strong)}.pcard-mark{width:46px;height:46px;border-radius:var(--radius-md);flex:none;display:grid;place-items:center;background:color-mix(in srgb,var(--card-accent) 13%,var(--surface-inset));border:1px solid color-mix(in srgb,var(--card-accent) 28%,transparent);color:var(--card-accent)}.pcard-mark svg{width:26px;height:26px}.pcard-mark.is-img{background:none;border:none;padding:0;overflow:hidden}.pcard-mark.is-img img{width:100%;height:100%;object-fit:cover;border-radius:inherit;display:block}.pcard-blurb{margin:0;font-size:var(--text-base);line-height:var(--leading-relaxed);color:var(--text-muted)}.pcard-tags{display:flex;flex-wrap:wrap;gap:6px}.pcard-foot{display:flex;align-items:center;gap:10px;margin-top:auto;padding-top:var(--space-2)}.pcard-link{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.04em;color:var(--card-accent);display:inline-flex;align-items:center;gap:6px;transition:gap var(--dur-base) var(--ease-out)}.pcard.clickable:hover .pcard-link{gap:11px}.pcard-year{margin-left:auto;font-family:var(--font-mono);font-size:var(--text-2xs);color:var(--text-faint);letter-spacing:.06em}.pcard.ghost{background:transparent;border-style:dashed;align-items:flex-start;justify-content:center}.pcard.ghost .pcard-blurb{color:var(--text-faint)}.badge{display:inline-flex;align-items:center;gap:6px;font-family:var(--font-mono);font-size:var(--text-2xs);font-weight:500;letter-spacing:var(--tracking-caps);text-transform:uppercase;padding:4px 9px;border-radius:var(--radius-full);border:1px solid var(--border-default);background:var(--surface-raised);color:var(--text-muted);line-height:1;white-space:nowrap}.badge .dot{width:6px;height:6px;border-radius:50%;background:currentColor}.badge.success{color:var(--success);border-color:color-mix(in srgb,var(--success) 40%,transparent);background:color-mix(in srgb,var(--success) 12%,transparent)}.badge.warning{color:var(--warning);border-color:color-mix(in srgb,var(--warning) 40%,transparent);background:color-mix(in srgb,var(--warning) 12%,transparent)}.badge.teal{color:var(--wave-teal-bright);border-color:color-mix(in srgb,var(--wave-teal) 42%,transparent);background:color-mix(in srgb,var(--wave-teal) 13%,transparent)}.badge.coral{color:var(--wave-coral-bright);border-color:color-mix(in srgb,var(--wave-coral) 42%,transparent);background:color-mix(in srgb,var(--wave-coral) 13%,transparent)}.badge.amber{color:var(--wave-amber);border-color:color-mix(in srgb,var(--wave-amber) 42%,transparent);background:color-mix(in srgb,var(--wave-amber) 13%,transparent)}.tag{display:inline-flex;align-items:center;font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-muted);padding:5px 10px;border-radius:var(--radius-sm);border:1px solid var(--border-subtle);background:var(--surface);line-height:1}.tag:before{content:"#";opacity:.5;margin-right:2px}.about{display:grid;grid-template-columns:200px 1fr;gap:var(--space-12);align-items:start}.about-portrait{display:flex;flex-direction:column;align-items:center;gap:var(--space-4)}.avatar{width:160px;height:160px;border-radius:var(--radius-full);border:3px solid transparent;background:linear-gradient(var(--surface-hover),var(--surface-hover)) padding-box,var(--wave-gradient) border-box;display:grid;place-items:center;font-family:var(--font-sans);font-size:54px;font-weight:700;letter-spacing:-1px;overflow:hidden;box-shadow:0 10px 34px color-mix(in srgb,var(--wave-teal) 16%,transparent)}.avatar .ini{background:var(--wave-gradient);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent}.avatar img{width:100%;height:100%;object-fit:cover}.about-socials{display:flex;gap:var(--space-2)}.about-body p{font-size:var(--text-md);line-height:var(--leading-relaxed);color:var(--text-default);margin:0 0 var(--space-4);max-width:58ch}.about-body p.muted{color:var(--text-muted);font-size:var(--text-base)}.about-body .name{font-size:var(--text-2xl);font-weight:700;letter-spacing:-.01em;color:var(--text-strong);margin:0 0 var(--space-1)}.about-body .role{font-family:var(--font-mono);font-size:var(--text-sm);color:var(--accent-text);letter-spacing:.04em;margin:0 0 var(--space-6)}.kcb-key{display:inline-flex;flex-wrap:wrap;gap:10px;margin-top:var(--space-2);font-family:var(--font-mono);font-size:var(--text-sm);color:var(--text-muted)}.kcb-key b{color:var(--text-strong);font-weight:600}.kcb-key .pc{color:var(--accent-text)}footer{border-top:1px solid var(--border-subtle);padding:var(--space-16) 0 var(--space-12);margin-top:var(--space-12)}.foot-inner{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--space-8);flex-wrap:wrap}.foot-brand{display:flex;align-items:center;gap:12px}.foot-brand .mark{width:auto;height:46px}.foot-note{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-faint);line-height:var(--leading-relaxed);max-width:34ch;margin-top:var(--space-3)}.foot-cols{display:flex;gap:var(--space-16)}.foot-col h4{font-family:var(--font-mono);font-size:var(--text-2xs);letter-spacing:var(--tracking-caps);text-transform:uppercase;color:var(--text-faint);margin:0 0 var(--space-4)}.foot-col a{display:block;font-size:var(--text-sm);color:var(--text-muted);margin-bottom:var(--space-3);transition:color var(--dur-base) var(--ease-out)}.foot-col a:hover{color:var(--accent-text)}.foot-bottom{margin-top:var(--space-12);padding-top:var(--space-6);border-top:1px solid var(--border-subtle);display:flex;justify-content:space-between;gap:var(--space-4);flex-wrap:wrap;font-family:var(--font-mono);font-size:var(--text-2xs);color:var(--text-faint);letter-spacing:.04em}.foot-version{margin-left:var(--space-2);padding:1px 6px;border:1px solid var(--border-subtle);border-radius:var(--radius-sm);color:var(--accent);opacity:.75}.reveal{opacity:0;transform:translateY(16px);transition:opacity .7s var(--ease-out),transform .7s var(--ease-out)}.reveal.in{opacity:1;transform:none}@media(prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none;transition:none}}@media(max-width:860px){.projects{grid-template-columns:minmax(0,1fr)}.about{grid-template-columns:1fr;gap:var(--space-8)}.about-portrait{flex-direction:row;align-items:center;justify-content:flex-start}.avatar{width:96px;height:96px;font-size:30px}.hero-watermark{display:none}.hero{padding:var(--space-16) 0 var(--space-12)}section{padding:var(--space-16) 0}.nav-links a.link:nth-of-type(-n+2){display:none}.foot-cols{gap:var(--space-12)}}@media(max-width:480px){.wrap{padding:0 var(--space-5)}.brand-sys{display:none}h1.hero-title{font-size:clamp(34px,8.6vw,44px)}.hero-sub{font-size:var(--text-md)}.hero-cta{flex-direction:column;align-items:stretch}.hero-cta .btn{width:100%}.hero-meta{gap:var(--space-2) var(--space-5)}.pcard{padding:var(--space-6)}.foot-inner{flex-direction:column}.foot-bottom{flex-direction:column;gap:var(--space-2)}}
