@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(data:font/woff2;base64,d09GMgABAAAAAAfsABQAAAAAEAwAAAeCAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGhwbHhwoP0hWQVJbBmA/U1RBVIFiJyYAdC9qEQgKhGSEAAsgADCGCAE2AiQDOgQgBYlMB4EUDAcbLQ4onoexrSC/2ZyLAa8p8VHB8/x3Vue+V0hVJalMJg2nx/TCrQXxBeqLjQG7FyM1WEa/X1tEXN7cFz9EJEMmMUz3RihWSSKeQCbcIou0izz/C8v+fq3VfajEa9gDD11CImXS7qL/RJFVzC1qiB6KmKeD6TZdQ6IRGv78dL6uSVVCfgni5mzu7kcgQBgAEAQTQRCoL++STTYybkJxNfQxAAIAGu8OdEB9teW2jh4BpgDqFjAeSEByW3zFP0CBBgNMsMCGEDjgggdhiEAUAeIIED7ABTDUEnkIE9Q9ahFgKttcVhApo4ACB4qobHaccgDfEjFO6aaWUhjMLt2SyIvHKoDqoA4CSUwEIYQCEjhAO9R1G6keDeDZGjNo+AhxOjCEGTr1WeIF3kYBiLAOKvkJSMiKX0VdAyQt3SDJClCkxJCHkCzfqyVTriJZLcolS32JZHUekq2TYNkYtCtjYHMQXSxGjXDz2t/yLWXzDzxz+o3zFwDEaN23F+13pyMdQAEaSKAR9vcGq4A4MTSKCElGW+M7UcY7xqkggITb28ZJhlqc9q2twYKTt0NjixBgYvO9BIihEBLYuOFXQzfIQ7dXGUEEEgFDooBfAzqiQbpJrhiWSuKJCRFKYbHCyJKI2G5GiZbNAvgAu5pc3vwx4G+g3aDkhklABiSz0BICXrYghtYhx/cdJ+44rY2oZ0aMNRFz3VZjb6W33F3gzltqtOCV8tTHSpOeXuItfvr5lCdfzFpqtEitvqdcdGGFd28ZqqC0tPbeChGXgrIlnhSWu/eUso4uKWFLugyDzQJhflY4659+WjQ++6x72WUMv9G8mw6QJl7BVxX5fe/kpUsOvnZwee9uQ0cGXYd0o89XB2748sDSnt8d2VphdOTTgceDVvOds0v9P/s7HPq15aGun/6Vllb56f1dl0t1LejqrNkpdRZsG8TOnM5vkBG5oiVyVGnS8LHps5cfNWJs6qKPfaNSxiQNBUm3cKNWROr0GSur7Za31k1vieq7LH11VF+jXdRIasRKflc7jkobm1Z9te1IyZA0pDkhLR98+H37Zf1c/8at+dB7x+7GfVyTfJMPiYztsnl59Y5l4j+0n1RXlpHnF3Tq7HecmNF/CJodEMAikruxiyJaGLvHOdAfoA+oDvpjBm2b91cHGRZMU9n25xEU0A8fgEEAdKI3Q1iDtc034sug5YVMkE2jsE+BIkwSoQ3gxXMqz9tELp48bd0cFKOKS7xYjEuXBnZP5ia7DyiO/X/YI+PQSbt2uSdqAkWL9nQbV1XB94/+uPfdZz8dnXYFBYrcTl2SIR/ybxJNJPz/Gupb0JaZeens2ekC7EKr8t+Ls/P5VJPYJdHKyqfg2nqU6bhlidzcddQV/7MmecTzJ5VPcKXkNKSEogHjYFx6QZ7rQ+FSe8njaiNuOnXS8H2ScQ619c2mC3VTtauL0rRbXd/CkSOP37FY9Zkjz8+GibYUMOEWF+RdrFS8Ecv1SHOpPUPZGEIpjPvFyU5cXKjd6OXqorTqy9GwRd++HVufPGnVsW+aO3vggKZ18jR9sXaTC1PWTEsVUaK0FkNySbTQDqlm2PfDjZcu4aalnSLKjnOoYQ0nUlqqXcGpPu/4VgV/xU2pAqW4BW3qzhQ8/hFKhV2qE3+BKAtDqBXjfgnVdH4y0wg5tbVNRenNdTWOrenWLcupQdmsbq5b+18piTe/xRdp1xbILxNPJGInm2z6hoB21Lal0i+ePTtd7B45+3XhFJ329evskXm7qurUVREotqSluSo/L29d3qDhI4YOQqWhI4YNvBNfsMHeXKemXrxQfKeuPOGRVayA3JtkJKEgbPp+dXUDluddutRYLFoXGXWX6N3WFaGLbQtRSitVYNacTNSdy7AaG/HSaUEANcBoGXNdcZvZsOqQ1icBDv21/gzAoYPHH/WDW0qNR3QTYKEAEHig6o13NXbND06CQPlRtYjGNnSktRc09k1mAMDvAlDKfQjgy6fssInlfzmNAjKkDxoxHOBLdVRAIVt9j4qo+hA1w9T1aNBNTUOTTNUHLbqokE+UAfJXCIGw/IxCSL5GRUJeR40rL/UxTm4Q08H6MbCs70ObuNyIIXrINHQYInF06UUlevTjbQzTh5upiDMzMMogUtEnjPs/Y7jAHCJeB0GBHh04tC6FiB6ZFB1oArUSIoFoqhzCeAN6lHwm0T4C3VVPWvjpSMXReuWesMEcoqrmgtNBGd2noWeV0hNAz9rFeShNJxHGsPa3HXeKTk8b55hahySYHaYKKFFLpCfN8rsoaJn01CR04Gkc+5k7KVTCmClX8Q10HCrUEkVlSX+XO33oQR9609tJ516H497WSobWs5Up6TLaS10/dessIskgJSLiDlWvHVUywpkQ7hdPZqGyiEF0uVQerVcPamT1A3eKXdyI1vG9OoflrSXihZ1qqGE3nhmAgiIbRCQgPLEPtOM3UQwTLYaYYomNlpA44opnjV6jkD6id80OOrzf6BzmMD6eEa1zKyeYG1fzfEf16V6jw9XYOaar1/b2kP/IYX8oR2mcFvv2GtBV3JXgd437AQAA) 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:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(./jetbrains-mono-cyrillic-wght-normal-D73BlboJ.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(./jetbrains-mono-greek-wght-normal-Bw9x6K1M.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:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(./jetbrains-mono-vietnamese-wght-normal-Bt-aOZkq.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:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(./jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.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:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(./jetbrains-mono-latin-wght-normal-B9CIFXIH.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{--bg: #f4f5f1;--surface: #ffffff;--surface-2: #eceee8;--ink: #1e2227;--ink-2: #5a6068;--line: #d8dbd3;--accent: #c2255c;--accent-soft: #f8e1e9;--accent-ink: #ffffff;--pencil: #2a2e35;--pencil-ink: #f4f5f1;--ok: #2b7a4b;--ok-bg: #e3f2e8;--bad: #c43e0c;--bad-bg: #fdeee4;--warn-bg: #fff3c4;--warn-ink: #6b4e00;--gold: #855a00;--gold-bg: #fbf3df;--radius: 14px;--sans: "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans SC", system-ui, sans-serif;--mono: "JetBrains Mono Variable", "JetBrains Mono", "Cascadia Mono", Consolas, ui-monospace, monospace;color-scheme:light}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--bg: #15171a;--surface: #1e2125;--surface-2: #282c31;--ink: #eceef0;--ink-2: #a3aab2;--line: #353a40;--accent: #f06595;--accent-soft: #3a1a26;--accent-ink: #1a0b11;--pencil: #e6e8eb;--pencil-ink: #15171a;--ok: #69db7c;--ok-bg: #1b3324;--bad: #ff922b;--bad-bg: #3a2414;--warn-bg: #3a3114;--warn-ink: #ffd666;--gold: #e3b552;--gold-bg: #2c2514;color-scheme:dark}}:root[data-theme=dark]{--bg: #15171a;--surface: #1e2125;--surface-2: #282c31;--ink: #eceef0;--ink-2: #a3aab2;--line: #353a40;--accent: #f06595;--accent-soft: #3a1a26;--accent-ink: #1a0b11;--pencil: #e6e8eb;--pencil-ink: #15171a;--ok: #69db7c;--ok-bg: #1b3324;--bad: #ff922b;--bad-bg: #3a2414;--warn-bg: #3a3114;--warn-ink: #ffd666;--gold: #e3b552;--gold-bg: #2c2514;color-scheme:dark}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:17px;line-height:1.6;-webkit-tap-highlight-color:transparent;overflow-x:hidden}#app{max-width:560px;margin:0 auto;padding:12px 16px 120px;min-height:100dvh}h1,h2,h3{line-height:1.3;margin:0 0 8px;text-wrap:balance}h1{font-size:28px;font-weight:800;letter-spacing:-.01em}h2{font-size:21px;font-weight:700}h3{font-size:17px;margin-top:18px}p{margin:6px 0}a{color:inherit;text-decoration:underline;text-decoration-color:var(--line);text-underline-offset:3px}a:hover{text-decoration-color:var(--accent)}body,button,input,textarea,select,pre,code{font-variant-ligatures:none;font-feature-settings:"calt" 0,"liga" 0}code,.mono{font-family:var(--mono);font-feature-settings:"calt" 0,"liga" 0,"zero" 1}button{font:inherit;color:inherit;border:1px solid var(--line);background:var(--surface);border-radius:12px;padding:10px 14px;min-height:44px;cursor:pointer;touch-action:manipulation;transition:transform 80ms ease,background-color .12s ease,border-color .12s ease}button:active{transform:scale(.98)}button:disabled{opacity:.45;cursor:default;transform:none}button.primary{background:var(--pencil);color:var(--pencil-ink);border-color:transparent;font-weight:700}button.ghost{background:transparent}button.big{width:100%;padding:16px;font-size:19px;border-radius:var(--radius)}:focus-visible{outline:3px solid var(--accent);outline-offset:2px}#app>button.ghost:first-child,#app>.spread:first-child>button.ghost:first-child{border:none;padding:4px 0;min-height:36px;color:var(--ink-2);font-size:15px;margin-bottom:4px}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:16px;margin:12px 0}.muted{color:var(--ink-2);font-size:15px}.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.spread{display:flex;justify-content:space-between;align-items:center;gap:8px}.spread>*{min-width:0}.chip{display:inline-block;font-size:13px;line-height:1.5;padding:2px 10px;border-radius:999px;background:var(--surface-2);color:var(--ink-2);white-space:nowrap}.chip.accent{background:var(--accent);color:var(--accent-ink)}.chip.gold{background:var(--gold-bg);color:var(--gold);border:1px solid var(--gold)}.goal{background:var(--gold-bg);border:1.5px solid var(--gold);border-radius:12px;padding:10px 12px;display:flex;gap:12px;align-items:center;justify-content:space-between}.goal>div{flex:1;min-width:0}.goal button{flex-shrink:0}.goal.done{border-style:dashed}.seal{flex:none;width:40px;height:40px;display:grid;place-items:center;border:2px solid var(--gold);border-radius:5px;color:var(--gold);font-weight:800;font-size:15px;line-height:1.05;text-align:center;letter-spacing:.05em;transform:rotate(-6deg)}.notice{background:var(--surface-2);border-radius:12px;padding:10px 12px;display:flex;gap:10px;align-items:center;justify-content:space-between;margin:8px 0}.notice button{flex-shrink:0}.stamp{position:fixed;top:0;right:0;bottom:0;left:0;z-index:30;display:grid;place-items:center;pointer-events:none}.stamp .box{display:flex;flex-direction:column;align-items:center;gap:12px;padding:22px 26px;background:var(--surface);border:1px solid var(--line);border-radius:18px;box-shadow:0 10px 40px #0000002e;max-width:calc(100vw - 48px);animation:stamp-fade 2.2s ease forwards}.stamp .seal{width:76px;height:76px;font-size:26px;border-width:3px;animation:stamp-in .42s cubic-bezier(.2,1.4,.4,1) both}.stamp p{margin:0;text-align:center;font-weight:700}@keyframes stamp-in{0%{transform:rotate(-18deg) scale(2.2);opacity:0}to{transform:rotate(-6deg) scale(1);opacity:1}}@keyframes stamp-fade{0%,80%{opacity:1}to{opacity:0}}.masthead{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:4px 0 2px}.masthead h1{margin:0}.digits{display:flex;align-items:flex-end;gap:3px}.digits b{width:24px;height:32px;display:grid;place-items:center;border:1.5px solid var(--accent);border-radius:3px;font-family:var(--mono);font-size:20px;font-weight:700;color:var(--ink)}.digits small{margin-left:4px;font-size:13px;color:var(--ink-2)}.countdown{display:flex;flex-direction:column;align-items:flex-end;gap:2px;flex:none}.phase{color:var(--ink-2);font-size:15px;margin-bottom:12px}.sheet{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:16px;margin:12px 0}.grid{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0}.cell{min-width:48px;height:40px;padding:0 10px;border:1.5px solid var(--accent);border-radius:4px;display:grid;place-items:center;font-size:14px;color:var(--accent)}.cell.desk{min-width:72px}.cell.on{background:var(--pencil);border-color:var(--pencil);color:var(--pencil-ink)}.cell.fresh{animation:fill .42s ease-out}@keyframes fill{0%{background-color:transparent;color:var(--accent)}60%{transform:scale(1.08)}to{background-color:var(--pencil);transform:none}}.week{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;margin-top:4px}.week div{display:flex;flex-direction:column;align-items:center;gap:3px;font-size:12px;color:var(--ink-2)}.week i{width:100%;max-width:34px;height:14px;border:1.5px solid var(--line);border-radius:3px}.week .open i{background:var(--pencil);border-color:var(--pencil)}.week .today i{border-color:var(--accent)}.week .rest i{border-style:dashed}.weekline{display:flex;justify-content:space-between;align-items:baseline;margin-top:12px}.weekline b{font-size:17px}.stats{display:flex;flex-wrap:wrap;gap:4px 16px;margin-top:10px;font-size:14px;color:var(--ink-2)}.stats span b{font-family:var(--mono);color:var(--ink);font-weight:600;margin-left:4px}.score{display:flex;align-items:baseline;gap:10px;margin:4px 0 8px}.score b{font-family:var(--mono);font-size:56px;line-height:1;font-weight:800}.score span{color:var(--ink-2)}.score .points{font-size:20px;color:var(--accent)}ul.plain{margin:8px 0 0;padding-left:20px}ul.plain li{margin:4px 0}ul.plain li::marker{color:var(--accent)}.omr{display:grid;grid-template-columns:1fr;gap:14px}@media(min-width:480px){.omr{grid-template-columns:1fr 1fr;column-gap:20px}}.omr-row{display:flex;align-items:center;gap:6px;padding:2px 0}.omr-row .qn{width:2.2em;text-align:right;font-family:var(--mono);font-size:14px;color:var(--ink-2);flex:none}.omr-b{flex:1;min-height:34px;padding:0;border:1.5px solid var(--accent);border-radius:3px;background:transparent;color:var(--accent);font-family:var(--mono);font-size:14px;font-weight:700}.omr-b.sel{background:var(--pencil);border-color:var(--pencil);color:var(--pencil-ink)}.lgroup{margin:22px 0 8px}.lgroup-head{display:flex;justify-content:space-between;align-items:center;gap:12px}.lgroup-head h2{margin:0}.lgroup-intro{margin:4px 0 8px}.gprog{display:inline-flex;align-items:center;gap:3px;flex:none}.gprog i{width:10px;height:12px;border:1.5px solid var(--accent);border-radius:2px}.gprog i.on{background:var(--pencil);border-color:var(--pencil)}.gprog b{margin-left:6px;font-family:var(--mono);font-size:13px;color:var(--ink-2);font-weight:600}.lrows{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}.lrow{display:flex;align-items:center;gap:12px;width:100%;padding:12px 14px;min-height:56px;border:none;border-radius:0;background:transparent;text-align:left;color:inherit}.lrow+.lrow{border-top:1px solid var(--line)}button.lrow:active{transform:none;background:var(--surface-2)}@media(hover:hover){button.lrow:hover{background:var(--surface-2)}}.lrow-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.lrow-title{font-weight:600}.lrow-meta{font-size:13px;color:var(--ink-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lrow-right{flex:none;font-size:13px;color:var(--ink-2);font-variant-numeric:tabular-nums}.mark{flex:none;width:22px;height:18px;border:1.5px solid var(--accent);border-radius:3px;position:relative}.mark.done{background:var(--pencil);border-color:var(--pencil)}.mark.tried{background:linear-gradient(to top right,transparent calc(50% - 1px),var(--accent) calc(50% - 1px),var(--accent) calc(50% + 1px),transparent calc(50% + 1px))}.mark.locked{border-style:dashed;border-color:var(--line)}.lrow.locked .lrow-title{color:var(--ink-2)}.codex{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:12px}.codex button{display:flex;flex-direction:column;align-items:flex-start;gap:4px;padding:14px 12px;min-height:96px;text-align:left;border-radius:12px}.codex button b{font-size:17px}.codex button small{font-size:12px;color:var(--ink-2);line-height:1.4}.codex button.dim{border-style:dashed;background:transparent}.codex button.dim:disabled{opacity:1}.codex button.dim b{color:var(--ink-2);letter-spacing:.2em}.codex button.won{border-color:var(--gold);background:var(--gold-bg)}.tagbars{display:grid;grid-template-columns:auto 1fr auto;gap:6px 10px;align-items:center;margin:10px 0 4px;font-size:14px}.tagbars i{height:10px;background:var(--bad);border-radius:2px;opacity:.85}.tagbars b{font-family:var(--mono);font-weight:600;font-size:13px;color:var(--ink-2)}.err{padding:12px 14px;display:flex;flex-direction:column;gap:4px}.err+.err{border-top:1px solid var(--line)}.err .q{font-weight:600;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.err .ans{font-family:var(--mono);font-size:14px}.err .ans s{color:var(--bad)}.err .ans ins{color:var(--ok);text-decoration:none;font-weight:700}.err .foot{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:13px;color:var(--ink-2)}.err .foot button{min-height:36px;padding:4px 10px;font-size:14px}.daylabel{font-size:13px;color:var(--ink-2);margin:16px 0 6px;font-weight:600}.field{padding:12px 14px;display:flex;flex-direction:column;gap:6px}.field+.field{border-top:1px solid var(--line)}.field>b{font-weight:600}.field>.muted{font-size:13px}.danger{color:var(--bad)}.bars{display:flex;align-items:flex-end;gap:10px;margin:12px 0 4px;min-height:84px}.bars div{display:flex;flex-direction:column;align-items:center;gap:3px;min-width:36px}.bars i{width:22px;background:var(--pencil);border-radius:2px}.bars span{font-size:13px}.bars small{font-size:12px;color:var(--ink-2);font-family:var(--mono)}dl.facts{display:grid;grid-template-columns:auto 1fr;gap:4px 14px;margin:12px 0 0;font-size:15px}dl.facts dt{color:var(--ink-2)}dl.facts dd{margin:0}button.quiet{border:none;background:transparent;color:var(--ink-2);font-size:15px;padding:6px 0}button.quiet.danger{color:var(--bad)}.actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:8px}.actions button{font-size:16px}.nav{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:20px}.nav button{padding:14px 6px;font-size:16px}.topbar{display:flex;align-items:center;gap:10px;margin-bottom:8px}.topbar button.ghost{border:none;min-height:44px;min-width:44px;padding:4px 8px;color:var(--ink-2)}.dots{display:flex;gap:4px;flex:1}.dot{height:6px;flex:1;border-radius:1px;background:var(--line)}.dot.done{background:var(--pencil)}.dot.cur{background:var(--accent)}.dot.miss{background:var(--bad)}.pop{animation:pop-in .22s cubic-bezier(.2,1.6,.4,1)}@keyframes pop-in{0%{transform:scale(.96)}55%{transform:scale(1.04)}to{transform:scale(1)}}.choices button.pop .bubble,.answerbox.pop:after{animation:tick-in .26s cubic-bezier(.2,1.8,.4,1)}@keyframes tick-in{0%{transform:translateY(-50%) scale(.2)}to{transform:translateY(-50%) scale(1)}}.choices button.pop .bubble{animation-name:bubble-in}@keyframes bubble-in{0%{transform:scale(.4)}to{transform:scale(1)}}.shake{animation:shake .26s ease-in-out}@keyframes shake{0%,to{transform:translate(0)}20%{transform:translate(-6px)}40%{transform:translate(5px)}60%{transform:translate(-3px)}80%{transform:translate(2px)}}.points.float{display:inline-block;animation:float-up .42s ease-out}@keyframes float-up{0%{transform:translateY(10px) scale(1.4);opacity:0}60%{opacity:1}to{transform:none;opacity:1}}.dot.just{animation:dot-in .3s ease-out}@keyframes dot-in{0%{transform:scaleY(2.4)}to{transform:none}}.combo{font-size:13px;font-weight:700;padding:2px 8px;border-radius:999px;background:var(--surface-2);color:var(--ink-2);white-space:nowrap;font-variant-numeric:tabular-nums}.combo.c3{background:var(--gold-bg);color:var(--gold)}.combo.c5{background:var(--gold);color:var(--surface);font-size:14px}.combo.c8{background:var(--pencil);color:var(--gold-bg);font-size:15px;box-shadow:0 0 0 2px var(--gold)}.combo.bump{animation:bump .28s cubic-bezier(.2,1.8,.4,1)}@keyframes bump{0%{transform:scale(1.5)}to{transform:scale(1)}}[data-fx=off] .pop,[data-fx=off] .shake,[data-fx=off] .float,[data-fx=off] .just,[data-fx=off] .bump,[data-fx=off] .fresh,[data-fx=off] .stamp .seal,[data-fx=off] .pop .bubble,[data-fx=off] .pop:after{animation:none!important}.feedcard{background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:18px 16px;display:flex;flex-direction:column;gap:12px}.question{font-weight:700;font-size:18px;white-space:pre-line;line-height:1.55}.context{font-family:var(--mono);font-size:14px;color:var(--ink-2);border-left:3px solid var(--line);padding-left:10px;overflow-wrap:anywhere}.prompt{font-size:17px;font-weight:600}.fieldrow{display:flex;flex-direction:column;gap:4px;scroll-margin-top:80px}.fieldlabel{font-size:13px;color:var(--ink-2)}.answerbox{font-family:var(--mono);font-size:26px;letter-spacing:.08em;min-height:52px;border:2px solid var(--line);border-radius:8px;padding:8px 12px;background:var(--bg);text-align:left;width:100%;overflow-wrap:anywhere}.answerbox.active{border-color:var(--accent);background:var(--surface)}.answerbox{position:relative}.answerbox.ok{border-color:var(--ok);background:var(--ok-bg);padding-right:40px}.answerbox.bad{border-color:var(--bad);background:var(--bad-bg);border-width:3px;padding-right:40px}.answerbox.ok:after,.answerbox.bad:after{position:absolute;right:12px;top:50%;transform:translateY(-50%);font-family:var(--sans);font-size:22px;font-weight:800;letter-spacing:0}.answerbox.ok:after{content:"✓";color:var(--ok)}.answerbox.bad:after{content:"✗";color:var(--bad)}.answerbox .caret{display:inline-block;width:2px;height:1em;background:var(--accent);vertical-align:-.12em;animation:blink 1s steps(1) infinite}@keyframes blink{50%{opacity:0}}.choices{display:flex;flex-direction:column;gap:8px}.choices button{text-align:left;display:flex;align-items:center;gap:12px;padding:10px 12px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.bubble{flex:none;width:30px;height:24px;display:grid;place-items:center;border:1.5px solid var(--accent);border-radius:3px;font-family:var(--mono);font-size:14px;font-weight:700;color:var(--accent);transition:background-color .12s ease,color .12s ease}.choices button.sel{border-color:var(--pencil)}.choices button:disabled{opacity:1}.choices button:disabled:not(.ok):not(.bad):not(.sel){opacity:.6}.choices button.sel .bubble{background:var(--pencil);border-color:var(--pencil);color:var(--pencil-ink)}.choices button.ok{border-color:var(--ok);background:var(--ok-bg)}.choices button.ok .bubble{background:var(--ok);border-color:var(--ok);color:var(--surface)}.choices button.bad{border-color:var(--bad);background:var(--bad-bg);border-width:3px}.choices button.bad .bubble{background:var(--bad);border-color:var(--bad);color:var(--surface)}.selfcheck{background:var(--warn-bg);color:var(--warn-ink);border-radius:12px;padding:10px 12px;display:flex;gap:10px;align-items:center;justify-content:space-between}.selfcheck button{flex-shrink:0}.selfcheck.done{opacity:.6}.conf{display:flex;gap:6px}.conf button{flex:1;padding:6px 0;font-size:15px;font-family:var(--mono);display:flex;flex-direction:column;align-items:center;line-height:1.25}.conf button small{font-size:12px;color:var(--ink-2);font-weight:400}.conf button.sel{background:var(--pencil);color:var(--pencil-ink);border-color:var(--pencil);font-weight:700}.conf button.sel small{color:var(--pencil-ink);opacity:.8}.keypad{position:fixed;left:0;right:0;bottom:0;background:var(--surface);border-top:1px solid var(--line);padding:6px 8px calc(6px + env(safe-area-inset-bottom));z-index:10}.keypad .inner{max-width:560px;margin:0 auto;display:grid;gap:5px;width:100%}.keypad button{font-family:var(--mono);font-size:22px;padding:6px 0;min-height:46px;border-radius:10px}.keypad .submit{font-family:inherit;font-size:17px}.kp-spacer{height:calc(var(--kp, 300px) + 24px)}.feedback{border-radius:14px;padding:14px}.feedback.ok{background:var(--ok-bg)}.feedback.bad{background:var(--bad-bg)}.feedback .title{font-weight:800;font-size:21px}.explain{margin:8px 0 0;padding-left:0;list-style:none}.explain li{padding:3px 0}.explain .q{font-weight:700}.explain .steptitle{font-weight:700;margin-top:8px}.explain .hl{background:var(--surface);color:var(--ink);border-left:3px solid var(--bad);border-radius:0 4px 4px 0;padding:0 6px;display:inline-block}.finderr{list-style:none;padding:0;margin:0;font-family:var(--mono);font-size:15px}.finderr li{padding:6px 8px;border-radius:6px}.finderr li:nth-child(odd){background:var(--surface-2)}.swipehint{text-align:center;color:var(--ink-2);font-size:13px}.points{font-weight:800;color:var(--accent);font-family:var(--mono)}.lesson h3{color:var(--accent)}.lesson ol,.lesson ul{padding-left:22px}.lesson li{margin:4px 0}.timer{font-family:var(--mono);font-weight:700;font-size:18px;font-variant-numeric:tabular-nums}.breakclock{font-family:var(--mono);font-size:72px;font-weight:800;text-align:center;margin:24px 0;font-variant-numeric:tabular-nums}table{width:100%;border-collapse:collapse;font-size:15px}td,th{text-align:left;padding:9px 6px;border-bottom:1px solid var(--line);vertical-align:top}th{font-size:13px;color:var(--ink-2);font-weight:600;white-space:nowrap}td .muted{font-size:13px;white-space:nowrap}td a{display:inline-block;padding:6px 0;min-width:44px}td.context{overflow-wrap:normal;word-break:normal}td.muted{white-space:nowrap}td:first-child,th:first-child{padding-left:0}.lv{display:inline-flex;gap:3px}.lv i{width:12px;height:10px;border:1.5px solid var(--accent);border-radius:2px;display:inline-block}.lv i.on{background:var(--pencil);border-color:var(--pencil)}input[type=text],input[type=date],input[type=time],input[type=number],input:not([type]),select,textarea{font:inherit;color:inherit;background:var(--surface);border:1px solid var(--line);border-radius:10px;padding:10px;width:100%;min-height:44px}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent)}label{display:block;margin:14px 0 4px;font-size:15px;color:var(--ink-2)}pre.context{white-space:pre;overflow-x:auto}.toast{position:fixed;top:calc(12px + env(safe-area-inset-top));left:50%;transform:translate(-50%);background:var(--ink);color:var(--bg);padding:10px 16px;border-radius:12px;z-index:20;font-weight:700;max-width:calc(100vw - 32px);animation:pop 1.6s ease forwards}@keyframes pop{0%{opacity:0;transform:translate(-50%,-8px)}12%{opacity:1;transform:translate(-50%)}80%{opacity:1}to{opacity:0}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
