:root{
  --m-bg:#0b0f16; --m-panel:#0f1526; --m-panel2:#0d1328; --m-line:#2a3350; --m-line2:#1a2342;
  --m-text:#e6ebf5; --m-dim:#9aa6c0; --m-accent:#22d3ee; --m-gold:#f4c95d; --m-green:#3fb68b; --m-red:#ff5a67;
  --m-mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--m-bg);color:var(--m-text);font:16px/1.62 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif}
a{color:var(--m-accent);text-decoration:none}
a:hover{text-decoration:underline}
code{font-family:var(--m-mono);font-size:.88em;background:#05080d;border:1px solid var(--m-line2);border-radius:5px;padding:1px 5px;color:#9fe7c7}
pre{background:#05080d;border:1px solid var(--m-line2);border-radius:10px;padding:14px 16px;overflow:auto;margin:14px 0}
pre code{background:none;border:0;padding:0;color:#9fe7c7;font-size:.84rem;line-height:1.6}

/* top bar */
.m-bar{position:sticky;top:0;z-index:20;display:flex;flex-wrap:wrap;gap:12px;justify-content:space-between;align-items:center;padding:12px 18px;background:rgba(11,15,22,.96);border-bottom:1px solid var(--m-line);backdrop-filter:blur(8px)}
.m-bar-left{display:flex;flex-wrap:wrap;gap:12px;align-items:baseline}
.m-back{font-size:.8rem;color:var(--m-dim)}
.m-title{font:800 1rem/1 var(--m-mono);letter-spacing:.08em;color:var(--m-gold)}
.m-sub{font:700 .72rem/1 var(--m-mono);letter-spacing:.1em;color:var(--m-accent)}
.m-bar-right{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.m-progress-text{font:700 .72rem/1 var(--m-mono);color:var(--m-dim)}
.m-progress{width:130px;height:8px;border:1px solid var(--m-line);border-radius:99px;overflow:hidden;background:#05080d}
.m-progress i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--m-accent),var(--m-green));transition:width .25s}
.m-btn{font:700 .78rem/1 var(--m-mono);letter-spacing:.03em;color:#04121a;background:var(--m-accent);border:1px solid var(--m-accent);border-radius:8px;padding:10px 13px;cursor:pointer}
.m-btn:hover{filter:brightness(1.08)}
.m-btn-ghost{background:transparent;color:var(--m-text);border-color:var(--m-line)}
.m-btn-ghost:hover{border-color:var(--m-accent);color:var(--m-accent)}

/* tools */
.m-tools{display:flex;flex-wrap:wrap;gap:8px;padding:10px 18px;border-bottom:1px solid var(--m-line2);background:#080c13}
.m-tools a{font:700 .72rem/1 var(--m-mono);letter-spacing:.04em;color:var(--m-dim);border:1px solid var(--m-line);border-radius:99px;padding:8px 12px}
.m-tools a:hover{color:var(--m-accent);border-color:var(--m-accent);text-decoration:none}

/* layout */
.m-layout{display:grid;grid-template-columns:290px minmax(0,1fr);gap:28px;max-width:1380px;margin:0 auto;padding:24px 20px 80px}
.m-side{position:sticky;top:120px;align-self:start;max-height:calc(100vh - 140px);overflow:auto;border:1px solid var(--m-line2);border-radius:12px;background:var(--m-panel);padding:14px}
.m-side-h{font:800 .68rem/1 var(--m-mono);letter-spacing:.12em;color:var(--m-gold);margin:0 0 10px}
.m-toc-list{list-style:none;margin:0;padding:0;font-size:.8rem}
.m-toc-list li{margin:2px 0}
.m-toc-1{margin-top:9px !important}
.m-toc-1 a{font-weight:800;color:var(--m-text);font-size:.78rem;letter-spacing:.02em}
.m-toc-2 a{color:var(--m-dim);padding-left:12px;display:block;border-left:1px solid var(--m-line2)}
.m-toc-2 a:hover{color:var(--m-accent);border-color:var(--m-accent)}
.m-side-note{margin-top:14px;padding:10px 12px;border:1px solid var(--m-line);border-radius:9px;background:var(--m-panel2);font-size:.74rem;color:var(--m-dim);line-height:1.5}
.m-side-note b{color:var(--m-gold)}

/* content */
.m-main{min-width:0}
.m-main h1{font-size:clamp(1.45rem,2.6vw,2.1rem);line-height:1.15;margin:34px 0 10px;color:#fff;letter-spacing:-.01em;border-top:2px solid var(--m-line);padding-top:22px}
.m-main h1:first-child{border-top:0;padding-top:0;margin-top:0}
.m-main h2{font-size:1.22rem;line-height:1.25;margin:30px 0 8px;color:var(--m-accent)}
.m-main h3{font-size:1.02rem;line-height:1.3;margin:22px 0 6px;color:var(--m-gold)}
.m-main p{margin:10px 0;color:#cfd6ea}
.m-main strong{color:#fff}
.m-main ul,.m-main ol{margin:10px 0;padding-left:22px;color:#cfd6ea}
.m-main li{margin:5px 0}
.m-main blockquote{margin:16px 0;padding:12px 16px;border-left:4px solid var(--m-accent);background:var(--m-panel);border-radius:0 9px 9px 0;color:#e9eefb}
.m-main blockquote p{margin:0}
.m-table{overflow:auto;margin:16px 0;border:1px solid var(--m-line2);border-radius:10px}
.m-main table{border-collapse:collapse;width:100%;font-size:.86rem}
.m-main th,.m-main td{padding:9px 11px;border-bottom:1px solid var(--m-line2);text-align:left;vertical-align:top}
.m-main th{background:var(--m-panel2);color:var(--m-gold);font:700 .72rem/1.3 var(--m-mono);letter-spacing:.04em}
.m-main tr:last-child td{border-bottom:0}
.study-check{display:inline-flex;align-items:center;gap:7px;margin:4px 0 14px;font:700 .7rem/1 var(--m-mono);color:var(--m-dim);cursor:pointer;user-select:none}
.study-check input{accent-color:var(--m-green);width:15px;height:15px}
.study-check.done span{color:var(--m-green)}

/* widgets */
.m-widget{margin:44px 0 0;padding:20px;border:1px solid var(--m-line);border-radius:14px;background:var(--m-panel)}
.m-widget h2{margin-top:0}
.m-lede{color:var(--m-dim);font-size:.9rem;margin:4px 0 14px}
.m-note{color:var(--m-dim);font-size:.78rem;margin-top:10px}
.m-row{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-top:12px}
.m-count{font:700 .74rem/1 var(--m-mono);color:var(--m-dim)}
.m-flash{min-height:190px;display:flex;flex-direction:column;justify-content:center;gap:12px;padding:24px;border:1px solid var(--m-line);border-radius:12px;background:var(--m-panel2);cursor:pointer;transition:border-color .15s,transform .15s}
.m-flash:hover{border-color:var(--m-accent);transform:translateY(-1px)}
.m-flash-q{font:800 1.15rem/1.35 var(--m-mono);color:#fff}
.m-flash-a{font-size:1rem;color:#9fe7c7;border-top:1px dashed var(--m-line);padding-top:12px}
.m-flash-hint{font:700 .66rem/1 var(--m-mono);letter-spacing:.08em;color:var(--m-dim)}
.m-quiz-q{margin:16px 0;padding:14px;border:1px solid var(--m-line2);border-radius:10px;background:var(--m-panel2)}
.m-quiz-q p{font-weight:700;color:#fff;margin:0 0 8px}
.m-quiz-q label{display:block;margin:6px 0;font-size:.88rem;color:#cfd6ea;cursor:pointer}
.m-quiz-q input{accent-color:var(--m-accent);margin-right:7px}
.m-quiz-q.correct{border-color:var(--m-green)}
.m-quiz-q.wrong{border-color:var(--m-red)}
.m-quiz-explain{margin-top:10px;font-size:.82rem;color:var(--m-dim);white-space:pre-wrap}
.m-timer{font:900 5rem/1 var(--m-mono);letter-spacing:.04em;color:var(--m-gold);text-align:center;padding:16px 0}
.m-timer.low{color:var(--m-red)}
.m-cheat{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px}
.m-cheat>div{border:1px solid var(--m-line2);border-radius:9px;padding:10px 12px;background:var(--m-panel2)}
.m-cheat b{display:block;font:800 .66rem/1 var(--m-mono);letter-spacing:.1em;color:var(--m-gold);margin-bottom:5px}
.m-cheat span{font-size:.86rem;color:#cfd6ea}

@media (max-width:960px){
  .m-layout{grid-template-columns:1fr;padding:16px 12px 60px}
  .m-side{position:static;max-height:none}
  .m-bar{position:static}
  .m-timer{font-size:3.6rem}
}
@media print{
  body{background:#fff;color:#111}
  .m-bar,.m-tools,.m-side,.m-widget,.study-check{display:none !important}
  .m-layout{display:block;max-width:none;padding:0}
  .m-main h1,.m-main h2,.m-main h3{color:#111;border-color:#ccc}
  .m-main p,.m-main li{color:#222}
  .m-table{border-color:#bbb}
  .m-main th{background:#eee;color:#111}
  .m-main td{border-color:#ddd}
  pre{background:#f6f6f6;border-color:#ccc}
  pre code{color:#111}
  a{color:#111;text-decoration:underline}
}
