:root {
  --bg:#f5f7f6; --card:#fff; --ink:#1c2b2a; --muted:#6b7a78;
  --brand:#0e7a5f; --brand2:#0a5c48; --accent:#f2a33c; --line:#e2e8e6;
  --err:#c0392b; --ok:#1d8a4e;
}
* { box-sizing: border-box; }
body { margin:0; background:var(--bg); color:var(--ink);
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
  line-height:1.65; }
a { color: var(--brand); text-decoration: none; }
.nav { background: var(--brand); color:#fff; position:sticky; top:0; z-index:10; }
.nav-in { max-width:1000px; margin:0 auto; display:flex; align-items:center; gap:16px; padding:10px 14px; flex-wrap:wrap; }
.brand { color:#fff; font-weight:700; font-size:17px; }
.nav-links { display:flex; align-items:center; gap:14px; flex-wrap:wrap; font-size:14px; }
.nav-links a { color:#e8f5f0; }
.nav-links a.lnk { color:#ffd9a0; }
.pts { display:flex; align-items:center; gap:8px; margin-left:auto; }
.badge { padding:2px 8px; border-radius:999px; font-size:12px; }
.badge-pts { background:var(--accent); color:#5a3800; font-weight:600; }
.badge-member { background:#ffe08a; color:#7a5800; font-weight:600; }
.uname { color:#fff; }
.announce { background:#fff8e6; color:#7a5800; text-align:center; padding:6px 14px; font-size:13.5px; border-bottom:1px solid #f2e2b3; }
.wrap { max-width:1000px; margin:18px auto 40px; padding:0 14px; }
.foot { text-align:center; color:var(--muted); font-size:12.5px; padding:20px 0 30px; }
h1,h2,h3 { line-height:1.3; }
.crumb { font-size:13px; color:var(--muted); margin-bottom:6px; }
.flash { padding:9px 14px; border-radius:8px; margin-bottom:12px; font-size:14px; }
.flash-ok { background:#e7f6ec; color:var(--ok); border:1px solid #bfe6cd; }
.flash-err { background:#fdecea; color:var(--err); border:1px solid #f2c4bf; }
.hero { background:linear-gradient(135deg,#0e7a5f,#0a5c48); color:#fff; border-radius:14px; padding:34px 26px; margin-bottom:18px; }
.hero h1 { margin:0 0 6px; font-size:26px; }
.hero .sub { color:#cfe8de; margin:0 0 16px; }
.hero-stats { display:flex; gap:26px; margin-bottom:18px; }
.stat b { font-size:24px; display:block; }
.stat span { color:#cfe8de; font-size:12.5px; }
.hero-btns { display:flex; gap:10px; flex-wrap:wrap; }
.grid2 { display:grid; grid-template-columns:1fr 1fr; gap:14px; }
.grid3 { display:grid; grid-template-columns:repeat(3,1fr); gap:12px; }
@media (max-width:720px){ .grid2,.grid3{grid-template-columns:1fr;} .hero{padding:26px 18px;} }
.card { background:var(--card); border:1px solid var(--line); border-radius:12px; padding:16px 18px; margin-bottom:14px; }
.linkcard { display:block; color:inherit; }
.linkcard:hover { border-color:var(--brand); }
.card h3 { margin:0 0 8px; }
.muted { color:var(--muted); font-size:13.5px; }
.mini-list { margin:6px 0 0; padding-left:18px; }
.btn { display:inline-block; background:#fff; border:1px solid var(--brand); color:var(--brand);
  padding:7px 16px; border-radius:8px; font-size:14px; cursor:pointer; }
.btn:hover { background:#eef7f4; }
.btn-primary { background:var(--brand); color:#fff; }
.btn-primary:hover { background:var(--brand2); }
.btn-sm { padding:4px 12px; font-size:13px; }
.rowbar { display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin-top:10px; }
.row { display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin:8px 0; }
.center { justify-content:center; }
.center-card { text-align:center; }
label { display:block; margin:10px 0; font-size:14px; }
label input, label select { display:block; width:100%; margin-top:4px; padding:8px 10px;
  border:1px solid var(--line); border-radius:8px; font-size:14px; }
.row input[name=code], .row input { width:auto; min-width:240px; }
input, select, button { font-family:inherit; }
.tbl { width:100%; border-collapse:collapse; font-size:13.5px; margin-top:8px; }
.tbl th { text-align:left; color:var(--muted); font-weight:500; border-bottom:1px solid var(--line); padding:6px 8px; }
.tbl td { border-bottom:1px solid #f0f4f3; padding:6px 8px; }
.up { color:var(--ok); font-weight:600; }
.dn { color:var(--err); font-weight:600; }
.bigpts { font-size:15px; }
.pts-big { font-size:30px; color:var(--brand); }
.authwrap { max-width:760px; margin:0 auto; }

/* questions */
.qcard .q-stem { font-size:15px; }
.q-stem .q-text { white-space:pre-line; }
.q-img img { max-width:70%; max-height:50mm; display:block; margin:8px 0; }
.opts { list-style:none; padding:0; margin:8px 0 2px; }
.opts .opt { padding:6px 10px; border:1px solid var(--line); border-radius:8px; margin:6px 0; background:#fff; }
.opts-live .opt { cursor:pointer; }
.opts-live .opt:hover { border-color:var(--brand); background:#f3faf7; }
.opt.correct { border-color:var(--ok); background:#e7f6ec !important; }
.opt.wrong { border-color:var(--err); background:#fdecea !important; }
.opt .hintline { display:block; color:var(--err); font-size:13px; margin-top:2px; }
.parts { margin:6px 0 0; padding-left:22px; }
.chips { display:flex; flex-wrap:wrap; gap:8px; margin:8px 0; }
.chip { padding:2px 10px; border-radius:999px; font-size:12.5px; border:1px solid var(--line); background:#fff; color:var(--ink); }
.chip-nature { background:#e8f1fd; border-color:#c9def7; }
.chip-stage { background:#f3e8fd; border-color:#dfc9f7; }
.chip-difficulty { background:#fdf3e0; border-color:#f7dfb3; }
.chip-src { background:#f4f4f4; color:#666; }
.chip-k { background:#e7f6ec; border-color:#bfe6cd; }
.qmeta { margin-top:8px; display:flex; flex-wrap:wrap; gap:8px; align-items:center; }
.meta { color:var(--muted); font-size:12.5px; }
.qnum { font-weight:600; color:var(--brand); margin-right:6px; }
.ansbox { background:#f2faf2; border-left:3px solid var(--ok); padding:8px 12px; margin:10px 0; border-radius:0 8px 8px 0; font-size:14px; }
.ans-t { font-weight:600; color:#247; margin-top:6px; }

/* train */
.trainbar { display:flex; align-items:center; gap:14px; background:#fff; border:1px solid var(--line);
  border-radius:10px; padding:8px 14px; margin-bottom:12px; font-size:14px; }
.trainbar .lnk { margin-left:auto; color:var(--err); }
.judgebox { border-top:1px dashed var(--line); margin-top:10px; padding-top:10px; }
.verdict { font-size:16px; font-weight:700; margin-bottom:6px; }
.verdict.ok { color:var(--ok); }
.verdict.no { color:var(--err); }
.fillbox { display:flex; gap:10px; margin-top:10px; }
.fillbox input { flex:1; padding:9px 12px; border:1px solid var(--line); border-radius:8px; font-size:15px; }
.train-progress { font-size:13px; margin-top:10px; }
.hidden { display:none; }
