:root{
  --bg:#faf8f4;--card:#ffffff;--ink:#23303b;--mute:#66737e;--line:#e3ddd2;
  --brand:#1f4e79;--brand-ink:#ffffff;--accent:#c4622d;--ok:#2e7d4f;--okbg:#e6f3ea;--bad:#b3392f;--badbg:#fbe9e7;--hl:#fff4d6;
  --b1:#2e7d4f;--b2:#1f4e79;--c1:#7a3b8f;
}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){--bg:#15191d;--card:#1e242a;--ink:#e8e6e1;--mute:#98a3ac;--line:#323b43;
    --brand:#7fb2e0;--brand-ink:#10202e;--accent:#e58a57;--ok:#6cc58d;--okbg:#1c3326;--bad:#ee8a80;--badbg:#3a2220;--hl:#3a3320;
    --b1:#6cc58d;--b2:#7fb2e0;--c1:#c99be0}
}
:root[data-theme="dark"]{--bg:#15191d;--card:#1e242a;--ink:#e8e6e1;--mute:#98a3ac;--line:#323b43;
  --brand:#7fb2e0;--brand-ink:#10202e;--accent:#e58a57;--ok:#6cc58d;--okbg:#1c3326;--bad:#ee8a80;--badbg:#3a2220;--hl:#3a3320;
  --b1:#6cc58d;--b2:#7fb2e0;--c1:#c99be0}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font:17px/1.6 "Segoe UI",system-ui,-apple-system,Roboto,sans-serif}
a{color:var(--brand)}
header.top{position:sticky;top:0;z-index:5;background:var(--card);border-bottom:1px solid var(--line)}
header.top .in{max-width:980px;margin:0 auto;padding:10px 16px;display:flex;gap:12px;align-items:center;flex-wrap:wrap}
header.top .logo{font-weight:700;text-decoration:none;color:var(--ink);font-size:18px}
header.top nav{margin-left:auto;display:flex;gap:6px;align-items:center}
main{max-width:980px;margin:0 auto;padding:20px 16px 80px}
h1{font-size:28px;line-height:1.25;margin:.2em 0 .4em}
h2{font-size:21px;margin:1.6em 0 .5em}
h3{font-size:18px;margin:1.2em 0 .4em}
.sub{color:var(--mute);margin:0 0 18px}
.btn{font:inherit;font-size:15px;padding:7px 14px;border:1px solid var(--brand);background:var(--brand);color:var(--brand-ink);border-radius:8px;cursor:pointer;text-decoration:none;display:inline-block}
.btn.ghost{background:transparent;color:var(--brand)}
.btn.sm{font-size:13px;padding:4px 10px}
.btn:disabled{opacity:.5;cursor:default}
.btn:focus-visible,.tab:focus-visible,input:focus-visible,textarea:focus-visible,summary:focus-visible,.card.link:focus-visible{outline:3px solid var(--accent);outline-offset:2px}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}
.card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:14px 16px}
.card.link{display:block;text-decoration:none;color:inherit}
.card.link:hover{border-color:var(--brand)}
.card .wk{font-size:13px;color:var(--mute)}
.card .th{font-weight:600;font-size:18px;margin:2px 0 6px}
.badge{display:inline-block;font-size:12px;font-weight:700;padding:1px 8px;border-radius:99px;border:1px solid currentColor}
.badge.B1{color:var(--b1)}.badge.B2{color:var(--b2)}.badge.C1{color:var(--c1)}
.badge.tag{color:var(--accent)}
.bar{height:6px;border-radius:3px;background:var(--line);overflow:hidden;margin-top:8px}
.bar i{display:block;height:100%;background:var(--ok)}
.tabs{display:flex;gap:4px;flex-wrap:wrap;border-bottom:1px solid var(--line);margin:14px 0 18px}
.tab{font:inherit;font-size:15px;padding:8px 12px;border:0;background:none;color:var(--mute);cursor:pointer;border-bottom:3px solid transparent}
.tab[aria-selected="true"]{color:var(--ink);border-bottom-color:var(--accent);font-weight:600}
.reading p{margin:.6em 0}
.reading-box{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:6px 18px;margin:10px 0}
.q{margin:14px 0;padding:10px 12px;border-radius:10px;border:1px solid var(--line);background:var(--card)}
.q .qt{font-weight:600;margin-bottom:6px}
.opt{display:block;padding:5px 8px;border-radius:6px;cursor:pointer}
.opt input{margin-right:8px}
.q.ok{border-color:var(--ok);background:var(--okbg)}
.q.bad{border-color:var(--bad);background:var(--badbg)}
.expl{margin-top:6px;font-size:15px;color:var(--ink)}
.score{font-weight:700;margin:10px 0}
.note{font-size:14px;color:var(--mute)}
.warn{background:var(--hl);border-radius:8px;padding:8px 12px;font-size:15px}
audio,video{width:100%;max-width:100%}
video{border-radius:10px;background:#000}
.tools{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:8px 0}
.flip{perspective:900px;cursor:pointer;min-height:170px}
.flip .face{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:14px 16px;height:100%}
.vgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px}
.vcard{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:14px 16px;display:flex;flex-direction:column;gap:6px}
.vcard.learn{border-color:var(--accent)}
.vcard.know{border-color:var(--ok)}
.vw{font-size:22px;font-weight:700}
.ipa{color:var(--mute);font-size:15px}
.vx{border-top:1px dashed var(--line);padding-top:6px;font-size:15px}
.vx b{color:var(--mute);font-weight:600}
.back{display:none}
.vcard.open .back{display:block}
.fc{max-width:560px;margin:0 auto;text-align:center}
.fc .face{min-height:260px;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:8px;padding:20px}
.fc .vw{font-size:34px}
input[type=text],textarea{font:inherit;width:100%;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:var(--card);color:var(--ink)}
input.inl{width:150px;display:inline-block;padding:3px 8px}
textarea{min-height:70px}
details{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:8px 14px;margin:10px 0}
summary{cursor:pointer;font-weight:600}
table{border-collapse:collapse;width:100%;font-size:15px}
td,th{border:1px solid var(--line);padding:6px 8px;text-align:left;vertical-align:top}
.dline{margin:3px 0}.dline b{color:var(--accent)}
.diff .w-ok{color:var(--ok)}.diff .w-bad{color:var(--bad);font-weight:700}
ul.clean{padding-left:20px;margin:.4em 0}
.hide{display:none}
.chips{display:flex;gap:6px;flex-wrap:wrap}
.foot{margin-top:40px;font-size:13px;color:var(--mute);border-top:1px solid var(--line);padding-top:12px}
@media (max-width:560px){body{font-size:16px}h1{font-size:24px}.tab{padding:8px 9px;font-size:14px}}
@media print{header.top,.tabs,.tools,.btn{display:none}}
