:root {
  --bg:#f6f7f9; --card:#fff; --ink:#1c2733; --sub:#66788c; --line:#e3e8ee;
  --brand:#2456d6; --brand-weak:#eef2fb; --ok:#1a7f4e; --warn:#b4610f; --bad:#b3352c;
  --chip:#eef1f5; --shadow:0 1px 3px rgba(16,24,40,.06);
}
[data-theme="dark"] {
  --bg:#12161c; --card:#1b212b; --ink:#e8edf3; --sub:#93a1b3; --line:#2c3543;
  --brand:#5b8cf7; --brand-weak:#1d2735; --ok:#4ade80; --warn:#fbbf24; --bad:#f87171;
  --chip:#242e3c; --shadow:0 1px 3px rgba(0,0,0,.4);
}
* { box-sizing:border-box; -webkit-tap-highlight-color:transparent; }
html { -webkit-text-size-adjust:100%; }
body { margin:0; background:var(--bg); color:var(--ink); font:15px/1.75 system-ui,"PingFang SC","Microsoft YaHei",sans-serif; transition:background .2s,color .2s; }
.wrap { max-width:860px; margin:0 auto; padding:16px 14px 90px; }
h1 { font-size:20px; margin:6px 0 4px; }
h3 { margin:20px 0 10px; }
.sub { color:var(--sub); font-size:13px; margin-bottom:14px; }
.card { background:var(--card); border:1px solid var(--line); border-radius:14px; padding:18px 20px; margin-bottom:14px; box-shadow:var(--shadow); }
button { font:inherit; cursor:pointer; border:1px solid var(--line); background:var(--card); color:var(--ink); border-radius:10px; padding:8px 16px; min-height:40px; }
button.primary { background:var(--brand); border-color:var(--brand); color:#fff; font-weight:600; }
button:disabled { opacity:.55; cursor:default; }
button.danger { color:var(--bad); }
button.ghost { border-color:transparent; background:transparent; color:var(--sub); min-height:36px; }
button.icon { width:40px; padding:0; font-size:17px; }
textarea, input[type=text], input[type=url] { width:100%; font:inherit; border:1px solid var(--line); border-radius:10px; padding:10px 12px; background:var(--card); color:var(--ink); }
textarea { min-height:110px; resize:vertical; }
textarea:focus, input:focus { outline:2px solid var(--brand); outline-offset:0; border-color:var(--brand); }
label { display:block; font-size:13px; color:var(--sub); margin:12px 0 4px; }
.seg { display:flex; border:1px solid var(--line); border-radius:10px; overflow:hidden; width:fit-content; }
.seg button { border:none; border-radius:0; padding:8px 18px; }
.seg button.on { background:var(--brand); color:#fff; }
.row { display:flex; gap:10px; align-items:center; flex-wrap:wrap; }
.grow { flex:1; }
.muted { color:var(--sub); font-size:13px; }
.pill { display:inline-block; background:var(--brand-weak); color:var(--brand); border-radius:99px; padding:1px 10px; font-size:12px; white-space:nowrap; }
.pill.due { background:#fdf1e3; color:var(--warn); }
[data-theme="dark"] .pill.due { background:#3a2c14; }
.pill.ok { background:#e7f6ee; color:var(--ok); }
[data-theme="dark"] .pill.ok { background:#12291c; }
.score { font-size:28px; font-weight:700; }
.good { color:var(--ok); } .mid { color:var(--warn); } .low { color:var(--bad); }
blockquote.ref { margin:8px 0 0; padding:8px 14px; background:var(--chip); border-left:3px solid var(--line); color:var(--sub); font-size:13.5px; white-space:pre-wrap; }
.hidden { display:none; }
.q-item { padding:16px 20px; }
.stepnum { display:inline-block; width:22px; height:22px; line-height:22px; text-align:center; background:var(--brand); color:#fff; border-radius:50%; font-size:12px; margin-right:8px; }
.stepnum.done { background:var(--ok); }
.toolbar { display:flex; gap:10px; margin-top:12px; align-items:center; flex-wrap:wrap; }
.spin { display:inline-block; width:14px; height:14px; border:2px solid var(--line); border-top-color:var(--brand); border-radius:50%; animation:sp .8s linear infinite; vertical-align:-2px; }
@keyframes sp { to { transform:rotate(360deg); } }
.front-big { font-size:17px; font-weight:600; }
hr { border:none; border-top:1px solid var(--line); margin:12px 0; }
/* 底部导航 */
.tabbar { position:fixed; left:0; right:0; bottom:0; display:flex; justify-content:center; gap:4px; background:var(--card); border-top:1px solid var(--line); padding:6px 10px calc(6px + env(safe-area-inset-bottom)); z-index:8; }
.tabbar button { border:none; background:transparent; color:var(--sub); font-size:13px; min-height:44px; min-width:88px; border-radius:10px; }
.tabbar button.on { color:var(--brand); background:var(--brand-weak); font-weight:600; }
.tabbar .due-dot { display:inline-block; min-width:18px; padding:0 5px; border-radius:99px; background:var(--warn); color:#fff; font-size:11px; line-height:18px; margin-left:4px; }
/* 统计 */
.heat { display:flex; flex-wrap:wrap; gap:3px; margin-top:10px; max-width:420px; }
.heat i { width:13px; height:13px; border-radius:3px; background:var(--chip); }
.heat i.l1 { background:#cfe0fb; } .heat i.l2 { background:#8db4f2; } .heat i.l3 { background:#5b8cf7; } .heat i.l4 { background:#2456d6; }
[data-theme="dark"] .heat i { background:#242e3c; }
[data-theme="dark"] .heat i.l1 { background:#1d3050; } [data-theme="dark"] .heat i.l2 { background:#274a86; } [data-theme="dark"] .heat i.l3 { background:#3a68b8; } [data-theme="dark"] .heat i.l4 { background:#5b8cf7; }
.statgrid { display:grid; grid-template-columns:repeat(auto-fit,minmax(130px,1fr)); gap:10px; }
.statgrid .card { margin:0; padding:14px 16px; }
.bignum { font-size:26px; font-weight:700; }
/* 追问 */
.fu { margin-top:10px; border-top:1px dashed var(--line); padding-top:10px; }
.fu .qa { margin:6px 0; }
.fu .qa b { color:var(--brand); }
/* 复习按钮组 */
.rbtns { display:grid; grid-template-columns:repeat(4,1fr); gap:8px; width:100%; }
.rbtns button { min-height:46px; }
/* toast */
#toast { position:fixed; left:50%; bottom:90px; transform:translateX(-50%); background:var(--ink); color:var(--bg); padding:8px 18px; border-radius:99px; font-size:13px; opacity:0; transition:opacity .25s; pointer-events:none; z-index:20; max-width:86%; }
#toast.show { opacity:.92; }
/* 键盘提示 */
kbd { background:var(--chip); border-radius:4px; padding:0 6px; font-size:12px; border:1px solid var(--line); }
@media (max-width:600px) {
  .card { padding:15px 15px; border-radius:12px; }
  .score { font-size:24px; }
  button { min-height:44px; }
  textarea { min-height:96px; }
}
@media print { .tabbar, .toolbar button, #btn-review { display:none; } }

/* ---- v3 追加 ---- */
.pill.pin { background:#fdf1e3; color:var(--warn); }
[data-theme="dark"] .pill.pin { background:#3a2c14; }
.next-card { border-left:3px solid var(--brand); }
/* 复习按钮的间隔预览角标 */
.rbtns button small { display:block; font-size:11px; color:var(--sub); font-weight:400; line-height:1.2; }
.rbtns button.primary small { color:rgba(255,255,255,.85); }
/* 语音按钮 */
.mic-btn { display:inline-flex; align-items:center; justify-content:center; min-width:44px; }
.mic-btn.rec { background:var(--bad); color:#fff; border-color:var(--bad); animation:pulse 1.1s infinite; }
@keyframes pulse { 50% { opacity:.65; } }
/* 小结 */
.summary-box { background:var(--brand-weak); border-radius:10px; padding:12px 14px; margin:10px 0; }
.summary-box .weak-li { margin:4px 0 4px 1.2em; }
.summary-weak { color:var(--warn); }
/* 置顶星标 */
.pin-btn { font-size:15px; }

/* ---- v4 追加 ---- */
.mode-hint { margin: -4px 0 2px; }
#url-box { transition: opacity .2s; }
#url-box.soft { opacity: .45; }
#url-box.hard { opacity: 1; }
#url-box.soft input { border-style: dashed; }
#proj-search { margin-bottom: 2px; }
.rbtns button small { white-space: nowrap; }

/* ---- v5 账号 ---- */
.auth-flash { position:fixed; inset:0; background:rgba(15,22,32,.5); display:flex; align-items:center; justify-content:center; z-index:30; padding:16px; }
.auth-card { width:min(420px, 100%); max-height:90vh; overflow:auto; }
.auth-card h2 { font-size:18px; }
.auth-card input { margin-bottom:2px; }
