@font-face{font-family:Archivo;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/archivo-vietnamese-400-normal-BF4g3tCF.woff2) format("woff2"),url(/assets/archivo-vietnamese-400-normal-FGOLYM1a.woff) format("woff");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:Archivo;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/archivo-latin-ext-400-normal-B5tPZzqW.woff2) format("woff2"),url(/assets/archivo-latin-ext-400-normal-DrmqtLj6.woff) format("woff");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:Archivo;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/archivo-latin-400-normal-C81ewxNO.woff2) format("woff2"),url(/assets/archivo-latin-400-normal-Bl602Mgc.woff) format("woff");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:Archivo;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/archivo-vietnamese-500-normal-k0drYPZA.woff2) format("woff2"),url(/assets/archivo-vietnamese-500-normal-7W3lD2kQ.woff) format("woff");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:Archivo;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/archivo-latin-ext-500-normal-RFhg4CpD.woff2) format("woff2"),url(/assets/archivo-latin-ext-500-normal-D7mXw3Kz.woff) format("woff");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:Archivo;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/archivo-latin-500-normal-CGugC8dq.woff2) format("woff2"),url(/assets/archivo-latin-500-normal-pkzA7jw9.woff) format("woff");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:Archivo;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/archivo-vietnamese-600-normal-anCjMumA.woff2) format("woff2"),url(/assets/archivo-vietnamese-600-normal-C8xBVdfP.woff) format("woff");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:Archivo;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/archivo-latin-ext-600-normal-Dm61iqcg.woff2) format("woff2"),url(/assets/archivo-latin-ext-600-normal-D7uErJuz.woff) format("woff");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:Archivo;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/archivo-latin-600-normal-3BBy0ZsW.woff2) format("woff2"),url(/assets/archivo-latin-600-normal-DwYieO8P.woff) format("woff");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:Archivo;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/archivo-vietnamese-700-normal-nuAQAQa7.woff2) format("woff2"),url(/assets/archivo-vietnamese-700-normal-Bz2vkKqq.woff) format("woff");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:Archivo;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/archivo-latin-ext-700-normal-DD_nkw6b.woff2) format("woff2"),url(/assets/archivo-latin-ext-700-normal-CgyfnKjw.woff) format("woff");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:Archivo;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/archivo-latin-700-normal-D9cHMWGj.woff2) format("woff2"),url(/assets/archivo-latin-700-normal-lT5TFe7H.woff) format("woff");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: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+0460-052F,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+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,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+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: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+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: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+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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-cyrillic-ext-500-normal-BqneJy0T.woff2) format("woff2"),url(/assets/ibm-plex-mono-cyrillic-ext-500-normal-BIfNGwUT.woff) format("woff");unicode-range:U+0460-052F,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:500;src:url(/assets/ibm-plex-mono-cyrillic-500-normal-Bq9vWWag.woff2) format("woff2"),url(/assets/ibm-plex-mono-cyrillic-500-normal-Ael50iVv.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-vietnamese-500-normal-DZ4AoWbu.woff2) format("woff2"),url(/assets/ibm-plex-mono-vietnamese-500-normal-C8zxqsMH.woff) format("woff");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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-latin-ext-500-normal-CAhNIIs5.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-ext-500-normal-CZ70TYgx.woff) format("woff");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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-latin-500-normal-DSY6xOcd.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-500-normal-CB9ihrfo.woff) format("woff");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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-mono-cyrillic-ext-600-normal-V-xxqcpd.woff2) format("woff2"),url(/assets/ibm-plex-mono-cyrillic-ext-600-normal-9HEixskS.woff) format("woff");unicode-range:U+0460-052F,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:600;src:url(/assets/ibm-plex-mono-cyrillic-600-normal-CTOM6hUh.woff2) format("woff2"),url(/assets/ibm-plex-mono-cyrillic-600-normal-fLZuRloM.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-mono-vietnamese-600-normal-D2EvbN8M.woff2) format("woff2"),url(/assets/ibm-plex-mono-vietnamese-600-normal-iLQfcSjf.woff) format("woff");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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-mono-latin-ext-600-normal-D38SheWl.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-ext-600-normal-DmB0ttJJ.woff) format("woff");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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-mono-latin-600-normal-BgSNZQsw.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-600-normal-DWFSQ4vo.woff) format("woff");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:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/assets/source-serif-4-cyrillic-ext-wght-normal-cHuGMAiY.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/assets/source-serif-4-cyrillic-wght-normal-DwHjdM4S.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/assets/source-serif-4-greek-wght-normal-ece1310W.woff2) format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/assets/source-serif-4-vietnamese-wght-normal-D-yuW59g.woff2) format("woff2-variations");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:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/assets/source-serif-4-latin-ext-wght-normal-CxNHBx-q.woff2) format("woff2-variations");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:"Source Serif 4 Variable";font-style:normal;font-display:swap;font-weight:200 900;src:url(/assets/source-serif-4-latin-wght-normal-D9elroTD.woff2) format("woff2-variations");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}:root{--ground: #f6f7f7;--surface: #ffffff;--sunken: #eef1f1;--raised: #ffffff;--ink: #15191c;--muted: #5b656d;--faint: #8b959b;--rule: #dce1e3;--rule-str: #b9c2c6;--accent: #1c5f59;--accent-ink: #ffffff;--accent-wash: #e2efec;--crit: #9b2f35;--crit-wash: #f7e7e7;--warn: #8f5a14;--warn-wash: #f6ecda;--ok: #356b3e;--ok-wash: #e6f0e5;--shadow: 0 1px 2px rgb(21 25 28 / 6%), 0 4px 12px rgb(21 25 28 / 4%);--s1: #1c5f59;--s2: #b4531f;--s3: #3b5da8;--s4: #8a6d1f;--s5: #7a3d72;--s6: #2e7d4f;--s7: #a83c48;--s8: #4a6572;--s9: #6b7f2a;--s10: #995f8f;--f-ui: "Archivo", "Helvetica Neue", Arial, sans-serif;--f-mono: "IBM Plex Mono", ui-monospace, SFMono-Regular, Consolas, monospace;--f-prose: "Source Serif 4 Variable", Georgia, "Times New Roman", serif;--r: 3px;--gap: 1rem}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--ground: #0f1214;--surface: #161a1d;--sunken: #1c2124;--raised: #1e2427;--ink: #e3e7e9;--muted: #96a0a7;--faint: #6c767d;--rule: #282e32;--rule-str: #3b4348;--accent: #5fb5aa;--accent-ink: #0f1214;--accent-wash: #16302e;--crit: #de8189;--crit-wash: #331c1e;--warn: #d8a55f;--warn-wash: #302512;--ok: #7fb183;--ok-wash: #1a2a1c;--shadow: 0 1px 2px rgb(0 0 0 / 40%), 0 4px 14px rgb(0 0 0 / 30%);--s1: #5fb5aa;--s2: #e08a4d;--s3: #7e9be0;--s4: #c9a94f;--s5: #c08ab8;--s6: #6fbb85;--s7: #e08a92;--s8: #8fa5b2;--s9: #a8bd63;--s10: #cf9ac4}}:root[data-theme=dark]{--ground: #0f1214;--surface: #161a1d;--sunken: #1c2124;--raised: #1e2427;--ink: #e3e7e9;--muted: #96a0a7;--faint: #6c767d;--rule: #282e32;--rule-str: #3b4348;--accent: #5fb5aa;--accent-ink: #0f1214;--accent-wash: #16302e;--crit: #de8189;--crit-wash: #331c1e;--warn: #d8a55f;--warn-wash: #302512;--ok: #7fb183;--ok-wash: #1a2a1c;--shadow: 0 1px 2px rgb(0 0 0 / 40%), 0 4px 14px rgb(0 0 0 / 30%);--s1: #5fb5aa;--s2: #e08a4d;--s3: #7e9be0;--s4: #c9a94f;--s5: #c08ab8;--s6: #6fbb85;--s7: #e08a92;--s8: #8fa5b2;--s9: #a8bd63;--s10: #cf9ac4}*{box-sizing:border-box}html{scroll-behavior:smooth}@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}body{margin:0;background:var(--ground);color:var(--ink);font-family:var(--f-ui);font-size:15px;line-height:1.55;-webkit-font-smoothing:antialiased}h1,h2,h3,h4{margin:0;font-weight:600;letter-spacing:-.015em;text-wrap:balance}h1{font-size:1.7rem;font-weight:700;letter-spacing:-.025em}h2{font-size:1.2rem}h3{font-size:1rem}h4{font-family:var(--f-mono);font-size:.7rem;font-weight:600;letter-spacing:.11em;text-transform:uppercase;color:var(--faint)}p{margin:0 0 .75rem}a{color:var(--accent);text-decoration-thickness:1px;text-underline-offset:2px}button{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:2px}code,.mono,.num{font-family:var(--f-mono);font-variant-numeric:tabular-nums}code{font-size:.86em;background:var(--sunken);padding:.08em .32em;border-radius:2px}.prose{font-family:var(--f-prose);font-size:1.02rem;line-height:1.65;max-width:68ch}.prose p{margin-bottom:.9rem}.prose ul{margin:0 0 .9rem;padding-left:1.15rem}.prose li{margin-bottom:.3rem}.muted{color:var(--muted)}.faint{color:var(--faint)}.small{font-size:.84rem}.tiny{font-size:.74rem}.right{text-align:right}.center{text-align:center}.nowrap{white-space:nowrap}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.app{min-height:100vh;display:flex;flex-direction:column}.topbar{position:sticky;top:0;z-index:30;background:var(--surface);border-bottom:1px solid var(--rule)}.topbar-inner{max-width:96rem;margin:0 auto;padding:0 1.25rem;display:flex;align-items:center;gap:1.25rem;min-height:3.25rem}.brand{display:flex;align-items:baseline;gap:.5rem;font-weight:700;letter-spacing:-.02em;text-decoration:none;color:var(--ink);white-space:nowrap}.brand span{font-family:var(--f-mono);font-size:.66rem;letter-spacing:.1em;text-transform:uppercase;color:var(--accent);font-weight:600}.mainnav{display:flex;gap:.1rem;overflow-x:auto;flex:1;scrollbar-width:thin}.mainnav a{padding:.45rem .65rem;border-radius:var(--r);font-size:.86rem;font-weight:500;color:var(--muted);text-decoration:none;white-space:nowrap}.mainnav a:hover{color:var(--ink);background:var(--sunken)}.mainnav a.active{color:var(--accent);background:var(--accent-wash);font-weight:600}.page{max-width:96rem;margin:0 auto;padding:1.5rem 1.25rem 5rem;width:100%}.page-head{margin-bottom:1.5rem;display:flex;flex-direction:column;gap:.4rem}.page-head p{max-width:74ch;margin:0;color:var(--muted)}.stack{display:flex;flex-direction:column;gap:var(--gap)}.stack-sm{display:flex;flex-direction:column;gap:.5rem}.row{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap}.row-tight{display:flex;align-items:center;gap:.3rem;flex-wrap:wrap}.spread{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap}.grid{display:grid;gap:var(--gap)}.grid-2{grid-template-columns:repeat(auto-fit,minmax(20rem,1fr))}.grid-3{grid-template-columns:repeat(auto-fit,minmax(15rem,1fr))}.grid-4{grid-template-columns:repeat(auto-fit,minmax(11rem,1fr))}.card{background:var(--surface);border:1px solid var(--rule);border-radius:var(--r);padding:1rem 1.1rem}.card-head{display:flex;align-items:baseline;justify-content:space-between;gap:.75rem;margin-bottom:.75rem}.panel{background:var(--surface);border:1px solid var(--rule);border-radius:var(--r)}.panel-head{padding:.7rem 1rem;border-bottom:1px solid var(--rule);display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap}.panel-body{padding:1rem}.note{background:var(--surface);border:1px solid var(--rule);border-top:2px solid var(--accent);border-radius:var(--r);padding:.9rem 1.1rem}.note.crit{border-top-color:var(--crit)}.note.warn{border-top-color:var(--warn)}.note.ok{border-top-color:var(--ok)}.note>:last-child{margin-bottom:0}.stat{display:flex;flex-direction:column;gap:.15rem}.stat-value{font-family:var(--f-mono);font-size:1.45rem;font-weight:600;letter-spacing:-.02em;font-variant-numeric:tabular-nums;line-height:1.1}.stat-label{font-family:var(--f-mono);font-size:.65rem;letter-spacing:.1em;text-transform:uppercase;color:var(--faint)}.stat-sub{font-size:.78rem;color:var(--muted);font-family:var(--f-mono)}.btn{display:inline-flex;align-items:center;gap:.35rem;padding:.32rem .7rem;border:1px solid var(--rule-str);background:var(--surface);color:var(--ink);border-radius:var(--r);font-size:.84rem;font-weight:500;cursor:pointer;white-space:nowrap}.btn:hover{border-color:var(--accent);color:var(--accent)}.btn[aria-pressed=true],.btn.on{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.btn[aria-pressed=true]:hover,.btn.on:hover{color:var(--accent-ink)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-sm{padding:.2rem .5rem;font-size:.76rem}.segmented{display:inline-flex;border:1px solid var(--rule-str);border-radius:var(--r);overflow:hidden}.segmented button{padding:.32rem .7rem;border:0;background:var(--surface);color:var(--muted);font-size:.82rem;font-weight:500;cursor:pointer;white-space:nowrap}.segmented button+button{border-left:1px solid var(--rule)}.segmented button:hover{color:var(--ink);background:var(--sunken)}.segmented button[aria-pressed=true]{background:var(--accent);color:var(--accent-ink);font-weight:600}.field{display:flex;flex-direction:column;gap:.25rem}.field>label{font-family:var(--f-mono);font-size:.65rem;letter-spacing:.09em;text-transform:uppercase;color:var(--faint)}select,input[type=search],input[type=text]{font:inherit;font-size:.86rem;padding:.3rem .5rem;background:var(--surface);color:var(--ink);border:1px solid var(--rule-str);border-radius:var(--r)}input[type=search]{min-width:12rem}.checks{display:flex;flex-wrap:wrap;gap:.25rem}.check{display:inline-flex;align-items:center;gap:.3rem;padding:.18rem .5rem;border:1px solid var(--rule-str);border-radius:999px;font-size:.78rem;cursor:pointer;-webkit-user-select:none;user-select:none;background:var(--surface)}.check input{position:absolute;opacity:0;width:0;height:0}.check:has(input:checked){background:var(--accent-wash);border-color:var(--accent);color:var(--accent);font-weight:600}.check:has(input:focus-visible){outline:2px solid var(--accent);outline-offset:2px}.badge{display:inline-flex;align-items:center;gap:.25rem;font-family:var(--f-mono);font-size:.62rem;font-weight:600;letter-spacing:.07em;text-transform:uppercase;padding:.14em .45em;border-radius:2px;white-space:nowrap;background:var(--sunken);color:var(--muted)}.badge-crit{background:var(--crit-wash);color:var(--crit)}.badge-warn{background:var(--warn-wash);color:var(--warn)}.badge-ok{background:var(--ok-wash);color:var(--ok)}.badge-accent{background:var(--accent-wash);color:var(--accent)}.dot{width:.6rem;height:.6rem;border-radius:2px;flex:none;display:inline-block}.tablewrap{overflow:auto;max-height:72vh;border-radius:var(--r)}table.data{border-collapse:separate;border-spacing:0;width:100%;font-size:.82rem}table.data th,table.data td{padding:.4rem .6rem;text-align:left;border-bottom:1px solid var(--rule);white-space:nowrap;background:var(--surface)}table.data thead th{position:sticky;top:0;z-index:2;background:var(--sunken);color:var(--faint);font-family:var(--f-mono);font-size:.64rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;border-bottom:1px solid var(--rule-str);cursor:pointer;-webkit-user-select:none;user-select:none}table.data thead th.static{cursor:default}table.data thead th:hover:not(.static){color:var(--ink)}table.data td.num,table.data th.num{text-align:right;font-family:var(--f-mono);font-variant-numeric:tabular-nums}table.data tbody tr:hover td{background:var(--sunken)}table.data tbody tr.selected td{background:var(--accent-wash)}table.data td.sticky,table.data th.sticky{position:sticky;left:0;z-index:1}table.data thead th.sticky{z-index:3}table.data td.sticky{border-right:1px solid var(--rule)}table.data thead th.sticky{border-right:1px solid var(--rule-str)}.sortmark{color:var(--accent);margin-left:.2rem}table.plain{border-collapse:collapse;width:100%;font-size:.84rem}table.plain th,table.plain td{padding:.4rem .6rem;text-align:left;border-bottom:1px solid var(--rule);vertical-align:top}table.plain thead th{font-family:var(--f-mono);font-size:.64rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--faint)}table.plain td.num,table.plain th.num{text-align:right;font-family:var(--f-mono);font-variant-numeric:tabular-nums}table.plain tbody tr:last-child td{border-bottom:0}.chart{width:100%}.legend{display:flex;flex-wrap:wrap;gap:.35rem .85rem;font-size:.78rem}.legend-item{display:inline-flex;align-items:center;gap:.35rem;cursor:pointer;color:var(--muted)}.legend-item.off{opacity:.4}.legend-item:hover{color:var(--ink)}.empty{padding:2.5rem 1rem;text-align:center;color:var(--muted);border:1px dashed var(--rule-str);border-radius:var(--r);background:var(--surface)}.loading{padding:2rem 1rem;text-align:center;color:var(--faint);font-family:var(--f-mono);font-size:.8rem}.tray{position:sticky;bottom:0;z-index:20;background:var(--surface);border-top:1px solid var(--rule-str);padding:.6rem 1.25rem;box-shadow:var(--shadow)}.tray-inner{max-width:96rem;margin:0 auto;display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}.pill-list{display:flex;flex-wrap:wrap;gap:.3rem}.pill{display:inline-flex;align-items:center;gap:.35rem;background:var(--sunken);border:1px solid var(--rule);border-radius:999px;padding:.15rem .55rem;font-size:.76rem}.pill button{border:0;background:none;cursor:pointer;color:var(--faint);padding:0;line-height:1;font-size:1rem}.pill button:hover{color:var(--crit)}.footer{margin-top:auto;border-top:1px solid var(--rule);background:var(--surface);font-family:var(--f-mono);font-size:.72rem;color:var(--muted)}.footer-inner{max-width:96rem;margin:0 auto;padding:1rem 1.25rem;display:flex;flex-wrap:wrap;gap:.5rem 1.5rem;justify-content:space-between}@media (max-width: 46rem){.topbar-inner{flex-wrap:wrap;padding-top:.5rem;padding-bottom:.5rem}.page{padding:1rem .85rem 4rem}.tablewrap{max-height:none}}
