:root{
  --bg:#f6f1e7;
  --bg-deep:#efe7d8;
  --paper:#fffdf8;
  --paper-2:#fbf7ee;
  --ink:#17231e;
  --ink-soft:#2d3b34;
  --muted:#69766f;
  --dim:#89948d;
  --line:#e3dccd;
  --line-strong:#d2c8b5;
  --teal:#0f766e;
  --teal-deep:#0b5f59;
  --teal-soft:#e4f3ef;
  --coral:#e76f51;
  --coral-soft:#fbe9e4;
  --gold:#e9b44c;
  --gold-soft:#fbf1d9;
  --blue:#2557d6;
  --blue-soft:#e8eefe;
  --danger:#b74a32;
  --success:#1f7a4d;
  --shadow:0 18px 50px rgba(46,52,43,.09);
  --shadow-soft:0 8px 24px rgba(46,52,43,.06);
  --radius-xl:30px;
  --radius-lg:22px;
  --radius-md:14px;
  --sans:"Noto Sans SC","PingFang SC","Microsoft YaHei","Segoe UI",sans-serif;
  --serif:"Noto Serif SC","Songti SC","STSong","SimSun",Georgia,serif;
  --mono:"Cascadia Code","SFMono-Regular",Consolas,monospace;
  --math:"KaTeX_Main","Cambria Math","Times New Roman",serif;
}

*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0;
  min-width:320px;
  color:var(--ink);
  background:
    radial-gradient(900px 500px at 88% -3%, rgba(233,180,76,.17), transparent 65%),
    radial-gradient(800px 500px at -5% 22%, rgba(15,118,110,.09), transparent 62%),
    var(--bg);
  font-family:var(--sans);
  font-size:15px;
  line-height:1.7;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
body::before{
  content:"";
  position:fixed;
  inset:0;
  z-index:-1;
  pointer-events:none;
  opacity:.45;
  background-image:
    linear-gradient(rgba(23,35,30,.035) 1px,transparent 1px),
    linear-gradient(90deg,rgba(23,35,30,.035) 1px,transparent 1px);
  background-size:84px 84px;
  mask-image:linear-gradient(180deg,#000,transparent 72%);
}
::selection{background:rgba(233,180,76,.38)}
a{color:inherit;text-decoration:none}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer}
img,canvas,svg{display:block;max-width:100%}
h1,h2,h3,h4,p{margin:0}
sup,sub{line-height:0}
i,em{font-style:normal}

.reading-progress{position:fixed;left:0;right:0;top:0;height:3px;z-index:100;background:transparent;pointer-events:none}
.reading-progress span{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--teal),var(--gold),var(--coral));transition:width .2s linear}

.topbar{
  position:sticky;top:0;z-index:60;
  border-bottom:1px solid rgba(210,200,181,.55);
  background:rgba(246,241,231,.86);
  backdrop-filter:blur(16px) saturate(130%);
}
.topbar-inner{
  width:min(1280px,calc(100% - 48px));
  height:68px;margin:0 auto;
  display:flex;align-items:center;justify-content:space-between;gap:24px;
}
.brand{display:flex;align-items:center;gap:12px;flex:0 0 auto}
.brand-glyph{
  width:38px;height:38px;border-radius:50%;position:relative;display:grid;place-items:center;
  background:var(--ink);box-shadow:inset 0 0 0 1px rgba(255,255,255,.1);
}
.brand-glyph i{width:8px;height:8px;border-radius:50%;background:var(--gold);display:block;position:relative;z-index:1}
.brand-glyph::before,.brand-glyph::after{
  content:"";position:absolute;left:7px;right:7px;top:16px;height:6px;border:1px solid var(--teal);
  border-radius:50%;transform:rotate(28deg);
}
.brand-glyph::after{transform:rotate(-28deg);border-color:rgba(255,253,248,.55)}
.brand-copy{line-height:1.12}
.brand-copy b{display:block;font-family:var(--serif);font-size:18px;font-weight:700;letter-spacing:-.02em}
.brand-copy small{display:block;font-family:var(--mono);font-size:8px;letter-spacing:.18em;color:var(--dim);margin-top:4px}
.top-nav{display:flex;align-items:center;gap:4px}
.top-nav a{
  font-size:12px;color:var(--muted);padding:8px 12px;border-radius:999px;
  transition:.18s ease;
}
.top-nav a:hover,.top-nav a.active{background:rgba(255,253,248,.8);color:var(--ink);box-shadow:var(--shadow-soft)}
.top-actions{display:flex;align-items:center;gap:9px}
.mini-progress{display:flex;align-items:center;gap:7px;font-family:var(--mono);font-size:10px;color:var(--dim)}
.mini-ring{width:23px;height:23px;border-radius:50%;position:relative;background:conic-gradient(var(--teal) var(--p,0%),#ded6c6 0);display:block}
.mini-ring::before{content:"";position:absolute;inset:4px;border-radius:50%;background:var(--bg)}
.mini-ring i{position:absolute;inset:0}
.icon-btn{
  width:34px;height:34px;border-radius:50%;border:1px solid var(--line);
  background:rgba(255,253,248,.7);color:var(--muted);display:grid;place-items:center;
  font-size:14px;transition:.18s ease;
}
.icon-btn:hover{color:var(--ink);border-color:var(--line-strong);background:var(--paper)}
.icon-btn[aria-pressed="false"]{opacity:.45}
.menu-btn{display:none}

.app-layout{
  width:min(1280px,calc(100% - 48px));
  margin:0 auto;
  display:grid;grid-template-columns:260px minmax(0,1fr);gap:44px;
  align-items:start;
}
.sidebar{position:sticky;top:88px;padding:28px 0 40px;max-height:calc(100vh - 88px);overflow:auto;scrollbar-width:thin}
.sidebar-inner{display:flex;flex-direction:column;gap:18px}
.sidebar-head{padding:0 4px}
.eyebrow{
  display:inline-flex;align-items:center;gap:9px;
  font-family:var(--mono);font-size:9px;letter-spacing:.17em;color:var(--teal);
  text-transform:uppercase;
}
.eyebrow::before{content:"";width:20px;height:1px;background:currentColor;opacity:.65}
.sidebar-head p{font-size:11px;color:var(--dim);line-height:1.7;margin-top:7px}
.sidebar-section-label{font-family:var(--mono);font-size:8px;letter-spacing:.14em;color:var(--dim);padding:9px 10px 3px}
.nav-item{
  display:grid;grid-template-columns:26px minmax(0,1fr) auto;gap:9px;align-items:center;
  padding:10px;border-radius:12px;border:1px solid transparent;transition:.18s ease;
}
.nav-item:hover{background:rgba(255,253,248,.62)}
.nav-item.active{background:var(--paper);border-color:var(--line);box-shadow:var(--shadow-soft)}
.nav-item .n{
  font-family:var(--mono);font-size:9px;color:var(--dim);
  width:24px;height:24px;border-radius:50%;border:1px solid var(--line);
  display:grid;place-items:center;background:var(--paper-2);
}
.nav-item.active .n{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.nav-item.done .n{background:var(--teal-soft);color:var(--teal);border-color:rgba(15,118,110,.28)}
.nav-item b{display:block;font-size:11.5px;font-weight:600;line-height:1.35;color:var(--ink-soft)}
.nav-item small{display:block;font-size:9px;color:var(--dim);margin-top:2px}
.nav-item .tick{font-size:10px;color:var(--teal);opacity:0}
.nav-item.done .tick{opacity:1}
.nav-item.exam .n{background:linear-gradient(135deg,var(--gold-soft),var(--coral-soft));border-color:rgba(231,111,81,.3)}
.sidebar-footer{border-top:1px solid var(--line);padding:15px 4px 0;font-size:9px;line-height:1.7;color:var(--dim)}
.sidebar-footer b{color:var(--muted);font-weight:600}
.text-btn{
  appearance:none;border:0;background:transparent;padding:0;color:var(--muted);
  font-size:9px;text-decoration:underline;text-underline-offset:3px;margin-bottom:7px;
}
.text-btn:hover{color:var(--danger)}

.main{padding:36px 0 80px;min-width:0}
.loading-card{min-height:50vh;display:grid;place-items:center;align-content:center;gap:14px;color:var(--dim);font-family:var(--mono);font-size:11px}
.spinner{width:26px;height:26px;border:2px solid var(--line);border-top-color:var(--teal);border-radius:50%;animation:spin 1s linear infinite;display:block}
@keyframes spin{to{transform:rotate(360deg)}}

/* generic */
.kicker{font-family:var(--mono);font-size:9px;letter-spacing:.16em;color:var(--dim);text-transform:uppercase}
.chip{
  display:inline-flex;align-items:center;gap:5px;
  padding:5px 9px;border-radius:999px;border:1px solid var(--line);
  background:rgba(255,253,248,.7);font-family:var(--mono);font-size:9px;color:var(--muted);
  white-space:nowrap;
}
.chip.teal{color:var(--teal);border-color:rgba(15,118,110,.24);background:var(--teal-soft)}
.chip.coral{color:var(--coral);border-color:rgba(231,111,81,.24);background:var(--coral-soft)}
.chip.gold{color:#976b12;border-color:rgba(233,180,76,.35);background:var(--gold-soft)}
.btn{
  appearance:none;border:1px solid var(--line-strong);background:var(--paper);
  border-radius:999px;padding:11px 18px;font-size:12px;font-weight:600;
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  transition:.18s ease;box-shadow:0 2px 0 rgba(23,35,30,.04);
}
.btn:hover{transform:translateY(-1px);box-shadow:var(--shadow-soft);border-color:var(--ink)}
.btn.primary{background:var(--ink);border-color:var(--ink);color:var(--paper)}
.btn.primary:hover{background:var(--teal-deep);border-color:var(--teal-deep)}
.btn.coral{background:var(--coral);border-color:var(--coral);color:white}
.btn.ghost{background:transparent}
.btn.small{padding:8px 13px;font-size:10px}
.btn:disabled{opacity:.45;cursor:not-allowed;transform:none}
.link-btn{appearance:none;border:0;background:transparent;padding:0;color:var(--teal);font-size:11px;text-decoration:underline;text-underline-offset:3px}
.pill-row{display:flex;flex-wrap:wrap;gap:6px}

/* home */
.hero{
  position:relative;border:1px solid var(--line);border-radius:var(--radius-xl);
  background:
    radial-gradient(600px 300px at 85% 0%,rgba(233,180,76,.2),transparent 70%),
    radial-gradient(500px 300px at 8% 100%,rgba(15,118,110,.1),transparent 70%),
    var(--paper);
  padding:clamp(28px,4vw,52px);
  box-shadow:var(--shadow);
  overflow:hidden;
}
.hero::after{
  content:"";position:absolute;right:-70px;top:-100px;width:360px;height:360px;border-radius:50%;
  border:1px solid rgba(15,118,110,.15);box-shadow:0 0 0 42px rgba(15,118,110,.035),0 0 0 84px rgba(233,180,76,.04);
  pointer-events:none;
}
.hero-grid{position:relative;z-index:1;display:grid;grid-template-columns:minmax(0,1.3fr) minmax(260px,.7fr);gap:40px;align-items:end}
.hero h1{
  font-family:var(--serif);font-size:clamp(46px,6.6vw,86px);line-height:1.02;
  letter-spacing:-.055em;font-weight:700;margin-top:18px;text-wrap:balance;
}
.hero h1 .accent{color:var(--teal);position:relative}
.hero h1 .accent::after{content:"";position:absolute;left:0;right:-2px;bottom:.05em;height:.09em;background:var(--gold);opacity:.65;border-radius:99px}
.hero-lead{max-width:630px;font-size:15px;line-height:1.9;color:var(--muted);margin-top:23px}
.hero-lead b{color:var(--ink-soft);font-weight:600}
.hero-actions{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin-top:27px}
.hero-meta{display:flex;flex-wrap:wrap;gap:8px;margin-top:22px}
.hero-side{position:relative;min-height:250px;display:flex;flex-direction:column;justify-content:flex-end;gap:12px}
.orbital-card{
  border:1px solid var(--line);border-radius:20px;background:rgba(255,253,248,.6);
  padding:18px;position:relative;overflow:hidden;
}
.orbital-card svg{width:100%;height:auto}
.orbital-card .orbit-dot{animation:orbit 16s linear infinite;transform-origin:130px 130px}
@keyframes orbit{to{transform:rotate(360deg)}}
.hero-stat{display:flex;justify-content:space-between;border-top:1px solid var(--line);padding-top:12px;font-size:10px;color:var(--dim)}
.hero-stat b{color:var(--ink);font-family:var(--mono);font-size:11px}

.section-block{margin-top:34px}
.section-head{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:18px}
.section-head h2{font-family:var(--serif);font-size:clamp(26px,3vw,36px);line-height:1.2;letter-spacing:-.035em;font-weight:700}
.section-head p{max-width:380px;color:var(--dim);font-size:11px;line-height:1.8}
.course-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.chapter-card{
  position:relative;border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--paper);
  padding:22px;min-height:188px;display:flex;flex-direction:column;transition:.2s ease;overflow:hidden;
}
.chapter-card:hover{transform:translateY(-2px);box-shadow:var(--shadow);border-color:var(--line-strong)}
.chapter-card::after{content:"";position:absolute;right:-35px;bottom:-45px;width:130px;height:130px;border-radius:50%;background:var(--accent,var(--teal-soft));opacity:.55}
.chapter-card .cc-top{display:flex;align-items:center;justify-content:space-between;gap:10px;position:relative;z-index:1}
.chapter-card .cc-num{font-family:var(--mono);font-size:9px;color:var(--dim);letter-spacing:.1em}
.chapter-card h3{font-family:var(--serif);font-size:22px;line-height:1.25;letter-spacing:-.025em;margin-top:18px;position:relative;z-index:1}
.chapter-card p{font-size:11px;color:var(--muted);line-height:1.75;margin-top:8px;max-width:360px;position:relative;z-index:1}
.chapter-card .cc-foot{margin-top:auto;padding-top:16px;display:flex;align-items:center;justify-content:space-between;position:relative;z-index:1}
.chapter-card .cc-bar{width:74px;height:4px;border-radius:99px;background:#e9e2d5;overflow:hidden}
.chapter-card .cc-bar i{display:block;height:100%;background:var(--teal);border-radius:inherit;width:var(--p,0%)}
.chapter-card .cc-count{font-family:var(--mono);font-size:8px;color:var(--dim)}
.chapter-card.locked{opacity:.58}
.chapter-card.locked::before{content:"先完成前一章";position:absolute;right:14px;top:14px;font-family:var(--mono);font-size:8px;color:var(--dim);border:1px solid var(--line);border-radius:99px;padding:3px 7px;background:var(--paper-2)}

.exam-banner{
  border:1px solid rgba(231,111,81,.32);border-radius:var(--radius-lg);
  background:linear-gradient(120deg,var(--coral-soft),var(--gold-soft));
  padding:24px;display:flex;align-items:center;justify-content:space-between;gap:22px;margin-top:12px;
}
.exam-banner h3{font-family:var(--serif);font-size:25px;letter-spacing:-.03em}
.exam-banner p{font-size:11px;color:#785e57;line-height:1.7;margin-top:5px;max-width:520px}
.exam-banner .btn{flex:0 0 auto}

.method-strip{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:12px}
.method-card{border:1px solid var(--line);border-radius:16px;padding:15px;background:rgba(255,253,248,.55)}
.method-card span{font-family:var(--mono);font-size:8px;color:var(--teal);letter-spacing:.12em}
.method-card b{display:block;font-size:12px;margin-top:8px}
.method-card p{font-size:10px;color:var(--dim);line-height:1.7;margin-top:4px}

/* chapter */
.chapter-hero{padding:12px 2px 8px}
.chapter-hero .chapter-meta{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:14px}
.chapter-hero h1{font-family:var(--serif);font-size:clamp(38px,5vw,66px);line-height:1.05;letter-spacing:-.055em;margin-top:16px;font-weight:700}
.chapter-hero .lead{max-width:690px;font-size:15px;line-height:1.9;color:var(--muted);margin-top:17px}
.chapter-hero .lead b{color:var(--ink-soft);font-weight:600}
.chapter-progress{display:flex;align-items:center;gap:12px;margin-top:22px;max-width:520px}
.chapter-progress .track{flex:1;height:6px;border-radius:99px;background:#e6dfd2;overflow:hidden}
.chapter-progress .track i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--teal),var(--gold));border-radius:inherit;transition:width .25s ease}
.chapter-progress .pct{font-family:var(--mono);font-size:9px;color:var(--dim);white-space:nowrap}

.plain-card{
  margin-top:16px;border:1px solid rgba(233,180,76,.35);border-radius:16px;
  background:linear-gradient(120deg,var(--gold-soft),rgba(255,253,248,.65));
  padding:16px 18px;position:relative;
}
.plain-card::before{content:"先懂再算";position:absolute;right:14px;top:12px;font-family:var(--mono);font-size:8px;letter-spacing:.12em;color:#9a762a}
.plain-card .plain-label{font-family:var(--mono);font-size:8px;letter-spacing:.14em;color:#9a762a}
.plain-card p{font-size:13px;line-height:1.85;color:#5d4a29;margin-top:5px;padding-right:44px}
.plain-card .prereq{font-size:10px;color:#8a754e;margin-top:7px;border-top:1px solid rgba(154,118,42,.18);padding-top:6px}
.term-strip{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin-top:11px}
.term-strip > span{font-family:var(--mono);font-size:8px;color:var(--dim);letter-spacing:.05em;margin-right:2px}
.term-chip{
  appearance:none;border:1px dashed rgba(15,118,110,.38);background:rgba(228,243,239,.55);
  color:var(--teal-deep);border-radius:999px;padding:4px 9px;font-size:10px;line-height:1.2;
  transition:.16s ease;
}
.term-chip:hover{background:var(--teal-soft);border-style:solid;transform:translateY(-1px)}
.term-chip::after{content:"?";font-family:var(--mono);font-size:8px;opacity:.5;margin-left:4px}

.term-popover{
  position:fixed;left:50%;bottom:26px;transform:translate(-50%,18px);z-index:125;
  width:min(520px,calc(100% - 32px));max-height:min(62vh,480px);overflow:auto;
  background:var(--paper);border:1px solid var(--line-strong);border-radius:18px;
  box-shadow:0 22px 70px rgba(0,0,0,.24);padding:20px 22px;
  opacity:0;pointer-events:none;transition:.22s ease;
}
.term-popover.on{opacity:1;transform:translate(-50%,0);pointer-events:auto}
.term-popover h4{font-family:var(--serif);font-size:23px;letter-spacing:-.03em}
.term-popover .tp-en{font-family:var(--mono);font-size:8px;letter-spacing:.1em;color:var(--dim);margin-top:2px}
.term-popover p{font-size:12px;line-height:1.8;color:var(--ink-soft);margin-top:9px}
.term-popover .tp-analogy{border-left:2px solid var(--gold);padding-left:10px;color:#6c5a36;font-size:11px}
.term-popover .tp-formal{font-family:var(--mono);font-size:10px;background:var(--paper-2);border:1px solid var(--line);border-radius:8px;padding:8px 10px;margin-top:9px;color:var(--teal-deep);overflow-x:auto}
.term-popover .tp-close{position:absolute;right:12px;top:10px;border:0;background:transparent;font-size:18px;color:var(--dim)}
.term-popover .tp-more{display:inline-block;margin-top:11px;font-size:10px;color:var(--teal);text-decoration:underline;text-underline-offset:3px}

.glossary-hero{background:linear-gradient(130deg,var(--teal-soft),var(--paper) 55%,var(--gold-soft));border:1px solid rgba(15,118,110,.25);border-radius:var(--radius-xl);padding:clamp(24px,4vw,40px);box-shadow:var(--shadow)}
.glossary-hero h1{font-family:var(--serif);font-size:clamp(38px,5vw,62px);letter-spacing:-.05em;line-height:1.05;margin-top:10px}
.glossary-hero p{max-width:620px;font-size:13px;line-height:1.85;color:var(--muted);margin-top:12px}
.glossary-tools{display:flex;align-items:center;gap:10px;margin-top:18px;flex-wrap:wrap}
.glossary-tools input{flex:1;min-width:200px;border:1px solid var(--line-strong);border-radius:999px;padding:10px 15px;background:var(--paper);outline:none;font-size:12px}
.glossary-tools input:focus{border-color:var(--teal);box-shadow:0 0 0 3px rgba(15,118,110,.1)}
.glossary-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:16px}
.glossary-card{border:1px solid var(--line);border-radius:16px;background:var(--paper);padding:18px;transition:.18s ease}
.glossary-card:hover{border-color:rgba(15,118,110,.35);box-shadow:var(--shadow-soft)}
.glossary-card h3{font-family:var(--serif);font-size:21px;letter-spacing:-.025em}
.glossary-card .g-en{font-family:var(--mono);font-size:8px;letter-spacing:.08em;color:var(--dim);margin-top:2px}
.glossary-card p{font-size:11px;line-height:1.8;color:var(--muted);margin-top:7px}
.glossary-card .g-analogy{color:#846b3c;font-size:10px;border-top:1px dashed var(--line);padding-top:7px;margin-top:8px}
.glossary-card .g-formal{font-family:var(--mono);font-size:9px;color:var(--teal-deep);background:var(--teal-soft);border-radius:7px;padding:6px 8px;margin-top:8px;overflow-x:auto}
.glossary-empty{padding:30px;text-align:center;color:var(--dim);font-size:12px}
.home-plain{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:14px}
.home-plain div{border:1px solid var(--line);border-radius:12px;padding:12px 13px;background:rgba(255,253,248,.58)}
.home-plain span{font-family:var(--mono);font-size:8px;color:var(--teal)}
.home-plain b{display:block;font-size:11px;margin-top:4px}
.home-plain p{font-size:9px;line-height:1.65;color:var(--dim);margin-top:2px}

.lesson-block{margin-top:18px;border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--paper);padding:clamp(20px,3vw,30px);box-shadow:0 2px 0 rgba(23,35,30,.02)}
.lesson-block h2{font-family:var(--serif);font-size:clamp(25px,2.8vw,33px);line-height:1.25;letter-spacing:-.035em;font-weight:700;margin-top:8px}
.lesson-block h3{font-size:14px;font-weight:650;margin-top:20px}
.lesson-block p{font-size:13px;line-height:1.9;color:var(--ink-soft);margin-top:11px}
.lesson-block p b{font-weight:650}
.lesson-block ul,.lesson-block ol{padding-left:21px;margin:10px 0 0;color:var(--ink-soft)}
.lesson-block li{font-size:13px;line-height:1.85;margin-top:5px}
.lesson-block li::marker{color:var(--teal)}
.note{
  border-left:3px solid var(--gold);background:var(--gold-soft);border-radius:0 12px 12px 0;
  padding:13px 15px;font-size:12px;line-height:1.8;color:#6f5a2e;margin-top:16px;
}
.note b{color:#59471f}
.warning{border-left-color:var(--coral);background:var(--coral-soft);color:#74463a}
.warning b{color:#5f352b}
.definition{
  border:1px solid var(--line);border-radius:14px;padding:15px 16px;background:var(--paper-2);
  margin-top:16px;
}
.definition .kicker{color:var(--teal);margin-bottom:5px}
.definition p{margin-top:4px}

.eq{
  margin:13px 0;padding:13px 16px;border:1px solid var(--line);border-radius:12px;
  background:var(--paper-2);overflow-x:auto;color:var(--ink);
}
.eq .katex-display{margin:0}
.katex{font-size:1.04em}
.im{white-space:nowrap}

.split-2{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:14px}
.mini-card{border:1px solid var(--line);border-radius:14px;padding:15px;background:var(--paper-2)}
.mini-card .kicker{color:var(--coral)}
.mini-card p{font-size:11px;margin-top:5px;line-height:1.8}
.mini-card b{font-size:12px;display:block;margin-top:5px}

.concept-figure{
  margin:15px 0 17px;border:1px solid var(--line);border-radius:15px;
  background:var(--paper-2);padding:12px 14px 10px;overflow:hidden;
}
.concept-figure svg{width:100%;height:auto;display:block}
.concept-figure figcaption{font-size:10px;line-height:1.7;color:var(--dim);margin-top:8px;border-top:1px solid rgba(227,220,205,.7);padding-top:7px}
.derivation{counter-reset:step;margin-top:14px}
.derivation .step{
  position:relative;padding:11px 0 11px 38px;border-top:1px solid rgba(227,220,205,.75);
}
.derivation .step:first-child{border-top:0}
.derivation .step::before{
  counter-increment:step;content:counter(step,decimal-leading-zero);
  position:absolute;left:0;top:12px;font-family:var(--mono);font-size:9px;color:var(--teal);
  width:24px;height:24px;border-radius:50%;background:var(--teal-soft);display:grid;place-items:center;
}
.derivation .step b{font-size:12px;color:var(--ink-soft)}
.derivation .step p{font-size:11px;line-height:1.8;margin-top:3px;color:var(--muted)}
.derivation .step .eq{margin:9px 0 2px;padding:9px 12px}

.example{border:1px dashed var(--line-strong);border-radius:14px;padding:16px;background:rgba(255,253,248,.55);margin-top:17px}
.example .kicker{color:var(--coral)}
.example p{font-size:12px;margin-top:6px}
.example .answer{font-weight:650;color:var(--teal)}

/* simulator */
.sim-card{
  margin-top:18px;border-radius:var(--radius-lg);overflow:hidden;background:#0e1713;
  border:1px solid #22342c;box-shadow:var(--shadow);
}
.sim-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;padding:17px 19px 0;color:#f3eee2}
.sim-head .kicker{color:#8fae9f}
.sim-head h3{font-family:var(--serif);font-size:20px;line-height:1.3;margin-top:3px;font-weight:600;color:#f7f2e6}
.sim-head .sim-badge{font-family:var(--mono);font-size:8px;color:#9ed4c6;border:1px solid rgba(135,217,199,.24);border-radius:99px;padding:5px 8px;white-space:nowrap}
.sim-canvas-wrap{position:relative;margin:12px 12px 0;border-radius:14px;overflow:hidden;background:#09110e}
.sim-canvas-wrap canvas{width:100%;height:360px;display:block;touch-action:none}
.sim-hud{
  position:absolute;left:12px;top:12px;display:flex;flex-wrap:wrap;gap:5px;pointer-events:none;
}
.sim-hud span{
  font-family:var(--mono);font-size:9px;color:#cbd8cf;background:rgba(8,16,12,.7);
  border:1px solid rgba(163,194,178,.18);border-radius:999px;padding:5px 8px;backdrop-filter:blur(5px);
}
.sim-hud b{color:#f3c66e;font-weight:500}
.sim-foot{padding:10px 16px 15px;display:flex;align-items:center;justify-content:space-between;gap:12px;color:#8ea294;font-size:9px}
.sim-foot .hint{font-family:var(--mono);font-size:8px;letter-spacing:.02em}
.sim-controls{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;padding:14px 16px 16px;border-top:1px solid rgba(163,194,178,.13);background:#101b16}
.sim-control{min-width:0;color:#b7c7bd;font-size:10px}
.sim-control .row{display:flex;align-items:baseline;justify-content:space-between;gap:7px}
.sim-control output{font-family:var(--mono);font-size:10px;color:#f0e7d6;white-space:nowrap}
.sim-control input[type=range]{appearance:none;width:100%;height:3px;border-radius:99px;background:linear-gradient(90deg,#e9b44c 0 var(--fill,50%),rgba(243,238,226,.16) var(--fill,50%) 100%);margin-top:9px;outline:none}
.sim-control input[type=range]::-webkit-slider-thumb{appearance:none;width:14px;height:14px;border-radius:50%;background:#0e1713;border:2px solid #e9b44c;box-shadow:0 0 0 4px rgba(233,180,76,.1);cursor:grab}
.sim-control input[type=range]::-moz-range-thumb{width:12px;height:12px;background:#0e1713;border:2px solid #e9b44c;border-radius:50%}
.sim-buttons{display:flex;flex-wrap:wrap;gap:6px;padding:0 16px 16px;background:#101b16}
.sim-btn{
  appearance:none;border:1px solid rgba(163,194,178,.22);background:rgba(255,255,255,.035);
  color:#c3d0c8;border-radius:9px;padding:7px 10px;font-size:10px;transition:.18s ease;
}
.sim-btn:hover{border-color:#e9b44c;color:#f3c66e}
.sim-btn.on{background:rgba(233,180,76,.13);border-color:rgba(233,180,76,.45);color:#f3c66e}
.sim-mode{display:flex;gap:5px;flex-wrap:wrap}
.sim-mode .sim-btn{border-radius:999px}

/* quiz */
.quiz-wrap{margin-top:16px}
.quiz-intro{
  display:flex;align-items:flex-end;justify-content:space-between;gap:18px;
  padding-bottom:12px;border-bottom:1px solid var(--line);
}
.quiz-intro h2{font-family:var(--serif);font-size:32px;letter-spacing:-.04em;line-height:1.2}
.quiz-intro p{font-size:11px;color:var(--dim);max-width:370px;line-height:1.8}
.quiz-score{font-family:var(--mono);font-size:9px;color:var(--dim);white-space:nowrap}
.quiz-score b{color:var(--teal);font-size:13px}
.question{
  border:1px solid var(--line);border-radius:18px;background:var(--paper);
  padding:19px 20px;margin-top:12px;transition:.2s ease;
}
.question.correct{border-color:rgba(31,122,77,.35);background:linear-gradient(180deg,rgba(228,243,239,.45),var(--paper) 45%)}
.question.wrong{border-color:rgba(231,111,81,.35)}
.q-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}
.q-meta{display:flex;align-items:center;flex-wrap:wrap;gap:6px}
.q-num{font-family:var(--mono);font-size:9px;color:var(--dim);letter-spacing:.08em}
.difficulty{display:flex;gap:2px}
.difficulty i{width:4px;height:10px;border-radius:2px;background:#e2dacb;display:block}
.difficulty i.on{background:var(--coral)}
.q-type{font-family:var(--mono);font-size:8px;color:var(--teal);border:1px solid rgba(15,118,110,.2);background:var(--teal-soft);border-radius:99px;padding:3px 6px}
.q-prompt{font-size:13px;line-height:1.85;margin-top:13px;color:var(--ink)}
.q-prompt b{font-weight:650}
.q-options{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:13px}
.option{
  appearance:none;border:1px solid var(--line);border-radius:11px;background:var(--paper-2);
  padding:10px 12px;text-align:left;font-size:11px;line-height:1.6;color:var(--ink-soft);
  display:flex;align-items:flex-start;gap:8px;transition:.16s ease;
}
.option:hover{border-color:var(--teal);background:#fff}
.option .ol{font-family:var(--mono);font-size:8px;color:var(--dim);flex:0 0 auto;margin-top:2px}
.option.selected{border-color:var(--teal);box-shadow:0 0 0 2px rgba(15,118,110,.12)}
.option.correct{border-color:var(--success);background:var(--teal-soft)}
.option.wrong{border-color:var(--coral);background:var(--coral-soft)}
.option:disabled{cursor:default}
.option:disabled:hover{transform:none;border-color:var(--line);background:var(--paper-2)}
.option.correct:disabled{border-color:var(--success);background:var(--teal-soft)}
.option.wrong:disabled{border-color:var(--coral);background:var(--coral-soft)}
.q-numeric{display:flex;align-items:center;gap:8px;margin-top:13px}
.q-numeric input{
  width:150px;border:1px solid var(--line-strong);border-radius:9px;background:var(--paper-2);
  padding:9px 11px;font-family:var(--mono);font-size:12px;outline:none;
}
.q-numeric input:focus{border-color:var(--teal);box-shadow:0 0 0 3px rgba(15,118,110,.1)}
.q-numeric .unit{font-family:var(--mono);font-size:10px;color:var(--dim)}
.q-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:12px}
.q-feedback{margin-top:12px;border-radius:11px;padding:11px 13px;font-size:11px;line-height:1.8;display:none}
.q-feedback.show{display:block;animation:reveal .25s ease}
.q-feedback.ok{background:var(--teal-soft);color:#1c5a4b;border:1px solid rgba(31,122,77,.2)}
.q-feedback.no{background:var(--coral-soft);color:#74463a;border:1px solid rgba(231,111,81,.2)}
.q-feedback b{font-weight:650}
.q-feedback .sol{margin-top:7px;padding-top:7px;border-top:1px solid rgba(0,0,0,.08);color:var(--ink-soft)}
.q-hint{margin-top:9px;background:var(--gold-soft);border-radius:9px;padding:9px 11px;font-size:10px;color:#715b2d;display:none}
.q-hint.show{display:block}
@keyframes reveal{from{opacity:0;transform:translateY(-3px)}to{opacity:1;transform:none}}
.q-foot{display:flex;justify-content:space-between;align-items:center;margin-top:8px;gap:8px}
.q-foot .concept{font-family:var(--mono);font-size:8px;color:var(--dim)}

.chapter-end{
  margin-top:20px;border-radius:var(--radius-lg);border:1px solid rgba(15,118,110,.25);
  background:linear-gradient(120deg,var(--teal-soft),var(--gold-soft));padding:24px;
  display:flex;align-items:center;justify-content:space-between;gap:20px;
}
.chapter-end h3{font-family:var(--serif);font-size:26px;letter-spacing:-.035em}
.chapter-end p{font-size:11px;color:#4e6b60;line-height:1.8;margin-top:5px}
.chapter-end .btn{flex:0 0 auto}
.next-row{display:flex;justify-content:space-between;gap:12px;margin-top:18px}

/* exam */
.exam-hero{
  border:1px solid rgba(231,111,81,.3);border-radius:var(--radius-xl);
  background:linear-gradient(130deg,var(--coral-soft),var(--gold-soft) 70%,var(--paper));
  padding:clamp(26px,4vw,44px);box-shadow:var(--shadow);position:relative;overflow:hidden;
}
.exam-hero::after{content:"?";position:absolute;right:30px;top:-30px;font-family:var(--serif);font-size:220px;color:rgba(231,111,81,.1);line-height:1}
.exam-hero h1{font-family:var(--serif);font-size:clamp(40px,5.4vw,70px);line-height:1.05;letter-spacing:-.055em;margin-top:12px}
.exam-hero p{max-width:600px;font-size:13px;line-height:1.85;color:#74594f;margin-top:14px}
.exam-stats{display:flex;flex-wrap:wrap;gap:7px;margin-top:19px;position:relative;z-index:1}
.exam-toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;margin-top:16px;padding:13px 16px;border:1px solid var(--line);border-radius:14px;background:var(--paper)}
.exam-brief{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:12px}
.exam-brief div{border:1px solid var(--line);border-radius:13px;padding:13px 14px;background:rgba(255,253,248,.6)}
.exam-brief span{font-family:var(--mono);font-size:8px;color:var(--teal);letter-spacing:.1em}
.exam-brief b{display:block;font-size:11px;margin-top:5px;line-height:1.4}
.exam-brief p{font-size:9px;line-height:1.65;color:var(--dim);margin-top:3px}
.timer{font-family:var(--mono);font-size:18px;color:var(--ink);letter-spacing:.04em}
.timer.low{color:var(--coral)}
.exam-note{font-size:10px;color:var(--dim);line-height:1.7}
.result-card{
  border:1px solid var(--line);border-radius:22px;background:var(--paper);padding:26px;margin-top:16px;
  text-align:center;
}
.result-card .big{font-family:var(--serif);font-size:58px;line-height:1;letter-spacing:-.05em;color:var(--teal)}
.result-card .big small{font-size:18px;color:var(--dim);letter-spacing:0}
.result-card p{font-size:12px;color:var(--muted);margin-top:8px}
.result-bars{display:grid;grid-template-columns:repeat(6,1fr);gap:6px;margin-top:18px;text-align:left}
.result-bar{padding:9px;border:1px solid var(--line);border-radius:10px;background:var(--paper-2)}
.result-bar span{font-size:8px;color:var(--dim);display:block}
.result-bar b{font-family:var(--mono);font-size:11px;display:block;margin-top:3px;color:var(--ink)}
.result-bar i{display:block;height:3px;background:#e4dccd;border-radius:99px;margin-top:7px;overflow:hidden}
.result-bar i em{display:block;height:100%;background:var(--teal);border-radius:inherit}

/* toolkit */
.tool-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin-top:18px}
.tool-card{border:1px solid var(--line);border-radius:18px;background:var(--paper);padding:20px}
.tool-card h3{font-family:var(--serif);font-size:22px;letter-spacing:-.03em;margin-top:7px}
.tool-card p{font-size:11px;color:var(--muted);line-height:1.8;margin-top:6px}
.calc-row{display:flex;gap:6px;margin-top:12px;flex-wrap:wrap}
.calc-row input{width:100px;border:1px solid var(--line-strong);border-radius:9px;background:var(--paper-2);padding:8px 10px;font-family:var(--mono);font-size:11px;outline:none}
.calc-row input:focus{border-color:var(--teal)}
.calc-out{font-family:var(--mono);font-size:12px;color:var(--teal);margin-top:10px;min-height:20px}
.constants{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-top:12px}
.constants div{border:1px solid var(--line);border-radius:9px;padding:8px 10px;background:var(--paper-2);font-size:10px;color:var(--muted)}
.constants b{display:block;font-family:var(--mono);font-size:10px;color:var(--ink);margin-top:2px}

/* toast, confetti, misc */
.toast{
  position:fixed;left:50%;bottom:26px;transform:translate(-50%,16px);z-index:120;
  padding:10px 15px;border-radius:999px;border:1px solid rgba(23,35,30,.18);
  background:rgba(23,35,30,.94);color:#f7f2e6;font-size:11px;box-shadow:0 14px 45px rgba(0,0,0,.24);
  opacity:0;pointer-events:none;transition:.22s ease;max-width:min(90vw,480px);text-align:center;
}
.toast.on{opacity:1;transform:translate(-50%,0)}
.confetti-layer{position:fixed;inset:0;pointer-events:none;z-index:110;overflow:hidden}
.confetti-piece{position:absolute;width:7px;height:11px;border-radius:2px;animation:fall 1.8s ease-in forwards}
@keyframes fall{0%{transform:translateY(-20px) rotate(0);opacity:1}100%{transform:translateY(85vh) rotate(560deg);opacity:0}}
.noscript{margin:20px;padding:14px;border:1px solid var(--coral);border-radius:12px;background:var(--coral-soft);font-size:13px}
.mobile-scrim{display:none}

.site-footer{border-top:1px solid var(--line);margin-top:50px;background:rgba(255,253,248,.35)}
.footer-inner{width:min(1280px,calc(100% - 48px));margin:0 auto;padding:26px 0 34px;display:flex;justify-content:space-between;gap:30px;align-items:flex-start}
.footer-inner b{font-family:var(--serif);font-size:19px}
.footer-inner p{font-size:9px;color:var(--dim);line-height:1.7;margin-top:3px}
.footer-note{max-width:430px;text-align:right}

@media (max-width:1080px){
  .app-layout{grid-template-columns:230px minmax(0,1fr);gap:26px}
  .hero-grid{grid-template-columns:1fr}
  .hero-side{display:grid;grid-template-columns:1fr 1fr;align-items:end;min-height:0}
  .orbital-card{grid-row:1/3}
  .course-grid{grid-template-columns:1fr 1fr}
}
@media (max-width:860px){
  .section-head{display:block}
  .section-head p{margin-top:9px;max-width:100%}
  .top-nav{display:none}
  .menu-btn{display:grid}
  .app-layout{display:block;width:min(100% - 32px,760px)}
  .sidebar{
    position:fixed;left:0;top:68px;bottom:0;width:286px;z-index:70;
    background:var(--paper);border-right:1px solid var(--line);padding:22px 18px;
    transform:translateX(-104%);transition:.24s ease;max-height:none;
  }
  .sidebar.open{transform:none;box-shadow:20px 0 60px rgba(0,0,0,.16)}
  .mobile-scrim{display:block;position:fixed;inset:68px 0 0;background:rgba(15,22,18,.3);z-index:65;opacity:0;pointer-events:none;transition:.2s ease}
  .mobile-scrim.on{opacity:1;pointer-events:auto}
  .main{padding:22px 0 60px}
  .course-grid{grid-template-columns:1fr}
  .method-strip{grid-template-columns:1fr}
  .glossary-grid{grid-template-columns:1fr}
  .home-plain{grid-template-columns:1fr}
  .hero-side{display:block}
  .orbital-card{display:none}
  .split-2{grid-template-columns:1fr}
  .sim-controls{grid-template-columns:1fr 1fr}
  .q-options{grid-template-columns:1fr}
  .result-bars{grid-template-columns:repeat(3,1fr)}
  .exam-brief{grid-template-columns:1fr 1fr}
  .tool-grid{grid-template-columns:1fr}
  .footer-inner{display:block}
  .footer-note{text-align:left;margin-top:10px}
}
@media (max-width:560px){
  .topbar-inner{width:calc(100% - 24px);height:62px}
  .brand-copy b{font-size:16px}
  .brand-copy small{font-size:7px}
  .mini-progress{display:none}
  .app-layout{width:calc(100% - 24px)}
  .hero{padding:22px 18px}
  .hero h1{font-size:46px}
  .hero-actions .btn{padding:10px 15px;font-size:11px}
  .chapter-card{min-height:170px;padding:18px}
  .chapter-card h3{font-size:20px}
  .exam-banner{display:block}
  .exam-banner .btn{margin-top:13px}
  .lesson-block{padding:18px 15px}
  .quiz-intro{display:block}
  .quiz-intro p{margin-top:5px}
  .question{padding:15px}
  .q-numeric input{width:120px}
  .sim-canvas-wrap canvas{height:300px}
  .sim-controls{grid-template-columns:1fr}
  .sim-foot{display:block}
  .chapter-end{display:block}
  .chapter-end .btn{margin-top:12px}
  .result-bars{grid-template-columns:repeat(2,1fr)}
  .exam-brief{grid-template-columns:1fr}
  .concept-figure{overflow-x:auto}
  .concept-figure svg{min-width:620px}
  .footer-inner{width:calc(100% - 24px)}
  .reading-progress{height:2px}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms !important;animation-iteration-count:1 !important;transition-duration:.001ms !important;scroll-behavior:auto !important}
}
