@font-face{font-family:Inter Tight;font-style:normal;font-weight:400;font-display:swap;src:url(../media/13ae3e01af63c0ce-s.35p9_4tnsm_o4.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Tight;font-style:normal;font-weight:400;font-display:swap;src:url(../media/0ee4b8f05dcd9fee-s.1q0qwmqzyniyk.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter Tight;font-style:normal;font-weight:400;font-display:swap;src:url(../media/9eba4caf7edd2921-s.02gir8avbbwr_.woff2)format("woff2");unicode-range:U+1F??}@font-face{font-family:Inter Tight;font-style:normal;font-weight:400;font-display:swap;src:url(../media/f6752bd2263820da-s.3hqxvms4e79hg.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter Tight;font-style:normal;font-weight:400;font-display:swap;src:url(../media/f285987c35230861-s.1xbprfp_s2_ea.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:Inter Tight;font-style:normal;font-weight:400;font-display:swap;src:url(../media/b8d1f0a88dfecec3-s.1e3bxj0ebt1gg.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:Inter Tight;font-style:normal;font-weight:400;font-display:swap;src:url(../media/ab57efd000576a30-s.p.3fofz6dws3mg0.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:Inter Tight;font-style:normal;font-weight:500;font-display:swap;src:url(../media/13ae3e01af63c0ce-s.35p9_4tnsm_o4.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Tight;font-style:normal;font-weight:500;font-display:swap;src:url(../media/0ee4b8f05dcd9fee-s.1q0qwmqzyniyk.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter Tight;font-style:normal;font-weight:500;font-display:swap;src:url(../media/9eba4caf7edd2921-s.02gir8avbbwr_.woff2)format("woff2");unicode-range:U+1F??}@font-face{font-family:Inter Tight;font-style:normal;font-weight:500;font-display:swap;src:url(../media/f6752bd2263820da-s.3hqxvms4e79hg.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter Tight;font-style:normal;font-weight:500;font-display:swap;src:url(../media/f285987c35230861-s.1xbprfp_s2_ea.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:Inter Tight;font-style:normal;font-weight:500;font-display:swap;src:url(../media/b8d1f0a88dfecec3-s.1e3bxj0ebt1gg.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:Inter Tight;font-style:normal;font-weight:500;font-display:swap;src:url(../media/ab57efd000576a30-s.p.3fofz6dws3mg0.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:Inter Tight;font-style:normal;font-weight:600;font-display:swap;src:url(../media/13ae3e01af63c0ce-s.35p9_4tnsm_o4.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Tight;font-style:normal;font-weight:600;font-display:swap;src:url(../media/0ee4b8f05dcd9fee-s.1q0qwmqzyniyk.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter Tight;font-style:normal;font-weight:600;font-display:swap;src:url(../media/9eba4caf7edd2921-s.02gir8avbbwr_.woff2)format("woff2");unicode-range:U+1F??}@font-face{font-family:Inter Tight;font-style:normal;font-weight:600;font-display:swap;src:url(../media/f6752bd2263820da-s.3hqxvms4e79hg.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter Tight;font-style:normal;font-weight:600;font-display:swap;src:url(../media/f285987c35230861-s.1xbprfp_s2_ea.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:Inter Tight;font-style:normal;font-weight:600;font-display:swap;src:url(../media/b8d1f0a88dfecec3-s.1e3bxj0ebt1gg.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:Inter Tight;font-style:normal;font-weight:600;font-display:swap;src:url(../media/ab57efd000576a30-s.p.3fofz6dws3mg0.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:Inter Tight;font-style:normal;font-weight:700;font-display:swap;src:url(../media/13ae3e01af63c0ce-s.35p9_4tnsm_o4.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Tight;font-style:normal;font-weight:700;font-display:swap;src:url(../media/0ee4b8f05dcd9fee-s.1q0qwmqzyniyk.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter Tight;font-style:normal;font-weight:700;font-display:swap;src:url(../media/9eba4caf7edd2921-s.02gir8avbbwr_.woff2)format("woff2");unicode-range:U+1F??}@font-face{font-family:Inter Tight;font-style:normal;font-weight:700;font-display:swap;src:url(../media/f6752bd2263820da-s.3hqxvms4e79hg.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter Tight;font-style:normal;font-weight:700;font-display:swap;src:url(../media/f285987c35230861-s.1xbprfp_s2_ea.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:Inter Tight;font-style:normal;font-weight:700;font-display:swap;src:url(../media/b8d1f0a88dfecec3-s.1e3bxj0ebt1gg.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:Inter Tight;font-style:normal;font-weight:700;font-display:swap;src:url(../media/ab57efd000576a30-s.p.3fofz6dws3mg0.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:Inter Tight Fallback;src:local(Arial);ascent-override:100.51%;descent-override:25.03%;line-gap-override:0.0%;size-adjust:96.39%}.inter_tight_5229d065-module__q6iYVW__className{font-family:Inter Tight,Inter Tight Fallback;font-style:normal}.inter_tight_5229d065-module__q6iYVW__variable{--font-inter-tight:"Inter Tight", "Inter Tight Fallback"}
@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/e390973e931a41c5-s.0rgnxg2b64rzs.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/59b15b4bcd7b1eb5-s.2vemzm0itqzfy.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/e532fa1b9921e1cd-s.3cb5lpr2l6xud.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:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/2fe89d53234c61d4-s.1u30mmyq6lnsd.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:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(../media/99e609270109b47d-s.p.40sczeszzbjw1.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:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/5e05ae5b48faa55e-s.1yd4_i3e35931.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/a7afbb44bec2bb18-s.1qc6dx89jd2qv.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/02263ebadd758ea4-s.29yke99gs9qpn.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:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/68757d6cddeff913-s.1i-sca43-qwng.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:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(../media/effe91970fc4db64-s.p.0oace-s_gkfks.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:IBM Plex Mono Fallback;src:local(Arial);ascent-override:76.16%;descent-override:20.43%;line-gap-override:0.0%;size-adjust:134.59%}.ibm_plex_mono_c7d8cc32-module__U1BAtG__className{font-family:IBM Plex Mono,IBM Plex Mono Fallback;font-style:normal}.ibm_plex_mono_c7d8cc32-module__U1BAtG__variable{--font-ibm-plex-mono:"IBM Plex Mono", "IBM Plex Mono Fallback"}
:root{--bg:#0a1120;--surface:#111c31;--surface-sunken:#0e1626;--surface-media:#0d1728;--surface-frame:#101a2e;--text:#eaf0fa;--text-strong:#f6f9ff;--text-quote:#eaf0fad9;--text-body:#eaf0fac7;--text-muted:#eaf0faad;--text-dim:#eaf0fa9e;--text-dimmer:#eaf0fa94;--text-faint:#eaf0fa8c;--text-fainter:#eaf0fa73;--text-ghost:#eaf0fa66;--text-whisper:#eaf0fa52;--accent:#2f6bff;--accent-hover:#1f57e0;--accent-soft:#7fa8ff;--accent-softer:#a8c4ff;--hairline:#ffffff14;--card-line:#ffffff17;--frame-line:#ffffff1a;--button-line:#ffffff2e;--accent-line:#7fa8ff52;--accent-line-hover:#7fa8ff66;--accent-line-strong:#7fa8ff99;--hover-wash:#ffffff0f;--shadow-pill:0 6px 18px #2f6bff52;--shadow-button:0 10px 28px #2f6bff57;--measure:1280px;--gutter:32px;--header-height:62px;--font-sans:var(--font-inter-tight), system-ui, sans-serif;--font-mono:var(--font-ibm-plex-mono), ui-monospace, monospace}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--bg);color:var(--text);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;margin:0}a{color:var(--accent-soft);text-decoration:none}a:hover{color:var(--accent-softer)}::selection{background:#2f6bff59}img{max-width:100%}:focus-visible{outline:2px solid var(--accent-soft);outline-offset:3px}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}.container{width:100%;max-width:var(--measure);padding-inline:var(--gutter);margin:0 auto}.section{scroll-margin-top:calc(var(--header-height) + 12px)}.section-body{padding-block:80px}.section-body--flush-bottom{padding-bottom:0}.eyebrow{font:500 11px/1 var(--font-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--accent-soft);margin:0}.section-title{font:600 34px/1.05 var(--font-sans);letter-spacing:-.03em;color:var(--text);margin:14px 0 30px}.skip-link{z-index:100;background:var(--accent);color:#fff;font:600 13px/1 var(--font-sans);border-radius:0 0 9px;padding:12px 18px;position:absolute;top:0;left:-9999px}.skip-link:focus{color:#fff;left:0}.site-header{z-index:20;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--hairline);background:#0a1120d1;position:sticky;top:0}.site-header__inner{justify-content:space-between;align-items:center;gap:24px;padding-block:14px;display:flex}.site-header__brand{border-radius:9px;flex:none;align-items:center;display:flex}.site-header__mark{width:32px;height:32px;transition:filter .18s,transform .18s;display:block}.site-header__brand:hover .site-header__mark{filter:drop-shadow(0 2px 10px #2f6bff73);transform:translateY(-1px)}@media (prefers-reduced-motion:reduce){.site-header__mark{transition:none}.site-header__brand:hover .site-header__mark{transform:none}}.site-nav{font:500 13px/1 var(--font-sans);align-items:center;gap:6px;display:flex}.site-nav__link{color:var(--text-dim);white-space:nowrap;border-radius:8px;padding:9px 12px}.site-nav__link:hover{color:var(--text);background:var(--hover-wash)}.site-nav__cta{background:var(--accent);color:#fff;box-shadow:var(--shadow-pill);white-space:nowrap;border-radius:100px;margin-left:6px;padding:10px 16px}.site-nav__cta:hover{background:var(--accent-hover);color:#fff}.hero{border-bottom:1px solid var(--hairline);background:radial-gradient(880px 360px at 22% -10%,#2f6bff3d,#0000 72%);position:relative}.hero__backdrop{pointer-events:none;width:100%;height:100%;display:block;position:absolute;inset:0}.hero__inner{grid-template-columns:1.32fr .68fr;align-items:center;gap:56px;min-height:520px;display:grid;position:relative}.hero__copy{padding-block:84px}.hero__name{font:600 clamp(38px, 5.2vw, 60px) / 1.04 var(--font-sans);letter-spacing:-.035em;color:var(--text-strong);margin:0}.hero__role{font:500 21px/1.3 var(--font-sans);color:var(--accent-soft);margin:16px 0 0}.hero__tagline{max-width:560px;font:400 18px/1.6 var(--font-sans);color:var(--text-muted);text-wrap:pretty;margin:20px 0 0}.hero__links{font:600 13px/1 var(--font-sans);flex-wrap:wrap;gap:10px;margin-top:34px;display:flex}.button{border:1px solid var(--button-line);color:var(--text);border-radius:9px;align-items:center;gap:9px;padding:13px 20px;display:inline-flex}.button svg{opacity:.85;flex:none}.button--primary svg{opacity:1}.button:hover{background:var(--hover-wash);color:#fff}.button--primary{background:var(--accent);color:#fff;box-shadow:var(--shadow-button);border-color:#0000}.button--primary:hover{background:var(--accent-hover);color:#fff}.hero__portrait{border:1px solid var(--frame-line);background:var(--surface-frame);border-radius:14px;height:340px;position:relative;overflow:hidden}.hero__portrait img{object-fit:cover}.creds{border-bottom:1px solid var(--hairline)}.creds__highlights{grid-template-columns:1.05fr 1fr;gap:18px;margin:30px 0 18px;display:grid}.highlight-card{background:var(--surface);border:1px solid var(--card-line);color:var(--text);border-radius:14px;flex-direction:column;justify-content:space-between;gap:24px;padding:28px;display:flex}.highlight-card:hover{border-color:var(--accent-line-hover);color:#fff}.highlight-card__eyebrow{font:500 11px/1 var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--accent-soft)}.highlight-card__title{font:600 26px/1.15 var(--font-sans);letter-spacing:-.03em}.highlight-card--featured{border-color:var(--accent-line);color:#fff;background:linear-gradient(140deg,#2f6bff3d,#2f6bff0d)}.highlight-card--featured:hover{border-color:var(--accent-line-strong);color:#fff}.highlight-card--featured .highlight-card__eyebrow{color:var(--accent-softer)}.highlight-card--featured .highlight-card__title{letter-spacing:-.035em;font-size:34px;line-height:1.08}.creds__certs{grid-template-columns:repeat(3,1fr);gap:14px;display:grid}.cert-card{background:var(--surface);border:1px solid var(--card-line);color:var(--text);border-radius:12px;padding:20px;display:block}.cert-card:hover{border-color:var(--accent-line-hover);color:#fff}.cert-card__institution{font:500 10.5px/1.3 var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--text-fainter);display:block}.cert-card__platform{color:var(--text-whisper)}.cert-card__title{font:600 16px/1.3 var(--font-sans);margin-top:10px;display:block}.projects__featured{grid-template-columns:1fr 1fr;gap:22px;display:grid}.projects__subtitle{margin:56px 0 22px}.projects__grid{grid-template-columns:repeat(auto-fit,minmax(330px,1fr));gap:16px;display:grid}.project-card{background:var(--surface);border:1px solid var(--card-line);border-radius:12px;flex-direction:column;display:flex;position:relative;overflow:hidden}.project-card:hover{border-color:var(--accent-line-hover)}.project-card__link:after{content:"";z-index:1;position:absolute;inset:0}@supports selector(:has(*)){.project-card__link:focus-visible{outline:none}.project-card:has(.project-card__link:focus-visible){outline:2px solid var(--accent-soft);outline-offset:3px}}.project-card__media{background:linear-gradient(140deg,#2f6bff24,#2f6bff05);height:150px;display:block;position:relative}.project-card__media img{object-fit:cover}.project-card__body{flex-direction:column;gap:9px;padding:20px 22px 22px;display:flex}.project-card__role{font:500 10.5px/1 var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--accent-soft);margin:0}.project-card__title{font:600 17px/1.25 var(--font-sans);letter-spacing:-.02em;margin:0}.project-card__title a{color:var(--text)}.project-card__title a:hover{color:#fff}.project-card__desc{font:400 13.5px/1.6 var(--font-sans);color:var(--text-dimmer);text-wrap:pretty;margin:0}.project-card--featured{border-radius:14px}.project-card--featured .project-card__media{background:linear-gradient(140deg,#2f6bff2e,#2f6bff08);height:210px}.project-card--featured .project-card__media img{background:var(--surface-media)}.project-card--featured .project-card__body{gap:10px;padding:22px 24px 24px}.project-card--featured .project-card__title{letter-spacing:-.025em;font-size:21px;line-height:1.2}.project-card--featured .project-card__desc{color:var(--text-dim);font-size:14.5px;line-height:1.62}.project-card__placeholder{text-align:center;height:100%;font:500 11px/1.4 var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--text-fainter);justify-content:center;align-items:center;padding:0 16px;display:flex}.projects__carousel{margin-inline:calc(var(--gutter) * -1);padding-inline:var(--gutter);overscroll-behavior-x:none;scrollbar-width:none;--edge-fade:clamp(28px, 8vw, 72px);--fade-start:0;--fade-end:1;-webkit-mask-image:linear-gradient(to right, transparent 0, #000 calc(var(--edge-fade) * var(--fade-start)), #000 calc(100% - var(--edge-fade) * var(--fade-end)), transparent 100%);-webkit-mask-image:linear-gradient(to right, transparent 0, #000 calc(var(--edge-fade) * var(--fade-start)), #000 calc(100% - var(--edge-fade) * var(--fade-end)), transparent 100%);mask-image:linear-gradient(to right, transparent 0, #000 calc(var(--edge-fade) * var(--fade-start)), #000 calc(100% - var(--edge-fade) * var(--fade-end)), transparent 100%);margin-block:-6px;padding-block:6px;overflow:auto hidden}.projects__carousel::-webkit-scrollbar{display:none}.projects__carousel:focus-within{-webkit-mask-image:none;mask-image:none}.projects__marquee{align-items:stretch;gap:16px;width:max-content;margin:0;padding:0;list-style:none;display:flex}.projects__marquee-item{flex:0 0 clamp(262px,78vw,352px);display:flex}.projects__marquee-item .project-card{width:100%;transition:border-color .18s}.projects__marquee .project-card__desc{-webkit-line-clamp:3;line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.projects__toggle-row{flex-wrap:wrap;align-items:center;gap:10px 18px;margin-top:24px;display:flex}.projects__hint{font:500 10.5px/1.4 var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--text-whisper);margin:0}.toggle-button{border:1px solid var(--button-line);color:var(--text);font:600 13px/1 var(--font-sans);cursor:pointer;background:0 0;border-radius:9px;padding:13px 22px}.toggle-button:hover{background:var(--hover-wash);border-color:#7fa8ff73}.reviews{background:var(--surface-sunken);border-top:1px solid var(--hairline);border-bottom:1px solid var(--hairline);margin-top:80px}.reviews__grid{grid-template-columns:repeat(auto-fit,minmax(330px,1fr));gap:16px;display:grid}.review-card{background:var(--surface);border:1px solid var(--card-line);border-radius:14px;flex-direction:column;gap:14px;margin:0;padding:24px;display:flex}.review-card__stars{letter-spacing:5px;text-indent:5px;color:var(--accent-soft);align-self:center;margin:0;font-size:17px;line-height:1}.review-card__quote{font:400 italic 15px/1.65 var(--font-sans);color:var(--text-quote);text-wrap:pretty;margin:0}.tools__grid{grid-template-columns:repeat(auto-fit,minmax(360px,1fr));gap:16px;display:grid}.tool-card{background:var(--surface);border:1px solid var(--card-line);border-radius:12px;padding:22px}.tool-card p{font:400 14.5px/1.6 var(--font-sans);color:var(--text-body);margin:0}.site-footer{background:var(--surface-sunken);border-top:1px solid var(--hairline)}.site-footer__inner{font:500 13px/1 var(--font-sans);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;padding-block:40px;display:flex}.site-footer__links{flex-wrap:wrap;gap:22px;display:flex}.site-footer__links a{color:var(--text-faint);align-items:center;gap:8px;display:inline-flex}.site-footer__links svg{flex:none}.site-footer__links a:hover{color:var(--text)}.site-footer__copyright{color:var(--text-whisper)}.chat{z-index:60;flex-direction:column;align-items:flex-end;gap:12px;display:flex;position:fixed;bottom:20px;right:20px}.chat__launcher{background:var(--accent);color:#fff;font:600 13px/1 var(--font-sans);cursor:pointer;box-shadow:var(--shadow-pill);border:0;border-radius:100px;padding:13px 22px}.chat__launcher:hover{background:var(--accent-hover)}.chat__panel{background:var(--surface);border:1px solid var(--card-line);transform-origin:100% 100%;opacity:0;visibility:hidden;border-radius:14px;flex-direction:column;width:min(360px,100vw - 40px);height:min(520px,100vh - 140px);transition:opacity .22s,transform .22s,visibility .22s;display:flex;position:relative;overflow:hidden;transform:scale(.92);box-shadow:0 24px 60px #00000073}.chat__panel--open{opacity:1;visibility:visible;transform:scale(1)}.chat__header{background:var(--surface-sunken);border-bottom:1px solid var(--card-line);justify-content:space-between;align-items:center;gap:12px;padding:12px 14px;display:flex}.chat__title{font:600 13px/1 var(--font-sans);color:var(--text)}.chat__contact{border:1px solid var(--accent-line);height:28px;color:var(--accent-softer);font:600 12px/1 var(--font-sans);white-space:nowrap;background:#2f6bff24;border-radius:100px;align-items:center;gap:6px;padding:0 12px 0 10px;transition:background .18s,border-color .18s,color .18s,box-shadow .18s;display:inline-flex}.chat__contact:hover{background:var(--accent);border-color:var(--accent);color:#fff;box-shadow:var(--shadow-pill)}.chat__contact-icon{opacity:.85;transition:transform .18s,opacity .18s}.chat__contact:hover .chat__contact-icon{opacity:1;transform:translateY(-1px)}.chat__offer{align-self:flex-start;margin-top:-4px;animation:.24s both chat-offer-in;display:flex}@keyframes chat-offer-in{0%{opacity:0;transform:translateY(4px)}}.chat__controls{align-items:center;gap:6px;display:flex}.chat__control{border:1px solid var(--button-line);width:28px;height:28px;color:var(--text);font:400 16px/1 var(--font-sans);cursor:pointer;background:0 0;border-radius:8px;justify-content:center;align-items:center;display:flex}.chat__control:hover{background:var(--hover-wash)}.chat__control[aria-pressed=true]{border-color:var(--accent-line-strong);color:var(--accent-softer)}.chat__grip{z-index:2;touch-action:none;position:absolute}.chat__grip--top{cursor:ns-resize;height:6px;top:0;left:10px;right:0}.chat__grip--left{cursor:ew-resize;width:6px;top:10px;bottom:0;left:0}.chat__grip--corner{cursor:nwse-resize;background:0 0;border:0;width:16px;height:16px;padding:0;top:0;left:0}.chat__grip--corner:focus-visible{outline:2px solid var(--accent-line-strong);outline-offset:-2px;background:#2f6bff29;border-radius:13px 5px 5px}.chat__grip--corner:after{content:"";border-top:1.5px solid var(--text-ghost);border-left:1.5px solid var(--text-ghost);border-top-left-radius:3px;width:7px;height:7px;position:absolute;top:5px;left:5px}.chat__grip--corner:hover:after,.chat__grip--corner:focus-visible:after{border-color:var(--accent-soft)}.chat__log{scrollbar-width:thin;scrollbar-color:var(--button-line) transparent;flex-direction:column;flex:1;gap:10px;padding:16px 14px;display:flex;overflow-y:auto}.chat__intro{font:400 13px/1.6 var(--font-sans);color:var(--text-dim);text-wrap:pretty;margin:0 0 2px}.chat__message{max-width:85%;font:400 13.5px/1.6 var(--font-sans);overflow-wrap:anywhere;border-radius:12px;padding:10px 13px}.chat__message--user{background:var(--accent);color:#fff;white-space:pre-wrap;border-bottom-right-radius:4px;align-self:flex-end}.chat__message--assistant{background:var(--surface-sunken);border:1px solid var(--card-line);color:var(--text-body);border-bottom-left-radius:4px;align-self:flex-start;max-width:92%}.chat__markdown>*{margin:0}.chat__markdown>*+*{margin-top:8px}.chat__heading{font:600 13.5px/1.5 var(--font-sans);color:var(--text)}.chat__list{padding-left:18px}.chat__list li+li{margin-top:4px}.chat__list li::marker{color:var(--text-ghost)}.chat__markdown a{color:var(--accent-soft);text-underline-offset:2px;text-decoration:underline}.chat__markdown a:hover{color:var(--accent-softer)}.chat__code{border:1px solid var(--hairline);font:400 12px/1.5 var(--font-mono);background:#ffffff12;border-radius:5px;padding:1px 5px}.chat__codeblock{background:var(--bg);border:1px solid var(--hairline);font:400 12px/1.6 var(--font-mono);white-space:pre;scrollbar-width:thin;scrollbar-color:var(--button-line) transparent;border-radius:8px;padding:10px 12px;overflow-x:auto}.chat__caret{vertical-align:text-bottom;background:var(--accent-soft);width:2px;height:1em;margin-left:2px;animation:1s steps(2,start) infinite chat-blink;display:inline-block}@keyframes chat-blink{50%{opacity:0}}.chat__typing{gap:4px;padding:2px 0;display:inline-flex}.chat__typing i{background:var(--text-ghost);border-radius:50%;width:6px;height:6px;animation:1.2s ease-in-out infinite chat-bounce}.chat__typing i:nth-child(2){animation-delay:.15s}.chat__typing i:nth-child(3){animation-delay:.3s}@keyframes chat-bounce{0%,60%,to{opacity:.45;transform:translateY(0)}30%{opacity:1;transform:translateY(-4px)}}.chat__error{border:1px solid var(--button-line);background:#ffffff08;border-radius:12px;flex-wrap:wrap;align-items:center;gap:10px;padding:11px 13px;display:flex}.chat__error-text{font:400 13px/1.5 var(--font-sans);color:var(--text-dim);margin:0}.chat__suggestions{flex-direction:column;align-items:flex-start;gap:8px;margin-top:auto;padding-top:12px;display:flex}.chat__suggestion{border:1px solid var(--button-line);font:500 12.5px/1 var(--font-sans);color:var(--text-dim);cursor:pointer;text-align:left;background:0 0;border-radius:100px;padding:8px 14px}.chat__suggestion:hover{border-color:var(--accent-line-hover);color:var(--text);background:var(--hover-wash)}.chat__composer{background:var(--surface-sunken);border-top:1px solid var(--card-line);gap:8px;padding:12px 14px;display:flex}.chat__input{background:var(--bg);border:1px solid var(--button-line);min-width:0;font:400 13.5px/1 var(--font-sans);color:var(--text);border-radius:9px;flex:1;padding:11px 13px}.chat__input::placeholder{color:var(--text-whisper)}.chat__input:focus-visible{border-color:var(--accent-line-strong)}.chat__input:disabled{opacity:.55}.chat__send{background:var(--accent);font:600 13px/1 var(--font-sans);color:#fff;cursor:pointer;border:1px solid #0000;border-radius:9px;flex:none;padding:11px 17px}.chat__send:hover:not(:disabled){background:var(--accent-hover)}.chat__send:disabled{opacity:.45;cursor:default}.chat__notice{background:var(--surface-sunken);font:400 10.5px/1.5 var(--font-sans);color:var(--text-dim);text-wrap:pretty;margin:0;padding:0 14px 11px}.chat__notice a{color:inherit;text-underline-offset:2px;text-decoration:underline}.chat__notice a:hover{color:var(--text)}@media (prefers-reduced-motion:reduce){.chat__panel{transition:none}.chat__caret,.chat__typing i,.chat__offer{animation:none}.chat__contact,.chat__contact-icon{transition:none}.chat__contact:hover .chat__contact-icon{transform:none}}.legal{padding-block:64px 96px}.legal__inner{max-width:720px}.legal__back{font:500 11px/1 var(--font-mono);letter-spacing:.16em;text-transform:uppercase;color:var(--accent-soft);margin-bottom:36px;display:inline-block}.legal__title{font:600 34px/1.1 var(--font-sans);letter-spacing:-.03em;color:var(--text);text-wrap:balance;margin:0}.legal__updated{font:400 12px/1 var(--font-mono);color:var(--text-whisper);margin:10px 0 32px}.legal__lede{font:400 16px/1.7 var(--font-sans);color:var(--text-dim);text-wrap:pretty;margin:0 0 16px}.legal__section{margin-top:40px}.legal__heading{font:600 19px/1.3 var(--font-sans);letter-spacing:-.01em;color:var(--text);margin:0 0 12px}.legal__section p{font:400 15px/1.75 var(--font-sans);color:var(--text-dim);text-wrap:pretty;margin:0 0 14px}.legal__list{font:400 15px/1.7 var(--font-sans);color:var(--text-dim);flex-direction:column;gap:8px;margin:0 0 14px;padding-left:20px;display:flex}.legal__list li::marker{color:var(--accent-soft)}@media (max-width:640px){.legal{padding-block:40px 64px}.legal__title{font-size:27px}}@media (max-width:900px){.hero__inner{grid-template-columns:1fr;gap:36px;min-height:0}.hero__copy{padding:64px 0 0}.hero__portrait{height:300px;margin-bottom:64px}.creds__highlights,.projects__featured{grid-template-columns:1fr}.creds__certs{grid-template-columns:repeat(2,1fr)}.highlight-card--featured .highlight-card__title{font-size:30px}}@media (max-width:720px){:root{--gutter:20px}.site-header__inner{flex-wrap:wrap;gap:10px;padding-block:12px}.site-nav{scrollbar-width:none;margin-inline:calc(var(--gutter) * -1);padding-inline:var(--gutter);flex:100%;overflow-x:auto}.site-nav::-webkit-scrollbar{display:none}.section-body{padding-block:56px}.reviews{margin-top:56px}.section-title,.projects__subtitle{font-size:28px}.projects__subtitle{margin-top:44px}.reviews__grid,.projects__grid,.tools__grid,.creds__certs{grid-template-columns:1fr}.chat{gap:10px;bottom:16px;right:16px}.chat__panel{width:calc(100vw - 32px);height:min(70vh,100vh - 120px)}}
