:root{--bg:#f6f5f2;--card:#fff;--ink:#1e2330;--ink-soft:#5b6270;--line:#e4e2dc;--accent:#3350c9;--accent-ink:#fff;--ok:#1f9d64;--ok-soft:#e4f4ec;--bar:#d7dcf4;--radius:14px;--shadow:0 1px 2px #1418280f, 0 8px 24px #1418280d}@media (prefers-color-scheme:dark){:root{--bg:#14161c;--card:#1d2029;--ink:#eceef3;--ink-soft:#9aa1b1;--line:#2c3040;--accent:#7d93f0;--accent-ink:#12141a;--ok:#46c98c;--ok-soft:#1c3a2d;--bar:#333a5c;--shadow:0 1px 2px #0000004d, 0 8px 24px #00000059}}*{box-sizing:border-box}html,body{background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;margin:0;padding:0;font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;line-height:1.55}body{flex-direction:column;min-height:100dvh;display:flex}.app-shell{flex:1 0 auto}a{color:var(--accent)}.site-footer{border-top:1px solid var(--line);text-align:center;color:var(--ink-soft);flex-shrink:0;padding:20px;font-size:.8rem;line-height:1.6}.site-footer p{margin:0 0 4px}.site-footer a{color:var(--ink-soft);text-decoration:none}.site-footer a:hover{color:var(--accent);text-decoration:underline}.site-footer-links{flex-wrap:wrap;justify-content:center;gap:6px 10px;margin-top:6px;display:flex}.site-footer-links span{opacity:.5}.wrap{max-width:640px;margin:0 auto;padding:24px 20px 64px}.wrap-wide{max-width:920px}.brand{letter-spacing:-.01em;align-items:center;gap:10px;margin-bottom:24px;font-weight:700;display:flex}.brand-logo{object-fit:contain;flex:none;width:30px;height:30px}@media (prefers-color-scheme:dark){.brand-logo{filter:invert()}}:root[data-theme=dark] .brand-logo{filter:invert()}:root[data-theme=light] .brand-logo{filter:none}.brand-name{flex-wrap:wrap;align-items:baseline;gap:8px;display:flex}.brand small{color:var(--ink-soft);font-size:.8rem;font-weight:500}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:24px}h1{letter-spacing:-.02em;margin:0 0 12px;font-size:1.5rem;line-height:1.25}h2{margin:0 0 8px;font-size:1.05rem}p{margin:0 0 14px}.muted{color:var(--ink-soft)}.small{font-size:.88rem}.progress{background:var(--line);border-radius:999px;height:6px;margin-bottom:20px;overflow:hidden}.progress>span{background:var(--accent);height:100%;transition:width .3s;display:block}.step-label{color:var(--ink-soft);margin-bottom:6px;font-size:.82rem}.qtext{letter-spacing:-.01em;margin:4px 0 20px;font-size:1.22rem;line-height:1.35}.options{flex-direction:column;gap:10px;display:flex}.option{text-align:left;border:1.5px solid var(--line);background:var(--card);width:100%;color:var(--ink);font:inherit;cursor:pointer;border-radius:12px;align-items:flex-start;gap:12px;padding:15px 16px;font-size:1rem;transition:border-color .12s,background .12s;display:flex}.option:hover{border-color:var(--accent)}.option.selected{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 8%, var(--card))}.option .dot{border:2px solid var(--ink-soft);border-radius:999px;flex:none;width:20px;height:20px;margin-top:1px}.option.selected .dot{border-color:var(--accent);background:var(--accent);box-shadow:inset 0 0 0 3px var(--card)}.option.correct{border-color:var(--ok);background:var(--ok-soft)}.option.correct .dot{border-color:var(--ok);background:var(--ok);box-shadow:inset 0 0 0 3px var(--card)}.row{gap:10px;margin-top:24px;display:flex}.row .grow{flex:1}button.btn,a.btn{border:1.5px solid var(--line);background:var(--card);color:var(--ink);font:inherit;cursor:pointer;border-radius:11px;justify-content:center;align-items:center;gap:8px;padding:13px 20px;font-weight:600;text-decoration:none;transition:filter .12s,background .12s;display:inline-flex}button.btn:disabled{opacity:.45;cursor:not-allowed}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.btn.primary:hover:not(:disabled){filter:brightness(1.06)}.btn.ghost{background:0 0}.btn.danger{color:#d9534f;border-color:#d9534f}input[type=text],input[type=password],select{border:1.5px solid var(--line);background:var(--card);width:100%;color:var(--ink);font:inherit;border-radius:10px;padding:12px 14px}:where(button,a.btn,input,select,.option):focus-visible{outline:2px solid var(--accent);outline-offset:2px}input:focus,select:focus{border-color:var(--accent);outline:none}input:focus-visible,select:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.review{flex-direction:column;gap:8px;margin:12px 0 4px;display:flex}.review-item{border:1px solid var(--line);background:var(--card);cursor:pointer;border-radius:10px;justify-content:space-between;gap:12px;padding:12px 14px;display:flex}.review-item .q{color:var(--ink-soft);font-size:.9rem}.review-item .a{text-align:right;font-weight:600}.review-item .a.empty{color:#d9534f;font-weight:500}.done{text-align:center;padding:40px 10px}.done .check{background:var(--ok-soft);width:56px;height:56px;color:var(--ok);border-radius:999px;place-items:center;margin:0 auto 18px;font-size:28px;display:grid}.dash-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:20px;display:flex}.pill{border:1px solid var(--line);border-radius:999px;align-items:center;gap:6px;padding:4px 10px;font-size:.82rem;font-weight:600;display:inline-flex}.pill.open{color:var(--ok);border-color:var(--ok)}.pill.closed{color:var(--ink-soft)}.stat{letter-spacing:-.02em;font-size:2.4rem;font-weight:700}.qblock{border-bottom:1px solid var(--line);margin-bottom:22px;padding-bottom:22px}.qblock:last-child{border-bottom:none}.qblock h3{margin:0 0 12px;font-size:1rem}.bar-row{grid-template-columns:1fr auto;align-items:center;gap:4px 12px;margin-bottom:9px;display:grid}.bar-label{font-size:.92rem}.bar-label.is-correct{color:var(--ok);font-weight:600}.bar-track{background:var(--line);border-radius:6px;grid-column:1/-1;height:22px;overflow:hidden}.bar-fill{background:var(--bar);border-radius:6px;min-width:2px;height:100%;transition:width .4s}.bar-fill.is-correct{background:var(--ok)}.bar-num{font-variant-numeric:tabular-nums;color:var(--ink-soft);font-size:.88rem}.toolbar{flex-wrap:wrap;gap:10px;margin:16px 0 8px;display:flex}.code-box{letter-spacing:.02em;background:var(--bg);border:1px dashed var(--line);word-break:break-all;border-radius:10px;padding:12px 14px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:1.1rem}.session-list{flex-direction:column;gap:10px;display:flex}.session-list a{color:inherit;text-decoration:none}.session-row{border:1px solid var(--line);background:var(--card);border-radius:12px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:6px 14px;padding:14px 16px;display:flex}.session-row:hover{border-color:var(--accent)}
