:root{--bg:#f4f5f7;--card:#fff;--text:#1f2430;--muted:#6b7280;--accent:#ff8700;--accent-dark:#e07600;--border:#e2e4e9;--good:#16a34a;--good-bg:#ecfdf3;--bad:#dc2626;--bad-bg:#fef2f2;--code-bg:#282c34;--code-text:#abb2bf}@media (prefers-color-scheme:dark){:root{--bg:#15171c;--card:#1e222a;--text:#e5e7eb;--muted:#9ca3af;--border:#333845;--good-bg:#10281a;--bad-bg:#2c1616}}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;line-height:1.55}header.site{background:var(--accent);color:#fff;flex-wrap:wrap;align-items:center;gap:16px;padding:14px 20px;display:flex}header.site h1{margin:0;font-size:1.15rem;font-weight:700}header.site .sub{opacity:.9;font-size:.8rem}nav.site-nav{gap:8px;margin-left:auto;display:flex}nav.site-nav a{color:#fff;cursor:pointer;background:#ffffff26;border:1px solid #fff6;border-radius:8px;padding:7px 16px;font-size:.9rem;text-decoration:none}nav.site-nav a.active{color:var(--accent-dark);background:#fff;font-weight:600}main{max-width:900px;margin:0 auto;padding:24px 16px 80px}.card{background:var(--card);border:1px solid var(--border);border-radius:12px;margin-bottom:16px;padding:20px}.chapter-title{margin:0 0 6px;font-size:1.05rem;font-weight:700}.section-row{cursor:pointer;color:inherit;border-radius:8px;justify-content:space-between;align-items:center;padding:8px 10px;text-decoration:none;display:flex}.section-row:hover{background:var(--bg)}.section-row .cnt{color:var(--muted);font-size:.85rem}.badge{background:var(--bg);border:1px solid var(--border);color:var(--muted);border-radius:999px;margin-right:6px;padding:2px 8px;font-size:.72rem;font-weight:600;display:inline-block}.q-title{white-space:pre-wrap;margin:10px 0 4px;font-weight:600}pre{background:var(--code-bg);color:var(--code-text);border-radius:8px;padding:12px 14px;font-size:.82rem;line-height:1.45;overflow-x:auto}code{font-family:SF Mono,Menlo,Consolas,monospace}.answers{margin:12px 0 0;padding:0;list-style:none}.answers li{margin-bottom:8px}.answers label{border:1px solid var(--border);cursor:pointer;border-radius:8px;align-items:flex-start;gap:10px;padding:10px 12px;display:flex}.answers label:hover{border-color:var(--accent)}.answers input{flex-shrink:0;margin-top:4px}.answers .num{color:var(--muted);min-width:16px;margin-top:2px;font-size:.8rem}li.revealed-good label{border-color:var(--good);background:var(--good-bg)}li.revealed-bad label{border-color:var(--bad);background:var(--bad-bg)}li.missed label{border-color:var(--good);border-style:dashed}.explanation{border-left:3px solid var(--accent);background:var(--bg);white-space:pre-wrap;border-radius:0 8px 8px 0;margin-top:14px;padding:14px;font-size:.92rem}.explanation pre{white-space:pre}button.primary{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:8px;padding:9px 20px;font-size:.92rem;font-weight:600}button.primary:hover{background:var(--accent-dark)}.toolbar{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:18px;display:flex}.toolbar select,.toolbar input[type=number]{border:1px solid var(--border);background:var(--card);color:var(--text);border-radius:8px;padding:8px 10px;font-size:.9rem}.result-banner{text-align:center;padding:26px}.result-banner .score{color:var(--accent);font-size:2.4rem;font-weight:800}.muted{color:var(--muted);font-size:.85rem}.q-meta{color:var(--muted);margin-bottom:2px;font-size:.8rem}.verdict{font-weight:700}.verdict.ok{color:var(--good)}.verdict.fail{color:var(--bad)}.progress{color:var(--muted);margin-left:auto;font-size:.85rem}a.backlink{color:var(--accent-dark);cursor:pointer;font-size:.9rem;text-decoration:none}.recap{border:1px dashed var(--border);background:var(--bg);border-radius:10px;align-items:flex-start;gap:16px;margin-top:14px;padding:14px;display:flex}.recap img{background:#fff;border-radius:6px;flex-shrink:0;width:110px;height:110px;padding:4px}.recap .recap-title{margin:0 0 4px;font-size:.9rem;font-weight:700}.recap p{color:var(--muted);margin:0 0 6px;font-size:.85rem}.recap a{color:var(--accent-dark);word-break:break-all;font-size:.85rem}h2.section-heading{font-size:1.1rem}.nav-user{color:#fff;opacity:.95;padding:7px 4px 7px 12px;font-size:.9rem;font-weight:600}button.nav-logout{color:#fff;cursor:pointer;background:0 0;border:1px solid #fff6;border-radius:8px;padding:7px 12px;font-size:.8rem}button.nav-logout:hover{background:#ffffff26}.login-card{max-width:420px;margin:48px auto}.login-form{flex-direction:column;gap:14px;margin-top:16px;display:flex}.login-form label{flex-direction:column;gap:4px;font-size:.9rem;font-weight:600;display:flex}.login-form input{border:1px solid var(--border);background:var(--bg);color:var(--text);border-radius:8px;padding:9px 12px;font-size:.95rem}.login-form input:focus{outline:2px solid var(--accent);border-color:var(--accent)}.done-mark{color:var(--good);font-weight:700}.wrong-mark{color:var(--bad);font-weight:600}button.ghost{border:1px solid var(--border);color:var(--text);cursor:pointer;background:0 0;border-radius:8px;padding:8px 14px;font-size:.85rem}button.ghost:hover{border-color:var(--accent);color:var(--accent-dark)}.pager{align-items:center;gap:12px;margin-bottom:6px;display:flex}.pager-btn{border:1px solid var(--border);background:var(--card);color:var(--text);border-radius:8px;flex-shrink:0;padding:7px 14px;font-size:.85rem;text-decoration:none}.pager-btn:hover{border-color:var(--accent)}.pager-btn.disabled{opacity:.4;pointer-events:none}.dots{flex-wrap:wrap;flex:1;justify-content:center;gap:5px;display:flex}.dot{border:1px solid var(--border);background:var(--card);min-width:26px;height:26px;color:var(--muted);border-radius:6px;justify-content:center;align-items:center;padding:0 4px;font-size:.75rem;text-decoration:none;display:inline-flex}.dot:hover{border-color:var(--accent)}.dot.ok{background:var(--good-bg);border-color:var(--good);color:var(--good)}.dot.fail{background:var(--bad-bg);border-color:var(--bad);color:var(--bad)}.dot.current{outline:2px solid var(--accent);color:var(--text);font-weight:700}.dot.answered{background:var(--accent);border-color:var(--accent);color:#fff}button.dot,button.pager-btn{cursor:pointer;font-family:inherit}button.pager-btn:disabled{opacity:.4;cursor:default}.exam-timer{font-variant-numeric:tabular-nums;font-size:1.05rem;font-weight:700}.exam-timer.low{color:var(--bad)}.recap-badge{color:var(--accent-dark);border:1px solid var(--accent);border-radius:999px;margin-left:8px;padding:1px 8px;font-size:.72rem;font-weight:700;display:inline-block}.dot.in-recap{position:relative}.dot.in-recap:after{content:"★";color:var(--accent-dark);font-size:.6rem;position:absolute;top:-7px;right:-4px}
