:root{
  --ink:#16181d; --ink2:#4a5058; --mut:#767d87; --line:#e2e5ea;
  --bg:#fbfbfc; --card:#fff; --accent:#1a6fd4; --ok:#128a4c; --no:#c0392b;
  --shadow:0 1px 2px rgba(16,20,28,.05),0 8px 24px -12px rgba(16,20,28,.12);
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0; background:var(--bg); color:var(--ink);
  font:16px/1.75 -apple-system,BlinkMacSystemFont,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",system-ui,sans-serif;
}
.wrap{max-width:1060px;margin:0 auto;padding:0 24px}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}

/* hero */
.hero{
  background:linear-gradient(180deg,#fff,#f4f6f9);
  border-bottom:1px solid var(--line); padding:56px 0 40px;
}
.kicker{margin:0;color:var(--mut);font-size:13px;letter-spacing:.16em;text-transform:uppercase}
.hero h1{margin:.15em 0 .3em;font-size:clamp(34px,6vw,56px);line-height:1.08;letter-spacing:-.02em}
.lede{margin:0 0 14px;font-size:clamp(16px,2.2vw,20px);color:var(--ink2);max-width:62ch}
.src{margin:0 0 22px;font-size:14px;color:var(--mut);max-width:70ch}
.jump{display:flex;flex-wrap:wrap;gap:8px}
.jump a{
  background:#fff;border:1px solid var(--line);border-radius:999px;
  padding:7px 15px;font-size:14px;box-shadow:var(--shadow)
}
.jump a:hover{border-color:var(--accent);text-decoration:none}

/* sections */
section{padding:52px 0;border-bottom:1px solid var(--line)}
h2{font-size:clamp(22px,3.2vw,30px);margin:0 0 6px;letter-spacing:-.01em}
h3{font-size:17px;margin:22px 0 8px}
h4{font-size:14px;margin:0 0 6px;color:var(--mut);letter-spacing:.04em}
.muted{color:var(--mut)}
.small{font-size:13px}
.two{display:grid;grid-template-columns:1fr 1fr;gap:34px;align-items:start}
@media(max-width:760px){.two{grid-template-columns:1fr}}

.figbox{
  background:var(--card);border:1px solid var(--line);border-radius:12px;
  padding:14px;display:flex;justify-content:center;box-shadow:var(--shadow)
}
.figbox.big{padding:22px}
.cap{font-size:13px;color:var(--mut);margin:8px 0 0}
svg.sg,svg.tv{max-width:100%;height:auto;display:block}

.terms{margin-top:22px;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:16px 18px}
dl{margin:0;display:grid;grid-template-columns:auto 1fr;gap:6px 14px;font-size:14px}
dt{font-weight:700;white-space:nowrap}
dd{margin:0;color:var(--ink2)}

.callout{
  margin-top:26px;background:#f0f6ff;border:1px solid #cfe1fa;
  border-left:4px solid var(--accent);border-radius:8px;padding:15px 18px;font-size:15px
}
.verified{color:var(--ok);font-size:13.5px}
.warn{
  margin-top:16px;background:#fff8e8;border:1px solid #f2e0b0;border-radius:8px;
  padding:12px 16px;font-size:15px
}

/* tree */
.tree{margin-top:18px;display:flex;flex-direction:column;gap:10px}
.tnode{
  background:var(--card);border:1px solid var(--line);border-radius:10px;
  padding:13px 16px;box-shadow:var(--shadow)
}
.tnode .q{font-weight:700;font-size:15px}
.tbr{display:flex;flex-wrap:wrap;gap:8px;margin-top:9px}
.tbr a{
  font-size:13.5px;background:#f4f6f9;border:1px solid var(--line);
  border-radius:7px;padding:5px 11px;color:var(--ink2)
}
.tbr a:hover{border-color:var(--accent);color:var(--accent);text-decoration:none}
.tbr b{color:var(--ink)}

/* ordered steps + recog */
.order{margin-top:22px;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:18px 20px;box-shadow:var(--shadow)}
.order h3{margin-top:0}
.steps{margin:12px 0 0;padding-left:22px}
.steps li{margin:0 0 10px;font-size:15px;color:var(--ink2)}
.steps li b{color:var(--ink)}
.tip{margin:14px 0 0;background:#f0f6ff;border:1px solid #cfe1fa;border-radius:8px;padding:11px 15px;font-size:15px}
.recog-note{margin-top:22px}
.recogbars{margin:14px 0 10px;display:flex;flex-direction:column;gap:12px}
.rbrow{}
.rbhead{font-size:14px;margin-bottom:5px}
.rbbar{height:9px;background:#e6ebf2;border-radius:999px;overflow:hidden}
.rbbar span{display:block;height:100%;background:linear-gradient(90deg,#1a6fd4,#3d9be0);border-radius:999px}
.rbnames{font-size:13px;color:var(--mut);margin-top:5px;font-variant-numeric:tabular-nums}

/* lessons */
details.lesson{
  background:var(--card);border:1px solid var(--line);border-radius:12px;
  margin-top:12px;box-shadow:var(--shadow);overflow:hidden
}
details.lesson summary{
  cursor:pointer;padding:15px 18px;list-style:none;display:flex;
  align-items:baseline;gap:12px;flex-wrap:wrap
}
details.lesson summary::-webkit-details-marker{display:none}
.lnum{
  flex:0 0 auto;width:26px;height:26px;border-radius:7px;background:var(--ink);
  color:#fff;font-size:13px;font-weight:700;display:grid;place-items:center
}
.ltitle{font-weight:700;font-size:16px}
.ldur{color:var(--mut);font-size:13px;margin-left:auto}
.lbody{padding:0 18px 20px;border-top:1px solid var(--line);margin-top:2px;padding-top:16px}
.lsum{margin:0 0 16px;color:var(--ink2)}
.pt{margin:0 0 12px;padding-left:14px;border-left:3px solid var(--line)}
.pt b{display:block;font-size:14.5px}
.pt span{font-size:15px;color:var(--ink2)}
.lcheck{
  margin-top:16px;background:#f2faf5;border:1px solid #cbe8d7;border-radius:8px;
  padding:12px 15px;font-size:14px;color:#17563a
}
.lcheck b{color:var(--ok)}
.lcases{display:flex;flex-wrap:wrap;gap:14px;margin-top:16px}
.lcase{text-align:center}
.lcase .nm{font-weight:700;font-size:14px;margin-bottom:4px}
.vlink{
  display:inline-block;margin-top:14px;font-size:14px;background:#fff0f4;
  border:1px solid #f6cdd9;border-radius:7px;padding:6px 13px;color:#c2185b
}
.vlink:hover{text-decoration:none;border-color:#c2185b}

/* trainer */
.tctl{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:18px 0}
select{
  font:inherit;font-size:14px;padding:7px 10px;border:1px solid var(--line);
  border-radius:8px;background:#fff
}
.btn{
  font:inherit;font-size:14px;font-weight:600;padding:8px 18px;border-radius:8px;
  border:1px solid var(--ink);background:var(--ink);color:#fff;cursor:pointer
}
.btn:hover{opacity:.88}
.score{margin-left:auto;font-variant-numeric:tabular-nums;color:var(--mut);font-size:14px}
.quiz{display:grid;grid-template-columns:auto 1fr;gap:26px;align-items:start}
@media(max-width:760px){.quiz{grid-template-columns:1fr}.score{margin-left:0}}
.opts{display:flex;flex-wrap:wrap;gap:8px}
.opts button{
  font:inherit;font-size:14px;font-weight:600;padding:8px 15px;border-radius:8px;
  border:1px solid var(--line);background:#fff;cursor:pointer;min-width:56px
}
.opts button:hover{border-color:var(--accent)}
.opts button.good{background:#e7f7ee;border-color:var(--ok);color:var(--ok)}
.opts button.bad{background:#fdecea;border-color:var(--no);color:var(--no)}
.opts button:disabled{cursor:default}
.fb{margin-top:14px;font-size:15px;min-height:3em}
.fb .hint{color:var(--ink2);font-size:14px}

/* grid */
.filters{display:flex;flex-wrap:wrap;gap:7px;margin:16px 0 20px}
.filters button{
  font:inherit;font-size:13.5px;padding:6px 13px;border-radius:999px;
  border:1px solid var(--line);background:#fff;cursor:pointer
}
.filters button.on{background:var(--ink);color:#fff;border-color:var(--ink)}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:16px}
.gcard{
  background:var(--card);border:1px solid var(--line);border-radius:12px;
  padding:14px;box-shadow:var(--shadow)
}
.ghead{display:flex;align-items:baseline;gap:8px;margin-bottom:4px}
.gname{font-weight:700;font-size:17px}
.gtag{font-size:12px;color:var(--mut);border:1px solid var(--line);border-radius:5px;padding:1px 7px}
.galg{font-size:12px;color:var(--mut);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;margin:2px 0 10px;word-break:break-word}
.gpats{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.gpat{text-align:center}
.gfeat{font-size:11.5px;color:var(--mut);line-height:1.5;margin-top:2px}

footer{padding:36px 0 60px;font-size:14px;color:var(--ink2)}
footer p{margin:0 0 8px}
