@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-cyrillic-ext-wght-normal.BOeWTOD4.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-cyrillic-wght-normal.DqGufNeO.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-greek-ext-wght-normal.DlzME5K_.woff2)format("woff2-variations");unicode-range:U+1F??}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-greek-wght-normal.CkhJZR-_.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-vietnamese-wght-normal.CBcvBZtf.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:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-latin-ext-wght-normal.DO1Apj_S.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:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-latin-wght-normal.Dx4kXJAl.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 Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-cyrillic-ext-400-normal.xuaO2J-f.woff2)format("woff2"),url(/_astro/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(/_astro/ibm-plex-mono-cyrillic-400-normal.BSMlKf0J.woff2)format("woff2"),url(/_astro/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(/_astro/ibm-plex-mono-vietnamese-400-normal.BulugwFq.woff2)format("woff2"),url(/_astro/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(/_astro/ibm-plex-mono-latin-ext-400-normal.BmRBH3aV.woff2)format("woff2"),url(/_astro/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(/_astro/ibm-plex-mono-latin-400-normal.DMJ8VG8y.woff2)format("woff2"),url(/_astro/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{color-scheme:light dark;--bg:light-dark(#f8fafc,#101318);--surface:light-dark(#edf1f6,#191f28);--ink:light-dark(#162334,#eef3fa);--muted:light-dark(#4d6074,#a8b7ca);--line:light-dark(#d2dce8,#303e50);--accent:light-dark(#075f9e,#88caff);--soft:light-dark(#e0eefb,#1a3046);--sans:"Inter Variable",system-ui,sans-serif;--mono:"IBM Plex Mono",ui-monospace,monospace}:root[data-theme=dark]{color-scheme:dark}:root[data-theme=light]{color-scheme:light}*{box-sizing:border-box}html{scroll-padding-top:24px}body{background:var(--bg);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;margin:0;font-size:1rem;line-height:1.65}a{color:inherit;text-underline-offset:4px;text-decoration-thickness:1px}a:hover{color:var(--accent)}button{font:inherit;color:inherit;cursor:pointer}button[hidden]{display:none}button:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid var(--accent);outline-offset:5px}::selection{background:var(--accent);color:var(--bg)}h1,h2,h3,p{margin:0}h1,h2,h3{letter-spacing:-.035em;text-wrap:balance;font-weight:550;line-height:1.14}h1{font-size:clamp(2.3rem,5vw,4.2rem)}h2{font-size:clamp(1.7rem,3vw,2.45rem)}h3{font-size:1.35rem}img{max-width:100%;height:auto;display:block}.container{width:min(1120px,100% - 64px);margin-inline:auto}.skip-link{background:var(--ink);color:var(--bg);z-index:10;padding:12px;position:absolute;transform:translateY(-200%)}.skip-link:focus{transform:translateY(0)}.site-header{border-bottom:1px solid var(--line)}.header-inner{align-items:center;gap:28px;min-height:84px;display:flex}.brand{letter-spacing:-.035em;white-space:nowrap;align-items:center;gap:12px;font-weight:600;text-decoration:none;display:flex}.brand-mark{color:var(--accent);font-family:var(--mono);font-size:1.1rem;font-weight:400}nav{gap:26px;margin-left:auto;display:flex}nav a{padding-block:12px;font-size:.875rem;text-decoration:none}nav a[aria-current]{color:var(--accent)}.theme-toggle{border:1px solid var(--line);background:0 0;border-radius:5px;align-items:center;gap:9px;min-height:40px;padding:7px 10px;font-size:.8rem;display:flex}.eyebrow,.meta,.project-number{font-family:var(--mono);letter-spacing:.035em;font-size:.75rem}.eyebrow{color:var(--accent);text-transform:uppercase}.muted,.meta{color:var(--muted)}.hero{grid-template-columns:minmax(0,2.5fr) minmax(180px,1fr);align-items:end;gap:70px;padding:48px 0 44px;display:grid}.hero h1{max-width:800px;margin:18px 0 23px;font-size:clamp(2.3rem,4.2vw,3.3rem)}.hero h1 span{color:var(--muted)}.hero-description{max-width:630px;color:var(--muted);font-size:1.05rem}.actions{flex-wrap:wrap;align-items:center;gap:24px;margin-top:27px;display:flex}.button{border:1px solid var(--ink);border-radius:5px;align-items:center;gap:15px;padding:11px 18px;font-size:.875rem;font-weight:550;text-decoration:none;display:inline-flex}.button.primary{background:var(--ink);color:var(--bg)}.button:hover{background:var(--accent);border-color:var(--accent);color:var(--bg)}.text-link{font-size:.875rem}.current{border-left:1px solid var(--line);margin-bottom:5px;padding-left:23px}.current dl{margin:17px 0 0}.current dt{margin-top:17px;font-size:.875rem}.current dd{color:var(--muted);margin:3px 0 0;font-size:.8rem}.section{border-top:1px solid var(--line);padding:48px 0}.section-head{justify-content:space-between;align-items:baseline;gap:25px;margin-bottom:27px;display:flex}.section-head h2{font-size:1.4rem}.section-head p{color:var(--muted);max-width:540px}.featured{border:1px solid var(--line);background:var(--surface);border-radius:8px;grid-template-columns:1.1fr 1fr;display:grid;overflow:hidden}.featured-copy{flex-direction:column;align-items:flex-start;padding:33px;display:flex}.featured h3{margin:19px 0 13px;font-size:1.8rem}.featured p{color:var(--muted)}.featured .text-link{margin-top:27px}.tags{color:var(--muted);font-family:var(--mono);flex-wrap:wrap;gap:8px 16px;margin-top:22px;font-size:.75rem;display:flex}.system-visual{background:var(--bg);border-left:1px solid var(--line);flex-direction:column;justify-content:center;padding:32px;display:flex}.system-visual .eyebrow{margin-bottom:18px}.flow-step{border:1px solid var(--line);border-radius:5px;align-items:center;gap:16px;padding:13px 17px;font-size:.875rem;display:flex}.flow-step span{color:var(--accent);font-family:var(--mono);font-size:.75rem}.flow-connector{color:var(--muted);padding-left:29px;line-height:1.5}.visual-caption{color:var(--muted);margin-top:17px;font-size:.75rem}.project-row{border-bottom:1px solid var(--line);grid-template-columns:35px minmax(0,1fr) auto;align-items:start;gap:18px;padding:28px 0;display:grid}.project-number{color:var(--muted);padding-top:4px}.project-row h3{margin-bottom:9px}.project-row h3 a{text-decoration:none}.project-row p{max-width:700px;color:var(--muted)}.project-row .tags{margin-top:13px}.row-link{color:var(--accent);padding:4px 8px;font-size:1.3rem;text-decoration:none}.split{grid-template-columns:.85fr 1.65fr;gap:70px;display:grid}.split h2{margin-top:14px}.split p+p{margin-top:16px}.inline-links{flex-wrap:wrap;gap:24px;margin-top:22px;display:flex}.timeline{margin:0;padding:0;list-style:none}.timeline li{border-bottom:1px solid var(--line);grid-template-columns:1fr auto;gap:4px 24px;padding:21px 0;display:grid}.timeline li:first-child{padding-top:0}.timeline strong{font-weight:550}.timeline p{color:var(--muted);grid-column:1/-1;font-size:.9rem}.timeline time{font-family:var(--mono);color:var(--muted);font-size:.75rem}.about-grid{grid-template-columns:1fr 160px;gap:40px;display:grid}.portrait{border:1px solid var(--line);border-radius:7px}.site-footer{border-top:1px solid var(--line);padding-top:46px}.contact-heading h2{margin:15px 0 22px;font-size:clamp(1.7rem,3vw,2.5rem)}.contact-email{color:var(--accent);font-size:clamp(1.1rem,2.4vw,1.6rem);text-decoration:none}.footer-bottom{border-top:1px solid var(--line);color:var(--muted);flex-wrap:wrap;justify-content:space-between;gap:20px;margin-top:42px;padding:23px 0;font-size:.8rem;display:flex}.footer-bottom div{flex-wrap:wrap;align-items:center;gap:20px;display:flex}.copy-email{text-underline-offset:4px;font-size:inherit;background:0 0;border:0;padding:0;text-decoration:underline}.copy-status{color:var(--accent);min-height:24px;font-size:.8rem}.home-projects{margin-top:-48px;margin-bottom:45px}.home-projects .project-row:last-child{border-bottom:0}.page-intro{padding:65px 0 40px}.page-intro h1{margin:17px 0 20px}.page-intro>p:last-child{color:var(--muted);max-width:640px;font-size:1.1rem}.work-page .project-row h2{margin:10px 0 12px;font-size:clamp(1.45rem,2.7vw,2rem)}.work-page .project-row h2 a{text-decoration:none}.work-page .project-row .eyebrow{color:var(--accent)}.additional-work{border-top:0;padding-top:60px}.additional-grid{grid-template-columns:1fr 1fr;gap:40px;display:grid}.additional-grid h3{margin:15px 0 12px}.additional-grid p:not(.eyebrow){color:var(--muted);margin-bottom:20px}.case-page{padding-top:35px}.back-link{color:var(--muted);font-size:.875rem}.case-header{padding:38px 0}.case-header h1{max-width:950px;margin:18px 0 22px}.case-summary{max-width:790px;color:var(--muted);font-size:1.15rem}.case-facts{border-top:1px solid var(--line);grid-template-columns:1.4fr 1.2fr 1fr;gap:30px;margin:30px 0 0;padding-top:29px;display:grid}.case-facts dt{font-size:.75rem;font-family:var(--mono);text-transform:uppercase;color:var(--muted);margin-bottom:8px}.case-facts dd{margin:0;font-size:.875rem}.case-visual{background:var(--surface);border:1px solid var(--line);border-radius:8px;margin:0 0 55px;padding:32px}.case-visual figcaption{color:var(--muted);max-width:700px;margin-top:23px;font-size:.8rem}.pipeline{grid-template-columns:repeat(3,1fr);gap:26px;margin-top:26px;display:grid}.pipeline-node{border-left:2px solid var(--accent);padding-left:18px}.pipeline-node>span{font-family:var(--mono);color:var(--accent);font-size:.75rem}.pipeline-node .diagram-title{margin:12px 0 9px}.pipeline-node p{color:var(--muted);font-size:.875rem}.camp-visual{grid-template-columns:1fr 220px;align-items:center;gap:55px;padding:35px 48px;display:grid}.camp-visual img{border-radius:10px;justify-self:center;width:auto;max-height:430px}.camp-visual h2{margin:18px 0 27px}.workflow-pair{grid-template-columns:1fr 1fr;gap:20px;display:grid}.workflow-pair h3{margin-bottom:10px;font-size:1rem}.workflow-pair p{color:var(--muted);font-size:.875rem}.evaluation-grid{grid-template-columns:1fr 1fr;gap:30px;margin-top:22px;display:grid}.eval-number{letter-spacing:-.04em;color:var(--accent);font-size:clamp(2.5rem,5vw,4rem);line-height:1.2}.evaluation-grid .eval-title{margin:15px 0 6px;font-size:1.1rem}.evaluation-grid p{color:var(--muted)}.case-body{grid-template-columns:230px minmax(0,1fr);gap:60px;margin-bottom:65px;display:grid}.case-toc ol{margin:16px 0;padding:0;list-style:none}.case-toc li{margin:12px 0}.case-toc a{color:var(--muted);font-size:.875rem;text-decoration:none}.case-toc a:hover{color:var(--accent)}.prose{overflow-wrap:anywhere;max-width:720px}.prose h2{margin:42px 0 20px;font-size:1.7rem}.prose h2:first-child{margin-top:0}.prose h3{margin:29px 0 13px;font-size:1.15rem}.prose p{color:var(--muted);margin:0 0 18px;line-height:1.8}.prose strong{color:var(--ink);font-weight:600}.prose a{color:var(--accent)}.next-project{border-top:1px solid var(--line);padding:30px 0 40px;text-decoration:none;display:block}.next-project h2{margin-top:13px;font-size:1.7rem}@media (width<=760px){.case-body{grid-template-columns:1fr;gap:25px}.case-toc{border-bottom:1px solid var(--line);padding-bottom:18px}.case-toc ol{flex-wrap:wrap;gap:4px 20px;display:flex}.case-toc li{margin:5px 0}.case-facts{grid-template-columns:1fr 1fr}.case-facts>div:first-child{grid-column:1/-1}.camp-visual{grid-template-columns:1fr 150px;gap:25px;padding:26px}}@media (width<=640px){.home-projects{margin-top:-34px;margin-bottom:30px}.additional-grid{grid-template-columns:1fr;gap:35px}.page-intro{padding:35px 0}.case-header{padding-top:28px}.case-facts{gap:20px}.case-visual{margin-bottom:30px;padding:23px}.pipeline{grid-template-columns:1fr;gap:23px}.pipeline-node{grid-template-columns:25px 1fr;gap:4px 12px;display:grid}.pipeline-node .diagram-title{margin:0;font-size:1.1rem}.pipeline-node p{grid-column:2}.camp-visual{grid-template-columns:1fr}.camp-visual img{width:180px;max-height:none}.workflow-pair{grid-template-columns:1fr 1fr}.evaluation-grid{gap:18px}.evaluation-grid .eval-title{line-height:1.4}.evaluation-grid p{font-size:.875rem}.prose h2{font-size:1.55rem}}@media (width<=900px){.hero{grid-template-columns:1fr;gap:20px}.current{display:none}.split{grid-template-columns:1fr 1.7fr;gap:35px}.header-inner{gap:20px}nav{gap:18px}}@media (width<=640px){.container{width:calc(100% - 36px)}.header-inner{flex-wrap:wrap;gap:4px 14px;min-height:0;padding:16px 0 9px}.brand{font-size:.95rem}nav{order:3;gap:24px;width:100%;margin:0}nav a{min-height:44px}.theme-toggle{min-height:38px;margin-left:auto;padding:6px 8px}[data-theme-label]{display:none}.hero{padding:36px 0 39px}.hero h1{margin:14px 0 20px;font-size:2.45rem}.hero-description{font-size:1rem}.actions{gap:19px;margin-top:23px}.section{padding:34px 0}.section-head{align-items:start;gap:16px}.section-head h2{font-size:1.25rem}.featured{grid-template-columns:1fr}.featured-copy{padding:24px}.featured h3{font-size:1.55rem}.system-visual{border-left:0;border-top:1px solid var(--line);padding:24px}.split{grid-template-columns:1fr;gap:24px}.project-row{grid-template-columns:24px minmax(0,1fr) 24px;gap:10px;padding:24px 0}.project-row h3{font-size:1.25rem}.timeline li{grid-template-columns:1fr}.about-grid{grid-template-columns:1fr;gap:22px}.portrait{width:110px}.footer-bottom{gap:17px}.footer-bottom a,.copy-email{padding-block:8px}}@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}a,button{transition:color .15s,background-color .15s,border-color .15s}}@media print{.site-header,.site-footer,.actions{display:none}:root{color-scheme:light}.container{width:100%}.hero,.section{padding:18px 0}a{text-decoration:none}}.pipeline-node .diagram-title,.evaluation-grid .eval-title{color:var(--ink);font-weight:550;line-height:1.2}
