@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/bricolage-grotesque-vietnamese-wght-normal-BUzh504Q.woff2)format("woff2-variations");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:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/bricolage-grotesque-latin-ext-wght-normal-CcLUaPy7.woff2)format("woff2-variations");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:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/bricolage-grotesque-latin-wght-normal-DLoelf7F.woff2)format("woff2-variations");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 Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-cyrillic-ext-400-normal-g30qAdWV.woff2)format("woff2"),url(/assets/ibm-plex-sans-cyrillic-ext-400-normal-Dsrv2Tcn.woff)format("woff");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 Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-cyrillic-400-normal-DZqxrq2p.woff2)format("woff2"),url(/assets/ibm-plex-sans-cyrillic-400-normal-BTotfTJu.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-greek-400-normal-_efipK4i.woff2)format("woff2"),url(/assets/ibm-plex-sans-greek-400-normal-D9ESIMu3.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-vietnamese-400-normal-DG4YqDda.woff2)format("woff2"),url(/assets/ibm-plex-sans-vietnamese-400-normal-fK1oJ5dG.woff)format("woff");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 Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-latin-ext-400-normal-C5H60-Va.woff2)format("woff2"),url(/assets/ibm-plex-sans-latin-ext-400-normal-RBey6euL.woff)format("woff");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 Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-latin-400-normal-CDDApCn2.woff2)format("woff2"),url(/assets/ibm-plex-sans-latin-400-normal-CYLoc0-x.woff)format("woff");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 Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-cyrillic-ext-500-normal-Cs5J6C77.woff2)format("woff2"),url(/assets/ibm-plex-sans-cyrillic-ext-500-normal-DB5PtV2g.woff)format("woff");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 Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-cyrillic-500-normal-CocWQlwt.woff2)format("woff2"),url(/assets/ibm-plex-sans-cyrillic-500-normal-ByOcLdNv.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-greek-500-normal-JMMifIXV.woff2)format("woff2"),url(/assets/ibm-plex-sans-greek-500-normal-CuWXN6rf.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-vietnamese-500-normal-e4dixQRQ.woff2)format("woff2"),url(/assets/ibm-plex-sans-vietnamese-500-normal-BEb3_waV.woff)format("woff");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 Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-latin-ext-500-normal-DakdToA3.woff2)format("woff2"),url(/assets/ibm-plex-sans-latin-ext-500-normal-D0aIdm-b.woff)format("woff");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 Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-latin-500-normal-6ng42L7E.woff2)format("woff2"),url(/assets/ibm-plex-sans-latin-500-normal-BgVn5rGT.woff)format("woff");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 Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-cyrillic-ext-600-normal-DUMzJB7m.woff2)format("woff2"),url(/assets/ibm-plex-sans-cyrillic-ext-600-normal-Bz0x94Yp.woff)format("woff");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 Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-cyrillic-600-normal-71GNu3SW.woff2)format("woff2"),url(/assets/ibm-plex-sans-cyrillic-600-normal-BGq0mW3O.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-greek-600-normal-DzTrcv_p.woff2)format("woff2"),url(/assets/ibm-plex-sans-greek-600-normal-D-CqTdkO.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-vietnamese-600-normal-DpPYBSTl.woff2)format("woff2"),url(/assets/ibm-plex-sans-vietnamese-600-normal-DgdngZtN.woff)format("woff");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 Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-latin-ext-600-normal-DOrvGEcy.woff2)format("woff2"),url(/assets/ibm-plex-sans-latin-ext-600-normal-DIrixKbi.woff)format("woff");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 Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-latin-600-normal-CuJfVYMP.woff2)format("woff2"),url(/assets/ibm-plex-sans-latin-600-normal-Cu4Hd6ag.woff)format("woff");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-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-cyrillic-ext-400-normal-xuaO2J-f.woff2)format("woff2"),url(/assets/ibm-plex-mono-cyrillic-ext-400-normal-DMdlQ8Kv.woff)format("woff");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-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-cyrillic-400-normal-BSMlKf0J.woff2)format("woff2"),url(/assets/ibm-plex-mono-cyrillic-400-normal-CEL4l2ZJ.woff)format("woff");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-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-vietnamese-400-normal-BulugwFq.woff2)format("woff2"),url(/assets/ibm-plex-mono-vietnamese-400-normal-DDuiU_S-.woff)format("woff");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-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-latin-ext-400-normal-BmRBH3aV.woff2)format("woff2"),url(/assets/ibm-plex-mono-latin-ext-400-normal-D3D2R8hC.woff)format("woff");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-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2)format("woff2"),url(/assets/ibm-plex-mono-latin-400-normal-CvHOgSBP.woff)format("woff");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}:root{--ink:#070b18;--ink-raised:#0d1328;--ink-line:#1d2643;--text:#e8ecf5;--text-muted:#9aa3bb;--v-purple:#440154;--v-blue:#3b528b;--v-teal:#21918c;--v-green:#5ec962;--v-yellow:#fde725;--link:#3fc1ae;--accent:var(--v-yellow);--accent-ink:#1a1500;--font-display:"Bricolage Grotesque Variable", "Bricolage Grotesque", system-ui, sans-serif;--font-body:"IBM Plex Sans", system-ui, -apple-system, "Segoe UI", sans-serif;--font-code:"IBM Plex Mono", ui-monospace, "SF Mono", Menlo, monospace;--step--1:.875rem;--step-0:1.0625rem;--step-1:1.25rem;--step-2:1.5625rem;--step-3:clamp(1.75rem, 1.4rem + 1.6vw, 2.45rem);--step-4:clamp(2.2rem, 1.6rem + 3vw, 3.8rem);--step-hero:clamp(3.1rem, 1.6rem + 7.4vw, 8.4rem);--gutter:clamp(1rem, .6rem + 2vw, 2.5rem);--section-pad:clamp(5.5rem, 4rem + 8vw, 10rem);--content:74rem;--measure:38rem;--r-panel:6px;--r-chip:999px;--ease-out:cubic-bezier(.22, 1, .36, 1)}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-padding-top:1rem}html.lenis,html.lenis body{height:auto}.lenis.lenis-smooth{scroll-behavior:auto!important}body{background:var(--ink);color:var(--text);font-family:var(--font-body);font-size:var(--step-0);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0;line-height:1.6;overflow-x:hidden}img,svg{max-width:100%;display:block}a{color:var(--link);text-underline-offset:.2em;text-decoration-thickness:1px}h1,h2,h3{font-family:var(--font-display);letter-spacing:-.02em;text-wrap:balance;margin:0;font-weight:650;line-height:1.05}p{text-wrap:pretty;margin:0}ul{margin:0;padding:0}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}.skip-link{z-index:100;background:var(--accent);color:var(--accent-ink);border-radius:var(--r-panel);padding:.6rem 1rem;font-weight:600;text-decoration:none;position:absolute;top:-4rem;left:1rem}.skip-link:focus{top:1rem}[hidden]{display:none!important}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.field{z-index:0;pointer-events:none;position:fixed;inset:0}.field-canvas{inset:0;position:absolute!important}.field:after{content:"";background:linear-gradient(90deg,#070b18d1 0%,#070b1873 45%,#070b1800 70%),radial-gradient(120% 80% at 70% 40%,#3b528b24,#0000 60%);position:absolute;inset:0}@media (max-width:900px){.field:after{background:#070b1861}}.page{z-index:1;position:relative}.wrap{width:min(100% - 2 * var(--gutter), var(--content));margin-inline:auto}@media (min-width:1100px){.wrap{padding-left:5.5rem}}.section{padding-block:var(--section-pad)}.section-head{max-width:var(--measure);margin-bottom:clamp(2.5rem,2rem + 2vw,4rem)}.section-head h2{font-size:var(--step-4)}.section-head p{color:var(--text-muted);font-size:var(--step-1);margin-top:1rem}.btn{border-radius:var(--r-panel);font:600 var(--step-0) / 1 var(--font-body);cursor:pointer;transition:background-color .2s, border-color .2s, color .2s, transform .2s var(--ease-out);border:1px solid #0000;align-items:center;gap:.55rem;padding:.85rem 1.35rem;text-decoration:none;display:inline-flex}.btn svg{width:1.1em;height:1.1em}.btn-primary{background:var(--accent);color:var(--accent-ink)}.btn-primary:hover{background:#fff176}.btn-ghost{color:var(--text);border-color:var(--ink-line);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#0d132899}.btn-ghost:hover{border-color:var(--link)}.btn:active{transform:translateY(1px)}.chip{border:1px solid var(--ink-line);border-radius:var(--r-chip);font-size:var(--step--1);color:var(--text);white-space:nowrap;background:#0d1328b3;align-items:center;gap:.45rem;padding:.35rem .8rem;display:inline-flex}.chip svg{flex:none;width:.95rem;height:.95rem}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}.nav{z-index:20;padding:1.1rem var(--gutter);transition:padding .3s var(--ease-out), background-color .3s;align-items:center;gap:1.5rem;display:flex;position:fixed;top:0;left:0;right:0}.nav.is-compact{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#070b18c7;border-bottom:1px solid #1d2643b3;padding-block:.6rem}.nav-mark{font-family:var(--font-display);letter-spacing:-.04em;color:var(--text);border:1.5px solid var(--text);border-radius:50%;place-items:center;width:2.4rem;height:2.4rem;font-size:1.15rem;font-weight:750;text-decoration:none;display:grid}.nav nav{margin-left:auto}.nav ul{gap:1.6rem;list-style:none;display:flex}.nav nav a{color:var(--text-muted);font-size:var(--step--1);font-weight:500;text-decoration:none}.nav nav a:hover{color:var(--text)}.nav-cv{font-size:var(--step--1);color:var(--accent);border-radius:var(--r-panel);border:1px solid #fde72573;align-items:center;gap:.4rem;padding:.45rem .85rem;font-weight:600;text-decoration:none;display:inline-flex}.nav-cv svg{width:1rem;height:1rem}.nav-cv:hover{background:#fde7251a}@media (max-width:760px){.nav nav{display:none}.nav-cv{margin-left:auto}}.rail{left:var(--gutter);z-index:15;display:none;position:fixed;top:50%;transform:translateY(-50%)}@media (min-width:1100px){.rail{display:block}}.rail ol{gap:.15rem;margin:0;padding:0;list-style:none;display:grid;position:relative}.rail ol:before{content:"";background:var(--ink-line);width:1px;position:absolute;top:.9rem;bottom:.9rem;left:5px}.rail a{color:var(--text-muted);align-items:center;gap:.75rem;padding:.45rem 0;font-size:.8rem;font-weight:500;text-decoration:none;display:flex}.rail-dot{border:1.5px solid var(--ink-line);background:var(--ink);width:11px;height:11px;transition:background-color .3s, border-color .3s, transform .3s var(--ease-out);border-radius:50%;position:relative}.rail .is-done .rail-dot{border-color:var(--v-teal);background:var(--v-teal)}.rail .is-active .rail-dot{border-color:var(--accent);background:var(--accent);transform:scale(1.25)}.rail-label{opacity:0;transition:opacity .25s, transform .25s var(--ease-out);transform:translate(-4px)}.rail:hover .rail-label,.rail a:focus-visible .rail-label,.rail .is-active .rail-label{opacity:1;transform:none}.rail .is-active a{color:var(--text)}.rail-caption{max-width:9rem;color:var(--text-muted);margin-top:.9rem;font-size:.75rem;line-height:1.4}.rail-mobile{z-index:15;border-radius:var(--r-chip);border:1px solid var(--ink-line);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:var(--text-muted);white-space:nowrap;background:#0d1328d9;padding:.4rem .9rem;font-size:.75rem;position:fixed;bottom:.9rem;left:50%;transform:translate(-50%)}.rail-mobile span{color:var(--accent);margin-right:.35rem;font-weight:600}@media (min-width:1100px){.rail-mobile{display:none}}.hero{align-items:center;min-height:100svh;padding-block:7rem 5rem;display:flex}.hero-name{font-size:var(--step-hero);letter-spacing:-.045em;font-variation-settings:"wdth" 92;font-weight:760;line-height:.88}.hero-name .line{padding-bottom:.06em;display:block;overflow:hidden}.hero-name .line span{display:inline-block}.hero-name .line:last-child{padding-left:.6em}.hero-rest{max-width:34rem;margin-top:2.2rem}.hero-role{font-family:var(--font-display);font-size:var(--step-2);color:var(--accent);letter-spacing:-.01em;font-weight:500}.hero-intro{font-size:var(--step-1);color:var(--text-muted);max-width:32rem;margin-top:.8rem}.hero-actions{flex-wrap:wrap;align-items:center;gap:.9rem 1.2rem;margin-top:2rem;display:flex}.hero-contact{color:var(--text);font-weight:500}.about-grid{align-items:start;gap:clamp(2rem,1rem + 4vw,5rem);display:grid}.about-photo{border-radius:var(--r-panel);background:var(--ink-raised);max-width:22rem;margin:0;position:relative;overflow:hidden}.about-photo img{aspect-ratio:4/5;object-fit:cover;object-position:50% 20%;width:100%;height:auto}@media (min-width:860px){.about-grid{grid-template-columns:minmax(0,36rem) minmax(16rem,22rem);justify-content:space-between;align-items:stretch}.about-photo{order:2;min-height:24rem}.about-photo img{aspect-ratio:auto;object-position:50% 22%;height:100%;position:absolute;inset:0}}.about-photo:after{content:"";background:linear-gradient(#0000 55%,#070b18bf);position:absolute;inset:0}.about-text h2{font-size:var(--step-4);margin-bottom:1.4rem}.about-text p+p{margin-top:1rem}.about-text p{max-width:var(--measure)}.facts{border-top:1px solid var(--ink-line);gap:.9rem;margin:2rem 0 0;padding-top:1.5rem;display:grid}.facts div{grid-template-columns:7rem 1fr;gap:1rem;display:grid}.facts dt{color:var(--text-muted);font-size:var(--step--1);padding-top:.15rem}.facts dd{margin:0;font-weight:500}.section-tight{padding-top:0}.timeline{max-width:52rem;position:relative}.timeline ol{gap:3rem;margin:0;padding:0;list-style:none;display:grid}.timeline:before,.timeline-line{width:1px;position:absolute;top:.5rem;bottom:0;left:10.4rem}.timeline:before{content:"";background:var(--ink-line)}.timeline-line{background:linear-gradient(180deg, var(--v-yellow), var(--v-green), var(--v-teal));transform-origin:top}.timeline-item{grid-template-columns:9.4rem 1fr;gap:2rem;display:grid;position:relative}.timeline-item:before{content:"";background:var(--ink);border:1.5px solid var(--v-teal);border-radius:50%;width:9px;height:9px;position:absolute;top:.55rem;left:calc(10.4rem - 4px)}.timeline-item>div{padding-left:1rem}.timeline-date{font-size:var(--step--1);color:var(--text-muted);font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap;padding-top:.2rem}.timeline-note{color:var(--link);font-size:.75rem;display:block}.timeline h3{font-size:var(--step-2);font-weight:600}.timeline-org{color:var(--link);margin-top:.3rem;font-weight:500}.result{border-radius:var(--r-chip);font-size:var(--step--1);color:var(--accent);border:1px solid #fde72559;margin-left:.5rem;padding:.1rem .6rem;font-weight:500;display:inline-block}.bullets{gap:.5rem;margin-top:.8rem;list-style:none;display:grid}.bullets li{color:#c7cde0;max-width:40rem;padding-left:1.1rem;position:relative}.bullets li:before{content:"";background:var(--v-teal);border-radius:50%;width:5px;height:5px;position:absolute;top:.68em;left:0}@media (max-width:640px){.timeline:before,.timeline-line{left:.25rem}.timeline-item{grid-template-columns:1fr;gap:.3rem;padding-left:1.5rem}.timeline-item:before{left:calc(.25rem - 4px)}.timeline-date{text-align:left}.timeline-item>div{padding-left:0}}.project{border:1px solid var(--ink-line);border-radius:var(--r-panel);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0d1328d1;transition:border-color .3s;display:grid;position:relative;overflow:hidden}.project:hover,.project:focus-within{border-color:#2f3e6b}.project-featured{margin-bottom:1.5rem}@media (min-width:900px){.project-featured{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr)}}.project-grid{gap:1.5rem;display:grid}@media (min-width:820px){.project-grid{grid-template-columns:1fr 1fr}}.project-viz{border-bottom:1px solid var(--ink-line);background:linear-gradient(#3b528b1f,#0000);padding:1.4rem 1.4rem .6rem}.project-featured .project-viz{border-bottom:0;border-right:1px solid var(--ink-line);align-items:center;padding:1.6rem;display:flex}@media (max-width:899px){.project-featured .project-viz{border-right:0;border-bottom:1px solid var(--ink-line)}}.viz-note{color:#6f7894;text-align:right;margin-top:.3rem;font-size:.7rem}.project-body{flex-direction:column;gap:.9rem;padding:1.4rem 1.5rem 1.5rem;display:flex}.project-top{justify-content:space-between;align-items:center;display:flex}.project-dates{font-size:var(--step--1);color:var(--text-muted)}.project-link-icon{width:1.4rem;height:1.4rem;color:var(--text-muted);transition:color .2s, transform .25s var(--ease-out)}.project-link-icon svg{width:100%;height:100%}.project:hover .project-link-icon{color:var(--accent);transform:translate(2px,-2px)}.project h3{font-size:var(--step-3);font-weight:650}.project-link{color:var(--text);text-decoration:none}.project-link:after{content:"";z-index:1;position:absolute;inset:0}.project-link:focus-visible{outline:none}.project:has(.project-link:focus-visible){outline:2px solid var(--accent);outline-offset:3px}.project-logo{background:#fff;border-radius:6px;width:5.5rem;height:auto;padding:.3rem}.project-summary{color:#c7cde0}.metrics{flex-wrap:wrap;gap:.6rem 2rem;margin:.2rem 0 0;display:flex}.metrics div{flex-direction:column-reverse;display:flex}.metrics dt{color:var(--text-muted);font-size:.8rem}.metrics dd{font-family:var(--font-display);font-size:var(--step-2);font-variant-numeric:tabular-nums;color:var(--accent);letter-spacing:-.01em;margin:0;font-weight:650}.tools{flex-wrap:wrap;gap:.45rem;list-style:none;display:flex}.project-toggle{z-index:2;color:var(--link);font:500 var(--step--1) / 1.4 var(--font-body);cursor:pointer;background:0 0;border:0;align-self:flex-start;align-items:center;gap:.35rem;padding:.2rem 0;display:inline-flex;position:relative}.project-toggle svg{width:1rem;height:1rem;transition:transform .25s var(--ease-out)}.project-toggle[aria-expanded=true] svg{transform:rotate(180deg)}.project-details{z-index:2;font-size:var(--step--1);margin-top:0;position:relative}.viz{width:100%;height:auto;overflow:visible}.viz .axis{stroke:#2a3456;stroke-width:1px}.viz .axis-label{fill:#6f7894;font-size:9px;font-family:var(--font-body)}.viz .viz-stat{fill:var(--accent);font-family:var(--font-display);font-variant-numeric:tabular-nums;font-size:20px;font-weight:650}.viz .viz-stat.small{font-size:13px}.viz .dot{fill:var(--v-teal);fill-opacity:.85}.viz .fit{stroke:var(--accent);stroke-width:1.5px}.viz .chance{stroke:#3a4568;stroke-dasharray:3 4}.viz .roc{fill:none;stroke:var(--v-green);stroke-width:2.2px;stroke-linecap:round}.viz .roc-area{fill:#21918c2e}.viz .gauge-track,.viz .gauge-fill{fill:none;stroke-width:7px;stroke-linecap:round}.viz .gauge-track{stroke:#1d2643}.viz .gauge-fill{stroke:var(--accent)}.viz .gauge-value{fill:var(--text);font-family:var(--font-display);font-size:15px;font-weight:650}.viz .curve{fill:none;stroke-width:2px}.viz .curve-a{stroke:var(--v-green)}.viz .curve-b{stroke:#6b8bd6}.viz .legend{font-size:10px;font-family:var(--font-body)}.viz .legend-a{fill:var(--v-green)}.viz .legend-b{fill:#6b8bd6}.viz .marker-line{stroke:var(--accent);stroke-width:1.5px;stroke-dasharray:2 3}.cell{width:100%;font-family:var(--font-code);border:1px solid var(--ink-line);border-left:3px solid var(--v-teal);background:#0a1022;border-radius:4px;min-height:12.5rem;padding:1rem 1.1rem;font-size:.82rem;line-height:1.55}.cell-row{grid-template-columns:4.6rem 1fr;gap:.4rem;display:grid}.cell-row+.cell-row{margin-top:.35rem}.cell-prompt{color:#5b6a99}.cell-out .cell-prompt{color:#b7536b}.cell-code{font:inherit;white-space:pre-wrap;color:#dfe5f5;margin:0}.cell-out .cell-code{color:var(--v-green)}@media (max-width:600px){.cell{padding:.8rem;font-size:.72rem}.cell-row{grid-template-columns:3.7rem 1fr}}.skill-groups{gap:1.75rem 3rem;display:grid}@media (min-width:900px){.skill-groups{grid-template-columns:1fr 1fr}}.skill-group{border-left:3px solid var(--group);padding-left:1.1rem}.skill-group h3{font-size:var(--step-1);margin-bottom:.8rem;font-weight:600}.skill-group ul{flex-wrap:wrap;gap:.45rem;list-style:none;display:flex}.achievements{gap:2.5rem 4rem;display:grid}@media (min-width:900px){.achievements{grid-template-columns:1.4fr 1fr}}.small-head{font-size:var(--step-3);margin-bottom:1.4rem}.award-list{gap:1.1rem;list-style:none;display:grid}.award-list li{grid-template-columns:1.6rem 1fr;align-items:start;gap:.9rem;display:grid}.award-list svg{width:1.4rem;height:1.4rem;color:var(--accent);margin-top:.15rem}.award-title{font-weight:600}.award-detail{color:var(--text-muted);font-size:var(--step--1)}.contact{padding-bottom:6rem}.contact-grid{align-items:start;gap:3rem;display:grid}@media (min-width:900px){.contact-grid{grid-template-columns:1fr minmax(0,28rem);gap:5rem}}.contact h2{font-size:var(--step-4)}.contact-lead{font-size:var(--step-1);color:var(--text-muted);max-width:32rem;margin-top:1rem}.channels{gap:.35rem;margin-top:2rem;list-style:none;display:grid}.channels a,.channel-static{color:var(--text);align-items:center;gap:.9rem;padding:.55rem 0;text-decoration:none;display:flex}.channels a:hover .channel-value{color:var(--accent)}.channel-icon{border:1px solid var(--ink-line);width:2.4rem;height:2.4rem;color:var(--link);border-radius:50%;flex:none;place-items:center;display:grid}.channel-icon svg{width:1.1rem;height:1.1rem}.channel-label{color:var(--text-muted);font-size:.78rem;display:block}.channel-value{overflow-wrap:anywhere;font-weight:500;transition:color .2s;display:block}.contact-form,.form-sent{border:1px solid var(--ink-line);border-radius:var(--r-panel);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#0d1328e0;gap:1.1rem;padding:1.6rem;display:grid}.contact-form label{font-size:var(--step--1);color:var(--text-muted);gap:.4rem;font-weight:500;display:grid}.contact-form input,.contact-form textarea{border:1px solid var(--ink-line);width:100%;color:var(--text);font:400 var(--step-0) / 1.5 var(--font-body);background:#090e1e;border-radius:4px;padding:.75rem .9rem;transition:border-color .2s}.contact-form textarea{resize:vertical;min-height:8rem}.contact-form input:focus,.contact-form textarea:focus{border-color:var(--link);outline:none}.contact-form .btn{justify-self:start}.contact-form .btn:disabled{opacity:.7;cursor:progress}.form-error{color:#ff9b8f;font-size:var(--step--1)}.form-sent{justify-items:start}.form-sent>svg{width:2rem;height:2rem;color:var(--v-green)}.form-sent-title{font-family:var(--font-display);font-size:var(--step-2);font-weight:650}.footer{z-index:1;border-top:1px solid var(--ink-line);background:var(--ink);padding-block:2rem 4.5rem;position:relative}.footer-inner{font-size:var(--step--1);color:var(--text-muted);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;display:flex}.footer-links{gap:1rem;display:flex}.footer-links a{color:var(--text-muted);width:1.3rem;height:1.3rem}.footer-links a:hover{color:var(--text)}.field-fallback{opacity:.6;width:100%;height:100%;position:absolute;inset:0}
