@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/assets/ibm-plex-sans-cyrillic-ext-wght-normal-d45eAU9y.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/assets/ibm-plex-sans-cyrillic-wght-normal-BAAhND-U.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/assets/ibm-plex-sans-greek-wght-normal-CmyJS8uq.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/assets/ibm-plex-sans-vietnamese-wght-normal-Dg1JeJN0.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/assets/ibm-plex-sans-latin-ext-wght-normal-CIII54If.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/assets/ibm-plex-sans-latin-wght-normal-IvpUvPa2.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Serif;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-serif-cyrillic-ext-400-normal-CxUI4jC_.woff2)format("woff2"),url(/assets/ibm-plex-serif-cyrillic-ext-400-normal-BcBv-TKp.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Serif;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-serif-cyrillic-400-normal-CPQ8oqB-.woff2)format("woff2"),url(/assets/ibm-plex-serif-cyrillic-400-normal-C7IY3oUc.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Serif;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-serif-vietnamese-400-normal-DGubAMUE.woff2)format("woff2"),url(/assets/ibm-plex-serif-vietnamese-400-normal-BY9Vij9A.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Serif;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-serif-latin-ext-400-normal-CNMooFZX.woff2)format("woff2"),url(/assets/ibm-plex-serif-latin-ext-400-normal-DwktX9jl.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Serif;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-serif-latin-400-normal-BIGslYFI.woff2)format("woff2"),url(/assets/ibm-plex-serif-latin-400-normal-BB-zNvJB.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Serif;font-style:italic;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-serif-cyrillic-ext-400-italic-o20Cx6Xj.woff2)format("woff2"),url(/assets/ibm-plex-serif-cyrillic-ext-400-italic-CPw2or01.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Serif;font-style:italic;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-serif-cyrillic-400-italic-C_ad97oI.woff2)format("woff2"),url(/assets/ibm-plex-serif-cyrillic-400-italic-CygxzOWU.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Serif;font-style:italic;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-serif-vietnamese-400-italic-BSp0Db6W.woff2)format("woff2"),url(/assets/ibm-plex-serif-vietnamese-400-italic-1VBVfWB7.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Serif;font-style:italic;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-serif-latin-ext-400-italic-hOoDEQwh.woff2)format("woff2"),url(/assets/ibm-plex-serif-latin-ext-400-italic-4IJS-XHX.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Serif;font-style:italic;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-serif-latin-400-italic-BCf4TsCA.woff2)format("woff2"),url(/assets/ibm-plex-serif-latin-400-italic-Dd68USph.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Serif;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-serif-cyrillic-ext-600-normal-DXSZftVr.woff2)format("woff2"),url(/assets/ibm-plex-serif-cyrillic-ext-600-normal-CDMeBxaJ.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Serif;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-serif-cyrillic-600-normal-6oiym5iu.woff2)format("woff2"),url(/assets/ibm-plex-serif-cyrillic-600-normal-C8YEAlRA.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Serif;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-serif-vietnamese-600-normal-BBruYZNA.woff2)format("woff2"),url(/assets/ibm-plex-serif-vietnamese-600-normal-DZRaS25B.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Serif;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-serif-latin-ext-600-normal-CU6LeQOd.woff2)format("woff2"),url(/assets/ibm-plex-serif-latin-ext-600-normal-D1-_Ic5L.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Serif;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-serif-latin-600-normal-DAxitmSu.woff2)format("woff2"),url(/assets/ibm-plex-serif-latin-600-normal-D3rpGdkS.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--scale:1;--font:"IBM Plex Sans Variable", "IBM Plex Sans", system-ui, -apple-system, "Segoe UI", sans-serif;--serif:"IBM Plex Serif", Georgia, "Times New Roman", serif;--bg:#f4f6f8;--surface:#fff;--surface-2:#eef1f4;--line:#d9dee5;--line-2:#c3cad4;--ink:#17212e;--ink-2:#4a5565;--ink-3:#6f7a8a;--accent:#0e5e6f;--accent-soft:#e2f0f2;--mark:#ffe14d;--mark-soft:#fff4b8;--mark-ink:#2e2600;--good:#1e7a4c;--good-soft:#e3f3ea;--bad:#b83a2e;--bad-soft:#fbe9e6;--warn:#9a6200;--shadow:0 1px 2px #17212e0f, 0 4px 16px #17212e0f;--r-sm:6px;--r:8px;--r-lg:12px;--t-xs:calc(12px * var(--scale));--t-sm:calc(14px * var(--scale));--t-md:calc(16px * var(--scale));--t-lg:calc(18px * var(--scale));--t-xl:calc(22px * var(--scale));--t-2xl:calc(28px * var(--scale));--t-3xl:calc(38px * var(--scale));--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=dark]{--bg:#0f1318;--surface:#171c23;--surface-2:#1f252e;--line:#2c3440;--line-2:#3a4452;--ink:#e7ebf0;--ink-2:#aab3bf;--ink-3:#808a98;--accent:#66b9c8;--accent-soft:#15303a;--mark:#e9cb2e;--mark-soft:#3a3410;--mark-ink:#1a1500;--good:#52c48e;--good-soft:#14301f;--bad:#f07a6e;--bad-soft:#3a1c19;--warn:#e0a440;--shadow:0 1px 2px #0000004d, 0 6px 20px #00000040;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}body{background:var(--bg);color:var(--ink);font-family:var(--font);font-size:var(--t-md);-webkit-font-smoothing:antialiased;font-feature-settings:"tnum" 0;margin:0;line-height:1.5}h1,h2,h3,h4{letter-spacing:-.01em;margin:0;font-weight:600;line-height:1.2}p{margin:0}a{color:var(--accent);text-underline-offset:2px;text-decoration-thickness:1px}button,input,textarea,select{font:inherit;color:inherit}button{cursor:pointer}img,svg{display:block}mark{background:var(--mark);color:var(--mark-ink);border-radius:2px;padding:0 1px}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}::selection{background:var(--mark-soft)}.num{font-variant-numeric:tabular-nums}.faint{color:var(--ink-3)}.muted{color:var(--ink-2)}.small{font-size:var(--t-sm)}.xs{font-size:var(--t-xs)}.serif{font-family:var(--serif)}.sr{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.good{color:var(--good)}.bad{color:var(--bad)}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}.btn{border-radius:var(--r);border:1px solid var(--line-2);background:var(--surface);min-height:40px;color:var(--ink);font-size:var(--t-sm);white-space:nowrap;justify-content:center;align-items:center;gap:8px;padding:0 16px;font-weight:500;line-height:1;text-decoration:none;transition:background .12s,border-color .12s,transform 80ms;display:inline-flex}.btn:hover{background:var(--surface-2)}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.btn.primary{background:var(--ink);border-color:var(--ink);color:var(--bg)}.btn.primary:hover{background:color-mix(in srgb, var(--ink) 88%, var(--bg))}.btn.mark{background:var(--mark);border-color:var(--mark);color:var(--mark-ink)}.btn.mark:hover{background:color-mix(in srgb, var(--mark) 88%, var(--ink))}.btn.ghost{background:0 0;border-color:#0000}.btn.ghost:hover{background:var(--surface-2)}.btn.danger{color:var(--bad)}.btn.lg{min-height:48px;font-size:var(--t-md);padding:0 22px}.btn.sm{min-height:32px;font-size:var(--t-xs);padding:0 12px}.btn.icon{width:40px;padding:0}.btn.icon.sm{width:32px}.btn.block{width:100%}.field{gap:6px;display:grid}.field>span{font-size:var(--t-sm);color:var(--ink-2);font-weight:500}.input,.textarea,.select{border:1px solid var(--line-2);border-radius:var(--r);background:var(--surface);width:100%;min-height:42px;color:var(--ink);font-size:var(--t-md);padding:9px 12px}.input:focus,.textarea:focus,.select:focus{outline:2px solid var(--accent);outline-offset:-1px;border-color:#0000}.textarea{resize:vertical;line-height:1.6}.seg{background:var(--surface-2);border-radius:var(--r);border:1px solid var(--line);scrollbar-width:none;gap:3px;max-width:100%;padding:3px;display:inline-flex;overflow-x:auto}.seg::-webkit-scrollbar{display:none}.seg button{white-space:nowrap;border-radius:var(--r-sm);font-size:var(--t-sm);color:var(--ink-2);background:0 0;border:0;flex:none;padding:7px 12px;font-weight:500}.seg button[aria-pressed=true]{background:var(--surface);color:var(--ink);box-shadow:var(--shadow)}.chip{font-size:var(--t-xs);background:var(--surface-2);color:var(--ink-2);white-space:nowrap;border-radius:999px;align-items:center;gap:6px;padding:3px 9px;font-weight:500;display:inline-flex}.chip.good{background:var(--good-soft);color:var(--good)}.chip.bad{background:var(--bad-soft);color:var(--bad)}.chip.mark{background:var(--mark-soft);color:var(--ink)}.chip.accent{background:var(--accent-soft);color:var(--accent)}.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg)}.pad{padding:20px}.stack{gap:12px;display:grid}.stack-lg{gap:24px;display:grid}.row{align-items:center;gap:10px;display:flex}.row.wrap{flex-wrap:wrap}.row.between{justify-content:space-between}.grow{flex:1;min-width:0}.divider{background:var(--line);border:0;height:1px;margin:0}.bar{background:var(--surface-2);border-radius:99px;height:6px;overflow:hidden}.bar>i{background:var(--accent);border-radius:inherit;height:100%;transition:width .4s;display:block}.spinner{border:2px solid var(--line-2);border-top-color:var(--ink);border-radius:50%;flex:none;width:16px;height:16px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.toast{left:50%;bottom:calc(84px + env(safe-area-inset-bottom));z-index:100;background:var(--ink);max-width:min(520px,100vw - 32px);color:var(--bg);border-radius:var(--r);font-size:var(--t-sm);box-shadow:var(--shadow);padding:12px 16px;position:fixed;transform:translate(-50%)}.toast.bad{background:var(--bad);color:#fff}.toast.good{background:var(--good);color:#fff}@media (width>=900px){.toast{bottom:24px}}.empty{text-align:center;color:var(--ink-2);justify-items:center;gap:12px;padding:32px 20px;display:grid}.prose{font-size:var(--t-md);max-width:72ch;line-height:1.65}.prose>*+*{margin-top:.9em}.prose h2{font-size:var(--t-xl);margin-top:1.8em}.prose h3{font-size:var(--t-lg);margin-top:1.4em}.prose ul,.prose ol{margin-bottom:0;padding-left:1.3em}.prose li+li{margin-top:.3em}.prose blockquote{border-left:4px solid var(--mark);background:var(--surface-2);border-radius:0 var(--r) var(--r) 0;margin-left:0;margin-right:0;padding:14px 16px}.prose blockquote>*+*{margin-top:.5em}.prose code{background:var(--surface-2);border-radius:4px;padding:1px 5px;font-size:.92em}.prose table{border-collapse:collapse;width:100%;font-size:var(--t-sm)}.prose .table-wrap{border:1px solid var(--line);border-radius:var(--r);overflow-x:auto}.prose th,.prose td{text-align:left;border-bottom:1px solid var(--line);vertical-align:top;padding:8px 10px}.prose th{background:var(--surface-2);font-weight:600}.prose tr:last-child td{border-bottom:0}.prose hr{background:var(--line);border:0;height:1px}.shell{min-height:100dvh}.side{border-right:1px solid var(--line);background:var(--surface);flex-direction:column;gap:4px;width:232px;padding:20px 14px;display:none;position:fixed;inset:0 auto 0 0}.brand{color:var(--ink);align-items:center;gap:10px;padding:4px 10px 18px;text-decoration:none;display:flex}.brand-mark{background:var(--ink);width:30px;height:30px;color:var(--bg);border-radius:8px;place-items:center;font-size:12px;font-weight:600;display:grid;position:relative;overflow:hidden}.brand-mark:after{content:"";background:var(--mark);border-radius:1px;height:4px;position:absolute;bottom:6px;left:5px;right:5px}.brand b{font-weight:600;font-size:var(--t-md);color:var(--ink);display:block}.brand small{font-size:var(--t-xs);color:var(--ink-3);display:block}.nav-link{border-radius:var(--r);color:var(--ink-2);font-size:var(--t-sm);align-items:center;gap:12px;padding:9px 10px;font-weight:500;text-decoration:none;display:flex}.nav-link:hover,.nav-link[aria-current=page]{background:var(--surface-2);color:var(--ink)}.nav-link[aria-current=page] svg{color:var(--ink)}.nav-link .count{font-size:var(--t-xs);background:var(--mark);color:var(--mark-ink);border-radius:99px;margin-left:auto;padding:1px 7px;font-weight:600}.side-foot{gap:4px;margin-top:auto;display:grid}.sync{font-size:var(--t-xs);color:var(--ink-3);align-items:center;gap:8px;padding:8px 10px;text-decoration:none;display:flex}.sync i{background:var(--good);border-radius:50%;flex:none;width:7px;height:7px}.sync[data-state=saving] i{background:var(--warn)}.sync[data-state=offline] i,.sync[data-state=error] i,.sync[data-state=expired] i{background:var(--bad)}.main{padding:16px 16px calc(96px + env(safe-area-inset-bottom));max-width:980px}.topbar{justify-content:space-between;align-items:center;gap:12px;padding:4px 0 12px;display:flex}.topbar .brand{padding:0}.tabs{z-index:40;padding:6px 6px calc(6px + env(safe-area-inset-bottom));background:color-mix(in srgb, var(--surface) 92%, transparent);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-top:1px solid var(--line);grid-template-columns:repeat(5,1fr);display:grid;position:fixed;bottom:0;left:0;right:0}.tabs a{color:var(--ink-3);justify-items:center;gap:2px;padding:6px 0;font-size:11px;font-weight:500;text-decoration:none;display:grid;position:relative}.tabs a[aria-current=page]{color:var(--ink)}.tabs a .dot{background:var(--mark);min-width:16px;height:16px;color:var(--mark-ink);border-radius:99px;place-items:center;padding:0 4px;font-size:10px;font-weight:700;display:grid;position:absolute;top:3px;left:calc(50% + 8px)}@media (width>=900px){.side{display:flex}.tabs,.topbar{display:none}.main{margin-left:232px;padding:40px 48px 64px}}.page-head{gap:6px;margin:4px 0 22px;display:grid}.page-head h1{font-size:var(--t-2xl)}.page-head p{color:var(--ink-2);max-width:64ch}.section-title{font-size:var(--t-lg);margin:0 0 12px}.back{color:var(--ink-2);font-size:var(--t-sm);align-items:center;gap:6px;margin-bottom:10px;text-decoration:none;display:inline-flex}.grid-2{gap:16px;display:grid}@media (width>=760px){.grid-2{grid-template-columns:1fr 1fr}}.list{display:grid}.list>*+*{border-top:1px solid var(--line)}.list-item{color:inherit;text-align:left;background:0 0;border:0;align-items:center;gap:14px;width:100%;padding:14px 18px;text-decoration:none;display:flex}a.list-item:hover,button.list-item:hover{background:var(--surface-2)}.list-item .title{font-weight:500}.list-item .sub{font-size:var(--t-sm);color:var(--ink-3)}.ruler{gap:10px;display:grid}.ruler-scale{height:70px;margin:0 10px;position:relative}.ruler-track{background:var(--surface-2);border:1px solid var(--line);border-radius:3px;height:10px;position:absolute;top:22px;left:0;right:0}.ruler-fill{background:var(--mark);border-radius:3px;height:10px;transition:width .6s cubic-bezier(.2,.8,.2,1);position:absolute;top:22px;left:0}.ruler-tick{color:var(--ink-3);font-variant-numeric:tabular-nums;font-size:11px;position:absolute;top:36px;transform:translate(-50%)}.ruler-tick:before{content:"";background:var(--line-2);width:1px;height:4px;position:absolute;top:-6px;left:50%}.ruler-target{background:var(--ink);width:2px;height:22px;position:absolute;top:16px;transform:translate(-1px)}.ruler-target span{white-space:nowrap;font-size:11px;font-weight:600;position:absolute;top:37px;left:50%;transform:translate(-50%)}.ruler-now{background:var(--ink);color:var(--bg);font-variant-numeric:tabular-nums;border-radius:4px;padding:0 5px;font-size:13px;font-weight:700;line-height:18px;position:absolute;top:0;transform:translate(-50%)}.skills{background:var(--line);border:1px solid var(--line);border-radius:var(--r);grid-template-columns:repeat(4,1fr);gap:1px;display:grid;overflow:hidden}.skill{background:var(--surface);gap:2px;padding:10px 12px;display:grid}.skill b{font-size:var(--t-xl);font-variant-numeric:tabular-nums;font-weight:600}.skill span{font-size:var(--t-xs);color:var(--ink-3)}.big-band{letter-spacing:-.03em;font-variant-numeric:tabular-nums;font-size:64px;font-weight:600;line-height:1}.hero{gap:18px;padding:22px;display:grid}.hero h1{font-size:var(--t-2xl)}.countdown{align-items:baseline;gap:8px;display:flex}.countdown b{font-size:var(--t-3xl);letter-spacing:-.02em;font-variant-numeric:tabular-nums;font-weight:600;line-height:1}.task{align-items:center;gap:12px;padding:12px 18px;display:flex}.task input{width:20px;height:20px;accent-color:var(--ink);flex:none}.task.done .title{color:var(--ink-3);text-decoration:line-through}.task a{margin-left:auto}.kinds{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px;display:grid}.kind{text-align:left;border-radius:var(--r);border:1px solid var(--line-2);background:var(--surface);gap:4px;padding:14px;display:grid}.kind[aria-pressed=true]{border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink)}.kind b{font-weight:600}.kind span{font-size:var(--t-xs);color:var(--ink-3)}.build-step{align-items:center;gap:12px;padding:12px 18px;display:flex}.build-step .state{flex:none;place-items:center;width:22px;display:grid}.build-step.ready .state{color:var(--good)}.build-step.failed .state{color:var(--bad)}.flash{text-align:center;cursor:pointer;-webkit-user-select:none;user-select:none;align-content:center;justify-items:center;gap:14px;min-height:300px;padding:28px 22px;display:grid}.flash .front{letter-spacing:-.01em;font-size:clamp(24px,6vw,34px);font-weight:600;line-height:1.2}.flash .tr{font-size:var(--t-lg)}.flash .ex{font-family:var(--serif);color:var(--ink-2);max-width:46ch;line-height:1.6}.flash .wrong{font-family:var(--serif);font-size:var(--t-xl);text-decoration:line-through;-webkit-text-decoration-color:var(--bad);text-decoration-color:var(--bad);color:var(--ink-2)}.grades{grid-template-columns:repeat(4,1fr);gap:8px;display:grid}.grades .btn{flex-direction:column;gap:3px;min-height:56px}.grades small{color:var(--ink-3);font-size:11px;font-weight:400}.deck-row{align-items:center;gap:14px;padding:12px 18px;display:flex}.deck-meter{flex:none;width:72px}.auth{place-items:center;min-height:100dvh;padding:24px 16px;display:grid}.auth-box{gap:22px;width:100%;max-width:420px;display:grid}.auth-box h1{font-size:var(--t-2xl)}.pin{letter-spacing:.5em;font-variant-numeric:tabular-nums}.onb{gap:24px;max-width:560px;margin:0 auto;padding:32px 16px;display:grid}.onb h1{font-size:var(--t-2xl)}.choices{gap:8px;display:grid}.choice{text-align:left;border:1px solid var(--line-2);border-radius:var(--r);background:var(--surface);gap:2px;padding:14px 16px;display:grid}.choice[aria-pressed=true]{border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink)}.choice span{font-size:var(--t-sm);color:var(--ink-3)}.bands{flex-wrap:wrap;gap:6px;display:flex}.bands button{border-radius:var(--r);border:1px solid var(--line-2);background:var(--surface);font-variant-numeric:tabular-nums;width:52px;height:42px;font-weight:600}.bands button[aria-pressed=true]{background:var(--ink);color:var(--bg);border-color:var(--ink)}.chart{gap:8px;margin:0;display:grid}.chart-title{font-weight:600;font-size:var(--t-sm)}.chart-svg{width:100%;height:auto}.chart-grid{stroke:var(--line);stroke-width:1px}.chart-axis{fill:var(--ink-3);font-size:12px;font-family:var(--font)}.chart-legend{font-size:var(--t-xs);color:var(--ink-2);flex-wrap:wrap;gap:6px 14px;margin:0;padding:0;list-style:none;display:flex}.chart-legend i{vertical-align:-1px;border-radius:2px;width:10px;height:10px;margin-right:6px;display:inline-block}.chart-pies{flex-wrap:wrap;align-items:center;gap:16px;display:flex}.chart-pie{justify-items:center;gap:4px;width:180px;display:grid}.chart-pie-label{fill:#fff;font-size:13px;font-weight:600;font-family:var(--font)}.chart-pie-name{font-size:var(--t-xs);font-weight:600}.data-table{border-collapse:collapse;width:100%;font-size:var(--t-sm)}.data-table th,.data-table td{border:1px solid var(--line-2);text-align:left;padding:6px 8px}.data-table th{background:var(--surface-2);font-weight:600}.data-table td.n{text-align:right;font-variant-numeric:tabular-nums}.table-scroll{overflow-x:auto}.map-svg{border:1px solid var(--line-2);border-radius:var(--r);background:var(--surface);width:100%;max-width:560px;height:auto}.map-svg text{font-family:var(--font)}.crit{grid-template-columns:44px 1fr;gap:4px 12px;padding:12px 0;display:grid}.crit+.crit{border-top:1px solid var(--line)}.crit b{font-size:var(--t-xl);font-variant-numeric:tabular-nums;grid-row:span 2}.crit h4{font-size:var(--t-sm)}.crit p{font-size:var(--t-sm);color:var(--ink-2)}.fix{font-size:var(--t-sm);gap:4px;padding:10px 0;display:grid}.fix+.fix{border-top:1px solid var(--line)}.fix s{color:var(--bad);text-decoration-thickness:1px}.fix ins{color:var(--good);font-weight:500;text-decoration:none}.notes-list{font-size:var(--t-sm);gap:6px;margin:0;padding-left:1.2em;display:grid}.rewrite{white-space:pre-wrap;font-family:var(--serif);line-height:1.7;font-size:var(--t-md)}.dict-answer{font-size:var(--t-xl);text-align:center;letter-spacing:.02em}.review-split{align-items:start;gap:16px;display:grid}@media (width>=1100px){.review-split{grid-template-columns:1fr 1fr}.review-split>.panel:first-child{max-height:calc(100dvh - 32px);position:sticky;top:16px;overflow-y:auto}}.strategy summary{cursor:pointer;align-items:center;gap:10px;padding:14px 18px;font-weight:500;list-style:none;display:flex}.strategy summary::-webkit-details-marker{display:none}.strategy summary:after{content:"+";color:var(--ink-3);margin-left:auto;font-size:20px;line-height:1}.strategy[open] summary:after{content:"–"}.strategy .body{font-size:var(--t-sm);gap:10px;padding:0 18px 18px;display:grid}.strategy .body ol,.strategy .body ul{gap:4px;margin:0;padding-left:1.2em;display:grid}.strategy .tip{background:var(--mark-soft);border-radius:var(--r);padding:10px 12px}.part-picks{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:8px;display:grid}.exam{background:var(--bg);z-index:50;grid-template-rows:auto minmax(0,1fr) auto;grid-template-columns:minmax(0,1fr);display:grid;position:fixed;inset:0}.exam>*{min-width:0}.exam-top{padding:8px 12px;padding-top:calc(8px + env(safe-area-inset-top));background:var(--surface);border-bottom:1px solid var(--line);grid-template-columns:1fr auto 1fr;align-items:center;gap:8px;display:grid}.exam-top .who{font-size:var(--t-xs);color:var(--ink-3);min-width:0;line-height:1.3}.exam-top .who b{color:var(--ink);font-size:var(--t-sm);white-space:nowrap;text-overflow:ellipsis;display:block;overflow:hidden}.exam-top .tools{justify-self:end;gap:4px;display:flex}.timer{font-variant-numeric:tabular-nums;font-weight:600;font-size:var(--t-md);border-radius:var(--r);align-items:center;gap:8px;padding:6px 12px;display:flex}.timer.low{background:var(--bad-soft);color:var(--bad)}.timer.flash{animation:1s steps(2,end) 6 flash}@keyframes flash{50%{background:var(--bad);color:#fff}}.timer.hidden span{visibility:hidden}.exam-body{grid-template-columns:minmax(0,1fr);min-height:0;display:grid;overflow:hidden}.part-head{background:var(--surface-2);border-bottom:1px solid var(--line);padding:12px 16px}.part-head h2{font-size:var(--t-md)}.part-head p{font-size:var(--t-sm);color:var(--ink-2)}.pane{-webkit-overflow-scrolling:touch;overscroll-behavior:contain;min-height:0;overflow-y:auto}.pane-inner{max-width:760px;padding:18px 16px 40px}.split{grid-template-rows:auto minmax(0,1fr);min-height:0;display:grid}.split-panes{grid-template-columns:minmax(0,1fr);min-height:0;display:grid}.split-toggle{border-bottom:1px solid var(--line);background:var(--surface);gap:8px;padding:8px 12px;display:flex}@media (width>=900px){.split-toggle{display:none}.split-panes{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.split-panes>.pane+.pane{border-left:1px solid var(--line)}.split-panes>.pane[hidden]{display:block!important}}@media (width<=899px){.split-panes>.pane[hidden]{display:none}}.passage{font-family:var(--serif);font-size:calc(var(--t-md) * 1.04);line-height:1.75}.passage h2{font-family:var(--font);font-size:var(--t-xl);margin-bottom:4px}.passage h3{font-family:var(--font);font-size:var(--t-md);margin:22px 0 8px}.passage p{margin:0 0 14px}.passage .plabel{font-family:var(--font);margin-right:8px;font-weight:700}.passage mark{background:var(--mark);color:var(--mark-ink);cursor:pointer;border-radius:0;padding:0}.passage mark.evidence{box-shadow:inset 0 -3px 0 var(--good);cursor:default;background:0 0}.hl-pop{z-index:60;background:var(--ink);border-radius:var(--r);box-shadow:var(--shadow);gap:4px;padding:4px;display:flex;position:fixed}.hl-pop button{color:var(--bg);font-size:var(--t-sm);border-radius:var(--r-sm);background:0 0;border:0;padding:6px 10px}.hl-pop button:hover{background:#ffffff1f}.qgroup{gap:14px;padding-bottom:28px;display:grid}.qgroup+.qgroup{border-top:1px solid var(--line);padding-top:22px}.qrange{font-weight:600}.qinstr{color:var(--ink-2);font-size:var(--t-sm);white-space:pre-line}.qinstr b,.qinstr strong{color:var(--ink)}.qtitle{text-align:center;font-weight:600}.qbox{border:1px solid var(--line-2);border-radius:var(--r);background:var(--surface);padding:14px 16px}.qbox.form{gap:10px;display:grid}.qline{line-height:2.2}.qline.head{margin-top:6px;font-weight:600;line-height:1.5}.gap{vertical-align:baseline;align-items:center;margin:0 2px;display:inline-flex;position:relative}.gap .gn{color:var(--ink-3);pointer-events:none;font-size:12px;font-weight:700;position:absolute;top:50%;left:8px;transform:translateY(-50%)}.gap input{border:1px solid var(--line-2);border-radius:var(--r-sm);background:var(--surface);width:150px;height:32px;font-size:var(--t-md);padding:0 8px 0 30px}.gap input:focus{outline:2px solid var(--accent);outline-offset:-1px}.gap.filled .gn{color:var(--accent)}.gap select{border:1px solid var(--line-2);border-radius:var(--r-sm);background:var(--surface);min-width:84px;height:32px;padding:0 6px 0 30px}.qtable{border-collapse:collapse;width:100%;font-size:var(--t-sm)}.qtable th,.qtable td{border:1px solid var(--line-2);vertical-align:top;text-align:left;padding:8px;line-height:2.1}.qtable th{background:var(--surface-2);line-height:1.4}.qtable .gap input{width:120px}.flow{justify-items:center;gap:6px;display:grid}.flow .qline{border:1px solid var(--line-2);border-radius:var(--r);text-align:center;background:var(--surface);width:100%;padding:6px 12px}.flow .arrow{color:var(--ink-3);line-height:1}.optbox{border:1px solid var(--line-2);border-radius:var(--r);background:var(--surface);font-size:var(--t-sm);gap:4px;padding:12px 14px;display:grid}.optbox .ot{margin-bottom:4px;font-weight:600}.optbox div{grid-template-columns:34px 1fr;display:grid}.optbox b{font-weight:700}.q{gap:8px;scroll-margin-top:12px;display:grid}.q-stem{align-items:baseline;gap:10px;display:flex}.qn{border-radius:var(--r-sm);background:var(--surface-2);flex:none;place-items:center;min-width:28px;height:24px;padding:0 4px;font-size:13px;font-weight:700;display:inline-grid}.q.current .qn,.gap.current .gn{color:var(--ink)}.q.current .qn{background:var(--mark);color:var(--mark-ink)}.opts{gap:6px;padding-left:38px;display:grid}.opt{border:1px solid var(--line);border-radius:var(--r);background:var(--surface);cursor:pointer;font-size:var(--t-sm);align-items:flex-start;gap:10px;padding:8px 10px;line-height:1.45;display:flex}.opt:hover{border-color:var(--line-2)}.opt input{accent-color:var(--ink);flex:none;width:16px;height:16px;margin:2px 0 0}.opt.on{border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink)}.opt b{flex:none;width:16px}.letters{flex-wrap:wrap;gap:4px;padding-left:38px;display:flex}.letters button{border:1px solid var(--line-2);border-radius:var(--r-sm);background:var(--surface);min-width:36px;height:34px;font-weight:600;font-size:var(--t-sm);padding:0 8px}.letters button[aria-pressed=true]{background:var(--ink);color:var(--bg);border-color:var(--ink)}.tf{flex-wrap:wrap;gap:6px;padding-left:38px;display:flex}.tf button{border:1px solid var(--line-2);border-radius:var(--r-sm);background:var(--surface);height:34px;font-size:var(--t-xs);padding:0 12px;font-weight:600}.tf button[aria-pressed=true]{background:var(--ink);color:var(--bg);border-color:var(--ink)}.verdict{font-size:var(--t-sm);gap:6px;padding-left:38px;display:grid}.verdict .ans{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.verdict .why{color:var(--ink-2);line-height:1.55}.verdict .ev{font-family:var(--serif);color:var(--ink-2);border-left:3px solid var(--good);padding-left:10px}.gap.right input{border-color:var(--good);background:var(--good-soft)}.gap.wrong input{border-color:var(--bad);background:var(--bad-soft)}.q.right .qn{background:var(--good);color:#fff}.q.wrong .qn{background:var(--bad);color:#fff}.exam-nav{background:var(--surface);border-top:1px solid var(--line);padding:6px 8px calc(6px + env(safe-area-inset-bottom));align-items:center;gap:8px;display:flex}.nav-parts{scrollbar-width:none;flex:1;align-items:center;gap:6px;display:flex;overflow-x:auto}.nav-parts::-webkit-scrollbar{display:none}.nav-part{border-radius:var(--r);border:1px solid #0000;flex:none;align-items:center;gap:2px;padding:4px 6px;display:flex}.nav-part.on{border-color:var(--line-2);background:var(--surface-2)}.nav-part>button.pl{font-size:var(--t-xs);white-space:nowrap;color:var(--ink-2);background:0 0;border:0;padding:4px 6px;font-weight:600}.nav-part.on>button.pl{color:var(--ink)}.nav-part .done-count{color:var(--ink-3);font-size:11px;font-weight:500}.qbtn{border-radius:var(--r-sm);border:1px solid var(--line-2);background:var(--surface);flex:none;width:28px;height:28px;padding:0;font-size:12px;font-weight:600;position:relative}.qbtn.answered{background:var(--ink);color:var(--bg);border-color:var(--ink)}.qbtn.current{outline:2px solid var(--mark);outline-offset:1px}.qbtn.flagged:after{content:"";background:var(--mark);border:2px solid var(--surface);border-radius:50%;width:9px;height:9px;position:absolute;top:-4px;right:-4px}.qbtn.right{background:var(--good);border-color:var(--good);color:#fff}.qbtn.wrong{background:var(--bad);border-color:var(--bad);color:#fff}.nav-parts .qbtns{gap:3px;display:none}.nav-part.on .qbtns{display:flex}@media (width>=900px){.nav-parts .qbtns{display:flex}.nav-part:not(.on) .qbtn{width:22px;height:22px;font-size:10px}}.nav-tools{flex:none;gap:4px;display:flex}.flag-btn[aria-pressed=true]{background:var(--mark);border-color:var(--mark);color:var(--mark-ink)}.screen{place-items:center;padding:24px 16px;display:grid;overflow-y:auto}.screen-box{gap:18px;width:100%;max-width:620px;display:grid}.screen-box h1{font-size:var(--t-2xl)}.rules{color:var(--ink-2);gap:8px;margin:0;padding-left:1.2em;display:grid}.listen-bar{background:var(--surface);border-bottom:1px solid var(--line);font-size:var(--t-sm);align-items:center;gap:12px;padding:10px 16px;display:flex}.listen-bar .bar{flex:1;max-width:360px}.eq{align-items:flex-end;gap:2px;height:16px;display:flex}.eq i{background:var(--ink);border-radius:1px;width:3px;animation:.9s ease-in-out infinite eq}.eq i:nth-child(2){animation-delay:-.3s}.eq i:nth-child(3){animation-delay:-.6s}.eq i:nth-child(4){animation-delay:-.15s}.eq.paused i{height:4px;animation-play-state:paused}@keyframes eq{0%,to{height:4px}50%{height:16px}}.script{font-size:var(--t-sm);gap:8px;display:grid}.script p b{font-weight:600}.wtask{gap:14px;display:grid}.wprompt{border:1px solid var(--line-2);border-radius:var(--r);background:var(--surface);white-space:pre-line;padding:14px 16px;line-height:1.6}.editor{grid-template-rows:1fr auto;height:100%;min-height:0;display:grid}.editor textarea{resize:none;font-family:var(--serif);font-size:calc(var(--t-md) * 1.04);background:var(--surface);border:0;outline:none;min-height:50vh;padding:18px 16px;line-height:1.75}.editor .wc{font-size:var(--t-sm);border-top:1px solid var(--line);background:var(--surface-2);justify-content:space-between;padding:8px 16px;display:flex}.stages{counter-reset:st;gap:6px;margin:0;padding:0;list-style:none;display:grid}.stages li{counter-increment:st;border:1px solid var(--line-2);border-radius:var(--r);background:var(--surface);font-size:var(--t-sm);padding:8px 12px 8px 40px;position:relative}.stages li:before{content:counter(st);color:var(--ink-3);font-weight:700;position:absolute;top:8px;left:12px}.examiner{text-align:center;justify-items:center;gap:16px;max-width:560px;margin:0 auto;padding:24px 16px;display:grid}.examiner .q-text{font-size:var(--t-xl);font-weight:500;line-height:1.4}.mic-ring{background:var(--surface);border:1px solid var(--line-2);border-radius:50%;place-items:center;width:120px;height:120px;display:grid;position:relative}.mic-ring.rec{border-color:var(--bad);color:var(--bad)}.mic-ring .lvl{border:3px solid var(--bad);opacity:.35;border-radius:50%;transition:transform 80ms;position:absolute;inset:-6px}.cue{text-align:left;border:1px solid var(--line-2);border-radius:var(--r);background:var(--surface);gap:8px;width:100%;padding:18px 20px;display:grid}.cue h3{font-size:var(--t-lg)}.cue ul{margin:0;padding-left:1.2em}.big-timer{font-variant-numeric:tabular-nums;letter-spacing:-.02em;font-size:44px;font-weight:600;line-height:1}.modal-back{z-index:80;background:#0a0e1473;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.modal{width:100%;max-width:440px;box-shadow:var(--shadow)}@media (width<=600px){.hide-sm{display:none}}.pane.editor-pane{display:grid;overflow:hidden}
