
:root{
  --bg:#F3F5FA; --surface:#FFFFFF; --ink:#172238; --muted:#5B6781; --line:#DCE2EE;
  --accent:#2E5FD8; --accent-ink:#FFFFFF;
  --tA:#D9502B; --tB:#2E5FD8; --tC:#C98714; --tD:#23905F;
  --ok:#1F8A55; --ok-bg:#E3F4EA; --bad:#C43D2B; --bad-bg:#FBE7E3;
  --shadow:0 2px 0 rgba(23,34,56,.08);
  --display:"Baloo 2","Be Vietnam Pro",system-ui,sans-serif;
  --body:"Be Vietnam Pro",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]){
  color-scheme:dark;
  --bg:#0F1524; --surface:#18213A; --ink:#E8ECF6; --muted:#9AA6C2; --line:#2A3656;
  --accent:#6F95FF; --accent-ink:#0F1524;
  --tA:#E0663F; --tB:#4C7BF0; --tC:#D29A2C; --tD:#2FA56E;
  --ok:#5CCB8F; --ok-bg:#16342A; --bad:#FF8A76; --bad-bg:#3A1E1B; --shadow:none;
}}
:root[data-theme="dark"]{
  color-scheme:dark;
  --bg:#0F1524; --surface:#18213A; --ink:#E8ECF6; --muted:#9AA6C2; --line:#2A3656;
  --accent:#6F95FF; --accent-ink:#0F1524;
  --tA:#E0663F; --tB:#4C7BF0; --tC:#D29A2C; --tD:#2FA56E;
  --ok:#5CCB8F; --ok-bg:#16342A; --bad:#FF8A76; --bad-bg:#3A1E1B; --shadow:none;
}
*{box-sizing:border-box}
body{background:var(--bg);color:var(--ink);font-family:var(--body);font-size:16px;line-height:1.5;padding-inline:16px;padding-block:16px 32px}
.wrap{max-width:720px;margin:0 auto;display:flex;flex-direction:column;gap:16px}
h1,h2,.num{font-family:var(--display);line-height:1.15;text-wrap:balance;margin:0}
h1{font-size:2.1rem;font-weight:800}
h2{font-size:1.35rem;font-weight:800}
p{margin:0}
.muted{color:var(--muted)}
.eyebrow{font-size:.75rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-weight:600}
.card{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:16px;box-shadow:var(--shadow)}
.row{display:flex;gap:12px;align-items:center;flex-wrap:wrap}
label{font-weight:600}
input[type=text]{font:inherit;padding:10px 12px;border-radius:10px;border:1px solid var(--line);background:var(--bg);color:var(--ink);width:100%;max-width:260px}
.switch{display:flex;gap:8px;align-items:center;font-weight:500}
.switch input{width:20px;height:20px;accent-color:var(--accent)}
.decks{display:grid;gap:12px}
.deck{display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:center;text-align:left;font:inherit;color:inherit;background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:14px;cursor:pointer;box-shadow:var(--shadow)}
.deck:hover{border-color:var(--accent)}
.deck .badge{font-family:var(--display);font-weight:800;font-size:1.3rem;width:48px;height:48px;border-radius:12px;display:grid;place-items:center;background:var(--accent);color:var(--accent-ink)}
.deck .t{font-weight:700}
.deck .s{font-size:.85rem;color:var(--muted)}
.best{font-size:.8rem;color:var(--muted);text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
.best b{display:block;font-family:var(--display);font-size:1.2rem;color:var(--ink)}
button:focus-visible,input:focus-visible,.tile:focus-visible{outline:3px solid var(--accent);outline-offset:2px}
.btn{font:inherit;font-weight:700;border:0;border-radius:12px;padding:12px 18px;cursor:pointer;background:var(--accent);color:var(--accent-ink)}
.btn.ghost{background:transparent;color:var(--ink);border:1px solid var(--line)}
.btn:disabled{opacity:.5;cursor:default}
/* quiz */
.top{display:flex;justify-content:space-between;align-items:center;gap:12px;font-variant-numeric:tabular-nums}
.pill{background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:4px 12px;font-weight:600;font-size:.9rem}
.bar{height:8px;border-radius:99px;background:var(--line);overflow:hidden}
.bar>i{display:block;height:100%;background:var(--accent);width:0;transition:width .3s}
.timer>i{background:var(--tC);transition:width .2s linear}
.timer.low>i{background:var(--bad)}
.qtext{font-size:1.2rem;font-weight:600;line-height:1.45}
.lead{font-size:.9rem;color:var(--muted);margin-bottom:6px}
.tiles{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.tiles.one{grid-template-columns:1fr}
@media (max-width:560px){.tiles{grid-template-columns:1fr}}
.tile{display:flex;gap:12px;align-items:center;text-align:left;font:inherit;font-weight:600;color:#fff;border:0;border-radius:14px;padding:14px;min-height:64px;cursor:pointer;box-shadow:0 3px 0 rgba(0,0,0,.18);transition:transform .08s,opacity .2s}
.tile:active{transform:translateY(2px)}
.tile .k{font-family:var(--display);font-weight:800;font-size:1.25rem;width:34px;height:34px;flex:none;border-radius:9px;display:grid;place-items:center;background:rgba(255,255,255,.22)}
.tile[data-i="0"]{background:var(--tA)}.tile[data-i="1"]{background:var(--tB)}.tile[data-i="2"]{background:var(--tC)}.tile[data-i="3"]{background:var(--tD)}
.tiles.tf .tile[data-i="0"]{background:var(--tD)}.tiles.tf .tile[data-i="1"]{background:var(--tA)}
.tiles.done .tile{cursor:default}
.tiles.done .tile.dim{opacity:.3}
.tile.right{outline:4px solid var(--ok);outline-offset:2px}
.tile.wrong{outline:4px solid var(--bad);outline-offset:2px}
.fb{border-radius:14px;padding:14px;display:flex;flex-direction:column;gap:6px}
.fb.ok{background:var(--ok-bg)}.fb.bad{background:var(--bad-bg)}
.fb .h{font-family:var(--display);font-weight:800;font-size:1.3rem}
.fb.ok .h{color:var(--ok)}.fb.bad .h{color:var(--bad)}
.streak{font-weight:700;color:var(--tC)}
/* result */
.score{display:flex;align-items:baseline;gap:8px}
.score .num{font-size:4rem;font-weight:800;color:var(--accent);font-variant-numeric:tabular-nums}
.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.stat{background:var(--bg);border-radius:12px;padding:10px;text-align:center}
.stat b{display:block;font-family:var(--display);font-size:1.5rem;font-variant-numeric:tabular-nums}
.stat span{font-size:.8rem;color:var(--muted)}
.review{display:flex;flex-direction:column;gap:10px}
.rv{border-left:4px solid var(--bad);padding:4px 0 4px 12px}
.rv .a{color:var(--ok);font-weight:600}
.actions{display:flex;flex-wrap:wrap;gap:10px}
.note{font-size:.85rem;color:var(--muted)}
textarea{width:100%;font:inherit;font-size:.9rem;border-radius:10px;border:1px solid var(--line);background:var(--bg);color:var(--ink);padding:10px}
@media (prefers-reduced-motion: reduce){*{transition:none!important}}

[hidden]{display:none!important}
body{margin:0}
.field{display:flex;flex-direction:column;gap:6px}
.field input,.field select{font:inherit;padding:10px 12px;border-radius:10px;border:1px solid var(--line);background:var(--bg);color:var(--ink);width:100%}
.err{color:var(--bad);font-weight:600}
.okmsg{color:var(--ok);font-weight:600}
a{color:var(--accent)}
.codebox{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:1.6rem;font-weight:700;letter-spacing:.08em}
table{border-collapse:collapse;width:100%;font-size:.9rem;font-variant-numeric:tabular-nums}
th,td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--line);vertical-align:top}
th{font-size:.75rem;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-weight:600}
.tablewrap{overflow-x:auto}
.tag{display:inline-block;border-radius:999px;padding:2px 10px;font-size:.78rem;font-weight:700}
.tag.ok{background:var(--ok-bg);color:var(--ok)}.tag.bad{background:var(--bad-bg);color:var(--bad)}.tag.warn{background:#FCEFD6;color:#8A5A00}
.small{font-size:.85rem}
.btn.sm{padding:6px 10px;font-size:.85rem;border-radius:9px}
