:root{--ink:#183e35;--text:#273d37;--muted:#758079;--bg:#f7f8f4;--line:#dde5dc;--green:#2e6751;--lime:#d6eb8c;--paper:#fff;--orange:#bd6c42}*{box-sizing:border-box}body{margin:0;background:var(--bg);font-family:Inter,"Segoe UI","Microsoft YaHei",sans-serif;color:var(--text);font-size:15px;line-height:1.8}button,input,select,textarea{font:inherit}a{color:inherit;text-decoration:none}button,a,input,select,textarea,summary{outline-offset:5px}button{cursor:pointer;border:1px solid var(--line);background:white;border-radius:8px;padding:9px 17px;color:var(--ink)}button:hover,a.card:hover{border-color:var(--green);background:#edf3e8}button.primary{background:var(--ink);color:white;border:0}button:disabled{opacity:.45;cursor:default}aside{width:248px;position:fixed;inset:0 auto 0 0;background:#edf1e9;border-right:1px solid var(--line);padding:32px 22px;overflow:auto;z-index:20}.brand{display:flex;align-items:center;gap:13px;font-size:23px;font-weight:700;letter-spacing:2px}.brandmark{border-radius:12px;background:var(--ink);color:var(--lime);font-size:38px;width:45px;height:45px;display:grid;place-items:center;line-height:1}.brand small{display:block;font-size:7px;letter-spacing:1.2px}.side-label{font-size:11px;color:#819080;letter-spacing:1px;margin:36px 12px 12px}nav a,#chapternav a{display:block;padding:10px 15px;border-radius:7px;font-size:14px;margin:3px 0}nav a.active{background:var(--ink);color:white}#chapternav a{font-size:12px;padding:7px 12px}#chapternav a:hover{background:#dde7d8}.side-bottom{border-top:1px solid var(--line);padding-top:20px;margin-top:35px;font-size:10px;color:var(--muted);line-height:2}.shell{margin-left:248px}header{height:76px;border-bottom:1px solid var(--line);padding:0 42px;display:flex;align-items:center;justify-content:space-between;font-size:13px}.header-right{color:var(--muted);font-size:12px}#menu{display:none}main{max-width:1230px;margin:auto;padding:34px 42px 70px}footer{font-size:11px;color:var(--muted);border-top:1px solid var(--line);padding:24px 42px}h1,h2,h3,p{margin-top:0}h1{font-weight:650;font-size:34px;letter-spacing:-1px;line-height:1.35;margin-bottom:17px}h2{font-size:22px;font-weight:600;line-height:1.5}h3{font-size:17px;font-weight:600;line-height:1.6}.eyebrow{text-transform:uppercase;letter-spacing:2px;font-size:11px;color:var(--green);margin-bottom:12px}.hero{background:var(--ink);border-radius:14px;padding:38px 38px 30px;position:relative;overflow:hidden;color:#f5f8ee;min-height:280px;display:grid;grid-template-columns:1.3fr 1fr;gap:20px}.hero .eyebrow{color:#a6c5a8}.hero h1{font-size:37px}.hero p{color:#b9cfc3;max-width:510px;font-size:14px}.hero button{background:var(--lime);border:0;color:var(--ink);font-weight:600}.hero canvas{width:100%;height:180px;align-self:center}.stats{display:grid;grid-template-columns:repeat(4,1fr);margin:25px 0 34px;gap:15px}.stat{border:1px solid var(--line);background:#fff;border-radius:10px;padding:16px 20px}.stat b{font-size:26px;display:block;font-weight:550}.stat span{font-size:12px;color:var(--muted)}.section-head{display:flex;align-items:baseline;justify-content:space-between;margin:32px 0 18px}.section-head h2{margin:0}.section-head a{font-size:12px;color:var(--green)}.grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:17px}.card{display:block;background:var(--paper);border:1px solid var(--line);border-radius:11px;padding:23px;transition:.15s}.card .num{font:32px Georgia,serif;color:#b5c8b8;margin-bottom:20px}.card h3{margin-bottom:8px}.card p{font-size:12px;color:var(--muted)}.card .meta{border-top:1px solid var(--line);margin-top:20px;padding-top:13px;font-size:11px;color:var(--green);display:flex;justify-content:space-between}.pill{font-size:10px;display:inline-block;border-radius:5px;padding:2px 8px;background:#ecf2e7;color:var(--green);letter-spacing:.3px}.pill.orange{background:#fff0e5;color:#925e37}.muted{color:var(--muted);font-size:13px}.toolbar{display:flex;gap:12px;margin:22px 0;flex-wrap:wrap}.toolbar input{flex:1;min-width:180px}.toolbar input,.toolbar select{padding:11px 15px;border:1px solid var(--line);border-radius:7px;background:#fff;color:var(--text)}.list{display:grid;gap:12px}.row{background:#fff;border:1px solid var(--line);border-radius:10px;padding:20px 23px;display:flex;align-items:center;gap:22px}.row .index{color:#67917a;font:24px Georgia;min-width:55px}.row .grow{flex:1;min-width:0}.row h3{margin:0 0 5px}.row .arrow{color:var(--green)}.reading{max-width:830px;margin:auto}.intro{font-size:17px;color:#60736a}.reading section{background:white;border:1px solid var(--line);border-radius:11px;padding:27px 32px;margin:22px 0}.reading section p:last-child{margin-bottom:0}.reading p{line-height:1.95}.reading .step{display:flex;gap:16px;margin:22px 0}.step b{background:#edf3e7;border-radius:50%;height:28px;min-width:28px;text-align:center;font-size:12px;line-height:28px;color:var(--green)}.formula{background:#f5f7f0;border-radius:8px;padding:16px;overflow-x:auto;margin:16px 0}.katex-display{overflow:auto hidden;padding:4px 0}.katex{font-size:1.15em}.callout{padding:18px 23px;background:#edf3e7;border-left:3px solid #7b9b64;margin:20px 0;border-radius:0 8px 8px 0}.callout.warn{background:#fff4e9;border-color:#c59267}details{border-top:1px solid var(--line);padding:16px 0}summary{cursor:pointer;color:var(--green);font-weight:600}details p{margin:15px 0 0}.options{display:grid;gap:10px;margin:17px 0}.options button{text-align:left}.options button.correct{border-color:#387044;background:#e5f1df}.options button.wrong{border-color:#b77754;background:#fff1e8}.feedback{background:#edf4e6;border-radius:8px;padding:15px;display:none}.notes{width:100%;min-height:140px;border:1px solid var(--line);border-radius:9px;padding:16px;resize:vertical}.saved{font-size:11px;color:var(--muted)}.source{font-size:12px;color:var(--muted);border-bottom:1px solid var(--line);padding-bottom:20px;margin:20px 0}.actions{display:flex;gap:12px;flex-wrap:wrap}.lab-grid{display:grid;grid-template-columns:260px minmax(0,1fr);gap:22px}.controls{background:#edf2e8;padding:24px;border-radius:12px}.controls label{display:block;margin:20px 0 6px;font-size:13px}.controls input[type=range],.controls select{width:100%;accent-color:var(--green)}.controls select{padding:8px;border:1px solid var(--line);border-radius:6px}.controls output{float:right;font-size:12px;font-family:monospace}.plot{background:#fff;border:1px solid var(--line);border-radius:12px;padding:20px;min-width:0}.plot canvas{width:100%;height:240px;display:block}.plot h3{font-size:13px;margin-bottom:4px}.plot small{color:var(--muted);font-size:11px}.metrics{display:flex;gap:30px;font-size:13px;margin-top:12px}.metrics strong{display:block;font-size:22px;color:var(--green)}.empty{text-align:center;padding:50px;color:var(--muted)}#toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);padding:10px 24px;background:var(--ink);color:white;border-radius:8px;display:none;z-index:50}.progressbar{height:5px;border-radius:3px;background:#e2eada;margin-top:13px}.progressbar span{height:100%;display:block;background:#718e56;border-radius:3px}@media(min-width:1500px){main{padding-top:45px}.hero{min-height:310px}}@media(max-width:1100px){aside{width:210px;padding:25px 15px}.shell{margin-left:210px}main{padding:28px}.grid{grid-template-columns:repeat(2,minmax(0,1fr))}.hero{grid-template-columns:1fr}.hero canvas{display:none}.hero h1{font-size:32px}.lab-grid{grid-template-columns:1fr}.controls{display:grid;grid-template-columns:1fr 1fr;gap:10px 30px}.controls h3{grid-column:1/-1}}@media(max-width:700px){aside{transform:translateX(-100%);width:250px;box-shadow:10px 0 30px #0002}body.menu-open aside{transform:translateX(0)}.shell{margin-left:0}header{height:60px;padding:0 18px;gap:15px;justify-content:start}#menu{display:block;padding:2px 9px;font-size:19px}.header-right{margin-left:auto;font-size:10px}main{padding:22px 17px 50px}h1{font-size:27px}.hero{padding:27px 23px;min-height:0}.hero h1{font-size:29px}.stats{grid-template-columns:1fr 1fr;gap:10px}.stat{padding:13px 17px}.grid{grid-template-columns:1fr}.reading section{padding:22px 20px}.row{padding:16px;gap:12px}.row h3{font-size:15px}.row .index{min-width:40px;font-size:20px}.controls{display:block}.metrics{gap:15px}.metrics strong{font-size:19px}footer{padding:20px}.toolbar select{max-width:100%}.formula{padding:10px}.card .num{margin-bottom:9px}}

.code{white-space:pre;overflow:auto;font:13px/1.8 Consolas,monospace;background:#f1f5ed;padding:18px;border-radius:8px;max-width:100%}

.reference-link{color:#2e6751;text-decoration:underline;text-underline-offset:3px}

.row .preview{font-size:13px;color:#5e7066;margin:5px 0;line-height:1.7}

.question-text{white-space:pre-line;line-height:2}
.list{grid-template-columns:minmax(0,1fr)}
.row{min-width:0}.row .grow{overflow-wrap:anywhere}
.reading section{min-width:0;overflow-x:auto}
.reading p,.step>div,.callout{overflow-wrap:normal;min-width:0;max-width:100%;overflow-x:auto}
.step>div,.question-text{overflow-x:auto}
#zplane{touch-action:none}
