@font-face{font-family:Fraunces;font-style:italic;font-weight:300;font-display:swap;src:url(../media/50a3f1070da3c6cc-s.2xm1k7t3a0pcd.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces;font-style:italic;font-weight:300;font-display:swap;src:url(../media/b887d91685b8c137-s.330vchwb4izzb.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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces;font-style:italic;font-weight:300;font-display:swap;src:url(../media/3c7c6164b2587822-s.p.16u3vygyjnhr0.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:Fraunces;font-style:italic;font-weight:400;font-display:swap;src:url(../media/50a3f1070da3c6cc-s.2xm1k7t3a0pcd.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces;font-style:italic;font-weight:400;font-display:swap;src:url(../media/b887d91685b8c137-s.330vchwb4izzb.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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces;font-style:italic;font-weight:400;font-display:swap;src:url(../media/3c7c6164b2587822-s.p.16u3vygyjnhr0.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:Fraunces;font-style:italic;font-weight:500;font-display:swap;src:url(../media/50a3f1070da3c6cc-s.2xm1k7t3a0pcd.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces;font-style:italic;font-weight:500;font-display:swap;src:url(../media/b887d91685b8c137-s.330vchwb4izzb.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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces;font-style:italic;font-weight:500;font-display:swap;src:url(../media/3c7c6164b2587822-s.p.16u3vygyjnhr0.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:Fraunces;font-style:italic;font-weight:600;font-display:swap;src:url(../media/50a3f1070da3c6cc-s.2xm1k7t3a0pcd.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces;font-style:italic;font-weight:600;font-display:swap;src:url(../media/b887d91685b8c137-s.330vchwb4izzb.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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces;font-style:italic;font-weight:600;font-display:swap;src:url(../media/3c7c6164b2587822-s.p.16u3vygyjnhr0.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:Fraunces;font-style:italic;font-weight:700;font-display:swap;src:url(../media/50a3f1070da3c6cc-s.2xm1k7t3a0pcd.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces;font-style:italic;font-weight:700;font-display:swap;src:url(../media/b887d91685b8c137-s.330vchwb4izzb.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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces;font-style:italic;font-weight:700;font-display:swap;src:url(../media/3c7c6164b2587822-s.p.16u3vygyjnhr0.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:Fraunces;font-style:normal;font-weight:300;font-display:swap;src:url(../media/1e219c03c996efbd-s.2qo5md4hn_gum.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces;font-style:normal;font-weight:300;font-display:swap;src:url(../media/b35b0dbffda7f2c4-s.1d9rlgtqyj_-l.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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces;font-style:normal;font-weight:300;font-display:swap;src:url(../media/03bda585a99c6450-s.p.32sris142tqlb.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:Fraunces;font-style:normal;font-weight:400;font-display:swap;src:url(../media/1e219c03c996efbd-s.2qo5md4hn_gum.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces;font-style:normal;font-weight:400;font-display:swap;src:url(../media/b35b0dbffda7f2c4-s.1d9rlgtqyj_-l.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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces;font-style:normal;font-weight:400;font-display:swap;src:url(../media/03bda585a99c6450-s.p.32sris142tqlb.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:Fraunces;font-style:normal;font-weight:500;font-display:swap;src:url(../media/1e219c03c996efbd-s.2qo5md4hn_gum.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces;font-style:normal;font-weight:500;font-display:swap;src:url(../media/b35b0dbffda7f2c4-s.1d9rlgtqyj_-l.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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces;font-style:normal;font-weight:500;font-display:swap;src:url(../media/03bda585a99c6450-s.p.32sris142tqlb.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:Fraunces;font-style:normal;font-weight:600;font-display:swap;src:url(../media/1e219c03c996efbd-s.2qo5md4hn_gum.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces;font-style:normal;font-weight:600;font-display:swap;src:url(../media/b35b0dbffda7f2c4-s.1d9rlgtqyj_-l.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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces;font-style:normal;font-weight:600;font-display:swap;src:url(../media/03bda585a99c6450-s.p.32sris142tqlb.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:Fraunces;font-style:normal;font-weight:700;font-display:swap;src:url(../media/1e219c03c996efbd-s.2qo5md4hn_gum.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces;font-style:normal;font-weight:700;font-display:swap;src:url(../media/b35b0dbffda7f2c4-s.1d9rlgtqyj_-l.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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces;font-style:normal;font-weight:700;font-display:swap;src:url(../media/03bda585a99c6450-s.p.32sris142tqlb.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:Fraunces Fallback;src:local(Times New Roman);ascent-override:84.71%;descent-override:22.09%;line-gap-override:0.0%;size-adjust:115.45%}.fraunces_2680b141-module__jedKzq__className{font-family:Fraunces,Fraunces Fallback}.fraunces_2680b141-module__jedKzq__variable{--font-serif:"Fraunces", "Fraunces Fallback"}
@font-face{font-family:Space Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/4ba802ed8e67eac5-s.0fuxtgzazslqx.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Space Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/d7a0600e467cf0bd-s.451yigaaz_4mg.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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Space Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/dc0d9adbac686440-s.p.3cik_s2si-ft-.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:Space Mono;font-style:normal;font-weight:700;font-display:swap;src:url(../media/b8f2b92a9960dd69-s.0we3rzhp_h228.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Space Mono;font-style:normal;font-weight:700;font-display:swap;src:url(../media/28e60ca39c9ae554-s.44izq0ia6orkf.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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Space Mono;font-style:normal;font-weight:700;font-display:swap;src:url(../media/8d05cfa5faa8406c-s.p.1s123piy9_v1m.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:Space Mono Fallback;src:local(Arial);ascent-override:81.58%;descent-override:26.3%;line-gap-override:0.0%;size-adjust:137.28%}.space_mono_b63236bf-module__gQ-cPq__className{font-family:Space Mono,Space Mono Fallback;font-style:normal}.space_mono_b63236bf-module__gQ-cPq__variable{--font-mono:"Space Mono", "Space Mono Fallback"}
:root{--ink:#1f4433;--ink-hover:#2f6b4f;--accent:#d9822b;--bg:#f4f1e8;--paper:#faf8f2;--text:#1a1a17;--muted:#1a1a1799;--line:#1f443333}*{box-sizing:border-box}html{scroll-behavior:smooth}html,body{background:var(--bg);color:var(--text);font-family:var(--font-serif), serif;margin:0;padding:0}a{color:var(--ink);text-underline-offset:3px;text-decoration:underline;text-decoration-thickness:1px}a:hover{color:var(--ink-hover)}button{font:inherit;cursor:pointer}:focus-visible{outline:2px solid var(--accent);outline-offset:3px}::selection{background:var(--ink);color:var(--bg)}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.mono-label{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--muted);font-size:10.5px}.site{background-image:radial-gradient(#1f44331f 1px,#0000 1px);background-size:26px 26px;min-height:100vh;position:relative;overflow-x:clip}main,.site-footer{z-index:1;position:relative}.city{z-index:0;position:fixed;inset:0}.city canvas{display:block}.city-tip{z-index:30;pointer-events:none;background:var(--ink);color:var(--bg);font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;padding:6px 10px;font-size:11px;position:fixed;top:0;left:0}main{pointer-events:none;max-width:1280px;margin:0 auto;padding:0 24px}.chapter{flex-direction:column;gap:20px;min-height:115vh;padding:12vh 0;scroll-margin-top:60px;display:flex}#about.chapter{min-height:calc(100vh - 70px);padding-top:6vh}.card{pointer-events:auto;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid var(--line);background:#faf8f2e0;flex-direction:column;gap:18px;width:min(480px,100%);padding:28px;display:flex;box-shadow:0 24px 50px -30px #1f443366}.card p{margin:0;font-size:17px;line-height:1.6}.card ul{border-left:1px solid #1f443340;flex-direction:column;gap:8px;margin:0;padding:0 0 0 18px;list-style:none;display:flex}.card li{color:#1a1a17d1;font-size:15px;line-height:1.5}.card .skill-row{grid-template-columns:1fr;gap:10px;padding:14px 0}.card .section-title{margin:0}h2.section-title.card{padding:16px 28px}.hero-card{animation:.9s cubic-bezier(.2,.7,.2,1) .6s both rise}.chapter-kicker{color:var(--accent)}.job-title,.project h3{letter-spacing:-.015em;color:var(--ink);margin:0;font-size:28px;font-weight:400;line-height:1.15}.job.is-visible,.project.is-visible{transition:opacity .4s,transform .15s ease-out,filter .4s}.site-header{z-index:10;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--line);background:#f4f1e8d1;position:sticky;top:0}.header-inner{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:32px;max-width:1120px;margin:0 auto;padding:16px 24px;display:flex}.brand{flex-direction:column;text-decoration:none;display:flex}.brand-name{letter-spacing:-.01em;color:var(--ink);font-size:20px;font-weight:600}.site-nav{flex-wrap:wrap;align-items:center;gap:22px;display:flex}.nav-link{color:var(--muted);padding:4px 0;font-size:17px;text-decoration:none;transition:color .2s;position:relative}.nav-link:after{content:"";background:var(--ink);transform-origin:0;height:1.5px;transition:transform .3s;position:absolute;bottom:0;left:0;right:0;transform:scaleX(0)}.nav-link:hover,.nav-link.active{color:var(--ink)}.nav-link:hover:after,.nav-link.active:after{transform:scaleX(1)}.lang-switch{border-left:1px solid var(--line);gap:6px;padding-left:12px;display:flex}.lang-switch button{font-family:var(--font-mono);letter-spacing:.1em;color:#1a1a17a6;background:0 0;border:1px solid #1f443340;padding:5px 8px;font-size:10.5px;transition:all .2s}.lang-switch button.on{background:var(--ink);border-color:var(--ink);color:var(--bg)}.section-title{letter-spacing:-.025em;color:var(--ink);margin:0 0 40px;font-size:clamp(36px,5vw,56px);font-weight:400}.section-title:before{content:"— ";color:var(--accent)}.lead{max-width:56ch;margin:0;font-size:21px;line-height:1.6}.reveal{opacity:0;transition:opacity .8s,transform .8s cubic-bezier(.2,.7,.2,1);transform:translateY(28px)}.reveal.is-visible{opacity:1;transform:none}.hero-title{letter-spacing:-.03em;min-height:2.2em;color:var(--ink);align-items:flex-end;margin:0;font-size:clamp(38px,6vw,68px);font-weight:400;line-height:1.08;display:flex}.typed:after{content:"";vertical-align:-.08em;background:var(--accent);width:.08em;height:.9em;margin-left:.06em;animation:1s step-end infinite blink;display:inline-block}.stats{grid-template-columns:repeat(4,auto);justify-content:start;gap:32px;padding-top:8px;display:grid}.stat{flex-direction:column;gap:4px;display:flex}.stat-value{color:var(--ink);font-variant-numeric:tabular-nums;font-size:44px;line-height:1}.card .body{color:#1a1a17c7;margin:0;font-size:17px;line-height:1.75}.facts{border-left:2px solid var(--ink);flex-direction:column;gap:22px;padding-left:24px;display:flex}.fact{flex-direction:column;gap:4px;font-size:17px;line-height:1.4;display:flex}.dim.is-visible{opacity:.28;filter:grayscale()}.tags{flex-wrap:wrap;gap:6px;display:flex}.tag{font-family:var(--font-mono);color:var(--ink);background:#1f443314;border:0;padding:4px 9px;font-size:11.5px;transition:background .2s,color .2s,transform .2s}.tag:hover{background:#1f443329;transform:translateY(-2px)}.tag.hit{background:var(--accent);color:#fff}.hint{color:var(--muted);margin:-24px 0 24px;font-style:italic}.skill-row{border-top:1px solid var(--line);grid-template-columns:200px 1fr;align-items:baseline;gap:24px;padding:18px 0;display:grid}.chips{flex-wrap:wrap;gap:8px;display:flex}.chip{background:var(--paper);color:var(--text);border:1px solid #1f443340;border-radius:999px;padding:6px 14px;font-size:18px;transition:transform .2s cubic-bezier(.3,1.6,.5,1),background .2s,color .2s}.chip:hover{border-color:var(--ink);transform:translateY(-3px)rotate(-2deg)}.chip.on{background:var(--ink);color:var(--bg);border-color:var(--ink)}.skill-banner{z-index:20;background:var(--ink);color:var(--bg);font-family:var(--font-mono);white-space:nowrap;border-radius:999px;align-items:center;gap:8px;padding:10px 12px 10px 18px;font-size:12.5px;animation:.35s cubic-bezier(.3,1.6,.5,1) pop;display:flex;position:fixed;bottom:24px;left:50%;transform:translate(-50%);box-shadow:0 10px 30px #1f44334d}.skill-banner a{color:var(--bg)}.skill-banner button{color:var(--bg);background:#ffffff26;border:0;border-radius:50%;width:26px;height:26px}.project{background:var(--paper);border:1px solid var(--line);will-change:transform;flex-direction:column;gap:18px;padding:28px;display:flex;position:relative;overflow:hidden}.project:before{content:"";pointer-events:none;background:radial-gradient(260px circle at var(--gx,50%) var(--gy,0%), #d9822b29, transparent 70%);opacity:0;transition:opacity .3s;position:absolute;inset:0}.project:hover{box-shadow:0 24px 50px -20px #1f443359}.project:hover:before{opacity:1}.project-index{color:var(--accent)}.project p{flex:1;font-size:16.5px}.project-link,.mono-link{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;font-size:12px}.contact-form{flex-direction:column;gap:18px;display:flex}.field{flex-direction:column;gap:7px;display:flex}.field input,.field textarea{background:var(--paper);color:var(--text);font-family:var(--font-serif);resize:vertical;border:1px solid #1f443340;outline:none;padding:11px 13px;font-size:17px;transition:border-color .2s,box-shadow .2s}.field input:focus,.field textarea:focus{border-color:var(--ink);box-shadow:0 0 0 4px #1f44331a}.send{background:var(--ink);color:var(--bg);font-family:var(--font-mono);letter-spacing:.13em;text-transform:uppercase;border:0;align-self:flex-start;padding:13px 26px;font-size:11.5px;transition:background .2s,transform .2s;position:relative}.send:hover:not(:disabled){background:var(--ink-hover);transform:translateY(-2px)}.send:disabled{opacity:.6;cursor:default}.plane{pointer-events:none;font-size:20px;animation:1.4s ease-in forwards fly;position:absolute;top:0;right:8px}.form-msg{font-family:var(--font-mono);color:var(--ink);font-size:12.5px;line-height:1.6}.form-msg.error{color:#a33}.site-footer{border-top:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;gap:16px;max-width:1120px;margin:0 auto;padding:32px 24px 96px;display:flex}.konami-hint{font:inherit;letter-spacing:inherit;text-transform:inherit;color:inherit;opacity:.6;background:0 0;border:0;padding:0}.konami-hint:hover{opacity:1;color:var(--accent)}.ach-badge{z-index:30;border:1px solid var(--line);background:var(--paper);font-family:var(--font-mono);color:var(--ink);border-radius:999px;padding:10px 14px;font-size:13px;transition:transform .2s cubic-bezier(.3,1.6,.5,1);position:fixed;bottom:20px;right:20px;box-shadow:0 8px 24px #1f443326}.ach-badge:hover{transform:scale(1.06)}.ach-panel{z-index:30;background:var(--paper);border:1px solid var(--line);width:280px;padding:18px;animation:.3s cubic-bezier(.3,1.6,.5,1) pop;position:fixed;bottom:72px;right:20px;box-shadow:0 20px 50px #1f443333}.ach-panel ul{flex-direction:column;gap:10px;margin:12px 0 0;padding:0;list-style:none;display:flex}.ach-panel li{opacity:.45;gap:10px;display:flex}.ach-panel li.got{opacity:1}.ach-panel li>span{color:var(--accent);font-size:18px}.ach-panel strong,.ach-panel small{display:block}.ach-panel small{color:var(--muted);font-size:13px}.toast{z-index:40;background:var(--ink);color:var(--bg);flex-direction:column;gap:4px;padding:14px 18px;animation:.45s cubic-bezier(.3,1.5,.5,1) slide-in;display:flex;position:fixed;top:84px;right:20px;box-shadow:0 16px 40px #1f443359}.toast .mono-label{color:var(--accent)}.term-backdrop{z-index:50;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0a140f8c;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.term{color:#b9f5c9;width:min(720px,100%);font-family:var(--font-mono);background:#0f1d16;border-radius:10px;font-size:13.5px;animation:.3s cubic-bezier(.3,1.5,.5,1) pop;overflow:hidden;box-shadow:0 30px 80px #00000080}.term-bar{background:#1b2e24;align-items:center;gap:7px;padding:10px 14px;display:flex}.term-bar>span{background:#e0605a;border-radius:50%;width:11px;height:11px}.term-bar>span:nth-child(2){background:#e6b84f}.term-bar>span:nth-child(3){background:#62c454}.term-bar em{text-align:center;opacity:.6;flex:1;font-style:normal}.term-bar button{color:inherit;background:0 0;border:0;font-size:18px}.term-body{height:360px;padding:16px;overflow-y:auto}.term-body pre{white-space:pre-wrap;font:inherit;margin:0 0 4px}.term-input{gap:8px;display:flex}.term-input span{color:var(--accent)}.term-input input{color:inherit;font:inherit;background:0 0;border:0;outline:none;flex:1}@keyframes rise{0%{opacity:0;transform:translateY(30px)}}@keyframes blink{50%{opacity:0}}@keyframes bob{50%{transform:translateY(8px)}}@keyframes pop{0%{opacity:0;scale:.85}}@keyframes slide-in{0%{opacity:0;transform:translate(40px)}}@keyframes fly{to{opacity:0;transform:translate(160px,-120px)rotate(-20deg)}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition:none!important;animation:none!important}.reveal{opacity:1;transform:none}}@media (max-width:760px){.stats{grid-template-columns:repeat(2,auto);gap:20px 32px}main{padding:0 16px}.chapter{padding:55vh 0 10vh}#about.chapter{padding-top:42vh}.card{padding:22px}.skill-row{grid-template-columns:1fr;gap:10px}.chip{font-size:16px}.header-inner{gap:10px;padding:12px 16px}.site-nav{-webkit-overflow-scrolling:touch;flex-wrap:nowrap;gap:14px;width:100%;overflow-x:auto}.nav-link{white-space:nowrap;font-size:14px}.skill-banner{bottom:76px}.toast{top:auto;bottom:130px}}
