:root{--bg:#f5f4ef;--paper:#fffefb;--ink:#182a30;--muted:#607075;--line:#dce1dc;--accent:#007b68;--soft:#e6f2eb;--code:#14272e;--amber:#a1580b;--nav:278px;color-scheme:light}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:90px}body{margin:0;font:16px/1.85 -apple-system,BlinkMacSystemFont,"Segoe UI","Microsoft YaHei",sans-serif;background:var(--bg);color:var(--ink)}a{color:var(--accent);text-underline-offset:4px}button,input,select{font:inherit}button{cursor:pointer}button:focus-visible,a:focus-visible,input:focus-visible,summary:focus-visible{outline:3px solid #dc8500;outline-offset:4px}header.top{position:sticky;top:0;z-index:20;display:flex;gap:16px;align-items:center;background:var(--paper);border-bottom:1px solid var(--line);height:68px;padding:0 28px}header .brand{font-weight:800;color:var(--ink);text-decoration:none;letter-spacing:.02em}.brand em{color:var(--accent);font-style:normal}header .edition{color:var(--muted);font-size:12px;border-left:1px solid var(--line);padding-left:18px}header .tools{margin-left:auto;display:flex;gap:8px}.plain,.action{padding:7px 14px;border:1px solid var(--line);border-radius:7px;background:var(--paper);color:var(--ink)}.action{background:var(--accent);color:white;border-color:var(--accent)}.layout{display:grid;grid-template-columns:var(--nav) minmax(0,1fr);min-height:calc(100vh - 68px)}aside{position:sticky;top:68px;height:calc(100vh - 68px);overflow:auto;border-right:1px solid var(--line);padding:24px 18px;background:var(--paper)}aside input{width:100%;padding:9px 11px;border:1px solid var(--line);border-radius:6px;background:var(--bg);color:var(--ink)}.nav-title{text-transform:none;letter-spacing:.14em;font-size:11px;font-weight:800;color:var(--muted);margin:22px 10px 8px}aside a{display:block;text-decoration:none;color:var(--muted);padding:7px 10px;font-size:13px;border-radius:6px;line-height:1.6;margin:2px 0}aside a.current{background:var(--soft);color:var(--accent);font-weight:700}aside a.done:after{content:' ✓';float:right;color:var(--accent)}aside .progress{font-size:12px;color:var(--muted);margin:16px 10px}progress{display:block;width:100%;height:6px;accent-color:var(--accent);margin-top:8px}main{min-width:0;padding:54px 5vw 80px}article{max-width:1000px;margin:auto}.eyebrow{font-size:12px;color:var(--accent);font-weight:800;letter-spacing:.18em;text-transform:uppercase}h1{font-size:clamp(30px,3.5vw,49px);line-height:1.25;letter-spacing:-.035em;margin:15px 0 22px;max-width:920px}h2{font-size:25px;line-height:1.5;margin:48px 0 16px;padding-top:8px;border-top:1px solid var(--line)}h3{font-size:19px;margin:25px 0 10px}p{margin:12px 0}strong{font-weight:750}.lead{font-size:19px;color:var(--muted);max-width:850px}.meta{display:flex;flex-wrap:wrap;gap:8px;margin:24px 0}.pill{font-size:12px;background:var(--soft);color:var(--accent);padding:4px 10px;border-radius:5px}.toc{padding:18px 24px;border:1px solid var(--line);background:var(--paper);border-radius:10px;margin:25px 0}.toc a{display:inline-block;margin-right:20px;font-size:13px}.callout{background:var(--soft);border-left:4px solid var(--accent);padding:16px 22px;border-radius:0 8px 8px 0;margin:22px 0}.callout.warn{background:#fff1db;border-color:#d98c24;color:#693d10}.callout strong{display:block;margin-bottom:4px}ul,ol{padding-left:25px}li{margin:7px 0}.cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:17px;margin:26px 0}.card{display:block;background:var(--paper);border:1px solid var(--line);border-radius:10px;padding:22px;text-decoration:none;color:var(--ink)}.card:hover{border-color:var(--accent);transform:translateY(-2px)}.card small{color:var(--accent);font-weight:700}.card h3{margin:8px 0}.card p{font-size:14px;color:var(--muted);margin:0}.table-wrap{overflow-x:auto;margin:18px 0}table{width:100%;border-collapse:collapse;font-size:14px;background:var(--paper)}th,td{text-align:left;vertical-align:top;padding:13px 16px;border:1px solid var(--line)}th{background:var(--soft);font-weight:700}code{font:13px/1.8 Consolas,"Cascadia Code",monospace;background:var(--soft);padding:2px 5px;border-radius:4px;overflow-wrap:anywhere}pre{position:relative;background:var(--code);color:#d4eee5;padding:25px 24px;overflow:auto;border-radius:10px;margin:18px 0;tab-size:4}pre code{background:none;color:inherit;padding:0;white-space:pre;overflow-wrap:normal}pre .copy{position:absolute;right:10px;top:9px;font-size:11px;background:#29424a;color:#d4eee5;border:0;border-radius:4px;padding:3px 9px}.snippet-label{font-size:12px;color:var(--muted);margin-top:20px}.figure{background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:16px;margin:25px 0;overflow:hidden}.figure svg{display:block;width:100%;height:auto}.figure figcaption{font-size:12px;color:var(--muted);margin-top:12px}.figure text{font-family:"Microsoft YaHei",sans-serif}.widget{border:1px solid #a8cdbf;background:var(--paper);border-radius:12px;padding:23px;margin:25px 0}.widget h3{margin-top:0}.controls{display:flex;align-items:center;gap:15px;flex-wrap:wrap}.controls label{display:flex;align-items:center;gap:9px;font-size:13px}.controls input[type=number]{width:100px}.controls input[type=range]{max-width:200px;accent-color:var(--accent)}.result{font-family:Consolas,monospace;color:var(--accent);font-size:19px;margin:15px 0}.wave{width:100%;height:130px;display:block;margin-top:15px}.wave line,.wave path{vector-effect:non-scaling-stroke}.quiz{border:1px solid var(--line);padding:22px;border-radius:10px;background:var(--paper);margin:22px 0}.quiz legend{padding:0 8px;font-weight:700}.quiz label{display:block;cursor:pointer;margin:8px 0}.quiz input{accent-color:var(--accent);margin-right:8px}.quiz output{display:block;min-height:1.7em;color:var(--accent);margin-top:10px}details{background:var(--paper);border:1px solid var(--line);padding:14px 20px;border-radius:8px;margin:18px 0}summary{cursor:pointer;font-weight:700}.chapter-end{display:flex;gap:15px;align-items:center;justify-content:space-between;margin-top:45px;border-top:1px solid var(--line);padding-top:25px}.chapter-end a{font-size:14px}.sources{font-size:13px;color:var(--muted)}.sources li{margin:6px 0}footer{font-size:12px;color:var(--muted);margin-top:45px;padding-top:20px;border-top:1px solid var(--line)}.tag-dot{display:inline-block;width:8px;height:8px;background:var(--accent);border-radius:50%;margin-right:6px}.packet{width:100%;background:var(--bg);border:1px solid var(--line);padding:9px;font-family:Consolas,monospace}.signal-move{animation:signal 3.6s linear infinite}.paused .signal-move{animation-play-state:paused}@keyframes signal{0%{transform:translateX(0)}100%{transform:translateX(500px)}}body.dark{--bg:#102127;--paper:#172c32;--ink:#e2ece6;--muted:#a4b9b4;--line:#30494e;--accent:#78d4b3;--soft:#223e3e;--code:#0b181e;color-scheme:dark}.dark .action{color:#102127}.dark .callout.warn{background:#43351e;color:#f2d6ab}.dark .figure svg{background:#fffefb;border-radius:7px}#menu-toggle{display:none}.search-empty{font-size:13px;color:var(--muted);margin:15px 10px}.hidden{display:none!important}@media(max-width:1000px){:root{--nav:235px}main{padding:35px 4vw}.edition{display:none}}@media(max-width:760px){.layout{display:block}#menu-toggle{display:block}aside{position:fixed;z-index:30;top:68px;left:0;width:280px;box-shadow:20px 0 40px #0003;display:none}body.nav-open aside{display:block}main{padding:32px 20px 60px}header.top{padding:0 14px;gap:9px}.brand{font-size:14px}header .tools{gap:5px}.tools button{font-size:12px;padding:6px 9px}.cards{grid-template-columns:1fr}.chapter-end{align-items:flex-start;flex-wrap:wrap}h2{font-size:23px}pre{padding:23px 16px}.figure{padding:9px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}}@media print{header.top,aside,.tools,.copy,.chapter-end,.controls,.toc{display:none!important}.layout{display:block}main{padding:0}body{background:white;color:black}.figure,.widget,pre,table{break-inside:avoid}pre{white-space:pre-wrap;background:#f5f5f5;color:black}pre code{white-space:pre-wrap}a{color:inherit}.cards{grid-template-columns:1fr}.signal-move{animation:none}}

.dark .figure img{background:#fffefb;border-radius:7px}

[hidden]{display:none!important}

aside details.nav-branch{padding:0;border:0;border-radius:0;background:transparent;margin:2px 0}aside .nav-branch>summary{padding:7px 10px;color:var(--muted);font-size:13px;font-weight:400;cursor:pointer;line-height:1.6;border-radius:6px}aside .nav-branch>summary:hover{color:var(--accent);background:var(--soft)}aside .branch-lessons{margin-top:5px}aside .branch-child{margin-left:10px;border-left:2px solid var(--line);border-radius:0}aside .nav-branch[hidden]{display:none}aside .nav-branch>summary:focus-visible{outline:3px solid #dc8500;outline-offset:2px}


/* Chapter entries share one level; disclosure markers only indicate children. */
aside>a.lesson-link,aside>a.lesson-link.current,aside .nav-branch>summary{font-size:13px;font-weight:400;line-height:1.6}
aside .current-branch>summary{color:var(--accent);background:var(--soft)}
aside .branch-lessons{margin-left:10px;border-left:2px solid var(--line)}
aside .branch-lessons>.lesson-link{margin-left:0!important;border-left:0}
