
:root{
  --bg:#f5f7fb;--card:#fff;--text:#172033;--muted:#6b7280;--line:#e7ebf1;
  --brand:#2563eb;--brand2:#7c3aed;--ok:#059669;--warn:#d97706;--danger:#dc2626;
}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--text);font-family:Inter,"PingFang SC","Microsoft YaHei",Arial,sans-serif}
button{font:inherit}
.shell{max-width:1200px;margin:auto;padding:22px}
.topbar{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:20px}
.brand{font-size:22px;font-weight:900}.brand span{font-size:12px;background:#e0e7ff;color:#4338ca;padding:4px 7px;border-radius:999px}
.sub{color:var(--muted);font-size:13px;margin-top:5px}.countdown{font-size:13px;font-weight:800;background:#fff;border:1px solid var(--line);padding:10px 13px;border-radius:999px}
.layout{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(280px,.78fr);gap:16px}
.main,.side{display:grid;gap:16px;align-content:start}
.card{background:var(--card);border:1px solid var(--line);border-radius:20px;padding:20px;box-shadow:0 8px 26px rgba(15,23,42,.045)}
.hero{background:linear-gradient(135deg,#eff6ff 0%,#f5f3ff 100%);border-color:#dbeafe;padding:26px}
.eyebrow{font-size:12px;font-weight:900;letter-spacing:.15em;color:#4f46e5}
h1{font-size:34px;line-height:1.12;margin:9px 0 8px}h2{font-size:18px;margin:0 0 14px}
.lead,.section-head p,.tools p{color:var(--muted);line-height:1.7;margin:0}.section-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.section-head h2{margin-bottom:4px}
.progress-track{height:11px;background:#e3e8ef;border-radius:999px;overflow:hidden;margin:20px 0 9px}.progress-fill{height:100%;width:0;background:linear-gradient(90deg,var(--brand),var(--brand2));transition:width .25s ease}
.progress-row{display:flex;justify-content:space-between;gap:12px;color:var(--muted);font-size:13px}.progress-row strong{color:var(--text)}
.hero-actions{display:flex;gap:10px;margin:18px 0}
.primary,.secondary{border:0;border-radius:12px;padding:11px 15px;font-weight:800;cursor:pointer}.primary{background:var(--brand);color:#fff}.secondary{background:#fff;color:#334155;border:1px solid #dce3ec}.wide{width:100%}
.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.kpi{background:rgba(255,255,255,.85);border:1px solid #e4e8ef;border-radius:14px;padding:13px}.kpi b{font-size:19px;display:block}.kpi span{color:var(--muted);font-size:11px}
.pill{font-size:11px;font-weight:800;background:#eef2ff;color:#4338ca;padding:6px 9px;border-radius:999px;white-space:nowrap}
.task{display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:start;padding:14px 0;border-bottom:1px solid var(--line)}.task:last-child{border-bottom:0}.task.done .task-title{text-decoration:line-through;color:#94a3b8}
.task-check{appearance:none;width:23px;height:23px;border:2px solid #cbd5e1;border-radius:7px;margin:1px 0 0;cursor:pointer;display:grid;place-items:center}.task-check:checked{background:var(--ok);border-color:var(--ok)}.task-check:checked:after{content:"✓";color:#fff;font-size:15px;font-weight:900}
.task-title{font-weight:800}.task-meta{font-size:12px;color:var(--muted);margin-top:4px}.tag{font-size:11px;padding:5px 8px;border-radius:999px;font-weight:800}.high{background:#fee2e2;color:#991b1b}.mid{background:#fef3c7;color:#92400e}.keep{background:#d1fae5;color:#065f46}
.subjects{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:14px}.subject{display:block;text-decoration:none;color:inherit;border:1px solid var(--line);border-radius:15px;padding:14px;transition:border-color .15s,box-shadow .15s}.subject:hover{border-color:#bfdbfe;box-shadow:0 8px 20px rgba(37,99,235,.08)}.subject-top{display:flex;justify-content:space-between;gap:10px}.subject-name{font-weight:850}.subject-score{font-weight:900}.subject-score small{font-weight:600;font-size:12px;color:var(--muted);margin-left:2px}.subject>small{display:block;color:var(--muted);margin-top:3px}.bar{height:7px;background:#edf1f5;border-radius:99px;overflow:hidden;margin-top:11px}.bar>i{display:block;height:100%;background:#64748b}.priority{font-size:11px;margin-top:8px;color:#475569}.lnk{color:var(--brand);font-weight:700;text-decoration:none}.lnk:hover{text-decoration:underline}.tool-links{display:flex;flex-wrap:wrap;gap:8px}.tool-links a{font-size:12px;font-weight:700;color:#334155;background:#f1f5f9;border:1px solid var(--line);padding:7px 10px;border-radius:10px;text-decoration:none}.tool-links a:hover{background:#e2e8f0}.hint{color:var(--muted);font-size:12px;line-height:1.7;margin:8px 0 0}:focus-visible{outline:3px solid #93c5fd;outline-offset:2px}
.diagnosis{background:#fff7ed;border:1px solid #fed7aa;border-radius:14px;padding:13px;margin-bottom:12px}.diagnosis p{font-size:13px;line-height:1.65;margin:6px 0 0}
.review-row{display:grid;grid-template-columns:1fr auto auto;gap:10px;padding:10px 0;border-bottom:1px solid var(--line);align-items:center}.review-row:last-child{border-bottom:0}.review-row em{font-size:11px;color:var(--muted);font-style:normal}
.metric{display:grid;grid-template-columns:1fr auto;gap:4px;padding:9px 0;border-bottom:1px solid var(--line)}.metric:last-child{border-bottom:0}.metric small{grid-column:2;color:var(--muted);text-align:right}
footer{text-align:center;color:var(--muted);font-size:12px;padding:28px 0 10px}
.toast{position:fixed;left:50%;bottom:28px;transform:translateX(-50%);background:#172033;color:#fff;padding:10px 14px;border-radius:10px;font-size:13px;z-index:10;box-shadow:0 10px 30px rgba(0,0,0,.2)}
@media(max-width:840px){.layout{grid-template-columns:1fr}.kpis{grid-template-columns:repeat(2,1fr)}.subjects{grid-template-columns:repeat(2,1fr)}.topbar{align-items:flex-start;flex-direction:column}h1{font-size:29px}}
@media(max-width:520px){.shell{padding:14px}.card,.hero{padding:17px}.subjects{grid-template-columns:1fr}.task{grid-template-columns:auto 1fr}.task .tag{grid-column:2;justify-self:start}.kpis{grid-template-columns:1fr 1fr}}
