:root{--bg:#f8fafc;--card:#fff;--fg:#0f172a;--mut:#475569;--bd:#cbd5e1;--acc:#2563eb;--ok:#15803d;--okbg:#dcfce7;--bad:#b91c1c;--badbg:#fee2e2;--bar:#e2e8f0}
@media (prefers-color-scheme:dark){html[data-theme=auto]{--bg:#0f172a;--card:#1e293b;--fg:#f1f5f9;--mut:#cbd5e1;--bd:#334155;--acc:#60a5fa;--ok:#4ade80;--okbg:#14532d;--bad:#f87171;--badbg:#450a0a;--bar:#334155}}
html[data-theme=dark]{--bg:#0f172a;--card:#1e293b;--fg:#f1f5f9;--mut:#cbd5e1;--bd:#334155;--acc:#60a5fa;--ok:#4ade80;--okbg:#14532d;--bad:#f87171;--badbg:#450a0a;--bar:#334155}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--fg);font:17px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;-webkit-text-size-adjust:100%}
main{max-width:560px;margin:0 auto;padding:max(12px,env(safe-area-inset-top)) 14px calc(24px + env(safe-area-inset-bottom))}
h1{font-size:1.5rem;margin:.2em 0}h2{font-size:1.15rem;margin:.8em 0 .4em}
.card{background:var(--card);border:1px solid var(--bd);border-radius:14px;padding:14px;margin:10px 0}
.row{display:flex;gap:8px;align-items:center;justify-content:space-between}
.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;text-align:center}
.stats b{display:block;font-size:1.35rem}.stats small{color:var(--mut)}
.bar{height:10px;background:var(--bar);border-radius:6px;overflow:hidden}.bar>i{display:block;height:100%;background:var(--acc)}
.dom{margin:8px 0}.dom .row{font-size:.92rem}
button{font:inherit;color:inherit;min-height:48px;border-radius:12px;border:1px solid var(--bd);background:var(--card);padding:10px 14px;cursor:pointer;touch-action:manipulation}
.btn{width:100%;margin:6px 0;font-weight:600;text-align:left}
.btn.primary{background:var(--acc);color:#fff;border-color:var(--acc);text-align:center}
.btn small{display:block;font-weight:400;color:var(--mut)}
.icon{min-width:48px}
.opt{display:block;width:100%;text-align:left;margin:8px 0;padding:12px 14px;line-height:1.35}
.opt.sel{border-color:var(--acc);box-shadow:0 0 0 2px var(--acc) inset}
.opt.right{background:var(--okbg);border-color:var(--ok)}.opt.wrong{background:var(--badbg);border-color:var(--bad)}
.stem{font-size:1.06rem;font-weight:600}
.tag{display:inline-block;font-size:.78rem;color:var(--mut);border:1px solid var(--bd);border-radius:20px;padding:1px 8px;margin-right:4px}
.expl{font-size:.96rem}.expl p{margin:.45em 0}.expl .ok{color:var(--ok);font-weight:700}.expl .no{color:var(--bad);font-weight:700}
.timer{font-variant-numeric:tabular-nums;font-weight:700}
.big{font-size:2.4rem;font-weight:800;text-align:center;margin:.2em 0}
.mut{color:var(--mut)}.loading{text-align:center;margin-top:40vh}
.sticky{position:sticky;bottom:0;padding-top:6px;background:linear-gradient(transparent,var(--bg) 30%)}
button{-webkit-tap-highlight-color:transparent}button:focus{outline:none}button:focus-visible{outline:3px solid var(--acc);outline-offset:2px}
.btn.primary{color:var(--bg)}html:not([data-theme=dark]) .btn.primary{color:#fff}
@media (prefers-color-scheme:dark){html[data-theme=auto] .btn.primary{color:#0f172a}}
.opt:disabled{opacity:1;color:var(--fg)}
.grid{display:grid;grid-template-columns:repeat(5,1fr);gap:8px}
.cell{min-height:48px;padding:0;font-weight:700}.cell.ans{background:var(--acc);color:var(--bg);border-color:var(--acc)}html:not([data-theme=dark]) .cell.ans{color:#fff}
.cell.blank{border-style:dashed}.cell.flg{box-shadow:0 0 0 3px #f59e0b inset}
.primary-s{background:var(--acc);color:#fff;border-color:var(--acc);font-weight:600}
button:disabled{opacity:.45}.opt:disabled{opacity:1}
.filters{justify-content:flex-start;flex-wrap:wrap}.filt.on{background:var(--acc);color:#fff;border-color:var(--acc)}
#flag[aria-pressed=true]{border-color:#f59e0b;color:#b45309}

/* contrast: text on accent fills */
:root{--onacc:#fff;--flag:#b45309}
html[data-theme=dark]{--onacc:#0f172a;--flag:#fbbf24}
@media (prefers-color-scheme:dark){html[data-theme=auto]{--onacc:#0f172a;--flag:#fbbf24}}
.btn.primary,.primary-s,.filt.on,.cell.ans,html:not([data-theme=dark]) .btn.primary,html:not([data-theme=dark]) .cell.ans,html[data-theme=auto] .btn.primary{color:var(--onacc)}
#flag[aria-pressed=true]{border-color:var(--flag);color:var(--flag)}
.btn.danger{background:var(--bad);border-color:var(--bad);color:var(--onacc);text-align:center}
button:disabled{opacity:.6}.opt:disabled{opacity:1}

/* Learn mode + readiness */
input[type=search]{width:100%;font:inherit;color:var(--fg);background:var(--card);border:1px solid var(--bd);border-radius:12px;min-height:48px;padding:10px 14px;margin:10px 0}
input[type=search]:focus-visible{outline:3px solid var(--acc);outline-offset:2px}
.lesson-item{display:block}.lesson-item.done{border-color:var(--ok)}.lcheck{color:var(--ok);font-weight:700}
.lsec h2{margin-top:0}.lsec p,.lsec li,.lsec dd{line-height:1.55}
.terms dt{font-weight:700;margin-top:.5em}.terms dd{margin:0 0 .2em 0;color:var(--fg)}
.vlink{display:flex;align-items:center;min-height:48px;padding:10px 14px;margin:6px 0;border:1px solid var(--acc);border-radius:12px;color:var(--acc);font-weight:600;text-decoration:none}
.missing{margin:.5em 0;padding-left:1.2em}.missing li{margin:.25em 0}
.no{color:var(--bad)}.ok{color:var(--ok)}
.btn small.onacc{color:var(--onacc)}
.ready{text-align:center;padding:24px 8px}.ready h1{font-size:2rem;line-height:1.2}.ready-emoji{font-size:4rem;margin:0}
.ready .met{text-align:left;display:inline-block;font-size:1.05rem}.ready .met li{margin:.4em 0;color:var(--ok);font-weight:600}
textarea,input{-webkit-tap-highlight-color:transparent}
.ready .met{list-style:none;padding:0}

/* Today's Lesson + progress sync */
#today .vlink{min-height:44px;padding:8px 12px;font-size:.95rem}
.linkish{min-height:44px;padding:4px 10px;margin:2px 2px;font-size:.9rem;font-weight:600;color:var(--acc);border-color:var(--acc)}
label{display:block;font-weight:600;margin-top:.6em}
input[type=url],input[type=password]{width:100%;font:inherit;color:var(--fg);background:var(--card);border:1px solid var(--bd);border-radius:12px;min-height:48px;padding:10px 14px;margin:6px 0}
input[type=url]:focus-visible,input[type=password]:focus-visible{outline:3px solid var(--acc);outline-offset:2px}

/* Today (daily plan, v4) */
.tabs{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin:0 0 6px}
.tabs button{font-weight:700;font-size:.95rem;padding:8px 6px}
.tabs button.on{background:var(--acc);border-color:var(--acc);color:var(--onacc)}
.lesson-h{font-size:1.3rem;line-height:1.25;margin:.15em 0}
.bar.big{height:16px;border-radius:8px;margin-top:6px}
.card.warn{border-color:var(--flag);border-width:2px}
label.chk{display:flex;align-items:flex-start;gap:10px;font-weight:400;margin:.2em 0;padding:8px 2px;min-height:44px;line-height:1.35}
label.chk input{width:24px;height:24px;flex:0 0 24px;margin:0;accent-color:var(--acc)}
label.chk.on>span{color:var(--mut);text-decoration:line-through}
.vrow{display:flex;align-items:center;gap:6px}.vrow label.chk{flex:0 0 auto;margin:0;padding:0 2px}.vrow .vlink{flex:1;min-height:44px;padding:8px 12px;font-size:.95rem;margin:4px 0}
details.obj{border-top:1px solid var(--bd);padding:6px 0}details.obj summary{cursor:pointer;min-height:44px;padding:8px 0;line-height:1.35}
details.obj ul{margin:.2em 0 .4em;padding-left:1.2em;font-size:.95rem}details.obj ul ul{font-size:.92rem;color:var(--mut)}
.blk{display:flex;align-items:center;gap:8px;justify-content:space-between;border-top:1px solid var(--bd)}
.blk label.chk{flex:1;font-size:.95rem}.blk.brk{color:var(--mut);font-size:.9rem;padding:4px 0}.blk-l{flex:1;padding:8px 2px}
.tbtn{flex:0 0 auto;font-variant-numeric:tabular-nums;font-weight:700;min-width:84px;padding:6px 8px}
.tag.weak{color:var(--flag);border-color:var(--flag);font-weight:700}
.daynav{margin:8px 0}
.lesson-open{font-size:.95rem}
#sec-weak ul{margin:.2em 0;padding-left:1.2em}
html[data-theme=dark] a:not(.btn){color:var(--acc)}@media (prefers-color-scheme:dark){html[data-theme=auto] a:not(.btn){color:var(--acc)}}

/* v5: auto-completing checklist, flashcards, closed-notes recall */
.cl-item{display:flex;align-items:center;gap:10px;width:100%;margin:4px 0;padding:8px 10px;min-height:48px;text-align:left;font-weight:600;font-size:.95rem}
.cl-item .cl-l{flex:1}.cl-item small{flex:0 0 auto;font-weight:400;font-size:.8rem}
.cl-mark{flex:0 0 26px;height:26px;border-radius:50%;border:2px solid var(--bd);display:inline-flex;align-items:center;justify-content:center;font-weight:800}
.cl-item.on{border-color:var(--ok)}.cl-item.on .cl-mark{background:var(--ok);border-color:var(--ok);color:var(--card)}.cl-item.on .cl-l{color:var(--mut)}
.cl-row label.chk{margin:0}.cl-hand{white-space:nowrap}
.fcard{display:flex;flex-direction:column;gap:10px;width:100%;min-height:52vh;margin:12px 0;padding:18px 16px;text-align:center;justify-content:center;border-width:2px;border-radius:18px;box-shadow:0 2px 10px rgba(15,23,42,.08)}
.fcard.flipped{border-color:var(--acc)}
.fc-tags{display:block}.fc-ctx{font-size:.85rem}
.fc-front{font-size:1.45rem;font-weight:800;line-height:1.3}
.fc-back{font-size:1.15rem;line-height:1.45;border-top:1px solid var(--bd);padding-top:12px}
.fc-hint{font-size:.9rem}
.fc-grade{display:grid;grid-template-columns:1fr 1fr;gap:10px}.fc-grade .btn{text-align:center;margin:6px 0}
.btn.fc-miss{border:2px solid var(--bad);color:var(--bad)}
textarea{width:100%;font:inherit;color:var(--fg);background:var(--card);border:1px solid var(--bd);border-radius:12px;padding:10px 12px;margin:6px 0;min-height:40vh;resize:vertical;line-height:1.45}
textarea:focus-visible{outline:3px solid var(--acc);outline-offset:2px}
.rc-mine{white-space:pre-wrap;margin:0;font-size:.95rem}
label.chk.kp.on>span{text-decoration:none;color:var(--fg)}label.chk.kp{border-top:1px solid var(--bd)}
