@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-vietnamese-opsz-normal-Czevyj-6.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:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-latin-ext-opsz-normal-CJcjJNj7.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:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-latin-opsz-normal-DihXLNYH.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}@font-face{font-family:Fraunces Variable;font-style:italic;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-vietnamese-opsz-italic-DxWqP7Ku.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:Fraunces Variable;font-style:italic;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-latin-ext-opsz-italic-CGbN9UgK.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:Fraunces Variable;font-style:italic;font-display:swap;font-weight:100 900;src:url(/assets/fraunces-latin-opsz-italic-lSdLDfvT.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}@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+0460-052F,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+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,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+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@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+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 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+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 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+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 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+0460-052F,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+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,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+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@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+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 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+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 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+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 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+0460-052F,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+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,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+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@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+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 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+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 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+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}:root{--font-display: "Fraunces Variable", "Iowan Old Style", "Palatino Linotype", Georgia, serif;--font-text: "IBM Plex Sans", "Helvetica Neue", Arial, sans-serif;--font-mono: "IBM Plex Mono", "Cascadia Mono", Consolas, monospace;--bg: #131312;--ink: #e8e6e0;--ink-2: #b1ada4;--ink-3: #7b776f;--rule: #2c2b28;--rule-strong: #e8e6e0;--wash: #1b1b19;--accent: #ef5a3c;--accent-ink: #131312;--good: #63b38c;--late: #d6a13c;--key-white: #e3e0d8;--key-white-edge: #9d998f;--key-black: #0c0c0b;--key-label: #77736a;--text: var(--ink);--muted: var(--ink-2);--faint: var(--ink-3);--border: var(--rule);--surface: var(--bg);--surface-2: var(--wash);--surface-3: var(--rule);--warn: var(--late);--bad: var(--accent);--rh: var(--ink);--lh: var(--late);--accent-soft: color-mix(in srgb, var(--accent) 12%, transparent);--good-soft: color-mix(in srgb, var(--good) 14%, transparent);--bad-soft: color-mix(in srgb, var(--accent) 12%, transparent);--paper: transparent;--shadow: none;color-scheme:dark}@media(prefers-color-scheme:light){:root{--bg: #e7e6e1;--ink: #151514;--ink-2: #4a4843;--ink-3: #7d7a72;--rule: #c8c5bc;--rule-strong: #151514;--wash: #dddbd5;--accent: #c4361d;--accent-ink: #f3f1ec;--good: #23704c;--late: #a5700c;--key-white: #f4f3ef;--key-white-edge: #a8a49a;--key-black: #151514;--key-label: #8c887e;color-scheme:light}}*{box-sizing:border-box}html,body,#root{margin:0;height:100%}body{background:var(--bg);color:var(--ink);font:400 16px/1.5 var(--font-text);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;touch-action:manipulation;-webkit-tap-highlight-color:transparent;overscroll-behavior:none}button,input,select{font:inherit;color:inherit}::selection{background:var(--accent);color:var(--accent-ink)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}h1,h2,h3,p{margin:0}h1{font-family:var(--font-display);font-optical-sizing:auto;font-weight:340;font-size:clamp(2.6rem,1.4rem + 3.2vw,4.6rem);line-height:.98;letter-spacing:-.028em}h2{font-family:var(--font-display);font-optical-sizing:auto;font-weight:420;font-size:1.85rem;line-height:1.1;letter-spacing:-.015em}h3{font-family:var(--font-mono);font-weight:500;font-size:.72rem;line-height:1.2;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-2)}a{color:inherit;text-decoration-color:var(--accent);text-decoration-thickness:1.5px;text-underline-offset:3px}b,strong{font-weight:600}.kicker{font-family:var(--font-mono);font-size:.72rem;font-weight:500;letter-spacing:.16em;text-transform:uppercase;color:var(--accent)}.display{font-family:var(--font-display);font-optical-sizing:auto}.numeral{font-family:var(--font-display);font-weight:300;font-variant-numeric:lining-nums tabular-nums;letter-spacing:-.02em}.app{display:grid;grid-template-columns:196px 1fr;height:100dvh}.index{display:flex;flex-direction:column;padding:30px 22px 22px 28px;border-right:1px solid var(--rule);overflow-y:auto}.index .masthead{display:flex;flex-direction:column;gap:2px;padding-bottom:22px;margin-bottom:18px;border-bottom:2px solid var(--rule-strong);text-decoration:none;color:var(--ink)}.index .masthead .title{font-family:var(--font-display);font-style:italic;font-weight:380;font-size:2.1rem;line-height:1;letter-spacing:-.02em}.index .masthead .kicker{white-space:nowrap}.index .masthead .title em{color:var(--accent);font-style:normal}.index ol{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}.index ol a{display:grid;grid-template-columns:30px 1fr;align-items:baseline;padding:9px 0;min-height:44px;color:var(--ink-2);text-decoration:none;font-size:1rem;border-bottom:1px solid var(--rule)}.index ol a .num{font-family:var(--font-mono);font-size:.7rem;color:var(--ink-3);letter-spacing:.04em}.index ol a.active{color:var(--ink)}.index ol a.active .label{font-family:var(--font-display);font-style:italic;font-size:1.15rem;font-weight:420}.index ol a.active .num{color:var(--accent)}.index .foot{margin-top:auto;padding-top:24px;display:flex;flex-direction:column;gap:6px;font-family:var(--font-mono);font-size:.68rem;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3)}.index .foot .line{display:flex;justify-content:space-between;gap:8px}.index .foot .ok{color:var(--good)}.index .foot .off{color:var(--accent)}.index .foot button{margin-top:8px;background:none;border:1px solid var(--rule);border-radius:0;color:var(--ink-2);font:inherit;padding:8px 10px;cursor:pointer;text-align:left;min-height:36px}.main{overflow-y:auto;overflow-x:hidden;padding:44px 56px 96px}.page{max-width:1120px;margin:0 auto;display:flex;flex-direction:column;gap:44px}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:24px 32px;flex-wrap:wrap;padding-bottom:26px;border-bottom:2px solid var(--rule-strong)}.page-head .titles{display:flex;flex-direction:column;gap:14px;min-width:0}.page-head .sub{color:var(--ink-2);font-size:1.06rem;max-width:62ch}@media(max-width:900px){.app{grid-template-columns:1fr;grid-template-rows:auto 1fr}.index{flex-direction:row;align-items:center;gap:18px;padding:10px 18px;border-right:0;border-bottom:1px solid var(--rule);overflow-x:auto}.index .masthead{border:0;margin:0;padding:0}.index .masthead .title{font-size:1.5rem}.index ol{flex-direction:row}.index ol a{display:flex;gap:6px;border:0;padding:8px 10px;white-space:nowrap}.index ol a.active{box-shadow:inset 0 -2px 0 var(--accent)}.index ol a.active .label{font-size:1rem}.index .foot{display:none}.main{padding:28px 20px 64px}}.card{border-top:1px solid var(--rule);padding-top:18px;min-width:0}.card.accent{border-top:2px solid var(--accent)}.card.tight{border-top:0;padding-top:0}button.card{background:none;border-left:0;border-right:0;border-bottom:0;border-radius:0;text-align:left;font:inherit;color:inherit;cursor:pointer;padding:18px 0 6px}button.card:hover:not(:disabled) h3{color:var(--accent)}button.card:disabled{cursor:default;opacity:.5}.row{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.row.between{justify-content:space-between}.col{display:flex;flex-direction:column;gap:12px}.grid{display:grid;gap:32px 40px}.grid.two{grid-template-columns:repeat(auto-fit,minmax(320px,1fr))}.grid.three{grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}.grid.four{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}.muted{color:var(--ink-2)}.faint{color:var(--ink-3)}.small{font-size:.9rem}.tiny{font-size:.78rem}.mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums;letter-spacing:0}.good{color:var(--good)}.bad{color:var(--accent)}.warn{color:var(--late)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:48px;padding:0 22px;border-radius:0;border:1px solid var(--ink);background:transparent;color:var(--ink);font-family:var(--font-text);font-weight:600;font-size:.95rem;letter-spacing:.01em;cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap;text-decoration:none;transition:background-color .12s,color .12s}.btn:hover:not(:disabled){background:var(--ink);color:var(--bg)}.btn:disabled{opacity:.35;cursor:default}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.btn.primary:hover:not(:disabled){background:var(--ink);border-color:var(--ink);color:var(--bg)}.btn.big{min-height:60px;padding:0 30px;font-size:1.05rem}.btn.ghost{border-color:transparent;text-decoration:underline;text-decoration-color:var(--rule);text-underline-offset:5px;padding-left:6px;padding-right:6px}.btn.ghost:hover:not(:disabled){background:transparent;color:var(--ink);text-decoration-color:var(--accent)}.btn.small{min-height:36px;padding:0 12px;font-size:.82rem}.btn.icon{width:48px;padding:0}.btn.danger{border-color:var(--accent);color:var(--accent)}.chip{display:inline-flex;align-items:center;gap:6px;padding:3px 8px;border:1px solid var(--rule);font-family:var(--font-mono);font-size:.74rem;letter-spacing:.02em;color:var(--ink-2);white-space:nowrap;background:none}button.chip{cursor:pointer;min-height:34px}.chip.accent{border-color:var(--accent);color:var(--accent)}.chip.good{border-color:var(--good);color:var(--good)}.chip.bad{border-color:var(--accent);color:var(--accent)}.dot{width:7px;height:7px;background:var(--ink-3);display:inline-block}.dot.on{background:var(--good)}.dot.warn{background:var(--late)}.bar{height:3px;background:var(--rule);overflow:hidden}.bar>span{display:block;height:100%;background:var(--ink);transition:width .3s ease}.bar.good>span{background:var(--good)}.segmented,.tabs{display:inline-flex;gap:22px;overflow-x:auto;overflow-y:hidden;max-width:100%;scrollbar-width:none}.segmented::-webkit-scrollbar,.tabs::-webkit-scrollbar,.index::-webkit-scrollbar{display:none}.segmented button,.tabs button{border:0;border-bottom:2px solid transparent;border-radius:0;background:none;padding:10px 0 8px;min-height:44px;cursor:pointer;color:var(--ink-3);font-weight:500;white-space:nowrap}.segmented button.on,.tabs button.on{color:var(--ink);border-bottom-color:var(--accent)}.tabs{display:flex;border-bottom:1px solid var(--rule);gap:26px;mask-image:linear-gradient(to right,#000 90%,transparent);-webkit-mask-image:linear-gradient(to right,#000 90%,transparent)}.control-group{display:flex;flex-direction:column;gap:2px}.control-group>h3{color:var(--ink-3)}.tabs button{font-size:.95rem}.tabs button .n{font-family:var(--font-mono);font-size:.7rem;color:var(--ink-3);margin-right:6px}.tabs button.on .n{color:var(--accent)}.stat{display:flex;flex-direction:column;gap:6px}.stat .v{font-family:var(--font-display);font-optical-sizing:auto;font-weight:300;font-size:2.9rem;line-height:1;font-variant-numeric:lining-nums tabular-nums;letter-spacing:-.03em}.stat .l{font-family:var(--font-mono);font-size:.7rem;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3)}.list{display:flex;flex-direction:column}.list-item{display:flex;align-items:center;gap:16px;padding:14px 0;border-bottom:1px solid var(--rule);text-decoration:none;color:inherit}.list-item:last-child{border-bottom:0}button.list-item{background:none;border-left:0;border-right:0;border-top:0;border-radius:0;text-align:left;width:100%;cursor:pointer;font:inherit}button.list-item:hover .item-title{color:var(--accent)}.item-title{font-weight:500}input[type=range]{width:100%;accent-color:var(--accent)}select,input[type=number]{min-height:44px;padding:0 12px;border-radius:0;border:1px solid var(--ink-3);background:var(--bg);font-family:var(--font-mono);font-size:.85rem}.callout{padding:2px 0 2px 16px;border-left:2px solid var(--ink-3);font-size:.95rem;color:var(--ink)}.callout.warn{border-left-color:var(--accent)}.callout.good{border-left-color:var(--good)}.paper{position:relative}.paper svg{display:block}.score-wrap{position:relative;padding:10px 0 4px;border-top:1px solid var(--rule)}.score-cursor{position:absolute;width:2px;margin-left:4px;background:var(--accent);pointer-events:none;transition:left .08s linear}.mini-staff{display:inline-block;padding:0}.piano{position:relative;display:flex;height:132px;-webkit-user-select:none;user-select:none;touch-action:none;border-top:4px solid var(--accent)}.piano.compact{height:96px}.piano .wk{flex:1;position:relative;background:var(--key-white);border-right:1px solid var(--key-white-edge)}.piano .wk:first-child{border-left:1px solid var(--key-white-edge)}.piano .bk{position:absolute;top:0;height:61%;background:var(--key-black);z-index:2}.piano .lbl{position:absolute;bottom:6px;left:0;right:0;text-align:center;font-family:var(--font-mono);font-size:.6rem;color:var(--key-label);pointer-events:none}.piano .held.wk{background:color-mix(in srgb,var(--key-white) 70%,var(--key-black))}.piano .held.bk{background:color-mix(in srgb,var(--key-black) 60%,var(--key-white))}.piano .hint.wk{box-shadow:inset 0 -6px color-mix(in srgb,var(--key-black) 22%,transparent)}.piano .hint.bk{box-shadow:inset 0 -6px color-mix(in srgb,var(--key-white) 35%,transparent)}.piano .target.wk,.piano .target.bk{background:var(--late)}.piano .correct.wk,.piano .correct.bk{background:var(--good)}.piano .wrong.wk,.piano .wrong.bk{background:var(--accent)}.beats{display:flex;gap:6px}.beats span{width:14px;height:14px;border:1px solid var(--ink-3);transition:background .05s}.beats span.on{background:var(--accent);border-color:var(--accent)}.beats span.on.count{background:var(--ink);border-color:var(--ink)}.bpm{display:inline-flex;align-items:center;gap:0}.bpm .btn.icon{width:52px;min-height:52px}.bpm .value{min-width:112px;height:52px;display:inline-flex;align-items:baseline;justify-content:center;gap:6px;padding-top:8px;border-top:1px solid var(--ink);border-bottom:1px solid var(--ink);font-family:var(--font-display);font-weight:340;font-size:1.9rem;line-height:1;font-variant-numeric:lining-nums tabular-nums}.bpm .value .muted{font-family:var(--font-text);font-size:.85rem}.verdict{display:flex;align-items:baseline;flex-wrap:wrap;gap:6px 18px;font-family:var(--font-display);font-style:italic;font-weight:380;font-size:2.2rem;line-height:1.1;letter-spacing:-.015em}.verdict.clean{color:var(--good)}.verdict.notyet{color:var(--ink)}.verdict .muted{font-family:var(--font-mono);font-style:normal;font-size:.78rem!important;letter-spacing:.04em}.tips{margin:0;padding:0;list-style:none;counter-reset:tip;display:flex;flex-direction:column}.tips li{counter-increment:tip;display:grid;grid-template-columns:36px 1fr;padding:12px 0;border-top:1px solid var(--rule);max-width:78ch}.tips li:before{content:counter(tip,decimal-leading-zero);font-family:var(--font-mono);font-size:.72rem;color:var(--accent);padding-top:3px}.choice-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:8px}.choice-grid .btn{min-height:56px;white-space:normal;text-align:center;line-height:1.2;border-color:var(--ink-3);font-weight:500}.choice-grid .btn:disabled{opacity:.4}.choice-grid .btn.right{background:var(--good);border-color:var(--good);color:var(--bg);opacity:1}.choice-grid .btn.wrongpick{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);opacity:1}.prompt{font-family:var(--font-display);font-optical-sizing:auto;font-size:clamp(1.9rem,1.2rem + 1.6vw,2.7rem);font-weight:380;line-height:1.08;letter-spacing:-.02em;max-width:24ch}.feedback{display:flex;align-items:center;gap:12px;padding:4px 0 4px 16px;border-left:3px solid;font-weight:500}.feedback.right{border-color:var(--good);color:var(--good)}.feedback.wrong{border-color:var(--accent);color:var(--accent)}.feedback span{color:var(--ink)}.entered{display:flex;gap:6px;flex-wrap:wrap;min-height:34px;align-items:center}.entered .chip{font-size:.85rem;color:var(--ink);border-color:var(--ink-3)}.toast-stack{position:fixed;right:24px;bottom:24px;display:flex;flex-direction:column;gap:8px;z-index:50;max-width:min(440px,calc(100vw - 48px))}.toast{padding:14px 18px;background:var(--ink);color:var(--bg);border-left:5px solid var(--accent);font-weight:500;animation:toast-in .18s ease-out}.toast.level{background:var(--accent);color:var(--accent-ink);border-left-color:var(--ink);font-family:var(--font-display);font-size:1.15rem;font-weight:420}.toast.success{border-left-color:var(--good)}@keyframes toast-in{0%{transform:translate(12px);opacity:0}}.timer{font-family:var(--font-mono);font-size:2.1rem;font-weight:400;font-variant-numeric:tabular-nums;letter-spacing:-.02em}.heatmap{display:grid;grid-auto-flow:column;grid-template-rows:repeat(7,13px);gap:2px}.heatmap span{width:13px;height:13px;background:color-mix(in srgb,var(--rule) 55%,transparent)}.programme{display:flex;flex-direction:column;border-top:2px solid var(--rule-strong)}.programme .movement{display:grid;grid-template-columns:56px 92px 1fr;align-items:baseline;gap:16px;padding:18px 0;border-bottom:1px solid var(--rule)}.programme .movement .no{font-family:var(--font-display);font-style:italic;font-size:1.4rem;color:var(--accent)}.programme .movement .dur{font-family:var(--font-mono);font-size:.85rem;color:var(--ink-2)}.programme .movement .what{font-family:var(--font-display);font-size:1.55rem;font-weight:400;letter-spacing:-.01em;line-height:1.15}.programme .movement .detail{font-size:.9rem;color:var(--ink-2);margin-top:4px}.sticky-head{position:sticky;top:-44px;z-index:5;background:var(--bg);padding:20px 0 16px;border-bottom:2px solid var(--rule-strong)}.lesson{max-width:70ch}.lesson h2{margin-top:36px;margin-bottom:10px}.lesson p,.lesson li{font-family:var(--font-display);font-optical-sizing:auto;font-size:1.16rem;line-height:1.62;font-weight:360}.lesson p+p{margin-top:14px}.lesson>div>p:first-child:first-letter{font-size:3.4em;float:left;line-height:.85;padding:6px 10px 0 0;color:var(--accent);font-weight:400}.lesson ul{padding-left:20px;display:flex;flex-direction:column;gap:8px}.lesson li::marker{color:var(--accent)}.toc{list-style:none;margin:-20px 0 0;padding:0}.toc a{display:grid;grid-template-columns:56px 1fr auto;align-items:baseline;gap:16px;padding:20px 0;border-bottom:1px solid var(--rule);text-decoration:none;color:inherit}.toc a:hover .t{color:var(--accent)}.toc .n{font-family:var(--font-display);font-style:italic;font-size:1.3rem;color:var(--accent)}.toc .t{font-family:var(--font-display);font-size:1.6rem;line-height:1.15;letter-spacing:-.01em}.toc .s{color:var(--ink-2);font-size:.92rem;margin-top:4px}.splash{display:grid;place-items:center;height:100dvh;font-family:var(--font-display);font-style:italic;font-size:1.6rem;color:var(--ink-2)}.kbd-hint{font-family:var(--font-mono);font-size:.7rem;color:var(--ink-3);letter-spacing:.02em}.flash-wrong{animation:flash .35s ease-out}@keyframes flash{0%{box-shadow:inset 4px 0 0 var(--accent)}}.recharts-default-tooltip{border-radius:0!important;font-family:var(--font-mono);font-size:.78rem}.hint-line{font-family:var(--font-display);font-style:italic;font-size:1.15rem;line-height:1.4;padding-left:16px;border-left:2px solid var(--late);max-width:62ch}.listen-for{display:grid;grid-template-columns:110px 1fr;gap:4px 16px;align-items:baseline;max-width:78ch}.listen-for .what{font-family:var(--font-display);font-size:1.12rem;line-height:1.4}.guide{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:14px 32px;align-items:start}.guide ul{margin:0;padding:0;list-style:none;display:flex;flex-direction:column}.guide li{padding:8px 0;border-top:1px solid var(--rule);font-size:.95rem;color:var(--ink-2);max-width:80ch}@media(max-width:760px){.guide,.listen-for{grid-template-columns:1fr}}.drawer-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;background:color-mix(in srgb,var(--bg) 55%,transparent)}.drawer{position:absolute;top:0;right:0;bottom:0;width:min(620px,94vw);overflow-y:auto;background:var(--bg);border-left:2px solid var(--rule-strong);padding:28px 36px 64px;display:flex;flex-direction:column;gap:16px;animation:drawer-in .18s ease-out}.drawer-title{font-size:clamp(2.2rem,1.6rem + 1.6vw,3.2rem);margin-top:12px}.drawer-sub{font-style:italic;font-size:1.2rem;color:var(--ink-2);padding-bottom:16px;border-bottom:2px solid var(--rule-strong)}@keyframes drawer-in{0%{transform:translate(24px);opacity:0}}.session-banner{position:sticky;top:-44px;z-index:6;margin:-12px 0 28px;padding:12px 0;background:var(--bg);border-bottom:2px solid var(--accent);display:flex;align-items:center;justify-content:space-between;gap:12px 24px;flex-wrap:wrap}.session-banner .what{font-family:var(--font-display);font-size:1.2rem}.movements{display:flex;gap:4px;flex-wrap:wrap}.movements button{min-width:48px;min-height:44px;padding:0 10px;border:1px solid var(--rule);border-radius:0;background:none;cursor:pointer;font-family:var(--font-display);font-style:italic;font-size:1.1rem;color:var(--ink-3)}.movements button.done{color:var(--ink-2);border-color:var(--ink-3)}.movements button.on{color:var(--accent-ink);background:var(--accent);border-color:var(--accent)}.unlock{min-height:100dvh;display:grid;place-items:center;padding:32px 24px}.passphrase{font-family:var(--font-mono);font-size:1.4rem;padding:12px 2px;border:0;border-bottom:2px solid var(--ink);border-radius:0;background:transparent;outline:none}.passphrase:focus{border-bottom-color:var(--accent)}
