@font-face{font-family:Instrument Serif;font-style:italic;font-weight:400;font-display:swap;src:url(../media/fc0a7394b875fa43-s.0y1-r_vehenvp.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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 Serif;font-style:italic;font-weight:400;font-display:swap;src:url(../media/7ebf22b5a21034f8-s.p.10_7676vm7pyy.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Instrument Serif;font-style:normal;font-weight:400;font-display:swap;src:url(../media/ccf27e5a7366fb23-s.0hck6o0i8wq3a.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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 Serif;font-style:normal;font-weight:400;font-display:swap;src:url(../media/e41d5df559864f9e-s.p.0gq7fw9.sy_5..woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Instrument Serif Fallback;src:local(Times New Roman);ascent-override:117.94%;descent-override:36.93%;line-gap-override:0.0%;size-adjust:83.94%}.instrument_serif_b1086473-module__b4yTCa__className{font-family:Instrument Serif,Instrument Serif Fallback;font-weight:400}.instrument_serif_b1086473-module__b4yTCa__variable{--font-serif:"Instrument Serif", "Instrument Serif Fallback"}
@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/8a480f0b521d4e75-s.06d3mdzz5bre_.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/7178b3e590c64307-s.11.cyxs5p-0z~.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/caa3a2e1cccd8315-s.p.16t1db8_9y2o~.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Fallback;src:local(Arial);ascent-override:95.94%;descent-override:28.16%;line-gap-override:0.0%;size-adjust:104.76%}.geist_f880305f-module__AJLRcW__className{font-family:Geist,Geist Fallback;font-style:normal}.geist_f880305f-module__AJLRcW__variable{--font-sans:"Geist", "Geist Fallback"}
@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/4fa387ec64143e14-s.0q3udbd2bu5yp.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/bbc41e54d2fcbd21-s.0gw~uztddq1df.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/797e433ab948586e-s.p.0.q-h669a_dqa.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Mono Fallback;src:local(Arial);ascent-override:74.67%;descent-override:21.92%;line-gap-override:0.0%;size-adjust:134.59%}.geist_mono_592e453b-module__EGX1Hq__className{font-family:Geist Mono,Geist Mono Fallback;font-style:normal}.geist_mono_592e453b-module__EGX1Hq__variable{--font-mono:"Geist Mono", "Geist Mono Fallback"}
:root{--bg:#f4f1ea;--panel:#ece7dc;--ink:#1a1815;--ink-soft:#2b2723;--mute:#75706a;--mute-2:#a8a39c;--line:#1a18151f;--line-strong:#1a181538;--accent:#c4623d;--accent-ink:#fff}*{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}html,body{background:var(--bg);color:var(--ink)}body{font-family:var(--font-sans), ui-sans-serif, -apple-system, "Helvetica Neue", Arial, sans-serif;-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;font-size:16px;font-weight:400;line-height:1.55;overflow-x:hidden}a{color:inherit;text-decoration:none}::selection{background:var(--accent);color:var(--accent-ink)}.page{max-width:1180px;margin:0 auto;padding:40px 56px 96px}@media (max-width:760px){.page{padding:28px 22px 64px}}.topbar{border-bottom:1px solid var(--line);font-family:var(--font-mono), ui-monospace, "SF Mono", Menlo, monospace;letter-spacing:.02em;color:var(--mute);text-transform:uppercase;justify-content:space-between;align-items:center;padding-bottom:20px;font-size:12px;display:flex}.topbar .mark{color:var(--ink);align-items:center;gap:10px;display:flex}.topbar .mark .dot{background:var(--accent);width:8px;height:8px;box-shadow:0 0 0 4px color-mix(in oklab, var(--accent) 18%, transparent);border-radius:50%}.topbar nav{gap:22px;display:flex}.topbar nav a:hover{color:var(--ink)}@media (max-width:760px){.topbar nav{display:none}}.hero{grid-template-columns:1fr;gap:28px;padding:96px 0 56px;display:grid}@media (max-width:760px){.hero{gap:22px;padding:56px 0 40px}}.hero .eyebrow{font-family:var(--font-mono), ui-monospace, "SF Mono", Menlo, monospace;letter-spacing:.14em;text-transform:uppercase;color:var(--mute);align-items:center;gap:10px;font-size:11.5px;display:flex}.hero .eyebrow .pulse{background:#4caf50;border-radius:50%;width:7px;height:7px;position:relative}.hero .eyebrow .pulse:after{content:"";opacity:.5;border:1px solid #4caf50;border-radius:50%;animation:2s ease-out infinite pulse;position:absolute;inset:-4px}@keyframes pulse{0%{opacity:.6;transform:scale(.8)}to{opacity:0;transform:scale(2.2)}}.hero h1{font-family:var(--font-serif), "Cormorant Garamond", Georgia, serif;letter-spacing:-.02em;color:var(--ink);overflow-wrap:break-word;-webkit-hyphens:auto;hyphens:auto;font-size:clamp(48px,10vw,132px);font-weight:400;line-height:.95}.hero h1 .ital{color:var(--accent);font-style:italic}.hero h1 .amp{color:var(--mute-2);font-size:.85em;font-style:italic}.hero .lede{max-width:640px;color:var(--ink-soft);margin-top:8px;font-size:19px;line-height:1.55}@media (max-width:560px){.hero .lede{font-size:16.5px}}.hero .meta{font-family:var(--font-mono), ui-monospace, "SF Mono", Menlo, monospace;text-transform:uppercase;letter-spacing:.06em;color:var(--mute);flex-wrap:wrap;gap:28px 40px;margin-top:20px;font-size:12px;display:flex}@media (max-width:560px){.hero .meta{gap:18px 28px;margin-top:12px}}.hero .meta .lbl{color:var(--mute-2);margin-bottom:4px;font-size:10.5px;display:block}.hero .meta .val{color:var(--ink)}section.block{border-top:1px solid var(--line);padding:64px 0 24px}@media (max-width:760px){section.block{padding:44px 0 16px}}.section-head{grid-template-columns:80px 1fr;align-items:baseline;gap:24px;margin-bottom:40px;display:grid}@media (max-width:760px){.section-head{margin-bottom:28px}}.section-head .num{font-family:var(--font-mono), ui-monospace, "SF Mono", Menlo, monospace;color:var(--mute);letter-spacing:.05em;padding-top:8px;font-size:12px}.section-head h2{font-family:var(--font-serif), "Cormorant Garamond", Georgia, serif;letter-spacing:-.015em;font-size:clamp(34px,5vw,56px);font-weight:400;line-height:1.02}.section-head h2 em{color:var(--accent);font-style:italic}@media (max-width:760px){.section-head{grid-template-columns:1fr;gap:8px}}.about{grid-template-columns:80px 1fr;gap:24px;display:grid}.about .body{max-width:680px;color:var(--ink-soft);font-size:17px;line-height:1.65}.about .body p+p{margin-top:14px}.about .body em{color:var(--ink);font-style:italic}.about .stats{border-top:1px dashed var(--line);flex-wrap:wrap;gap:48px;margin-top:36px;padding-top:24px;display:flex}@media (max-width:560px){.about .stats{gap:24px 36px}.about .stats .stat .n{font-size:34px}}.about .stats .stat .n{font-family:var(--font-serif), "Cormorant Garamond", Georgia, serif;color:var(--ink);font-size:44px;line-height:1}.about .stats .stat .l{font-family:var(--font-mono), ui-monospace, "SF Mono", Menlo, monospace;text-transform:uppercase;letter-spacing:.08em;color:var(--mute);margin-top:8px;font-size:11px}@media (max-width:760px){.about{grid-template-columns:1fr}.about .body{font-size:16px}}.exp{flex-direction:column;display:flex}.exp-row{border-top:1px solid var(--line);grid-template-columns:80px 180px 1fr 180px;align-items:start;gap:24px;padding:28px 0;display:grid}.exp-row:last-child{border-bottom:1px solid var(--line)}.exp-row .idx{font-family:var(--font-mono), ui-monospace, "SF Mono", Menlo, monospace;color:var(--mute);letter-spacing:.06em;padding-top:6px;font-size:11px}.exp-row .when{font-family:var(--font-mono), ui-monospace, "SF Mono", Menlo, monospace;color:var(--mute);letter-spacing:.02em;padding-top:6px;font-size:12px}.exp-row .when .live{color:var(--accent);font-weight:500}.exp-row .role h3{font-family:var(--font-serif), "Cormorant Garamond", Georgia, serif;margin-bottom:2px;font-size:26px;font-weight:400;line-height:1.2}.exp-row .role .org{font-family:var(--font-mono), ui-monospace, "SF Mono", Menlo, monospace;text-transform:uppercase;letter-spacing:.08em;color:var(--mute);margin-bottom:14px;font-size:12px}.exp-row .role p{color:var(--ink-soft);max-width:540px;font-size:15px;line-height:1.6}.exp-row .stack{flex-wrap:wrap;justify-content:flex-end;gap:4px 6px;padding-top:8px;display:flex}.exp-row .stack span{font-family:var(--font-mono), ui-monospace, "SF Mono", Menlo, monospace;color:var(--mute);border:1px solid var(--line);white-space:nowrap;border-radius:999px;padding:3px 8px;font-size:11px}@media (max-width:980px){.exp-row{grid-template-columns:60px 1fr}.exp-row .when{grid-column:2;margin-bottom:6px;padding-top:0}.exp-row .role{grid-column:2}.exp-row .stack{grid-column:2;justify-content:flex-start;padding-top:4px}}@media (max-width:560px){.exp-row{grid-template-columns:1fr}.exp-row .when,.exp-row .role,.exp-row .stack{grid-column:1}.exp-row .idx{display:none}}.projects{grid-template-columns:1fr 1fr;gap:20px;display:grid}@media (max-width:880px){.projects{grid-template-columns:1fr}}.proj{background:var(--panel);border:1px solid var(--line);isolation:isolate;border-radius:14px;flex-direction:column;min-height:260px;padding:28px 26px 26px;transition:border-color .25s,transform .25s;display:flex;position:relative;overflow:hidden}.proj:before{content:"";background:radial-gradient(220px circle at var(--mx,50%) var(--my,50%), color-mix(in oklab, var(--accent) 14%, transparent), transparent 60%);opacity:0;pointer-events:none;z-index:0;transition:opacity .35s;position:absolute;inset:0}.proj:hover{border-color:var(--line-strong)}.proj:hover:before{opacity:1}.proj>*{z-index:1;position:relative}.proj .top{font-family:var(--font-mono), ui-monospace, "SF Mono", Menlo, monospace;color:var(--mute);letter-spacing:.06em;text-transform:uppercase;justify-content:space-between;align-items:center;margin-bottom:22px;font-size:11px;display:flex}.proj .top .kind{color:var(--accent)}.proj h3{font-family:var(--font-serif), "Cormorant Garamond", Georgia, serif;letter-spacing:-.01em;margin-bottom:10px;font-size:30px;font-weight:400;line-height:1.1}.proj p{color:var(--ink-soft);max-width:480px;font-size:15px;line-height:1.55}.proj .highlight{border-top:1px dashed var(--line);font-family:var(--font-mono), ui-monospace, "SF Mono", Menlo, monospace;color:var(--mute);letter-spacing:.02em;margin-top:18px;padding-top:16px;font-size:12px}.proj .highlight b{color:var(--ink);font-weight:500}.proj .pstack{flex-wrap:wrap;gap:4px 6px;margin-top:auto;padding-top:18px;display:flex}.proj .pstack span{font-family:var(--font-mono), ui-monospace, "SF Mono", Menlo, monospace;color:var(--mute);border:1px solid var(--line);border-radius:999px;padding:2px 7px;font-size:10.5px}.proj .plinks{border-top:1px solid var(--line);font-family:var(--font-mono), ui-monospace, "SF Mono", Menlo, monospace;text-transform:uppercase;letter-spacing:.08em;gap:18px;margin-top:16px;padding-top:14px;font-size:11px;display:flex}.proj .plinks a{color:var(--mute);cursor:pointer;align-items:center;gap:6px;transition:color .2s;display:inline-flex}.proj .plinks a:hover{color:var(--accent)}.proj .plinks a .arr{font-size:12px;transition:transform .2s}.proj .plinks a:hover .arr{transform:translate(2px,-2px)}.skills{grid-template-columns:80px 1fr;gap:24px;display:grid}.skills .grid{background:var(--line);border:1px solid var(--line);grid-template-columns:repeat(2,1fr);gap:1px;display:grid}@media (max-width:720px){.skills,.skills .grid{grid-template-columns:1fr}}.skill{background:var(--bg);flex-direction:column;gap:10px;padding:22px 26px;display:flex}.skill .cat{font-family:var(--font-mono), ui-monospace, "SF Mono", Menlo, monospace;text-transform:uppercase;letter-spacing:.1em;color:var(--accent);font-size:11px}.skill .items{font-family:var(--font-serif), "Cormorant Garamond", Georgia, serif;letter-spacing:-.005em;color:var(--ink);font-size:24px;line-height:1.25}.skill .items span{color:var(--mute-2)}.contact{grid-template-columns:80px 1fr;gap:24px;display:grid}@media (max-width:760px){.contact{grid-template-columns:1fr}}.contact .body{max-width:780px}.contact .ask{font-family:var(--font-serif), "Cormorant Garamond", Georgia, serif;letter-spacing:-.018em;color:var(--ink);margin-bottom:36px;font-size:clamp(36px,5.5vw,64px);line-height:1.04}.contact .ask em{color:var(--accent);font-style:italic}.contact .ask a{text-decoration:underline;-webkit-text-decoration-color:var(--line-strong);text-decoration-color:var(--line-strong);text-underline-offset:6px;text-decoration-thickness:1px;transition:text-decoration-color .2s}.contact .ask a:hover{-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent);color:var(--accent)}.copy-email{appearance:none;border:1px solid var(--accent);color:var(--accent);font-family:inherit;font-size:inherit;letter-spacing:inherit;text-transform:inherit;cursor:pointer;background:0 0;border-radius:4px;margin-left:8px;padding:2px 8px;transition:background .2s,color .2s}.copy-email:hover{background:var(--accent);color:var(--accent-ink)}.contact .links{background:var(--line);border-top:1px solid var(--line);border-bottom:1px solid var(--line);grid-template-columns:repeat(4,1fr);gap:1px;display:grid}@media (max-width:720px){.contact .links{grid-template-columns:repeat(2,1fr)}}.contact .links a{background:var(--bg);flex-direction:column;gap:8px;padding:20px 18px;transition:background .2s;display:flex}.contact .links a:hover{background:var(--panel)}.contact .links a:hover .arrow{color:var(--accent);transform:translate(2px,-2px)}.contact .links .lbl{font-family:var(--font-mono), ui-monospace, "SF Mono", Menlo, monospace;text-transform:uppercase;letter-spacing:.08em;color:var(--mute);font-size:11px}.contact .links .val{font-family:var(--font-serif), "Cormorant Garamond", Georgia, serif;color:var(--ink);justify-content:space-between;align-items:flex-start;gap:12px;font-size:20px;line-height:1.1;display:flex}.contact .links .arrow{font-family:var(--font-mono), ui-monospace, "SF Mono", Menlo, monospace;color:var(--mute);flex-shrink:0;font-size:14px;transition:transform .2s,color .2s}footer{border-top:1px solid var(--line);font-family:var(--font-mono), ui-monospace, "SF Mono", Menlo, monospace;text-transform:uppercase;letter-spacing:.06em;color:var(--mute);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin-top:64px;padding-top:24px;font-size:11px;display:flex}@media (max-width:560px){footer{margin-top:44px}}footer .sig{font-family:var(--font-serif), "Cormorant Garamond", Georgia, serif;text-transform:none;color:var(--ink);letter-spacing:0;font-size:22px;font-style:italic}
