@font-face{font-family:Space Grotesk;font-style:normal;font-weight:300 700;font-display:swap;src:url(/fonts/space-grotesk-vietnamese-wght-normal.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Space Grotesk;font-style:normal;font-weight:300 700;font-display:swap;src:url(/fonts/space-grotesk-latin-wght-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Space Grotesk;font-style:normal;font-weight:300 700;font-display:swap;src:url(/fonts/space-grotesk-latin-ext-wght-normal.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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:Be Vietnam Pro;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/be-vietnam-pro-vietnamese-400-normal.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/be-vietnam-pro-latin-400-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/be-vietnam-pro-latin-ext-400-normal.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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:Be Vietnam Pro;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/be-vietnam-pro-vietnamese-500-normal.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/be-vietnam-pro-latin-500-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/be-vietnam-pro-latin-ext-500-normal.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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:Be Vietnam Pro;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/be-vietnam-pro-vietnamese-600-normal.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/be-vietnam-pro-latin-600-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Be Vietnam Pro;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/be-vietnam-pro-latin-ext-600-normal.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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:JetBrains Mono;font-style:normal;font-weight:400 700;font-display:swap;src:url(/fonts/jetbrains-mono-vietnamese-wght-normal.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400 700;font-display:swap;src:url(/fonts/jetbrains-mono-latin-wght-normal.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400 700;font-display:swap;src:url(/fonts/jetbrains-mono-latin-ext-wght-normal.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,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}:root{--brand: #3b4c9f;--brand-deep: #2b3878;--brand-soft: #eef0fa;--brand-2: #26a7df;--brand-2-deep: #1b7fa8;--accent: #e0365e;--accent-soft: #fceef2;--paper: #f4f3ee;--sheet: #ffffff;--ink: #12183a;--ink-2: #1d2450;--text: #161b33;--text-2: #5a6280;--text-3: #676e80;--on-ink: #f4f3ee;--on-ink-2: #a7adcb;--on-ink-3: #7e86b2;--line: #ddd9cf;--line-2: #c3bfb1;--line-ink: #2e3565;--ok: #0f7a5a;--ok-soft: #e7f4ef;--code-key: #ff7f9f;--code-str: #8fd6f5;--code-num: #c3adff;--code-fn: #adc2ff;--code-type: #7fe3c4;--t-research: #3b4c9f;--t-engineering: #1b7fa8;--t-competition: #c22b50;--t-learning: #7a5af5;--f-display: "Space Grotesk", "Be Vietnam Pro", system-ui, sans-serif;--f-body: "Be Vietnam Pro", system-ui, -apple-system, "Segoe UI", sans-serif;--f-mono: "JetBrains Mono", ui-monospace, "Cascadia Mono", "DejaVu Sans Mono", "Liberation Mono", Menlo, monospace;--f-math: "STIX Two Math", "Cambria Math", "Latin Modern Math", "DejaVu Math TeX Gyre", serif;--t-d1: clamp(2.125rem, 1.2rem + 3.9vw, 4.375rem);--t-d2: clamp(1.6875rem, 1.2rem + 2vw, 2.75rem);--t-d3: clamp(1.375rem, 1.2rem + .75vw, 1.875rem);--t-title: clamp(1.125rem, 1.05rem + .3vw, 1.3125rem);--t-lg: clamp(1rem, .95rem + .2vw, 1.125rem);--t-body: clamp(.9375rem, .92rem + .1vw, 1rem);--t-sm: clamp(.8125rem, .8rem + .1vw, .875rem);--t-meta: clamp(.6875rem, .67rem + .1vw, .75rem);--t-num: clamp(1.875rem, 1.2rem + 2.8vw, 3.25rem);--s1: .25rem;--s2: .5rem;--s3: .75rem;--s4: 1rem;--s5: 1.5rem;--s6: 2rem;--s7: 3rem;--s8: 4rem;--s9: 6rem;--s10: 8rem;--gutter: clamp(1.25rem, .6rem + 2.8vw, 2.5rem);--maxw: 75rem;--r-row: 2px;--r-ui: 4px;--r-media: 10px;--shadow: 0 1px 2px rgb(18 24 58 / .06), 0 8px 24px -16px rgb(18 24 58 / .18);--ease: cubic-bezier(.2, .7, .3, 1);--dur-1: .16s;--dur-2: .24s;--dur-3: .32s;--grid-line: rgb(59 76 159 / .05);--grid-pitch: 28px}@media(prefers-reduced-motion:reduce){:root{--dur-1: 0s;--dur-2: 0s;--dur-3: 0s}}[data-portal]{--p-bg: #f2f2ef;--p-surface: #ffffff;--p-surface-2: #fafaf8;--p-raised: #ffffff;--p-line: #e2e0d9;--p-line-2: #cfccc2;--p-text: #171c34;--p-text-2: #5c6382;--p-text-3: #7b8199;--p-accent: #3b4c9f;--p-accent-2: #eef0fa;--p-accent-text: #ffffff;--p-ok: #0f7a5a;--p-ok-bg: #e6f4ee;--p-warn: #9a6207;--p-warn-bg: #fdf3e0;--p-risk: #c22b50;--p-risk-bg: #fceef2;--p-info: #1b7fa8;--p-info-bg: #e6f4fa;--p-idle: #676e80;--p-idle-bg: #eeeeea;--p-shadow: 0 1px 2px rgb(18 24 58 / .05), 0 6px 20px -14px rgb(18 24 58 / .22);--p-overlay: rgb(18 24 58 / .34);--p-t-body: .875rem;--p-t-sm: .8125rem;--p-t-meta: .6875rem;--p-t-h: 1.0625rem;--p-t-d: 1.375rem;--p-rail: 15rem;--p-top: 3.25rem}[data-portal=dark]{--p-bg: #0d0f1c;--p-surface: #14172a;--p-surface-2: #191d33;--p-raised: #1b1f38;--p-line: #262b47;--p-line-2: #363c5e;--p-text: #e9eaf2;--p-text-2: #a3a9c8;--p-text-3: #767d9f;--p-accent: #7d92ef;--p-accent-2: #1e2545;--p-accent-text: #0d0f1c;--p-ok: #4dd4a4;--p-ok-bg: #12291f;--p-warn: #e8b45c;--p-warn-bg: #2c2110;--p-risk: #ff7f9f;--p-risk-bg: #2e1520;--p-info: #6fc9ec;--p-info-bg: #10242e;--p-idle: #8b91ab;--p-idle-bg: #1c2036;--p-shadow: 0 1px 2px rgb(0 0 0 / .4), 0 8px 24px -14px rgb(0 0 0 / .6);--p-overlay: rgb(4 5 12 / .6)}*,*:before,*:after{box-sizing:border-box}*{margin:0}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;overflow-x:clip}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}body{font-family:var(--f-body);font-size:var(--t-body);line-height:1.6;color:var(--text);background:var(--paper);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:clip}img,svg,video{display:block;max-width:100%}button,input,select,textarea{font:inherit;color:inherit}a{color:inherit;text-decoration:none}ul,ol{list-style:none;padding:0}h1,h2,h3,h4{font-weight:500;line-height:1.15;text-wrap:balance}p{text-wrap:pretty}:target{scroll-margin-top:6rem}::selection{background:var(--brand);color:#fff}:focus-visible{outline:2px solid var(--brand);outline-offset:3px;border-radius:2px}.on-ink :focus-visible{outline-color:var(--brand-2)}.skip{position:absolute;left:var(--s4);top:-4rem;z-index:100;background:var(--brand);color:#fff;padding:var(--s3) var(--s4);border-radius:var(--r-ui);font-weight:600;transition:top var(--dur-2) var(--ease)}.skip:focus{top:var(--s4)}.d1{font-family:var(--f-display);font-size:var(--t-d1);font-weight:700;letter-spacing:-.03em;line-height:1.02}.d2{font-family:var(--f-display);font-size:var(--t-d2);font-weight:700;letter-spacing:-.025em;line-height:1.06}.d3{font-family:var(--f-display);font-size:var(--t-d3);font-weight:500;letter-spacing:-.02em;line-height:1.15}.title{font-size:var(--t-title);font-weight:600;letter-spacing:-.01em;line-height:1.3}.lead{font-size:var(--t-lg);color:var(--text-2);line-height:1.62}.small{font-size:var(--t-sm)}.muted{color:var(--text-2)}.dim{color:var(--text-3)}.meta{font-family:var(--f-mono);font-size:var(--t-meta);font-weight:500;letter-spacing:.06em;text-transform:uppercase;font-variant-numeric:tabular-nums}.num{font-family:var(--f-display);font-size:var(--t-num);font-weight:700;letter-spacing:-.03em;line-height:1;font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1}.wrap{max-width:var(--maxw);margin-inline:auto;padding-inline:var(--gutter)}.band{padding-block:clamp(3rem,1.5rem + 5vw,6rem)}.band+.band{border-top:1px solid var(--line)}.band--sheet{background:var(--sheet)}.band--tight{padding-block:clamp(2rem,1rem + 3vw,3.5rem)}.band--ink{background:var(--ink);color:var(--on-ink);border-top:none}.band--ink+.band{border-top:none}.on-ink{color:var(--on-ink)}.on-ink .muted,.on-ink .lead{color:var(--on-ink-2)}.on-ink .dim{color:var(--on-ink-3)}.grid-bg{position:relative;isolation:isolate}.grid-bg:before{content:"";position:absolute;inset:0;z-index:-1;background-image:linear-gradient(to right,var(--grid-line) 1px,transparent 1px),linear-gradient(to bottom,var(--grid-line) 1px,transparent 1px);background-size:var(--grid-pitch) var(--grid-pitch);mask-image:linear-gradient(to bottom,#000 0%,#000 55%,transparent 100%)}.reveal{opacity:0;transform:translateY(12px)}.reveal.in{opacity:1;transform:none;transition:opacity var(--dur-3) var(--ease),transform var(--dur-3) var(--ease)}@media(prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none}}.pre{white-space:pre-line}.row{display:flex;align-items:center;gap:var(--s3)}.row-wrap{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s3)}.stack{display:grid;gap:var(--s3)}.between{display:flex;align-items:baseline;justify-content:space-between;gap:var(--s4);flex-wrap:wrap}.sr{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.hairline{border:0;border-top:1px solid var(--line)}.on-ink .hairline{border-color:var(--line-ink)}.scroll-x{display:flex;gap:var(--s3);overflow-x:auto;scroll-snap-type:x proximity;scrollbar-width:thin;padding-bottom:var(--s2);-webkit-overflow-scrolling:touch}.scroll-x>*{scroll-snap-align:start;flex:none}.btn{display:inline-flex;align-items:center;gap:.55em;min-height:44px;padding:.6rem 1.15rem;background:var(--brand);color:#fff;font-weight:600;font-size:var(--t-sm);border:1px solid var(--brand);border-radius:var(--r-ui);cursor:pointer;white-space:nowrap;transition:background var(--dur-1) var(--ease),border-color var(--dur-1) var(--ease),transform var(--dur-1) var(--ease)}.btn:hover{background:var(--brand-deep);border-color:var(--brand-deep)}.btn:active{transform:translateY(1px)}.btn[disabled]{opacity:.5;cursor:not-allowed}.btn--ghost{background:transparent;color:var(--brand);border-color:var(--line-2)}.btn--ghost:hover{background:var(--brand-soft);border-color:var(--brand);color:var(--brand-deep)}.on-ink .btn--ghost{color:var(--on-ink);border-color:var(--line-ink)}.on-ink .btn--ghost:hover{background:var(--ink-2);border-color:var(--brand-2);color:#fff}.btn--sm{min-height:36px;padding:.35rem .75rem}.tlink{display:inline-flex;align-items:center;gap:.4em;font-weight:600;font-size:var(--t-sm);color:var(--brand);padding-block:.35rem;border-bottom:1px solid var(--line-2);transition:border-color var(--dur-1) var(--ease),color var(--dur-1) var(--ease)}.tlink:hover{border-color:var(--brand);color:var(--brand-deep)}.on-ink .tlink{color:var(--brand-2);border-color:var(--line-ink)}.on-ink .tlink:hover{border-color:var(--brand-2);color:#fff}.arr{transition:transform var(--dur-1) var(--ease)}a:hover>.arr,.btn:hover .arr,.tlink:hover .arr{transform:translate(2px)}.tag{display:inline-flex;align-items:center;gap:.4em;font-family:var(--f-mono);font-size:var(--t-meta);font-weight:500;letter-spacing:.07em;text-transform:uppercase;padding:.18rem .45rem;border:1px solid currentColor;border-radius:var(--r-ui);color:var(--text-2);white-space:nowrap}.tag--ok{color:var(--ok)}.tag--live{color:var(--accent)}.tag--brand{color:var(--brand)}.tag--plain{border-color:var(--line);color:var(--text-2)}.on-ink .tag--plain{border-color:var(--line-ink);color:var(--on-ink-2)}.pulse{width:6px;height:6px;border-radius:50%;background:currentColor}@media(prefers-reduced-motion:no-preference){.pulse{animation:pulse 2.4s var(--ease) infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.35}}}.dt{display:inline-flex;align-items:center;gap:.4em;font-size:var(--t-sm);color:var(--text-2);white-space:nowrap}.dt:before{content:"";width:7px;height:7px;border-radius:50%;background:var(--dc, var(--text-3));flex:none}.dt--research{--dc: var(--t-research)}.dt--engineering{--dc: var(--t-engineering)}.dt--competition{--dc: var(--t-competition)}.dt--learning{--dc: var(--t-learning)}.sh{margin-bottom:var(--s5)}.sh__note{font-size:var(--t-sm);color:var(--text-3);margin-top:var(--s2);max-width:46ch}.on-ink .sh__note{color:var(--on-ink-3)}.foot-note{font-size:var(--t-sm);color:var(--text-3);margin-top:var(--s4)}.foot-note:before{content:"⌐ "}.metrics{display:grid;grid-template-columns:1.5fr repeat(3,1fr);border-top:1px solid var(--line-2)}.metrics>:first-child .metric__n{font-size:calc(var(--t-num) * 1.2)}@media(max-width:900px){.metrics{grid-template-columns:1fr 1fr}}@media(max-width:420px){.metrics{grid-template-columns:1fr}}.metric{display:block;padding:var(--s5) var(--s4) var(--s5) 0;border-bottom:1px solid var(--line);transition:background var(--dur-1) var(--ease)}.metric+.metric{border-left:1px solid var(--line);padding-left:var(--s4)}.metric:hover{background:var(--sheet)}.metric__n{color:var(--brand)}.metric__l{display:block;margin-top:var(--s2);font-family:var(--f-mono);font-size:var(--t-meta);letter-spacing:.08em;text-transform:uppercase}.metric__s{display:flex;align-items:center;gap:.35em;margin-top:var(--s1);font-size:var(--t-sm);color:var(--text-3)}.tracks{border-top:1px solid var(--line-2)}.track{display:grid;align-items:start;gap:var(--s2) var(--s5);grid-template-columns:minmax(10rem,1fr) minmax(0,1.6fr) minmax(0,1.1fr) auto;padding:var(--s5) 0;border-bottom:1px solid var(--line);transition:background var(--dur-1) var(--ease)}.track:hover{background:var(--sheet)}.track__n{display:flex;align-items:center;gap:.55em;font-family:var(--f-display);font-size:var(--t-title);font-weight:700;letter-spacing:-.01em}.track__n:before{content:"";width:10px;height:10px;border-radius:50%;background:var(--dc);flex:none}.track__e{font-size:var(--t-sm);color:var(--text-2)}.track__e b{font-family:var(--f-mono);font-weight:500;color:var(--text);font-variant-numeric:tabular-nums}.track__go{align-self:center;color:var(--brand)}@media(max-width:900px){.track{grid-template-columns:1fr auto}.track__n{grid-column:1}.track__go{grid-row:1;grid-column:2;align-self:start}.track__d,.track__e{grid-column:1 / -1}}.now{border-top:1px solid var(--line-ink)}.now__i{display:grid;align-items:center;gap:var(--s2) var(--s4);grid-template-columns:9.5rem 5rem minmax(0,1fr) auto;padding:var(--s4) 0;border-bottom:1px solid var(--line-ink);transition:background var(--dur-1) var(--ease)}a.now__i:hover{background:var(--ink-2)}.now__i>.tag{justify-self:start}.now__d{font-family:var(--f-mono);font-size:var(--t-meta);color:var(--on-ink-3);font-variant-numeric:tabular-nums}.now__t{font-size:var(--t-lg);color:var(--on-ink)}@media(max-width:760px){.now__i{grid-template-columns:auto 1fr auto}.now__t{grid-column:1 / -1}}.board{border-top:1px solid var(--line-2)}.aw{display:grid;gap:var(--s1) var(--s4);grid-template-columns:1.75rem minmax(0,1fr) 3rem 12.5rem 1.25rem;padding:var(--s4) 0;align-items:start;border-bottom:1px solid var(--line);transition:background var(--dur-1) var(--ease)}.aw:hover{background:var(--sheet)}.aw__r{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;font-family:var(--f-mono);font-size:.7rem;font-weight:500;border:1px solid var(--line-2);color:var(--text-3)}.aw__r--1{background:var(--brand);border-color:var(--brand);color:#fff}.aw__r--2{border-color:var(--brand);color:var(--brand)}.aw__r--3{border-color:var(--brand-2-deep);color:var(--brand-2-deep)}.aw__c{display:grid;gap:.3rem;font-weight:600;letter-spacing:-.01em;line-height:1.35}.aw__p{font-family:var(--f-mono);font-size:var(--t-meta);font-weight:500;letter-spacing:.06em;text-transform:uppercase;color:var(--t-competition)}.aw__y{font-family:var(--f-mono);font-size:var(--t-sm);color:var(--text-2);font-variant-numeric:tabular-nums;padding-top:.15rem}.aw__d{display:grid;gap:.15rem;justify-items:start;padding-top:.1rem}.aw__go{color:var(--brand);padding-top:.15rem}@media(max-width:900px){.aw{grid-template-columns:1.75rem minmax(0,1fr) 3rem}.aw__d{grid-column:2 / -1;margin-top:var(--s2)}.aw__go{display:none}}.pubs{border-top:1px solid var(--line-2)}.pub{display:grid;gap:var(--s1) var(--s5);grid-template-columns:3.5rem minmax(0,1fr);padding:var(--s4) 0;border-bottom:1px solid var(--line)}.pub__y{font-family:var(--f-mono);font-size:var(--t-sm);font-weight:500;color:var(--brand);font-variant-numeric:tabular-nums;padding-top:.15rem}.pub__t{font-size:var(--t-lg);font-weight:600;letter-spacing:-.012em;line-height:1.35}a.pub__t:hover{color:var(--brand)}.pub__a{font-size:var(--t-sm);color:var(--text-2);margin-top:.2rem}.pub__f{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s2) var(--s4);margin-top:var(--s2)}.pub__v{font-family:var(--f-mono);font-size:var(--t-meta);letter-spacing:.05em;color:var(--text);background:var(--brand-soft);padding:.15rem .45rem;border-radius:var(--r-ui)}@media(max-width:640px){.pub{grid-template-columns:1fr}.pub__y{padding-top:0}}.projects{display:grid;gap:var(--s5);grid-template-columns:repeat(auto-fill,minmax(min(100%,17rem),1fr))}.pj{display:flex;flex-direction:column;background:var(--sheet);border:1px solid var(--line);border-radius:var(--r-media);overflow:hidden;transition:border-color var(--dur-1) var(--ease),transform var(--dur-2) var(--ease)}.pj:hover{border-color:var(--brand);transform:translateY(-2px)}.pj__m{aspect-ratio:16 / 10;background:var(--brand-soft);overflow:hidden}.pj__m img{width:100%;height:100%;object-fit:cover}.pj__m--aw{display:grid;place-content:center;gap:var(--s2);padding:var(--s5);text-align:center}.pj__m--aw>span:last-child{font-size:var(--t-sm);color:var(--text-2)}.pj__p{font-family:var(--f-mono);font-size:var(--t-meta);letter-spacing:.08em;text-transform:uppercase;color:var(--brand)}.pj__s{display:flex;flex-wrap:wrap;gap:var(--s2);align-items:center;padding:var(--s3) var(--s4);border-bottom:1px solid var(--line)}.pj__b{padding:var(--s4);display:grid;gap:var(--s2);flex:1;align-content:start}.pj--c .pj__b p{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;line-clamp:3;overflow:hidden}.pj__k{font-family:var(--f-mono);font-size:var(--t-meta);letter-spacing:.08em;text-transform:uppercase;color:var(--text-3)}.chips{display:flex;flex-wrap:wrap;gap:var(--s2)}.chip{display:inline-flex;align-items:center;gap:var(--s2);padding:.3rem .75rem .3rem .3rem;background:var(--sheet);border:1px solid var(--line);border-radius:999px;font-size:var(--t-sm);transition:border-color var(--dur-1) var(--ease),background var(--dur-1) var(--ease)}.chip:hover{border-color:var(--brand)}.chip__av{width:30px;height:30px;border-radius:50%;object-fit:cover;background:var(--brand-soft);flex:none}.chip__i{display:grid;place-items:center;font-family:var(--f-mono);font-size:.6rem;color:var(--brand);font-weight:600}.chip__c{font-family:var(--f-mono);font-size:var(--t-meta);color:var(--text-3)}.people{display:grid;gap:var(--s4);grid-template-columns:repeat(auto-fill,minmax(min(100%,11rem),1fr))}.person{display:grid;gap:var(--s2);justify-items:start}.person__av{width:84px;height:84px;border-radius:50%;object-fit:cover;background:var(--brand-soft)}.person__n{font-weight:600;font-size:var(--t-sm);line-height:1.3}.person__m{font-family:var(--f-mono);font-size:var(--t-meta);color:var(--brand);overflow-wrap:anywhere}.person__r{font-family:var(--f-mono);font-size:var(--t-meta);letter-spacing:.06em;text-transform:uppercase;color:var(--text-3)}a.person:hover .person__n{color:var(--brand)}.acts{display:grid;gap:var(--s5);grid-template-columns:repeat(auto-fill,minmax(min(100%,18rem),1fr))}.act{display:grid;gap:var(--s3);align-content:start}.act__m{aspect-ratio:16 / 9;border-radius:var(--r-media);overflow:hidden;background:var(--brand-soft)}.act__m--empty{display:grid;place-items:center;color:var(--brand);font-family:var(--f-mono);font-size:var(--t-meta);letter-spacing:.12em}.act__m img{width:100%;height:100%;object-fit:cover;transition:transform var(--dur-3) var(--ease)}.act:hover .act__m--empty{display:grid;place-items:center;color:var(--brand);font-family:var(--f-mono);font-size:var(--t-meta);letter-spacing:.12em}.act__m img{transform:scale(1.03)}.act__t{font-weight:600;font-size:var(--t-lg);letter-spacing:-.012em;line-height:1.35}.act:hover .act__t{color:var(--brand)}.lead-note{display:grid;grid-template-columns:11rem minmax(0,1fr);gap:var(--s5) var(--s7);align-items:start}.lead-note__m{display:grid;justify-items:start;gap:var(--s3);padding-top:.5rem}.lead-note__c{display:grid;gap:var(--s4);justify-items:start}.lead-note__t{font-family:var(--f-display);font-size:var(--t-d2);font-weight:700;letter-spacing:-.025em;line-height:1.08;max-width:24ch}.lead-note__c .lead{max-width:58ch}.lead-note:hover .lead-note__t{color:var(--brand)}.lead-note:hover .tlink{border-color:var(--brand);color:var(--brand-deep)}@media(max-width:760px){.lead-note{grid-template-columns:minmax(0,1fr);gap:var(--s4)}.lead-note__m{grid-auto-flow:column;justify-content:start;align-items:center;padding-top:0}}.note{display:grid;align-items:start;gap:var(--s2) var(--s5);grid-template-columns:6rem minmax(0,1fr) auto;padding:var(--s5) 0;border-bottom:1px solid var(--line);transition:background var(--dur-1) var(--ease)}.note:hover{background:var(--sheet)}.note__d{font-family:var(--f-mono);font-size:var(--t-sm);color:var(--text-2);font-variant-numeric:tabular-nums;padding-top:.25rem}.note__c{display:grid;gap:var(--s2);max-width:62ch}.note__t{font-family:var(--f-display);font-size:var(--t-title);font-weight:600;letter-spacing:-.015em;line-height:1.3}.note:hover .note__t{color:var(--brand)}.note__f{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s2) var(--s4)}.note__k{display:grid;justify-items:end;gap:var(--s1);padding-top:.25rem;text-align:right}.note__tp{font-family:var(--f-mono);font-size:var(--t-meta);font-weight:500;letter-spacing:.06em;text-transform:uppercase;color:var(--brand)}@media(max-width:760px){.note{grid-template-columns:minmax(0,1fr);gap:var(--s2)}.note__k{justify-items:start;text-align:left;grid-auto-flow:column;justify-content:start;gap:var(--s3);padding-top:0}}.art{display:grid;grid-template-columns:minmax(0,68ch) minmax(11rem,15rem);gap:var(--s8);align-items:start;justify-content:space-between}.art__head .d2{max-width:22ch}.art__deck{margin-top:var(--s4);max-width:54ch}.art__by{margin-top:var(--s5);gap:var(--s3) var(--s5)}.art__body{min-width:0;grid-column:1;grid-row:1}.art__tags{margin-top:var(--s7);gap:var(--s2)}.art__rail{grid-column:2;grid-row:1;position:sticky;top:5.5rem;display:grid;gap:var(--s3);max-height:calc(100vh - 7rem);overflow-y:auto}.toc{display:grid;gap:var(--s2);border-left:1px solid var(--line-2);padding-left:var(--s4)}.toc a{font-size:var(--t-sm);color:var(--text-2);line-height:1.35}.toc a:hover{color:var(--brand)}.toc__sub{padding-left:var(--s4)}.toc__sub a{font-size:var(--t-meta);font-family:var(--f-mono);letter-spacing:.02em;color:var(--text-3)}@media(max-width:1080px){.art{grid-template-columns:minmax(0,1fr);gap:var(--s5)}.art__body,.art__rail{grid-column:1}.art__rail{grid-row:1;position:static;max-height:none;overflow:visible}.art__body{grid-row:2}.toc{display:flex;flex-wrap:wrap;gap:0 var(--s4);border-left:0;border-top:1px solid var(--line);padding:var(--s2) 0 0}.toc a{display:block;padding-block:.4rem}.toc__sub{display:none}}.pager{display:grid;grid-template-columns:1fr 1fr;gap:var(--s5);margin-top:var(--s8);padding-top:var(--s4);border-top:1px solid var(--line-2)}.pager__i{display:grid;gap:var(--s2);align-content:start}.pager__i--r{text-align:right}.pager__t{font-family:var(--f-display);font-size:var(--t-lg);font-weight:600;letter-spacing:-.015em;line-height:1.3}.pager__i:hover .pager__t{color:var(--brand)}@media(max-width:620px){.pager{grid-template-columns:1fr}.pager__i--r{text-align:left}}.filters{display:flex;flex-wrap:wrap;gap:var(--s3) var(--s4);align-items:end}.fsel{display:grid;gap:var(--s1);min-width:8.5rem}.fsel__l{font-family:var(--f-mono);font-size:var(--t-meta);letter-spacing:.08em;text-transform:uppercase;color:var(--text-3)}.fsel select{min-height:40px;max-width:15rem;padding:0 2.1rem 0 .7rem;font:inherit;font-size:var(--t-sm);color:var(--text);background:var(--sheet) no-repeat right .65rem center;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' fill='none' stroke='%23676e80' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m1 1.5 5 5 5-5'/%3E%3C/svg%3E");border:1px solid var(--line);border-radius:var(--r-ui);appearance:none;cursor:pointer;transition:border-color var(--dur-1) var(--ease)}.fsel select:hover{border-color:var(--line-2)}.fsel select:focus-visible{border-color:var(--brand);outline:2px solid var(--brand);outline-offset:1px}.fsel[data-on="1"] select{border-color:var(--brand);color:var(--brand);font-weight:600}.fsel__x{align-self:end}.fchip{min-height:36px;padding:.3rem .7rem;background:transparent;border:1px solid var(--line);border-radius:var(--r-ui);font-size:var(--t-sm);cursor:pointer;color:var(--text-2);white-space:nowrap;transition:all var(--dur-1) var(--ease)}.fchip:hover{border-color:var(--line-2);color:var(--text)}.fchip[aria-pressed=true]{background:var(--brand);border-color:var(--brand);color:#fff;font-weight:600}.fchip__n{font-family:var(--f-mono);font-size:.68em;opacity:.7;margin-left:.35em;font-variant-numeric:tabular-nums}@media(max-width:520px){.fsel{min-width:0;flex:1 1 8.5rem}.fsel select{max-width:none;width:100%}}.search{display:flex;align-items:center;gap:var(--s2);background:var(--sheet);border:1px solid var(--line);border-radius:var(--r-ui);padding:0 var(--s3)}.search:focus-within{border-color:var(--brand)}.search input{flex:1;min-height:44px;border:0;background:none;outline:none;font-size:var(--t-body)}.count{font-family:var(--f-mono);font-size:var(--t-meta);letter-spacing:.06em;color:var(--text-3);font-variant-numeric:tabular-nums}.tl{display:grid;grid-template-columns:repeat(5,1fr);gap:var(--s4);position:relative}.tl:before{content:"";position:absolute;left:0;right:0;top:13px;border-top:1px dashed var(--line-2)}.tl__s{position:relative;display:grid;gap:var(--s2);align-content:start}.tl__n{width:27px;height:27px;border-radius:50%;display:grid;place-items:center;background:var(--paper);border:1px solid var(--brand);color:var(--brand);font-family:var(--f-mono);font-size:.7rem;font-weight:600}.tl__l{font-family:var(--f-display);font-weight:700;font-size:var(--t-lg);letter-spacing:-.01em}@media(max-width:860px){.tl{grid-template-columns:1fr;gap:var(--s5)}.tl:before{inset:0 auto 0 13px;border-top:0;border-left:1px dashed var(--line-2)}.tl__s{grid-template-columns:27px 1fr;column-gap:var(--s4)}.tl__n{grid-row:1 / span 2}}.nav{position:sticky;top:0;z-index:50;background:color-mix(in srgb,var(--paper) 88%,transparent);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}.nav__in{display:flex;align-items:center;gap:var(--s5);min-height:68px}.brand{display:flex;align-items:center;gap:var(--s3);flex:none}.brand img{width:34px;height:34px}.brand__n{display:block;font-family:var(--f-display);font-weight:700;font-size:.95rem;letter-spacing:-.01em;line-height:1.1}.brand__s{display:block;font-family:var(--f-mono);font-size:.6rem;letter-spacing:.12em;text-transform:uppercase;color:var(--text-3)}.nav__l{display:flex;align-items:center;gap:var(--s5);margin-left:auto}.nav__a{position:relative;font-size:var(--t-sm);font-weight:500;color:var(--text-2);padding-block:.4rem;transition:color var(--dur-1) var(--ease)}.nav__a:hover{color:var(--text)}.nav__a:after{content:"";position:absolute;left:0;right:0;bottom:-2px;height:2px;background:var(--brand);transform:scaleX(0);transform-origin:left;transition:transform var(--dur-2) var(--ease)}.nav__a:hover:after{transform:scaleX(.35)}.nav__a.is-on{color:var(--brand);font-weight:600}.nav__a.is-on:after{transform:scaleX(1)}.lang{display:flex;gap:1px;font-family:var(--f-mono);font-size:var(--t-meta)}.lang button{min-height:32px;padding:.2rem .45rem;background:none;border:1px solid var(--line);cursor:pointer;color:var(--text-3)}.lang button:first-child{border-radius:var(--r-ui) 0 0 var(--r-ui)}.lang button:last-child{border-radius:0 var(--r-ui) var(--r-ui) 0}.lang button[aria-pressed=true]{background:var(--text);border-color:var(--text);color:var(--paper)}.burger{display:none;min-height:44px;min-width:44px;background:none;border:1px solid var(--line);border-radius:var(--r-ui);cursor:pointer}.drawer{display:none}@media(max-width:1080px){.nav__l{display:none}.burger{display:grid;place-items:center;margin-left:auto}.drawer.is-open{display:block;border-top:1px solid var(--line);background:var(--paper)}.drawer ul{display:grid}.drawer a{display:block;padding:var(--s4) 0;border-bottom:1px solid var(--line);font-size:var(--t-lg);font-weight:500}.drawer a.is-on{color:var(--brand)}.drawer__f{display:flex;align-items:center;justify-content:space-between;gap:var(--s4);padding-block:var(--s4)}.drawer__f>*{flex:none}}.sticky-cta{position:fixed;left:var(--s4);right:var(--s4);bottom:var(--s4);z-index:40;display:none;justify-content:center;box-shadow:var(--shadow)}@media(max-width:720px){.sticky-cta.is-on{display:flex}}body[data-drawer=open] .sticky-cta{display:none}.hero{padding-block:clamp(2.5rem,1rem + 6vw,5.5rem) clamp(2rem,1rem + 3vw,3rem)}.hero__g{max-width:58rem}.hero__k{font-family:var(--f-mono);font-size:var(--t-meta);letter-spacing:.1em;text-transform:uppercase;color:var(--brand)}.hero__h{margin-top:var(--s4);white-space:pre-line;max-width:20ch}.hero__p{margin-top:var(--s5);max-width:52ch}.hero__c{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s4);margin-top:var(--s6)}.profile{display:grid;grid-template-columns:9rem minmax(0,1fr);gap:var(--s6);align-items:start}.profile__av{aspect-ratio:1;border-radius:var(--r-media);overflow:hidden;background:var(--brand-soft);display:grid;place-items:center}.profile__av img{width:100%;height:100%;object-fit:cover}.profile__av .chip__i{width:100%;height:100%;font-size:1.5rem}@media(max-width:640px){.profile{grid-template-columns:1fr;gap:var(--s4)}.profile__av{width:7rem}}.lb{border:0;padding:0;background:none;max-width:96vw;max-height:94vh}.lb::backdrop{background:#12183adb}.lb img{max-width:96vw;max-height:84vh;width:auto;height:auto;border-radius:var(--r-media)}.lb__x{position:absolute;top:var(--s3);right:var(--s3);min-height:44px;min-width:44px;border-radius:var(--r-ui);border:1px solid rgb(255 255 255 / .3);background:#12183a99;color:#fff;cursor:pointer}.foot{background:var(--ink);color:var(--on-ink);padding-block:var(--s8) var(--s6)}.foot__g{display:grid;grid-template-columns:minmax(0,1.4fr) repeat(4,minmax(0,1fr));gap:var(--s6) var(--s5)}.foot h3{font-family:var(--f-mono);font-size:var(--t-meta);letter-spacing:.1em;text-transform:uppercase;color:var(--on-ink-3);font-weight:500;margin-bottom:var(--s3)}.foot li a{display:block;padding-block:.3rem;font-size:var(--t-sm);color:var(--on-ink-2);transition:color var(--dur-1) var(--ease)}.foot li a:hover{color:#fff}.foot__ad{margin-top:var(--s4);max-width:30ch;font-style:normal;font-size:var(--t-sm);line-height:1.5;color:var(--on-ink-2)}.foot__ml a{display:block;padding-block:.25rem;font-family:var(--f-mono);font-size:var(--t-meta);color:var(--brand-2);overflow-wrap:anywhere}.foot__ml a:hover{color:#fff;text-decoration:underline}.foot__ic{display:flex;flex-wrap:wrap;gap:var(--s2);margin-top:var(--s3)}.foot__ic a{display:grid;place-items:center;width:44px;height:44px;border:1px solid var(--line-ink);border-radius:var(--r-ui);color:var(--on-ink-2);transition:all var(--dur-1) var(--ease)}.foot__ic a:hover{background:var(--ink-2);border-color:var(--brand-2);color:#fff}.foot__w{font-family:var(--f-display);font-size:clamp(1.5rem,1rem + 2vw,2.25rem);font-weight:700;letter-spacing:-.03em;line-height:1.05}.foot__b{display:flex;flex-wrap:wrap;justify-content:space-between;gap:var(--s3);margin-top:var(--s7);padding-top:var(--s4);border-top:1px solid var(--line-ink);font-family:var(--f-mono);font-size:var(--t-meta);color:var(--on-ink-3);letter-spacing:.05em}@media(max-width:860px){.foot__g{grid-template-columns:1fr 1fr}}@media(max-width:520px){.foot__g{grid-template-columns:1fr}}.prose{max-width:68ch}.prose p{margin-bottom:var(--s4);white-space:pre-line}.prose a{color:var(--brand);border-bottom:1px solid var(--line-2)}.prose a:hover{border-color:var(--brand)}.md{max-width:68ch}.md>*+*{margin-top:var(--s4)}.md>:first-child{margin-top:0}.md h2,.md h3{font-family:var(--f-display);font-size:var(--t-d3);letter-spacing:-.02em;margin-top:var(--s7)}.md h4{font-size:var(--t-title);font-weight:600;letter-spacing:-.01em;margin-top:var(--s6)}.md h5,.md h6{font-size:var(--t-body);font-weight:600;margin-top:var(--s5)}.md a{color:var(--brand);border-bottom:1px solid var(--line-2)}.md a:hover{border-color:var(--brand)}.md ul,.md ol{padding-left:var(--s5)}.md ul{list-style:disc}.md ol{list-style:decimal}.md li+li{margin-top:var(--s2)}.md li::marker{color:var(--text-3)}.md blockquote{border-left:2px solid var(--brand);padding-left:var(--s4);color:var(--text-2)}.md code{font-family:var(--f-mono);font-size:.875em;background:var(--brand-soft);padding:.1em .35em;border-radius:var(--r-ui)}.md pre{background:var(--ink);color:var(--on-ink);border-radius:var(--r-media);padding:var(--s4);overflow-x:auto}.md pre code{background:none;padding:0;color:inherit;font-size:var(--t-sm);line-height:1.6}.md img{display:block;max-width:100%;height:auto;background:var(--sheet);border:1px solid var(--line);border-radius:var(--r-media)}.md hr{border:0;border-top:1px solid var(--line);margin-block:var(--s6)}.md table{display:block;width:100%;overflow-x:auto;border-collapse:collapse;font-size:var(--t-sm)}.md th,.md td{text-align:left;padding:var(--s2) var(--s3);border-bottom:1px solid var(--line)}.md th{font-family:var(--f-mono);font-size:var(--t-meta);letter-spacing:.06em;text-transform:uppercase;color:var(--text-3)}.md .code{position:relative;margin:0}.md .code pre{padding-top:var(--s6)}.md .code[data-lang]:before{content:attr(data-lang);position:absolute;top:.7rem;left:var(--s4);font-family:var(--f-mono);font-size:var(--t-meta);font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--on-ink-3)}.code__copy{position:absolute;top:var(--s2);right:var(--s2);font-family:var(--f-mono);font-size:var(--t-meta);letter-spacing:.06em;color:var(--on-ink-3);background:none;border:1px solid var(--line-ink);border-radius:var(--r-ui);padding:.2rem var(--s3);cursor:pointer;transition:color var(--dur-1) var(--ease),border-color var(--dur-1) var(--ease)}.code__copy:hover,.code__copy:focus-visible{color:var(--on-ink);border-color:var(--on-ink-3)}.hljs-keyword,.hljs-built_in,.hljs-literal,.hljs-meta,.hljs-selector-tag,.hljs-doctag{color:var(--code-key)}.hljs-string,.hljs-meta .hljs-string,.hljs-regexp,.hljs-attribute,.hljs-addition{color:var(--code-str)}.hljs-number,.hljs-symbol,.hljs-bullet,.hljs-variable,.hljs-template-variable{color:var(--code-num)}.hljs-title,.hljs-name,.hljs-section,.hljs-attr,.hljs-property,.hljs-selector-id,.hljs-selector-class{color:var(--code-fn)}.hljs-type,.hljs-class .hljs-title,.hljs-params,.hljs-tag{color:var(--code-type)}.hljs-comment,.hljs-quote,.hljs-deletion{color:var(--on-ink-3);font-style:italic}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.md math{font-family:var(--f-math);font-size:1.12em}.md .math-block{overflow-x:auto;padding-block:var(--s2);text-align:center}.md .math-block math{font-size:1.2em}.crumb{display:flex;align-items:center;gap:var(--s2);font-family:var(--f-mono);font-size:var(--t-meta);letter-spacing:.06em;text-transform:uppercase;color:var(--text-3);margin-bottom:var(--s4)}.crumb a:hover{color:var(--brand)}.dl{display:grid;grid-template-columns:auto minmax(0,1fr);gap:var(--s2) var(--s5);font-size:var(--t-sm)}.dl--contact{grid-template-columns:8.5rem minmax(0,1fr);row-gap:var(--s3);max-width:44rem}.contact__p{display:grid;gap:var(--s2)}.contact__p a{display:flex;flex-wrap:wrap;gap:.2rem .6rem}.contact__p a span{font-family:var(--f-mono);font-size:var(--t-meta);color:var(--brand)}.contact__p a:hover span{color:var(--brand-deep);text-decoration:underline}@media(max-width:520px){.dl--contact{grid-template-columns:1fr;row-gap:var(--s1)}}.dl dt{font-family:var(--f-mono);font-size:var(--t-meta);letter-spacing:.07em;text-transform:uppercase;color:var(--text-3);padding-top:.2rem}.dl dd{margin:0}.gal{display:grid;gap:var(--s3);grid-template-columns:repeat(auto-fill,minmax(min(100%,14rem),1fr))}.gal button{padding:0;border:1px solid var(--line);border-radius:var(--r-media);overflow:hidden;background:var(--brand-soft);cursor:zoom-in;aspect-ratio:4 / 3}.gal img{width:100%;height:100%;object-fit:cover}.empty{border:1px dashed var(--line-2);border-radius:var(--r-media);padding:var(--s6) var(--s5);text-align:center;color:var(--text-2);display:grid;gap:var(--s3);justify-items:center}
