@font-face{font-family:Manrope;font-style:normal;font-display:swap;font-weight:500;src:url(../media/manrope-latin-500-normal.23dhs730snm70.woff2)format("woff2"),url(../media/manrope-latin-500-normal.1uxcnzel4f8qj.woff)format("woff")}
@font-face{font-family:Manrope;font-style:normal;font-display:swap;font-weight:600;src:url(../media/manrope-latin-600-normal.2ybi4mo9-3upl.woff2)format("woff2"),url(../media/manrope-latin-600-normal.0d_nc7hu7m8km.woff)format("woff")}
@font-face{font-family:Manrope;font-style:normal;font-display:swap;font-weight:700;src:url(../media/manrope-latin-700-normal.22dwiag9_pj68.woff2)format("woff2"),url(../media/manrope-latin-700-normal.2dopus2zh5ii9.woff)format("woff")}
@font-face{font-family:Manrope;font-style:normal;font-display:swap;font-weight:800;src:url(../media/manrope-latin-800-normal.037pwi_4ver8j.woff2)format("woff2"),url(../media/manrope-latin-800-normal.0a-2q2cgln7hh.woff)format("woff")}
@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:400;src:url(../media/inter-latin-400-normal.2qdljeg3s-lsl.woff2)format("woff2"),url(../media/inter-latin-400-normal.102grxki9ek3x.woff)format("woff")}
@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:500;src:url(../media/inter-latin-500-normal.1d14jwmkqqa0f.woff2)format("woff2"),url(../media/inter-latin-500-normal.3mx_ru0c2nzc3.woff)format("woff")}
@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:600;src:url(../media/inter-latin-600-normal.2dov6rjg62vru.woff2)format("woff2"),url(../media/inter-latin-600-normal.2mum3nstrlzrd.woff)format("woff")}
@font-face{font-family:Inter;font-style:normal;font-display:swap;font-weight:700;src:url(../media/inter-latin-700-normal.4421omqeymgmp.woff2)format("woff2"),url(../media/inter-latin-700-normal.2u2w-uf8g45lc.woff)format("woff")}
@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:400;src:url(../media/jetbrains-mono-latin-400-normal.3crsbyy6lh6yf.woff2)format("woff2"),url(../media/jetbrains-mono-latin-400-normal.2-1gwgi1uvl-u.woff)format("woff")}
@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(../media/jetbrains-mono-latin-500-normal.2h52d08o60qht.woff2)format("woff2"),url(../media/jetbrains-mono-latin-500-normal.2uxjaecu1qvdf.woff)format("woff")}
:root{--color-primary:#fff;--color-primary-active:#e5e7eb;--color-on-primary:#0f1420;--color-ink:#f1f5f9;--color-body:#cbd5e1;--color-muted:#94a3b8;--color-muted-soft:#7c8798;--color-hairline:#26314a;--color-hairline-soft:#1e2738;--color-canvas:#0f1420;--color-surface-soft:#141b2b;--color-surface-card:#1a2234;--color-surface-strong:#334155;--color-surface-dark:#0b0f19;--color-on-dark:#f1f5f9;--color-on-dark-soft:#94a3b8;--color-badge-orange:#9a3412;--color-badge-pink:#9d174d;--color-badge-violet:#5b21b6;--color-badge-emerald:#065f46;--shadow-md:0 4px 12px #00000080;--font-display:"Manrope", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-body:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, monospace;--radius-md:8px;--radius-lg:12px;--radius-xl:16px;--radius-pill:9999px;--rail-on:0}@media (min-width:1024px){:root{--rail-on:1}}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:64px}body{background:var(--color-canvas);color:var(--color-ink);font-family:var(--font-body);-webkit-font-smoothing:antialiased;margin:0}a{color:var(--color-ink);text-decoration:none}a:hover{color:var(--color-body)}h1,h2,h3,p,ul{margin:0}.container{max-width:1200px;padding:96px 24px;padding-left:max(24px, calc((184px - max(0px, (100vw - 1200px) / 2)) * var(--rail-on)));margin:0 auto}.band-soft{background:var(--color-surface-soft)}.eyebrow{color:var(--color-muted);font-size:14px;font-weight:500}.display-lg,.display-md{font-family:var(--font-display);font-weight:600}.display-lg{letter-spacing:-1.5px;text-wrap:balance;font-size:48px;line-height:1.1}.display-md{letter-spacing:-1px;text-wrap:balance;font-size:36px;line-height:1.15}.stack-12{flex-direction:column;gap:12px;display:flex}.btn{font-family:var(--font-body);border-radius:var(--radius-md);cursor:pointer;border:1px solid #0000;justify-content:center;align-items:center;gap:8px;height:40px;padding:12px 20px;font-size:14px;font-weight:600;line-height:1;transition:background-color .15s,border-color .15s;display:inline-flex}.btn-primary,.btn-primary:hover{background:var(--color-primary);color:var(--color-on-primary)}.btn-primary:hover{background:var(--color-primary-active)}.btn-secondary,.btn-secondary:hover{background:var(--color-canvas);color:var(--color-ink);border-color:var(--color-hairline)}.btn-outline-dark,.btn-outline-dark:hover{color:var(--color-on-dark);border-color:var(--color-surface-strong);background:0 0}.badge{color:var(--color-ink);background:var(--color-surface-card);border-radius:var(--radius-pill);padding:4px 12px;font-size:13px;font-weight:500;line-height:1.4;display:inline-block}.badge-orange{background:var(--color-badge-orange)}.badge-pink{background:var(--color-badge-pink)}.badge-violet{background:var(--color-badge-violet)}.badge-emerald{background:var(--color-badge-emerald)}.site-header{max-width:1200px;padding:20px 24px;padding-left:max(24px, calc((184px - max(0px, (100vw - 1200px) / 2)) * var(--rail-on)));flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin:0 auto;display:flex}.wordmark{font-family:var(--font-display);letter-spacing:-.4px;font-size:18px;font-weight:700}.nav-pill{background:var(--color-surface-soft);border-radius:var(--radius-pill);flex-wrap:wrap;align-items:center;gap:4px;padding:6px;display:flex}.nav-pill a{color:var(--color-muted);border-radius:8px;padding:8px 14px;font-size:14px;font-weight:500}.hero{grid-template-columns:repeat(auto-fit,minmax(320px,1fr));align-items:center;gap:56px;padding-top:56px;display:grid}.hero-copy{flex-direction:column;gap:24px;display:flex}.hero h1{font-family:var(--font-display);letter-spacing:-2px;text-wrap:balance;font-size:clamp(44px,6vw,64px);font-weight:600;line-height:1.05}.hero-lede{font-family:var(--font-display);letter-spacing:-.3px;text-wrap:pretty;max-width:560px;font-size:22px;font-weight:600;line-height:1.35}.hero-body{color:var(--color-body);text-wrap:pretty;max-width:540px;font-size:16px;line-height:1.6}.row-wrap{flex-wrap:wrap;gap:8px;display:flex}.actions{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.portrait{aspect-ratio:864/1184;width:100%;max-width:460px;box-shadow:var(--shadow-md);background:#3a3a3c;border-radius:16px;justify-self:end;position:relative;overflow:hidden}.portrait img{object-fit:cover}.about{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:48px;display:grid}.about-body{color:var(--color-body);flex-direction:column;gap:20px;font-size:16px;line-height:1.65;display:flex}.about-body p{text-wrap:pretty}.about-body .emphasis{color:var(--color-ink);font-weight:600}.work{flex-direction:column;gap:48px;display:flex}.project{background:var(--color-surface-card);border-radius:12px;flex-wrap:wrap;gap:32px;padding:32px;display:flex}.project-meta{flex-direction:column;flex:240px;gap:12px;min-width:0;display:flex}.project-meta .badge{align-self:flex-start}.project-index{font-family:var(--font-mono);color:var(--color-muted);font-size:13px}.project h3{font-family:var(--font-display);letter-spacing:-.5px;font-size:28px;font-weight:600}.project-link{color:var(--color-body);text-underline-offset:3px;font-size:14px;text-decoration:underline}.project-sub{color:var(--color-body);font-size:14px}.project-summary{color:var(--color-body);font-size:15px;line-height:1.6}.project-detail{flex-direction:column;flex:2 460px;gap:20px;min-width:0;display:flex}.project-points{color:var(--color-body);flex-direction:column;gap:8px;padding-left:18px;font-size:15px;line-height:1.6;display:flex}.callout{background:var(--color-canvas);border:1px solid var(--color-hairline);border-radius:12px;flex-direction:column;gap:8px;padding:24px;display:flex}.callout-label{color:var(--color-muted);font-size:13px;font-weight:500}.callout-text{font-family:var(--font-display);letter-spacing:-.3px;text-wrap:pretty;font-size:20px;font-weight:600;line-height:1.35}.chip{background:var(--color-canvas);border-radius:9999px;padding:4px 12px;font-size:13px;font-weight:500}.skills{flex-direction:column;gap:40px;display:flex}.skills-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px;display:grid}.skill-card{background:var(--color-canvas);border:1px solid var(--color-hairline);border-radius:12px;flex-direction:column;gap:12px;padding:24px;display:flex}.skill-name{font-family:var(--font-display);font-size:16px;font-weight:600}.skill-items{color:var(--color-body);font-size:14px;line-height:1.6}.experience{flex-wrap:wrap;gap:48px;display:flex}.experience-head{flex:240px;min-width:0}.timeline{flex-direction:column;flex:2 460px;min-width:0;display:flex}.timeline-row{border-top:1px solid var(--color-hairline);grid-template-columns:minmax(150px,200px) minmax(0,1fr);gap:8px 24px;padding:20px 0;display:grid}.timeline-dates{color:var(--color-muted);font-size:13px;font-weight:500;font-family:var(--font-mono);padding-top:2px}.timeline-body{flex-direction:column;gap:4px;display:flex}.timeline-title{font-size:16px;font-weight:600}.timeline-note{color:var(--color-body);font-size:15px;line-height:1.55}.site-footer{background:var(--color-surface-dark);border-top:1px solid var(--color-hairline);color:var(--color-on-dark)}.site-footer .container{flex-direction:column;gap:64px;padding-bottom:48px;display:flex}.contact-grid{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:48px;display:grid}.contact-pitch{flex-direction:column;gap:20px;display:flex}.contact-pitch h2{color:var(--color-on-dark)}.contact-pitch p{color:var(--color-on-dark-soft);max-width:440px;font-size:16px;line-height:1.6}.contact-list{flex-direction:column;display:flex}.contact-row{border-top:1px solid var(--color-hairline);color:var(--color-on-dark);justify-content:space-between;gap:16px;padding:16px 0;display:flex}.contact-row:last-child{border-bottom:1px solid var(--color-hairline)}.contact-row .label{color:var(--color-on-dark-soft);font-size:14px}.contact-row .value{overflow-wrap:anywhere;text-align:right;font-size:15px}.footer-meta{color:var(--color-on-dark-soft);flex-wrap:wrap;justify-content:space-between;gap:16px;font-size:13px;display:flex}.section-rail,.section-bar{z-index:50;background:var(--color-canvas);opacity:0;visibility:hidden;pointer-events:none;transition:opacity .15s,visibility .15s;position:fixed}.section-rail[data-visible=true],.section-bar[data-visible=true]{opacity:1;visibility:visible;pointer-events:auto}.section-rail{border:1px solid var(--color-hairline);width:152px;box-shadow:var(--shadow-md);border-radius:16px;flex-direction:column;gap:2px;padding:8px;display:flex;top:50%;left:16px;transform:translateY(-50%)}.section-rail a{color:var(--color-muted);border-radius:8px;align-items:center;gap:10px;padding:8px 12px;font-size:14px;font-weight:500;display:flex}.section-rail a:before{content:"";background:var(--color-surface-strong);border-radius:9999px;flex:none;width:6px;height:6px}.section-rail a[aria-current=true]{background:var(--color-surface-card);color:var(--color-ink);font-weight:600}.section-rail a[aria-current=true]:before{background:var(--color-ink)}.section-bar{border-bottom:1px solid var(--color-hairline);gap:4px;padding:8px 12px;display:flex;top:0;left:0;right:0;overflow-x:auto}.section-bar a{color:var(--color-muted);border-radius:9999px;flex:none;padding:8px 12px;font-size:13px;font-weight:500}.section-bar a[aria-current=true]{background:var(--color-primary);color:var(--color-on-primary);font-weight:600}@media (min-width:1024px){.section-bar{display:none}}@media (max-width:1023px){.section-rail{display:none}}
