/* AI 系统工程 — Technical reference reading system. No external fonts or resources. */
:root{--paper:#fff;--surface:#f7f8fa;--soft:#f5f7f9;--warm:#f8f9fb;--ink:#22272e;--muted:#59636e;--accent:#2558b5;--line:#e3e7ec;--font:17px;--bar:56px;--rail:272px;--measure:760px;--radius:5px;--ui:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Hiragino Sans GB","Microsoft YaHei","Noto Sans CJK SC",sans-serif;--display:var(--ui);--mono:ui-monospace,SFMono-Regular,Menlo,Consolas,"Liberation Mono",monospace}
*{box-sizing:border-box}html{scroll-behavior:auto;scroll-padding-top:80px}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--ui);font-size:var(--font);line-height:1.95;-webkit-font-smoothing:antialiased}button,input,select,textarea{font:inherit}a,button{-webkit-tap-highlight-color:transparent}a{color:var(--accent);text-decoration-thickness:1px;text-underline-offset:.2em}a:hover{color:#173e81}button{color:var(--ink);background:#fff;border:1px solid #d9dee5;border-radius:5px;cursor:pointer;padding:8px 12px;font-size:13px;line-height:1.5;transition:background .12s,border-color .12s}button:hover:not(:disabled){background:#f1f3f6;border-color:#c9d0d9}button:disabled{opacity:.42;cursor:not-allowed}button:active:not(:disabled){transform:translateY(1px)}a:focus-visible,button:focus-visible,summary:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--accent);outline-offset:3px}::selection{background:#dce8fb;color:#142740}[hidden]{display:none!important}.skip-link{position:fixed;top:-80px;left:16px;z-index:200;background:#22272e;color:white;padding:8px 14px}.skip-link:focus{top:7px}
.studio-icon{width:18px;height:18px;display:block;flex:none;fill:none;stroke:currentColor;stroke-width:1.65;stroke-linecap:round;stroke-linejoin:round}.icon-button{display:inline-flex;align-items:center;justify-content:center;height:36px;min-width:36px;border-color:transparent;background:transparent;padding:8px}.icon-button[aria-pressed=true]{background:#eaf0fa;color:var(--accent)}
/* A single workspace frame on the home, reading and reference pages. */
.site-header{height:var(--bar);display:flex;align-items:center;gap:20px;padding:0 24px;position:sticky;top:0;z-index:70;border-bottom:1px solid var(--line);background:var(--paper)}.site-brand{display:flex;align-items:center;gap:10px;color:var(--ink);font-size:16px;font-weight:650;text-decoration:none;white-space:nowrap;letter-spacing:0}.site-brand .book-mark{width:24px;height:24px;color:var(--ink)}.brand-detail{font-weight:400;color:var(--muted);font-size:12px;margin-left:8px;padding-left:14px;border-left:1px solid #dce1e7}.site-links{display:flex;align-items:center;height:100%;gap:26px;margin-left:25px;font-size:13px}.site-links a{display:flex;align-items:center;height:100%;text-decoration:none;color:var(--muted);border-bottom:2px solid transparent;padding-top:2px}.site-links a:hover,.site-links a[aria-current=page]{color:var(--ink);border-bottom-color:var(--ink)}.site-actions{display:flex;align-items:center;gap:8px;margin-left:auto}.search-trigger{display:flex;align-items:center;gap:10px;height:34px;width:225px;color:var(--muted);font-size:13px;text-align:left;background:#fafbfc;border:1px solid #e0e4e9}.search-trigger kbd{margin-left:auto;font-family:var(--ui);font-size:11px;border:1px solid #dee3e9;border-radius:3px;line-height:1.4;padding:1px 4px;color:#67727e;background:#fff}.search-trigger .studio-icon{height:15px;width:15px}.menu-trigger{display:none}.page-progress{position:fixed;top:calc(var(--bar) - 1px);height:1px;left:var(--rail);right:0;z-index:72;pointer-events:none}.page-progress span{display:block;height:100%;width:100%;background:var(--accent);transform:scaleX(0);transform-origin:left center}
/* The header of the rail does not scroll. Only .rail-scroll owns chapter scrolling. */
.book-rail{position:fixed;left:0;top:var(--bar);bottom:0;z-index:55;width:var(--rail);height:calc(100dvh - var(--bar));padding:0;overflow:hidden;display:flex;flex-direction:column;border-right:1px solid var(--line);background:#f7f8fa;font-size:13px;line-height:1.6}.rail-top{display:flex;flex:none;align-items:center;justify-content:space-between;padding:17px 18px 12px;margin:0;min-height:58px}.rail-top strong{font-size:13px;font-weight:650}.rail-actions{display:flex;gap:2px}.rail-locate{padding:5px 7px;font-size:11px;min-height:30px;border:0;background:transparent;color:var(--muted)}.rail-locate:hover{color:var(--accent)}.rail-close{display:none}.rail-scroll{min-height:0;flex:1;overflow-y:auto;overflow-x:hidden;padding:0 12px 26px;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#cfd5dd transparent;scroll-behavior:auto!important}.rail-scroll:focus{outline-offset:-3px}.rail-home{display:flex;align-items:center;gap:9px;padding:8px 10px;margin:1px 0;color:#4c5662;text-decoration:none;border-radius:4px;border-left:2px solid transparent;font-size:13px;min-height:34px}.rail-home .studio-icon{height:16px;width:16px}.rail-home.active{background:#eaf0fa;color:#1f4f9e;border-left-color:var(--accent);font-weight:600}.rail-group{margin:17px 0 0;border:0;padding:0}.rail-group>summary{list-style:none;display:flex;align-items:center;gap:8px;padding:7px 10px;min-height:34px;cursor:pointer;font-size:12px;font-weight:650;color:#2c3540}.rail-group>summary::-webkit-details-marker{display:none}.rail-group>summary:before{content:'';display:block;width:6px;height:6px;border-right:1.4px solid #747f8c;border-bottom:1.4px solid #747f8c;transform:rotate(-45deg);margin-right:3px;flex:none}.rail-group[open]>summary:before{transform:rotate(45deg);margin-top:-3px}.rail-group .group-count{font-variant-numeric:tabular-nums;font-weight:400;font-size:11px;color:#717b88;margin-left:auto}.rail-section-name{padding:14px 11px 5px;font-size:11px;line-height:1.7;color:#687381;font-weight:500}.rail-links a{display:flex;gap:9px;align-items:baseline;border-left:2px solid transparent;border-radius:4px;padding:7px 9px 7px 11px;margin:1px 0;text-decoration:none;line-height:1.65;color:#4c5662;font-size:13px;min-height:35px}.rail-links a:hover,.rail-home:hover{background:#eef1f5;color:#22272e}.rail-links a.active{border-left-color:var(--accent);color:#1f4f9e;background:#eaf0fa;font-weight:600}.rail-code{flex:none;width:28px;font-variant-numeric:tabular-nums;font-size:11px;line-height:1.8;color:#677380;font-weight:400}.rail-links a.active .rail-code{color:#2558b5}.rail-name{min-width:0;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}.rail-foot{flex:none;display:flex;align-items:center;justify-content:space-between;gap:7px;border-top:1px solid var(--line);padding:11px 19px;color:var(--muted);font-size:11px;margin:0;background:#f7f8fa}.rail-foot a{text-decoration:none;color:var(--muted)}.nav-backdrop{display:none;position:fixed;inset:var(--bar) 0 0;z-index:54;width:100%;padding:0;border:0;background:#15202c66;border-radius:0}
/* Long-form technical typography. */
.reading-layout{display:grid;grid-template-columns:minmax(0,1fr) 180px;gap:36px;margin-left:var(--rail);padding:0 34px 0 48px;max-width:1500px}.reading-main{min-width:0;padding:34px 0 76px}.article{max-width:var(--measure);min-width:0;margin:0 auto;overflow-wrap:break-word;color:var(--ink)}.article>.breadcrumb{margin:0 0 23px;font-size:12px;line-height:1.5;color:#66717e}.breadcrumb a{color:#657182;text-decoration:none}.article>.eyebrow,.article>.term-guide{display:none}.article h1{font-family:var(--ui);font-size:30px;font-weight:650;line-height:1.5;letter-spacing:-.015em;text-wrap:pretty;margin:0 0 20px}.article h2{font-family:var(--ui);font-size:23px;font-weight:650;line-height:1.65;letter-spacing:0;border:0;padding:0;margin:46px 0 18px;text-wrap:pretty}.article h3{font-size:19px;font-weight:650;line-height:1.7;margin:27px 0 12px}.article h4{font-size:17px;line-height:1.8;font-weight:650;margin:23px 0 10px}.article p{margin:17px 0;color:var(--ink);font-size:1em}.article .lead{font-size:16px;line-height:1.95;color:#59636e;margin:0 0 23px}.article li{margin:9px 0}.article ul,.article ol{padding-left:1.45em}.article strong{font-weight:650}.article .small,.article .source-note,.article .end-note,.article .source-raw{font-size:13px;line-height:1.85;color:var(--muted)}.article .source-note{border-top:1px solid var(--line);padding-top:18px;margin-top:30px}.article .term{color:inherit;text-decoration:underline dotted #9da7b3;text-underline-offset:4px}.source-ref{font-size:12px;color:#4b67a1;text-decoration:none}.reading-meta{display:flex;gap:16px;flex-wrap:wrap;align-items:center;font-size:12px;color:#68727f;margin:-6px 0 21px}.reading-meta .meta-kind{background:none;border:0;padding:0;color:#59636e}.reading-meta span+span:before{content:'·';margin-right:16px;color:#a0a7af}.chapter-outline{position:sticky;align-self:start;top:calc(var(--bar) + 32px);height:calc(100dvh - var(--bar) - 60px);overflow-y:auto;overflow-x:hidden;scrollbar-width:thin;scrollbar-color:#d1d7df transparent;padding:0 0 16px;font-size:12px}.outline-label{font-size:12px;font-weight:600;color:#424c59;margin:0 0 13px}.chapter-outline .toc{border:0;background:none;padding:0;margin:0;border-radius:0}.chapter-outline .toc-title{display:none}.chapter-outline .toc a{display:block;padding:6px 0 6px 12px;border-left:1px solid #e0e5eb;color:#67727f;font-size:12px;text-decoration:none;line-height:1.75;overflow-wrap:anywhere}.chapter-outline .toc a.sub{padding-left:19px;font-size:12px}.chapter-outline .toc a:hover,.chapter-outline .toc a.is-current{color:var(--accent);border-left:2px solid var(--accent);padding-left:11px}.chapter-outline .toc a.sub.is-current{padding-left:18px}.outline-tools{display:flex;flex-direction:column;gap:4px;margin-top:20px;padding-top:17px;border-top:1px solid var(--line)}.outline-tools button{text-align:left;background:none;border:0;font-size:12px;color:var(--muted);padding:5px 0}.mobile-outline{display:none}
/* Semantic blocks: not a stack of tinted cards. */
.panel,.preq,.notice,blockquote,.vb-bridge{border:0;border-left:2px solid #c8d1dc;border-radius:0;background:#f7f8fa;padding:17px 20px;margin:24px 0}.panel h2,.panel h3,.preq h3,.vb-bridge h2{font-size:17px;line-height:1.8;margin:0 0 8px;border:0}.panel p:last-child{margin-bottom:0}.preq{font-size:14px;line-height:1.9}.preq .label,.concept-note-label{font-size:12px;color:#55616f;font-weight:600;letter-spacing:0;margin-bottom:9px}.pillrow{display:flex;gap:7px 13px;flex-wrap:wrap;margin:8px 0}.pill{font-size:12px;line-height:1.8;border:0;border-radius:0;background:none;padding:1px 0;color:#365580;text-decoration:underline;text-decoration-color:#c5cfdc;text-underline-offset:3px}.concept-note{margin:24px 0;padding:2px 0 2px 17px;border:0;border-left:2px solid #d5dce5;background:transparent;border-radius:0}.concept-note dl{margin:0}.concept-note dt{font-size:15px;font-weight:600;margin:8px 0 4px}.concept-note dd{margin:0;color:#46525f;font-size:15px;line-height:1.95}.concept-micro{display:block;margin-top:7px;color:#596675;font-size:14px}.article blockquote,.article blockquote p{font-size:16px;color:#465260}.article code{font-family:var(--mono);font-size:.85em;line-height:inherit;padding:.13em .3em;border:1px solid #e9ecf0;border-radius:3px;background:#f5f7f9;color:#29374a;overflow-wrap:anywhere}.article pre{position:relative;border:1px solid #e3e7ec;background:#f7f8fa;color:#253247;border-radius:5px;padding:21px 22px;font-size:14px;line-height:1.85;max-width:100%;overflow:auto;margin:23px 0}.article pre code{padding:0;border:0;background:none;color:inherit;white-space:pre;overflow-wrap:normal;font-size:inherit}.copy-code{position:absolute;right:9px;top:7px;padding:4px 8px;background:#fff;font-size:11px;border:1px solid #dce2e9;opacity:0}.article pre:hover .copy-code,.copy-code:focus-visible{opacity:1}.table-wrap{border:1px solid #e0e5eb;border-radius:4px;overflow-x:auto;max-width:100%;margin:23px 0}table{border-collapse:collapse;background:#fff;color:var(--ink);font-size:15px;line-height:1.8;width:100%}th{background:#f8f9fb;color:#34404d;font-size:13px;text-align:left;font-weight:600}th,td{padding:12px 14px;border-bottom:1px solid #e6e9ef;vertical-align:top}tr:last-child td{border-bottom:0}.article .table-wrap th,.article .table-wrap td{min-width:60px}.worked-example{border:1px solid #dbe2ea;border-radius:5px;background:#fff;padding:23px;margin:31px 0;scroll-margin-top:80px}.worked-label{font-size:12px;font-weight:600;letter-spacing:0;color:#5c6979;margin:0 0 9px}.worked-example h3{font-size:21px;line-height:1.6;margin:4px 0 15px;text-wrap:pretty}.worked-example p{font-size:16px;line-height:1.95;margin:14px 0}.worked-setup{background:#f6f8fa;border:0;border-radius:3px;padding:13px 16px}.worked-table{margin:19px 0}.worked-table table{font-size:14px;line-height:1.85}.worked-takeaway strong{color:var(--ink)}.worked-boundary{color:#4f5c6c;background:#f8f9fb;border-radius:3px;padding:12px 15px}.worked-example .worked-citation{font-size:12px;color:#67717e}.step-no{font-size:11px;color:#6e7783;font-weight:500}.quiz{background:#fff;border:1px solid #e1e6ed;border-radius:5px;padding:20px;margin:22px 0}.quiz b{color:#516172;font-size:12px;letter-spacing:0}.quiz p{font-size:16px}.quiz-answer{font-size:15px;margin:13px 0 0}.quiz-answer summary{display:list-item;list-style-position:inside;cursor:pointer;max-width:max-content;padding:7px 11px;border:1px solid #d8e0eb;border-radius:4px;background:#fff;color:#2558b5;font-size:13px;font-weight:500}.quiz-answer[open] summary,.quiz-answer summary:hover{background:#f4f7fc}.quiz .answer{background:#f7f9fc;border:0;border-left:2px solid #9bb2d3;font-size:15px;padding:13px 17px;margin-top:14px}.quiz-answer .when-open{display:none}.quiz-answer[open] .when-open{display:inline}.quiz-answer[open] .when-closed{display:none}.pager{display:flex;justify-content:space-between;gap:15px;margin:38px 0 15px;padding-top:22px;border-top:1px solid var(--line)}.pager a{font-size:13px;text-decoration:none;padding:13px 16px;border:1px solid #dfe5ed;border-radius:4px;flex:1;color:#344456;line-height:1.6}.pager a:last-child{text-align:right}.pager a:hover{border-color:#aabbcf;background:#f8fafc}.progress-row{display:flex;align-items:center;gap:14px;margin:20px 0}.progress-row button{font-size:12px}.read-status{font-size:12px;color:#677482}.footer{margin-top:42px;padding-top:20px;border-top:1px solid var(--line);font-size:12px;color:#6b7582;line-height:1.9}
/* Original simulation data is unchanged; only its surrounding UI is restyled. */
.vb-block{border:1px solid #dce3eb;border-radius:6px;background:white;overflow:hidden;margin:29px 0;box-shadow:none}.vb-intro{background:#f7f9fb;padding:25px 25px 17px;border-bottom:1px solid #e2e7ee}.vb-kicker{font-size:12px;letter-spacing:0;color:#5d6b7d;font-weight:600}.vb-intro h2,.vb-intro h3{font-family:var(--ui);font-size:23px;line-height:1.55;margin:12px 0 17px;letter-spacing:0;text-wrap:pretty}.vb-intro p{font-size:16px;line-height:1.95}.vb-terms{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 22px;margin:22px 0 0;border-top:1px solid #dfe5ed;padding:15px 0 0}.vb-term{border:0;padding:0;background:none;font-size:14px;color:#4b5969}.vb-term strong{color:#34475d}.vb-scenario{background:#fff;padding:16px 25px;border:0;border-bottom:1px solid #e7ebf0;font-size:15px}.vb-player{background:#fff;padding:23px 22px;border:0;min-width:0}.vb-player h3{font-size:18px;line-height:1.65;margin:0 0 17px}.vb-player h3 a{color:inherit}.vb-canvas{background:#fff;border-radius:3px;max-width:100%;overflow:auto}.vb-canvas svg{max-width:100%;height:auto;display:block}.vb-controls{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin:16px 0 12px}.vb-controls button,.vb-controls select{font-family:var(--ui);font-size:12px;line-height:1.5;min-height:34px;padding:7px 10px;border:1px solid #d5deea;background:white;border-radius:4px;color:#314056}.vb-controls button:hover{background:#f2f6fb}.vb-controls button[aria-pressed=true]{background:#eaf0fa;border-color:#a8bcda;color:#1e4d94}.vb-speed{font-size:12px;color:#5e6d7e}.vb-caption{padding:14px 17px;background:#f5f8fc;border:1px solid #e3e9f2;border-radius:4px;font-size:16px;line-height:1.95;color:#27384b;margin:15px 0}.vb-range-row{display:flex;align-items:center;gap:10px}.vb-range-row label,.vb-status{font-size:12px;color:#637080}.vb-range-row input{accent-color:var(--accent);min-width:60px}.vb-state{font-family:var(--mono);font-size:13px;white-space:pre-wrap;color:#354257;background:#f7f8fa;border:1px solid #e6eaf0;border-radius:4px;padding:15px;overflow-wrap:anywhere}.vb-equation{font-family:var(--mono);background:#f6f8fb;border:0;color:#2a3d59;font-size:14px;border-radius:4px;padding:14px 17px;overflow:auto}.vb-transcript{padding:8px 24px 21px}.vb-transcript h2{font-size:21px}.vb-transcript p{font-size:16px}.vb-transcript li{font-size:15px}.vb-reasons{background:#f7f9fc;padding:19px 24px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.vb-reason{background:transparent;border:0;box-shadow:none}.vb-related{border-top:1px solid #e2e8f0;background:#fff;padding:14px 24px;font-size:13px}.vb-dialog{padding:24px;border:1px solid #dbe1e9;border-radius:7px;width:min(1250px,96vw);max-height:95dvh;overflow:auto;box-shadow:0 14px 48px #18233022}.vb-dialog::backdrop{background:#15223166}.vb-dialog header{display:flex;align-items:center;justify-content:space-between;gap:20px}.vb-dialog header h2{font-size:21px}.vb-gallery{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.vb-gallery .card{border:1px solid #e1e7ee;background:#fff;border-radius:5px;padding:22px}.vb-gallery .card h3{font-size:18px}.vb-bridge{font-size:15px}.validation-scope{background:#f9fafb;border-left:2px solid #b2becd;padding:18px 22px}.lab{border:1px solid #dfe5ed;background:white;border-radius:5px;padding:22px;margin:25px 0}.lab h2{font-size:22px}.lab-controls input,.lab-controls select{border:1px solid #d7dee8;border-radius:4px;font-size:14px;background:white}.lab-output{background:#f5f8fc;border:1px solid #e0e7f0;color:#243b58;border-radius:4px;padding:17px}.chosen td,.allow{background:#edf4fc}.deny{background:#f9f0ec;color:#784537}.route-grid,.cards{gap:15px}.route-card,.card{border:1px solid #e2e6ed;background:#fff;border-radius:5px;padding:21px;box-shadow:none}.route-card{border-left:2px solid #9daec3}.route-card .num,.card .num{color:#667689;font-size:12px;font-weight:400;letter-spacing:0}.route-card h3,.card h3{font-size:19px}.route-card p,.card p{font-size:14px}.example-nav,.va-sticky-strip{background:#f6f8fb;padding:13px 17px;font-size:13px;border:1px solid #e3e8ef;border-radius:4px;margin:20px 0}.toc{border:1px solid #e4e8ee;background:#f8fafc;border-radius:4px;padding:19px 22px}.toc a{font-size:14px}.toc-title{font-size:12px;color:#657182}
/* Home: a documentation overview, not a landing page. */
.home-main{margin-left:var(--rail);padding:34px 42px 58px;max-width:none}.home-article{max-width:1110px;margin:0 auto;min-width:0}.home-breadcrumb{font-size:12px;color:#687380;line-height:1.5;margin:0 0 22px}.home-breadcrumb span{padding:0 8px;color:#a0a8b3}.home-title h1{font-family:var(--ui);font-size:34px;line-height:1.35;letter-spacing:-.02em;font-weight:650;margin:0 0 13px}.home-title p{max-width:860px;font-size:16px;line-height:1.95;color:#566372;margin:0 0 17px}.home-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:22px 0 28px}.button{display:inline-flex;align-items:center;gap:14px;padding:9px 15px;font-size:13px;font-weight:550;text-decoration:none;border:1px solid #293546;background:#293546;color:#fff;border-radius:4px;line-height:1.65;min-height:38px}.button:hover{background:#1b2636;color:#fff}.button.secondary{background:#fff;color:#38475c;border-color:#d8dfe9}.button.secondary:hover{background:#f5f7fb}.text-link{font-size:13px;color:#4b5c74;text-decoration:none}.text-link:hover{color:var(--accent)}.home-submeta{font-size:12px;color:#6d7886;line-height:1.6;margin:16px 0}.home-grid{display:grid;grid-template-columns:minmax(0,1fr) 242px;gap:34px;align-items:start}.home-section{margin:0;padding:0}.home-section h2{font-size:20px;font-weight:650;line-height:1.6;margin:0 0 8px;letter-spacing:0;font-family:var(--ui)}.home-section .section-note{font-size:13px;color:#687483;margin:0 0 17px;line-height:1.8}.curriculum{display:flex;flex-direction:column;border-top:1px solid #e3e7ee}.curriculum-row{display:grid;grid-template-columns:78px minmax(0,1fr) 32px;gap:14px;align-items:center;text-decoration:none;color:#283749;padding:15px 4px;border-bottom:1px solid #e5e9ef;line-height:1.6}.curriculum-row:hover{background:#f7f9fc}.curriculum-range{font-size:12px;font-variant-numeric:tabular-nums;color:#626f80}.curriculum-title{font-size:15px;font-weight:600;display:block}.curriculum-desc{display:block;font-size:12px;font-weight:400;color:#687483;margin-top:3px}.curriculum-arrow{font-size:17px;color:#8390a1;text-align:right}.home-resources{padding:18px 20px;background:#f7f9fc;border:1px solid #e2e8ef;border-radius:5px}.home-resources h2{font-size:14px;margin:0 0 12px;font-weight:650}.resource-link{display:block;padding:10px 0;text-decoration:none;color:#3b4d64;font-size:13px;line-height:1.6}.resource-link+.resource-link{border-top:1px solid #e2e7ee}.resource-link span{display:block;color:#6c7a8b;font-size:12px;margin-top:4px}.resource-note{font-size:12px;color:#6a7583;line-height:1.9;margin-top:20px;padding-top:16px;border-top:1px solid #dde4ed}.topic-section{margin-top:38px;padding-top:28px;border-top:1px solid #e1e6ed}.topic-register{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 33px}.topic-entry{display:grid;grid-template-columns:1fr auto;gap:14px;padding:17px 0;border-bottom:1px solid #e6eaf0;min-width:0}.topic-entry h3{font-size:15px;line-height:1.8;font-weight:600;margin:0 0 5px;color:#27384d}.topic-entry p{font-size:12px;color:#697687;line-height:1.9;margin:0}.topic-entry .num{display:none}.topic-entry .path{display:flex;flex-direction:column;gap:9px;align-self:center;font-size:12px;white-space:nowrap}.topic-entry .path a{color:#426593;text-decoration:none}.home-lab-wrap{margin-top:38px;padding-top:28px;border-top:1px solid #e1e6ed;display:grid;grid-template-columns:240px 1fr;gap:30px}.home-lab-wrap h2{font-family:var(--ui);font-size:20px;margin:0 0 12px}.home-lab-wrap>div>p{font-size:14px;color:#627184}.cover-lab{background:#f8fafc;border:1px solid #dee5ee;border-radius:5px;color:var(--ink);padding:20px;min-width:0}.cover-lab .lab-head{display:flex;justify-content:space-between;gap:15px;font-size:12px}.cover-lab .lab-head strong{font-size:13px;font-weight:600}.cover-lab .lab-head a{font-size:12px;color:#536e96;text-decoration:none}.cover-diagram{display:block;width:100%;height:auto;max-height:265px;margin:12px 0 10px;min-height:0}.cover-diagram-mobile{display:none}.cover-diagram .lab-node rect{fill:#f1f4f9!important;stroke:#c6d2e2!important}.cover-diagram .lab-node text{fill:#40536e!important}.cover-diagram .lab-node.active rect{fill:#e3edfb!important;stroke:#6c94cc!important}.cover-diagram .lab-node.active text{fill:#214e8b!important}.cover-diagram path{stroke:#9dadc1}.cover-diagram text:not(.lab-node text){fill:#61738d}.lab-caption{font-size:14px!important;line-height:1.9;min-height:54px;color:#46586f;margin:13px 0 15px}.cover-step-nav{display:flex;gap:5px}.cover-step-nav button{flex:1;min-height:34px;font-size:12px;padding:6px 8px;background:white;border:1px solid #d9e1ec;border-radius:3px;color:#5b6e85}.cover-step-nav button[aria-selected=true]{color:#1f4d90;border-color:#9fb7d7;background:#edf3fc}.cover-lab .lab-foot{display:flex;justify-content:space-between;gap:12px;font-size:11px;color:#626d7c;margin-top:13px}.home-footer{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;margin-top:35px;padding-top:20px;border-top:1px solid #e1e6ed;color:#687483;font-size:12px;line-height:1.9}.home-footer strong{font-size:13px;color:#46515e}.home-footer nav{display:flex;flex-wrap:wrap;gap:18px}.home-footer a{text-decoration:none;color:#596b84}.shelf{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 24px}.shelf .card{border:0;border-bottom:1px solid #e3e8ef;border-radius:0;padding:17px 0}.shelf .card h3{font-size:17px}.shelf .card p{font-size:14px}
/* Search, dialogs and local reading controls. */
.studio-dialog{border:1px solid #d4dce7;border-radius:8px;padding:0;background:#fff;color:#26364c;max-width:calc(100vw - 30px);width:650px;max-height:82dvh;box-shadow:0 12px 45px #0f20332a;overflow:hidden}.studio-dialog::backdrop{background:#111f344a}.command-head{display:flex;gap:12px;align-items:center;padding:17px 18px;border-bottom:1px solid #e1e7ee}.command-head input{border:0;outline:0;min-width:0;flex:1;font-size:16px;padding:6px;background:transparent;color:#263b53}.command-hint{font-size:12px;color:#677489;margin:11px 18px}.command-results{overflow-y:auto;max-height:52dvh;padding:0 7px 9px}.command-result{display:block;padding:12px 14px;text-decoration:none;color:#2d415b;border:1px solid transparent;border-radius:4px;margin:2px 0}.command-result:hover,.command-result.is-selected{background:#f1f5fb;border-color:#e0e8f4}.command-result small{display:block;font-size:11px;color:#6e7e93;margin-bottom:3px}.command-result strong{display:block;font-size:14px;font-weight:600;line-height:1.8}.command-result span{display:block;font-size:12px;line-height:1.8;color:#6a7789;margin-top:4px}.command-foot{display:flex;justify-content:space-between;gap:12px;padding:11px 18px;border-top:1px solid #e0e6ef;background:#f9fafc;font-size:11px;color:#626d7c}.command-empty{font-size:14px;padding:20px;color:#67788b}.settings-dialog{width:420px;padding:22px}.settings-header{display:flex;justify-content:space-between;align-items:center;gap:10px}.settings-header h2{font-size:19px;line-height:1.6;margin:0}.setting-row{padding:20px 0;border-bottom:1px solid #e3e8ef}.setting-row>label{display:block;font-size:13px;font-weight:600;margin-bottom:11px}.setting-picks{display:flex;flex-wrap:wrap;gap:7px}.setting-picks button{font-size:12px;padding:8px 12px}.setting-picks button[aria-pressed=true]{background:#edf3fc;border-color:#aabfdd;color:#2457a6}.setting-info{font-size:12px;color:#6e7d91;margin:18px 0 0}.toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%,12px);padding:10px 17px;border-radius:5px;background:#243247;color:white;font-size:13px;z-index:160;opacity:0;pointer-events:none;transition:opacity .16s,transform .16s}.toast.show{opacity:1;transform:translate(-50%,0)}.back-top{position:fixed;right:22px;bottom:22px;border:1px solid #d7e0ec;background:white;color:#4e627d;z-index:44;opacity:0;pointer-events:none}.back-top.visible{opacity:1;pointer-events:auto}.search-box{display:flex;gap:9px;margin:25px 0}.search-box input{border:1px solid #cbd6e4;border-radius:4px;font-size:16px;padding:11px 14px;background:white;color:#2b3d54;min-width:0;flex:1}.search-result{padding:20px 0;border-bottom:1px solid #e3e8ef}.search-result h3{font-size:19px;margin:5px 0}.search-result p{font-size:14px;color:#67778c}.badge{font-size:11px;background:#f0f4fa;color:#576d88;padding:3px 6px;border-radius:3px}
.complete-main{margin-left:var(--rail);padding:34px 48px 70px;min-width:0}.complete-main>.article{max-width:960px}.complete-main .standalone-section{max-width:var(--measure);margin:50px auto 0;padding:38px 0 0;border-top:1px solid #d8e0ea;scroll-margin-top:70px}.complete-main .standalone-section>h1{font-size:30px}.complete-main .standalone-section# index{max-width:100%}.complete-main #index{max-width:none;border-top:0;margin-top:0;padding-top:0}.complete-main #index .home-main{padding:0;margin:0}.complete-main #index .home-title h1{font-size:33px}.complete-main .book-full-toc{max-height:360px;overflow:auto}.is-focused .book-rail{transform:translateX(-100%)}.is-focused .reading-layout{display:block;margin-left:0;padding:0 30px}.is-focused .chapter-outline{display:none}.is-focused .menu-trigger{display:inline-flex}.is-focused .complete-main{margin-left:0}.is-focused .page-progress{left:0}.nav-open .book-rail{transform:translateX(0)}
:root[data-paper=white]{--paper:#fff;--surface:#f7f8fa;--soft:#f5f7f9}:root[data-paper=sage]{--paper:#f7f8fa;--surface:#fff;--soft:#eef1f5}:root[data-measure=narrow]{--measure:680px}:root[data-measure=wide]{--measure:900px}
@media(min-width:1680px){.reading-layout{padding-left:64px;padding-right:46px;gap:45px;max-width:1600px}.home-main{padding-left:55px;padding-right:55px}}
@media(max-width:1279px){.reading-layout{display:block;padding:0 42px}.chapter-outline{display:none}.mobile-outline{display:block;margin:20px 0;border:1px solid #dfe5ee;border-radius:4px;background:#fff}.mobile-outline>summary{font-size:13px;color:#50647e;padding:10px 14px;cursor:pointer}.mobile-outline .toc{padding:10px 17px;background:white;border:0;margin:0}.mobile-outline .toc-title{display:none}.home-main{padding-left:32px;padding-right:32px}.home-grid{grid-template-columns:1fr 220px;gap:25px}.site-links{gap:20px;margin-left:15px}.brand-detail{display:none}}
@media(max-width:1023px){:root{--bar:56px}.book-rail{transform:translateX(-100%);width:min(320px,88vw);transition:transform .15s ease}.rail-close,.menu-trigger{display:inline-flex}.nav-open .nav-backdrop{display:block}.nav-open{overflow:hidden}.reading-layout,.home-main,.complete-main{margin-left:0}.reading-layout{padding:0 35px}.site-header{padding:0 18px;gap:12px}.site-links{margin-left:18px;gap:23px}.search-trigger{width:185px}.page-progress{left:0}.home-main{padding:30px 35px 48px}.home-grid{grid-template-columns:1fr 240px}.home-article{max-width:940px}.rail-links a{min-height:39px;padding-top:9px;padding-bottom:9px}.rail-group>summary{min-height:39px}.rail-home{min-height:39px}.rail-locate{min-height:36px;font-size:12px}}
@media(max-width:680px){:root{--font:17px}.site-header{padding:0 12px;gap:8px}.site-brand{font-size:15px;gap:7px}.site-brand .book-mark{width:21px;height:21px}.site-links{display:none}.site-actions{gap:1px}.search-trigger{height:38px;min-width:38px;width:38px;padding:9px;border-color:transparent;background:none;justify-content:center}.search-trigger span,.search-trigger kbd{display:none}.search-trigger .studio-icon{width:18px;height:18px}.icon-button{height:38px;min-width:38px}.focus-trigger{display:none}.reading-layout{padding:0 20px}.reading-main{padding:25px 0 50px}.article>.breadcrumb{font-size:12px;margin-bottom:18px}.article h1{font-size:25px;line-height:1.55;margin-bottom:19px}.article h2{font-size:22px;line-height:1.7;margin-top:37px;margin-bottom:16px}.article h3{font-size:18px}.article .lead{font-size:16px}.reading-meta{font-size:11px;gap:10px}.reading-meta span+span:before{margin-right:10px}.panel,.preq,.notice,blockquote{padding:15px 17px;margin:22px 0}.pill{font-size:12px}.concept-note{padding-left:14px}.article pre{padding:17px 15px;font-size:13px;line-height:1.85}.copy-code{opacity:1;position:sticky;float:right;right:0;left:100%;top:0;margin-bottom:7px;padding:4px 7px}.table-wrap{border-radius:3px}table{font-size:14px}th,td{padding:10px 11px}.worked-example{padding:19px 16px;margin:26px 0}.worked-example h3{font-size:20px}.worked-table{border:0;border-radius:0;overflow:visible}.worked-table table,.worked-table tbody,.worked-table tr,.worked-table td{display:block;width:100%;min-width:0;table-layout:auto}.worked-table thead{display:none}.worked-table tr{border:1px solid #e0e6ee;border-radius:4px;margin:12px 0;overflow:hidden}.worked-table td{padding:10px 12px;border:0}.worked-table td:first-child{background:#f4f7fb;font-weight:600}.worked-table td:nth-child(2):before{content:'内部动作';display:block;font-size:11px;color:#61728b}.worked-table td:nth-child(3):before{content:'结果 / 状态';display:block;font-size:11px;color:#61728b}.step-no{display:inline;margin-right:7px}.quiz{padding:18px 16px}.pager{gap:10px}.pager a{font-size:12px;padding:11px 10px}.progress-row{flex-wrap:wrap}.vb-intro{padding:21px 17px 16px}.vb-intro h2,.vb-intro h3{font-size:22px;line-height:1.6}.vb-terms{grid-template-columns:1fr;gap:13px}.vb-scenario{padding:15px 17px;font-size:14px}.vb-player{padding:19px 14px}.vb-player h3{font-size:17px}.vb-controls{gap:6px}.vb-controls button,.vb-controls select{min-height:40px;padding:8px 11px;font-size:12px}.vb-range-row{flex-wrap:wrap}.vb-range-row input{min-height:30px}.vb-caption{padding:14px 15px;font-size:16px}.vb-equation{font-size:13px;padding:13px}.vb-state{font-size:12px}.vb-transcript{padding:8px 17px 20px}.vb-reasons{padding:17px;grid-template-columns:1fr}.vb-related{padding:12px 17px;font-size:12px}.vb-gallery{grid-template-columns:1fr}.vb-dialog{padding:15px;max-height:94dvh}.vb-dialog h2{font-size:17px}.vb-dialog header button{font-size:12px;min-width:68px}.home-main{padding:25px 20px 40px}.home-breadcrumb{margin-bottom:19px}.home-title h1{font-size:29px;line-height:1.4}.home-title p{font-size:15px;line-height:1.9}.home-actions{gap:9px;margin:20px 0 26px}.button{min-height:41px;font-size:13px}.home-grid{display:flex;flex-direction:column;gap:25px}.home-section{width:100%}.home-section h2{font-size:20px}.home-section .section-note{font-size:13px}.curriculum-row{grid-template-columns:70px 1fr 20px;gap:10px;padding:15px 0}.curriculum-title{font-size:14px}.curriculum-range{font-size:11px}.curriculum-desc{font-size:12px;margin-top:3px}.home-resources{width:100%;padding:17px 19px}.home-resources .resource-links{display:grid;grid-template-columns:repeat(2,1fr);gap:8px 18px}.resource-link{font-size:13px;padding:8px 0}.resource-link+.resource-link{border:0}.resource-link span{font-size:12px}.resource-note{font-size:12px;margin-top:12px;padding-top:13px}.topic-section{margin-top:31px;padding-top:23px}.topic-register{grid-template-columns:1fr}.topic-entry{padding:17px 0}.topic-entry h3{font-size:15px}.topic-entry .path{gap:10px;font-size:12px}.home-lab-wrap{display:block;margin-top:30px;padding-top:23px}.home-lab-wrap>div{margin-bottom:18px}.cover-lab{padding:17px}.cover-diagram-desktop{display:none}.cover-diagram-mobile{display:block;min-height:220px;max-height:290px}.cover-step-nav{gap:4px}.cover-step-nav button{min-height:40px;font-size:12px;padding:7px 8px}.cover-lab .lab-caption{font-size:14px!important;min-height:79px}.home-footer{display:block;font-size:12px}.home-footer nav{margin-top:15px;gap:21px}.shelf{grid-template-columns:1fr}.command-head{padding:14px 15px}.command-results{max-height:57dvh}.command-foot{padding:10px 15px;font-size:10px}.studio-dialog{width:calc(100vw - 24px);max-height:90dvh}.settings-dialog{padding:20px}.complete-main{padding:24px 20px 60px}.complete-main .standalone-section>h1{font-size:25px}.complete-main #index .home-title h1{font-size:29px}.back-top{right:15px;bottom:18px}.is-focused .reading-layout{padding:0 20px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}}
@media print{.site-header,.book-rail,.chapter-outline,.mobile-outline,.nav-backdrop,.page-progress,.back-top,.studio-dialog,.toast,.copy-code,.home-actions,.cover-step-nav{display:none!important}.reading-layout,.reading-main,.home-main,.complete-main{display:block;margin:0;padding:0}.article{max-width:none;color:#000;font-size:11pt}.article h1{font-size:23pt}.article h2{font-size:17pt;break-after:avoid}.article h3{font-size:14pt;break-after:avoid}.complete-main .standalone-section{break-before:page;max-width:none}.quiz-answer:not([open]) .answer{display:none}.vb-block,.worked-example,.panel{border:1px solid #bbb;background:white}.article .table-wrap{overflow:visible}.home-grid{display:block}.home-resources{margin-top:20px}.topic-register{display:block}.home-lab-wrap{display:block}}
/* Final type and rhythm pass on the overview. */
.home-section h2,.home-resources h2,.home-lab-wrap h2{border:0;padding:0}
.home-title p{max-width:850px}
.site-links a.section-active{border-bottom-color:#22272e;color:#22272e}

.is-focused.nav-open .nav-backdrop{display:block}.is-focused.nav-open{overflow:hidden}
/* The legacy mobile rule used display:block on .sidebar. Keep our scroll ownership in drawers too. */
body .book-rail.sidebar,body.nav-open .book-rail.sidebar{display:flex}
.complete-main .standalone-section{scroll-margin-top:0}

@media(max-width:1023px){.rail-links a,.rail-home{min-height:40px}}
@media(max-width:680px){.site-header .icon-button,.site-header .search-trigger{height:40px;min-width:40px}}

/* 2026-10 adaptive-width correction.
   The previous 760px article + capped 1600px workspace formed a narrow strip on wide screens.
   Keep the two navigation rails independently scrollable, give the document a fluid reading area,
   and preserve explicit compact / comfortable / wide reader choices. */
:root {
  --measure: clamp(980px, 66vw, 1880px);
  --page-side: clamp(24px, 2.4vw, 60px);
}
:root[data-measure="comfortable"] { --measure: clamp(980px, 66vw, 1880px); }
:root[data-measure="narrow"] { --measure: 760px; }
:root[data-measure="wide"] { --measure: 100%; }

/* Do not cap the whole reading workspace at 1500/1600px. */
.reading-layout {
  width: calc(100% - var(--rail));
  max-width: none;
  margin-left: var(--rail);
  padding-left: var(--page-side);
  padding-right: var(--page-side);
  grid-template-columns: minmax(0, 1fr) clamp(194px, 10vw, 230px);
  column-gap: clamp(26px, 2vw, 44px);
}
.reading-main { width: 100%; min-width: 0; }
.reading-main > .article {
  width: 100%;
  max-width: var(--measure);
  margin-inline: auto;
}

/* Reading the whole book must not re-introduce the narrow original width. */
.complete-main {
  padding-left: var(--page-side);
  padding-right: var(--page-side);
}
.complete-main > .article {
  width: 100%;
  max-width: min(100%, clamp(1000px, 76vw, 2000px));
  margin-inline: auto;
}
.complete-main .standalone-section {
  width: 100%;
  max-width: min(100%, var(--measure));
}
.complete-main #index,
.complete-main #index .home-article { max-width: 100%; }
.home-article { width: 100%; max-width: min(100%, clamp(1100px, 80vw, 1900px)); }

/* The right outline is useful on very wide screens; at medium desktop widths
   the in-page collapsible outline replaces it, reserving room for the text. */
@media (max-width: 1599px) {
  .reading-layout {
    display: block;
    width: calc(100% - var(--rail));
    max-width: none;
    padding-inline: clamp(24px, 3vw, 48px);
  }
  .chapter-outline { display: none; }
  .mobile-outline { display: block; margin: 20px 0; }
}

/* Left rail slides away at tablet widths. Do not leave a phantom rail offset. */
@media (max-width: 1023px) {
  .reading-layout {
    width: 100%;
    margin-left: 0;
    padding-inline: clamp(24px, 3.8vw, 42px);
  }
  .complete-main { margin-left: 0; }
}
@media (max-width: 680px) {
  .reading-layout { padding-inline: 20px; }
  .complete-main { padding: 24px 20px 60px; }
}

/* Full-screen focus mode still respects user width preferences and fills the viewport. */
.is-focused .reading-layout {
  display: block;
  width: 100%;
  max-width: none;
  margin-left: 0;
  padding-inline: clamp(20px, 3vw, 72px);
}
.is-focused .reading-main > .article { max-width: var(--measure); }
.is-focused .complete-main { margin-left: 0; }

/* Printed pages should use their entire print area rather than a desktop column cap. */
@media print {
  .reading-layout, .complete-main { width: 100%; max-width: none; margin: 0; padding: 0; }
  .reading-main > .article, .complete-main > .article,
  .complete-main .standalone-section { width: 100%; max-width: none; }
}

/* Grouped reference index (coverage.html): 206 items read as 17 modules, not
   one 206-row table that repeats the same chapter column on every line. */
.module-jump {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin: 18px 0 30px;
  padding: 14px 16px;
  background: #f7f8fa;
  border-left: 2px solid #c8d1dc;
}
.module-jump a {
  font-size: 12px;
  line-height: 1.5;
  padding: 5px 9px;
  min-height: 30px;
  display: inline-flex;
  align-items: center;
  color: #44515f;
  text-decoration: none;
  background: #fff;
  border: 1px solid #e1e6ec;
  border-radius: 4px;
}
.module-jump a:hover { border-color: #aabbcf; color: var(--accent); }

.index-module { margin: 34px 0 0; scroll-margin-top: calc(var(--bar) + 20px); }
.index-module h3 {
  display: flex;
  align-items: baseline;
  gap: 12px;
  font-size: 17px;
  margin: 0 0 10px;
  padding-bottom: 8px;
  border-bottom: 1px solid var(--line);
}
.index-module .module-count {
  margin-left: auto;
  font-size: 12px;
  font-weight: 400;
  color: var(--muted);
  font-variant-numeric: tabular-nums;
}
.index-module .table-wrap { border: 0; border-radius: 0; margin: 0 }
.index-table { font-size: 15px }
.index-table thead { display: none }
.index-table td { padding: 8px 0; border-bottom: 1px solid #eef1f5; vertical-align: baseline }
.index-table td:first-child { width: 56px; min-width: 56px }
.index-table a { text-decoration: none }
.index-table a:hover { text-decoration: underline }
.idx-no {
  font-variant-numeric: tabular-nums;
  font-size: 12px;
  color: var(--muted);
}
.index-module > .small { margin: 12px 0 4px; font-size: 12px; color: var(--muted) }
.index-module .pillrow { margin: 0 0 6px }

@media (max-width: 680px) {
  .module-jump { padding: 12px; gap: 5px }
  .index-table { font-size: 14px }
  .index-table td:first-child { width: 46px; min-width: 46px }
}
@media print {
  .module-jump { display: none }
  .index-module { break-inside: avoid }
}
