@font-face{font-family:Sora;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/c5f10e9e72d35c52-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Sora;font-style:normal;font-weight:700;font-display:swap;src:url(/_next/static/media/3dc379dc9b5dec12-s.p.woff2) format("woff2");unicode-range:u+00??,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:Sora;font-style:normal;font-weight:800;font-display:swap;src:url(/_next/static/media/c5f10e9e72d35c52-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Sora;font-style:normal;font-weight:800;font-display:swap;src:url(/_next/static/media/3dc379dc9b5dec12-s.p.woff2) format("woff2");unicode-range:u+00??,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:Sora Fallback;src:local("Arial");ascent-override:85.29%;descent-override:25.50%;line-gap-override:0.00%;size-adjust:113.73%}.__className_372e37{font-family:Sora,Sora Fallback;font-style:normal}.__variable_372e37{--font-display:"Sora","Sora Fallback"}@font-face{font-family:Instrument Sans;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(/_next/static/media/adb45196eddef626-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Instrument Sans;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(/_next/static/media/26d0ba92e140f0dc-s.p.woff2) format("woff2");unicode-range:u+00??,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:Instrument Sans;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(/_next/static/media/adb45196eddef626-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Instrument Sans;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(/_next/static/media/26d0ba92e140f0dc-s.p.woff2) format("woff2");unicode-range:u+00??,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:Instrument Sans;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(/_next/static/media/adb45196eddef626-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Instrument Sans;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(/_next/static/media/26d0ba92e140f0dc-s.p.woff2) format("woff2");unicode-range:u+00??,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:Instrument Sans Fallback;src:local("Arial");ascent-override:94.42%;descent-override:24.33%;line-gap-override:0.00%;size-adjust:102.74%}.__className_e986a4{font-family:Instrument Sans,Instrument Sans Fallback;font-style:normal}.__variable_e986a4{--font-body:"Instrument Sans","Instrument Sans Fallback"}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/2f186ab49059fbbb-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/7be269dd6123b082-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/db5568a2cfd831e2-s.woff2) format("woff2");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/6760c1b492207d80-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/1f424c9580f97313-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/_next/static/media/427e4a37d3642943-s.p.woff2) format("woff2");unicode-range:u+00??,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 Fallback;src:local("Arial");ascent-override:75.79%;descent-override:22.29%;line-gap-override:0.00%;size-adjust:134.59%}.__className_ecea63{font-family:JetBrains Mono,JetBrains Mono Fallback;font-weight:400;font-style:normal}.__variable_ecea63{--font-mono:"JetBrains Mono","JetBrains Mono Fallback"}:root{--paper:#f3f5f2;--card:#ffffff;--ink:#121914;--muted:#566159;--faint:#8d998f;--accent:#0d7a52;--accent-bright:#4cc496;--accent-soft:#e2f0e8;--line:#dfe4de;--band:#0f2018;--band-text:#edf2ec}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{background:var(--paper);color:var(--muted);font-size:16.5px;line-height:1.65;-webkit-font-smoothing:antialiased}.app{font-family:var(--font-body),system-ui,sans-serif}::selection{background:var(--accent);color:#fff}a{color:inherit;text-decoration:none}.wrap{max-width:1080px;margin:0 auto;padding:0 24px}.mono{font-family:var(--font-mono),monospace;letter-spacing:.08em}.topnav{position:-webkit-sticky;position:sticky;top:0;z-index:50;background:rgba(243,245,242,.85);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}.topnav .wrap{display:flex;align-items:center;justify-content:space-between;height:64px}.logo{font-family:var(--font-mono),monospace;font-weight:400;font-size:.95rem;color:var(--ink)}.logo b{color:var(--accent)}.navlinks{display:none;gap:28px;list-style:none}@media (min-width:820px){.navlinks{display:flex}}.navlinks a{font-size:.9rem;font-weight:500;color:var(--muted)}.navlinks a:hover{color:var(--ink)}.btn{display:inline-block;background:var(--ink);color:#fff;font-weight:600;font-size:.88rem;padding:9px 18px;border-radius:6px;transition:background .2s ease,transform .2s ease}.btn:hover{background:var(--accent)}.btn.ghost{background:transparent;color:var(--ink);border:1.5px solid var(--ink)}.btn.ghost:hover{border-color:var(--accent);color:var(--accent);background:transparent}.hero{padding:84px 0 72px}.hero .wrap{display:grid;grid-template-columns:1fr;grid-gap:48px;gap:48px;align-items:center}@media (min-width:820px){.hero .wrap{grid-template-columns:1.6fr 1fr}}.kicker{font-family:var(--font-mono),monospace;font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;color:var(--accent);margin-bottom:22px}h1.big{font-family:var(--font-display),sans-serif;font-weight:800;font-size:clamp(2.6rem,6.4vw,4.4rem);line-height:1.02;letter-spacing:-.025em;color:var(--ink);text-wrap:balance;margin-bottom:24px}h1.big .hl{color:var(--accent)}.hero-sub{font-size:1.12rem;max-width:52ch;margin-bottom:14px}.hero-sub b{color:var(--ink)}.hero-meta{font-family:var(--font-mono),monospace;font-size:.75rem;color:var(--faint);letter-spacing:.05em;margin-bottom:32px}.hero-cta{display:flex;gap:14px;flex-wrap:wrap}.portrait{position:relative;width:min(300px,72vw);justify-self:center}.portrait img{width:100%;height:auto;aspect-ratio:1/1;object-fit:cover;display:block;border-radius:10px;position:relative;z-index:1}.portrait:after{content:"";position:absolute;inset:0;border:2px solid var(--accent);border-radius:10px;transform:translate(14px,14px);z-index:0}.portrait .badge{position:absolute;z-index:2;left:-18px;bottom:22px;background:var(--card);border:1px solid var(--line);border-radius:8px;box-shadow:0 10px 28px rgba(15,32,24,.12);padding:10px 16px;font-size:.8rem;font-weight:600;color:var(--ink);display:flex;align-items:center;gap:8px}.badge .dot{width:8px;height:8px;border-radius:50%;background:var(--accent)}.band{background:var(--band);color:var(--band-text);padding:44px 0}.band .wrap{display:grid;grid-template-columns:repeat(2,1fr);grid-gap:32px 24px;gap:32px 24px}@media (min-width:820px){.band .wrap{grid-template-columns:repeat(4,1fr)}}.stat .v{font-family:var(--font-display),sans-serif;font-weight:700;font-size:2rem;letter-spacing:-.02em;color:var(--accent-bright);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.stat .l{font-size:.85rem;color:#9cab9f;margin-top:4px;max-width:24ch}section.block{padding:84px 0 0;scroll-margin-top:64px}.block-head{margin-bottom:40px}.block-head .kicker{margin-bottom:10px}.block-head h2{font-family:var(--font-display),sans-serif;font-weight:700;font-size:clamp(1.6rem,3vw,2.1rem);letter-spacing:-.02em;color:var(--ink)}.timeline{border-left:2px solid var(--line);margin-left:6px;padding-left:34px;display:flex;flex-direction:column;gap:44px}.t-item{position:relative}.t-item:before{content:"";position:absolute;left:-41px;top:6px;width:12px;height:12px;border-radius:50%;background:var(--paper);border:3px solid var(--accent)}.t-date{font-family:var(--font-mono),monospace;font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:var(--faint);margin-bottom:6px}.t-item h3{font-family:var(--font-display),sans-serif;font-size:1.15rem;font-weight:700;color:var(--ink);letter-spacing:-.01em}.t-item .co{color:var(--accent)}.t-item ul{list-style:none;margin-top:14px;display:flex;flex-direction:column;gap:9px}.t-item li{position:relative;padding-left:22px;font-size:.95rem}.t-item li:before{content:"›";position:absolute;left:2px;top:-1px;color:var(--accent);font-weight:700}.t-item li b{color:var(--ink)}.grid2{display:grid;grid-template-columns:1fr;grid-gap:20px;gap:20px}@media (min-width:720px){.grid2{grid-template-columns:1fr 1fr}}.pcard{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:28px;display:flex;flex-direction:column;gap:12px;transition:transform .22s ease,box-shadow .22s ease,border-color .22s ease}.pcard:hover{transform:translateY(-4px);box-shadow:0 16px 40px rgba(15,32,24,.1);border-color:transparent}.pcard .ptag{font-family:var(--font-mono),monospace;font-size:.68rem;letter-spacing:.14em;color:var(--accent)}.pcard h3{font-family:var(--font-display),sans-serif;font-size:1.18rem;font-weight:700;color:var(--ink);letter-spacing:-.01em}.pcard p{font-size:.94rem}.pcard .tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:auto;padding-top:8px}.pcard .tags span{font-size:.76rem;font-weight:500;color:var(--ink);background:var(--paper);border:1px solid var(--line);border-radius:999px;padding:4px 12px}.pcard.feature{border-top:4px solid var(--accent)}.pcard.feature .ptag:after{content:" — FLAGSHIP";color:var(--faint)}.skills-wrap{display:grid;grid-template-columns:1fr;grid-gap:28px;gap:28px}@media (min-width:720px){.skills-wrap{grid-template-columns:1fr 1fr}}.sgroup h3{font-family:var(--font-mono),monospace;font-weight:400;font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;color:var(--faint);margin-bottom:12px}.sgroup .chips{display:flex;flex-wrap:wrap;gap:8px}.sgroup .chips span{background:var(--card);border:1px solid var(--line);border-radius:8px;padding:7px 14px;font-size:.87rem;font-weight:500;color:var(--ink)}.sgroup .chips span.hot{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.creds{display:grid;grid-template-columns:1fr;grid-gap:14px;gap:14px}@media (min-width:720px){.creds{grid-template-columns:repeat(2,1fr)}}.ccard{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:18px 22px;display:flex;align-items:center;gap:14px}.ccard.wide{grid-column:1/-1}.ccard .shield{flex:none;width:38px;height:38px;border-radius:8px;background:var(--accent-soft);color:var(--accent);display:grid;place-items:center}.ccard .shield svg{width:19px;height:19px}.ccard .t{font-weight:600;color:var(--ink);font-size:.94rem}.ccard .s{font-size:.78rem;color:var(--faint);font-family:var(--font-mono),monospace;letter-spacing:.04em;margin-top:2px}.foot{background:var(--band);color:var(--band-text);margin-top:96px;padding:80px 0 48px}.foot .kicker{color:var(--accent-bright)}.foot h2{font-family:var(--font-display),sans-serif;font-weight:800;font-size:clamp(1.7rem,4.6vw,3rem);letter-spacing:-.02em;color:#fff;margin-bottom:12px;text-wrap:balance}.foot .mail{display:inline-block;font-family:var(--font-mono),monospace;font-size:clamp(.95rem,2.4vw,1.25rem);color:var(--band-text);border-bottom:2px solid var(--accent-bright);padding-bottom:4px;margin-top:8px}.foot .mail:hover{color:var(--accent-bright)}.foot-meta{display:flex;flex-wrap:wrap;gap:24px;margin-top:56px;padding-top:24px;border-top:1px solid rgba(255,255,255,.12);font-size:.82rem;color:#8a978d}.foot-meta a:hover{color:var(--accent-bright)}.push-right{margin-left:auto}html.js .reveal{opacity:0;transform:translateY(16px);transition:opacity .6s ease,transform .6s ease}html.js .reveal.in{opacity:1;transform:none}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}html.js .reveal{opacity:1;transform:none;transition:none}.btn,.pcard{transition:none}}a:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:3px}