:root{--paper:#fff;--paper-deep:#f6f6f4;--sidebar-paper:#f3f3f1;--ink:#252725;--muted:#666b67;--faint:#929692;--line:#ddddda;--line-dark:#c7c9c6;--green:#356854;--green-deep:#2b5948;--green-pale:#f5f6f4;--blue-pale:#f5f6f4;--ochre-pale:#f5f6f4;--red-pale:#f5f6f4;--code:#f4f4f2;--code-ink:#2d302e;--sidebar:304px;--topbar:62px;--font-text:Georgia, "Times New Roman", serif;--font-ui:Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-code:"SFMono-Regular", Consolas, "Liberation Mono", monospace}*{box-sizing:border-box}html{scroll-behavior:smooth;background:var(--paper)}body{color:var(--ink);background:var(--paper);font-family:var(--font-text);margin:0}a{color:inherit;text-decoration:none}button,input{font:inherit}::selection{background:#cfe3d8}.book-app{min-height:100vh}.book-topbar{z-index:60;height:var(--topbar);color:var(--ink);border-bottom:1px solid var(--line);background:#fff;align-items:center;gap:18px;padding:0 24px;display:flex;position:fixed;inset:0 0 auto}.menu-button{cursor:pointer;background:0 0;border:0;width:34px;height:34px;padding:8px;display:none}.menu-button span{background:currentColor;height:1px;margin:4px 0;display:block}.brand{align-items:center;gap:11px;min-width:390px;display:flex}.brand-mark{border:1px solid var(--line-dark);width:31px;height:31px;color:var(--green);font:700 14px var(--font-text);place-items:center;display:grid}.brand strong{font:600 12px/1.2 var(--font-ui);letter-spacing:.005em;display:block}.brand small{color:var(--muted);font:400 9px var(--font-ui);letter-spacing:.04em;margin-top:2px;display:block}.topbar-links{align-items:center;gap:23px;margin-left:auto;display:flex}.topbar-links a{color:var(--muted);font:500 11px var(--font-ui)}.topbar-links a:hover{color:var(--ink)}.book-sidebar{z-index:50;top:var(--topbar);width:var(--sidebar);background:var(--sidebar-paper);border-right:1px solid var(--line);padding:27px 22px 30px;position:fixed;bottom:0;left:0;overflow-y:auto}.sidebar-title{font:600 18px var(--font-text);margin-bottom:20px}.sidebar-search{margin-bottom:28px}.sidebar-search label{color:var(--muted);font:600 9px var(--font-ui);text-transform:uppercase;letter-spacing:.09em;margin-bottom:7px;display:block}.sidebar-search input{border:1px solid var(--line-dark);width:100%;color:var(--ink);font:400 11px var(--font-ui);background:#ffffff8c;outline:0;padding:9px 10px}.sidebar-search input:focus{border-color:var(--green);box-shadow:0 0 0 2px #1f6b571a}.nav-part{margin:0 0 26px}.nav-part-heading{align-items:baseline;gap:8px;margin:0 3px 8px;display:flex}.nav-part-heading span{color:var(--green);font:700 8px var(--font-ui);text-transform:uppercase;letter-spacing:.1em}.nav-part-heading strong{color:#555d58;font:600 10px var(--font-ui)}.chapter-link{color:#555d58;font:400 11px/1.4 var(--font-ui);border-radius:3px;grid-template-columns:25px 1fr;align-items:start;gap:7px;margin:1px 0;padding:7px 8px;display:grid}.chapter-link:hover{color:var(--ink);background:#ffffff8c}.chapter-link.active{color:var(--green-deep);box-shadow:inset 2px 0 var(--green);background:0 0;font-weight:600}.chapter-number{color:var(--faint);font:500 9px/1.7 var(--font-code)}.chapter-link.active .chapter-number{color:var(--green)}.nav-lessons{border-left:1px solid var(--line-dark);margin:2px 0 10px 32px;padding-left:10px}.nav-lessons a{color:var(--muted);font:400 9px/1.45 var(--font-ui);grid-template-columns:25px 1fr;gap:5px;padding:5px 3px;display:grid}.nav-lessons a>span{color:var(--faint);font:500 8px/1.7 var(--font-code)}.nav-lessons a:hover,.nav-lessons a.active{color:var(--green-deep)}.nav-lessons a.active{font-weight:600}.sidebar-footer{border-top:1px solid var(--line);color:var(--faint);font:400 9px/1.6 var(--font-ui);margin-top:30px;padding:16px 4px 0}.sidebar-scrim{display:none}.book-main{min-height:100vh;margin-left:var(--sidebar);padding-top:var(--topbar)}.front-matter{max-width:920px;margin:0 auto;padding:0 54px 100px}.title-page{min-height:calc(100vh - var(--topbar));border-bottom:1px solid var(--line-dark);flex-direction:column;justify-content:center;padding:90px 0;display:flex}.edition-line,.front-label,.eyebrow,.subsection-label{color:var(--green);font:700 9px var(--font-ui);text-transform:uppercase;letter-spacing:.13em}.title-page h1{font:400 clamp(52px, 7.2vw, 92px)/.9 var(--font-text);letter-spacing:-.045em;margin:24px 0 28px}.title-page h1 em{color:var(--green);font-weight:400}.title-subtitle{font:600 18px/1.4 var(--font-ui);margin:0 0 20px}.title-deck{color:#4d5651;max-width:690px;font:400 21px/1.62 var(--font-text);margin:0}.begin-link{border-bottom:1px solid var(--green);color:var(--green-deep);font:600 12px var(--font-ui);align-self:flex-start;gap:28px;margin-top:42px;padding:13px 0 10px;display:flex}.begin-link span{color:var(--muted);font-weight:400}.preface,.audience-note,.reading-method{border-bottom:1px solid var(--line);grid-template-columns:130px minmax(0,1fr);gap:35px;padding:84px 0;display:grid}.front-prose h2,.contents-page>header h2{font:400 clamp(34px, 5vw, 54px)/1.08 var(--font-text);letter-spacing:-.025em;margin:-8px 0 28px}.front-prose p{color:#343b37;font:400 18px/1.78 var(--font-text);margin:0 0 23px}.front-prose p:last-child{margin-bottom:0}.front-prose ol{counter-reset:method;margin:0;padding:0;list-style:none}.front-prose ol li{counter-increment:method;border-top:1px solid var(--line);color:#343b37;font:400 17px/1.65 var(--font-text);margin:0;padding:21px 0 21px 48px;position:relative}.front-prose ol li:before{content:"0" counter(method);color:var(--green);font:600 9px var(--font-code);position:absolute;top:24px;left:0}.contents-page{padding:90px 0 50px}.contents-page>header{grid-template-columns:130px 1fr;gap:35px;margin-bottom:35px;display:grid}.contents-part{border-top:1px solid var(--line-dark);grid-template-columns:210px 1fr;gap:45px;padding:38px 0;display:grid}.contents-part-intro span{color:var(--green);font:700 8px var(--font-ui);text-transform:uppercase;letter-spacing:.1em}.contents-part-intro h3{font:500 24px/1.15 var(--font-text);margin:8px 0 10px}.contents-part-intro p{color:var(--muted);font:400 12px/1.55 var(--font-ui);margin:0}.contents-part ol{margin:0;padding:0;list-style:none}.contents-part li{border-bottom:1px solid var(--line)}.contents-part li:last-child{border-bottom:0}.contents-part a{grid-template-columns:34px 1fr auto;align-items:baseline;gap:12px;padding:14px 3px;display:grid}.contents-part a:hover strong{color:var(--green)}.contents-number{color:var(--faint);font:500 9px var(--font-code)}.contents-part strong{font:600 14px var(--font-ui);display:block}.contents-part small{color:var(--muted);font:400 12px/1.45 var(--font-text);margin-top:4px;display:block}.contents-part i{color:var(--green);font:normal 500 9px var(--font-ui)}.front-footer{border-top:2px solid var(--ink);justify-content:space-between;align-items:baseline;margin-top:40px;padding:35px 0;display:flex}.front-footer p{font:italic 24px var(--font-text);margin:0}.front-footer a{color:var(--green);font:600 11px var(--font-ui)}.chapter-layout{grid-template-columns:minmax(0,720px) 180px;justify-content:center;gap:56px;max-width:1060px;margin:0 auto;padding:68px 46px 112px;display:grid}.chapter-overview-layout{grid-template-columns:minmax(0,780px)}.chapter-article{min-width:0}.chapter-hero{border-bottom:1px solid var(--line-dark);padding-bottom:34px}.chapter-hero h1{font:400 clamp(44px, 5.5vw, 62px)/1.04 var(--font-text);letter-spacing:-.03em;margin:13px 0}.chapter-kicker{color:var(--green-deep);font:500 17px/1.45 var(--font-text);margin:0 0 16px}.chapter-summary{max-width:660px;color:var(--muted);font:400 17px/1.62 var(--font-text);margin:0}.chapter-opening{padding:38px 0 34px}.chapter-opening p{color:#2d3430;font:400 18px/1.76 var(--font-text);margin:0 0 21px}.chapter-opening p:last-child{margin-bottom:0}.chapter-contract{border-top:1px solid var(--line);border-bottom:1px solid var(--line);grid-template-columns:1fr 1fr;gap:34px;padding:27px 0 31px;display:grid}.chapter-contract h2{font:700 10px var(--font-ui);text-transform:uppercase;letter-spacing:.09em;margin:0 0 11px}.chapter-contract ul{margin:0;padding-left:17px}.chapter-contract li{color:#4f5853;font:400 14px/1.55 var(--font-text);margin:7px 0}.prerequisite-list a{color:var(--green-deep);text-underline-offset:3px;-webkit-text-decoration:underline #b8c9c1;text-decoration:underline #b8c9c1}.prerequisite-list a:hover{-webkit-text-decoration-color:var(--green);text-decoration-color:var(--green)}.lesson-index{padding:80px 0 20px}.lesson-index>h2{font:400 42px/1.12 var(--font-text);margin:13px 0 28px}.lesson-index ol{border-top:2px solid var(--ink);margin:0;padding:0;list-style:none}.lesson-index li{border-bottom:1px solid var(--line)}.lesson-index a{grid-template-columns:46px 1fr auto;align-items:start;gap:14px;padding:23px 2px;display:grid}.lesson-index a>span{color:var(--green);font:500 10px/1.8 var(--font-code)}.lesson-index strong{font:600 19px/1.35 var(--font-text);display:block}.lesson-index p{color:var(--muted);font:400 13px/1.55 var(--font-text);margin:6px 0 0}.lesson-index i{color:var(--green);font:normal 600 9px var(--font-ui);padding-top:5px}.lesson-index a:hover strong{color:var(--green-deep)}.exercise-intro{color:var(--muted);font:400 15px/1.65 var(--font-text);margin:-14px 0 28px}.lesson-hero{border-bottom:1px solid var(--line-dark);padding-bottom:34px}.lesson-hero>a{color:var(--green-deep);font:600 10px var(--font-ui);margin-bottom:30px;display:inline-block}.lesson-hero h1{font:400 clamp(43px, 5.5vw, 62px)/1.04 var(--font-text);letter-spacing:-.03em;margin:10px 0 17px}.lesson-hero>p{max-width:650px;color:var(--muted);font:400 17px/1.62 var(--font-text);margin:0}.lesson-contract{border-bottom:1px solid var(--line);padding:28px 0 32px}.lesson-contract h2{font:600 18px/1.4 var(--font-text);margin:0 0 9px}.lesson-contract>p{color:var(--muted);font:400 13px/1.55 var(--font-text);margin:0 0 13px}.lesson-contract ul{margin:0;padding-left:18px}.lesson-contract li{color:#444d48;font:400 14px/1.55 var(--font-text);margin:7px 0}.lesson-page-body{padding-top:42px}.textbook-section{scroll-margin-top:calc(var(--topbar) + 22px);border-bottom:1px solid var(--line-dark);padding:78px 0 18px}.section-number{color:var(--green);font:600 10px var(--font-code);margin-bottom:9px}.textbook-section>h2{font:400 clamp(33px, 4vw, 44px)/1.12 var(--font-text);letter-spacing:-.018em;margin:0 0 20px}.section-meta{border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin:0 0 34px;padding:12px 0}.section-meta p{color:var(--muted);font:400 12px/1.55 var(--font-ui);margin:5px 0}.section-meta strong{color:var(--ink);font-weight:600}.section-body>p,.lesson-opening>p,.lesson-development>p,.technical-summary>p,.worked-example>p{color:#2d3430;font:400 18px/1.76 var(--font-text);margin:0 0 22px}.section-body .section-lede{color:#252b28;font-size:19px;line-height:1.74}.section-body>h3,.lesson-development>h3,.technical-summary>h3,.wrong-turns h3,.lesson-development>h2,.technical-summary>h2,.wrong-turns h2{font:600 23px/1.3 var(--font-text);margin:44px 0 17px}.lesson-development{margin:44px 0 0}.lesson-development>h3,.lesson-development>h2{margin-top:0}.technical-summary{border-top:1px solid var(--line-dark);margin:52px 0 0;padding:30px 0 0}.technical-summary>h3,.technical-summary>h2{margin-top:0}.technical-summary>ul{margin:9px 0 23px;padding-left:22px}.technical-summary>ul li{color:#3f4843;font:400 15px/1.68 var(--font-text);margin:9px 0}.formula-card{border-top:1px solid var(--line-dark);border-bottom:1px solid var(--line-dark);background:0 0;margin:30px 0;padding:20px 0}.formula-card code{overflow-wrap:anywhere;color:var(--ink);font:600 16px/1.55 var(--font-code);display:block}.formula-card figcaption{color:var(--muted);font:400 12px/1.55 var(--font-ui);margin-top:10px}.code-card{background:var(--code);color:var(--code-ink);border:1px solid var(--line);border-radius:2px;margin:32px 0;overflow:hidden}.code-label{border-bottom:1px solid var(--line);color:var(--muted);font:700 8px var(--font-code);text-transform:uppercase;letter-spacing:.1em;padding:9px 16px}.code-card pre{margin:0;padding:21px;overflow-x:auto}.code-card pre code{font:400 12px/1.65 var(--font-code)}.code-card figcaption{border-top:1px solid var(--line);color:var(--muted);font:400 11px/1.55 var(--font-ui);padding:12px 17px}.callout{border:0;border-left:2px solid var(--line-dark);background:0 0;margin:30px 0;padding:2px 0 2px 20px}.callout>span{color:var(--muted);font:700 8px var(--font-ui);text-transform:uppercase;letter-spacing:.1em;margin-bottom:7px;display:block}.callout>strong{font:600 17px var(--font-text);margin-bottom:8px;display:block}.callout>p{color:#3f4a44;font:400 14px/1.65 var(--font-text);margin:0}.callout-warning,.callout-practice{background:0 0}.callout-warning>span,.callout-practice>span{color:var(--muted)}.worked-example{border:0;border-top:1px solid var(--line-dark);background:0 0;margin:54px 0 44px;padding:29px 0 0}.worked-example h3,.worked-example h2{font:600 24px/1.3 var(--font-text);margin:0 0 17px}.worked-example ol{margin:22px 0 25px;padding-left:24px}.worked-example li{color:#33413a;font:400 16px/1.72 var(--font-text);margin:13px 0;padding-left:5px}.worked-example .example-conclusion{color:var(--ink);border:0;margin:0;padding-top:0;font-style:normal}.worked-example .example-conclusion strong{font-weight:600}.wrong-turns{margin:46px 0 0}.wrong-turns h3,.wrong-turns h2{margin-top:0}.wrong-turns ul{margin:0;padding-left:22px}.wrong-turns li{color:#4a514d;font:400 15px/1.65 var(--font-text);margin:10px 0;padding-left:3px}.section-bridge{background:0 0;border:0;padding:0;color:var(--muted)!important;margin:42px 0!important;font-style:normal!important}.knowledge-check{border:0;border-top:1px solid var(--line-dark);background:0 0;margin:46px 0 36px;padding:28px 0 0}.knowledge-check>h2{font:600 23px/1.3 var(--font-text);margin:0 0 13px}.knowledge-check>p{color:#343c38;font:400 16px/1.68 var(--font-text);margin:0 0 17px}.knowledge-check summary{cursor:pointer;color:var(--green-deep);font:600 12px var(--font-ui)}.knowledge-check p{color:#424a46;font:400 15px/1.65 var(--font-text);margin:15px 0 2px}.knowledge-check ul{margin:16px 0 0;padding-left:21px}.knowledge-check li{color:#424a46;font:400 14px/1.62 var(--font-text);margin:9px 0}.lesson-practice{border-top:2px solid var(--ink);border-bottom:1px solid var(--line);margin:38px 0;padding:28px 0}.lesson-practice h2{font:600 24px/1.3 var(--font-text);margin:10px 0 15px}.lesson-practice p{color:#343c38;font:400 16px/1.68 var(--font-text);margin:0 0 14px}.lesson-practice p:last-child{color:var(--muted);margin-bottom:0;font-size:14px}.system-path{border-top:1px solid var(--line-dark);border-bottom:1px solid var(--line-dark);margin:48px 0;padding:0}.system-path figcaption{border-bottom:1px solid var(--line);padding:22px 0}.system-path figcaption>span{color:var(--green);font:700 8px var(--font-ui);text-transform:uppercase;letter-spacing:.1em;margin-bottom:7px;display:block}.system-path figcaption>strong{font:600 20px/1.35 var(--font-text);display:block}.system-path figcaption>p{max-width:620px;color:var(--muted);font:400 13px/1.6 var(--font-text);margin:9px 0 0}.system-path ol{counter-reset:system-stage;margin:0;padding:0;list-style:none}.system-path li{counter-increment:system-stage;border-bottom:1px solid var(--line);grid-template-columns:32px 145px 1fr;gap:14px;padding:18px 0;display:grid}.system-path li:last-child{border-bottom:0}.system-path li:before{content:"0" counter(system-stage);color:var(--green);font:500 9px/1.8 var(--font-code)}.system-path li>strong{font:600 13px/1.5 var(--font-ui)}.system-path li p{color:#3f4843;font:400 14px/1.62 var(--font-text);margin:0 0 7px}.system-path li small{color:var(--muted);font:500 9px/1.5 var(--font-ui);margin-top:3px;display:block}.interactive-model{border:1px solid var(--line-dark);background:0 0;margin:48px 0}.interactive-model figcaption{border-bottom:1px solid var(--line);grid-template-columns:110px 1fr;gap:6px 20px;padding:18px 20px;display:grid}.interactive-model figcaption>span{color:var(--green);font:700 8px var(--font-ui);text-transform:uppercase;letter-spacing:.1em}.interactive-model figcaption>strong{font:600 17px var(--font-text)}.interactive-model figcaption>code{color:var(--muted);font:400 11px/1.5 var(--font-code);grid-column:2}.model-body{grid-template-columns:minmax(0,1.15fr) minmax(210px,.85fr);display:grid}.model-controls{border-right:1px solid var(--line);padding:24px 20px}.model-slider{margin-bottom:20px;display:block}.model-slider:last-child{margin-bottom:0}.model-slider>span{justify-content:space-between;gap:15px;margin-bottom:8px;display:flex}.model-slider strong{font:600 10px var(--font-ui)}.model-slider output{color:var(--green);font:500 10px var(--font-code)}.model-slider input{width:100%;accent-color:var(--green)}.model-result{flex-direction:column;justify-content:center;padding:26px;display:flex}.model-result>span{color:var(--muted);font:700 8px var(--font-ui);text-transform:uppercase;letter-spacing:.08em}.model-result>strong{color:var(--ink);font:400 30px/1.1 var(--font-text);margin:7px 0;display:block}.model-result>small{color:var(--muted);font:400 10px/1.5 var(--font-ui)}.model-result>p{color:#56605a;font:italic 12px/1.55 var(--font-text);margin:22px 0 0}.roofline-chart{border-left:1px solid var(--line-dark);border-bottom:1px solid var(--line-dark);width:100%;height:190px;margin:0 0 25px;position:relative;overflow:hidden}.roofline-y-label,.roofline-x-label{color:var(--muted);font:500 8px var(--font-ui);position:absolute}.roofline-y-label{top:7px;left:7px}.roofline-x-label{bottom:5px;right:6px}.roofline-slope{background:linear-gradient(to top right, transparent 49.3%, var(--green) 49.7%, var(--green) 50.3%, transparent 50.7%);height:69%;position:absolute;bottom:13%;left:7%}.roofline-flat{background:var(--green);height:2px;position:absolute;top:18%;right:4%}.roofline-ridge{border-left:1px dashed var(--line-dark);position:absolute;top:18%;bottom:12%}.roofline-ridge span{color:var(--muted);font:500 8px var(--font-ui);position:absolute;top:6px;left:5px}.roofline-point{background:#9a4d38;border:2px solid #fff;border-radius:50%;width:10px;height:10px;margin:-5px 0 0 -5px;position:absolute;box-shadow:0 0 0 1px #9a4d38}.roofline-point span{color:#7d4030;white-space:nowrap;font:600 8px var(--font-ui);position:absolute;top:11px;left:8px}.roofline-bandwidth-label,.roofline-compute-label{color:var(--green-deep);font:500 8px var(--font-ui);position:absolute}.roofline-bandwidth-label{bottom:39%;left:13%;transform:rotate(-31deg)}.roofline-compute-label{top:9%;right:7%}.exercises{scroll-margin-top:var(--topbar);padding:95px 0 70px}.exercises h2,.sources h2{font:400 42px/1.1 var(--font-text);margin:13px 0 30px}.exercise-list{border-top:2px solid var(--ink)}.exercise-list article{border-bottom:1px solid var(--line);grid-template-columns:54px 1fr;gap:20px;padding:28px 0;display:grid}.exercise-number{color:var(--green);font:500 10px var(--font-code)}.exercise-list small{color:var(--muted);font:700 8px var(--font-ui);text-transform:uppercase;letter-spacing:.09em}.exercise-list h3{font:600 21px var(--font-text);margin:6px 0 10px}.exercise-list p{font:400 15px/1.65 var(--font-text);margin:0 0 10px}.exercise-list .evidence{color:var(--muted);font-size:13px}.sources{border-top:1px solid var(--line-dark);scroll-margin-top:var(--topbar);padding:70px 0}.sources>p{color:var(--muted);font:400 15px/1.65 var(--font-text)}.sources ol{margin:28px 0 0;padding-left:20px}.sources li{color:var(--muted);font:400 12px/1.55 var(--font-ui);margin:18px 0;padding-left:8px}.sources a{color:var(--green-deep);font-weight:600}.sources a span{margin-left:7px;font-size:9px}.sources li p{color:var(--muted);margin:5px 0 0}.chapter-pagination{border-top:2px solid var(--ink);grid-template-columns:1fr 1fr;gap:30px;padding-top:35px;display:grid}.chapter-pagination>a:last-child{text-align:right}.chapter-pagination span{color:var(--muted);font:700 8px var(--font-ui);text-transform:uppercase;letter-spacing:.08em;margin-bottom:8px;display:block}.chapter-pagination strong{font:600 13px/1.5 var(--font-ui)}.chapter-pagination a:hover strong{color:var(--green)}.on-this-page{top:calc(var(--topbar) + 30px);border-left:1px solid var(--line);flex-direction:column;align-self:start;gap:9px;padding-left:17px;display:flex;position:sticky}.on-this-page>span{color:var(--ink);font:700 8px var(--font-ui);text-transform:uppercase;letter-spacing:.09em;margin-bottom:5px}.on-this-page a{color:var(--muted);font:400 10px/1.4 var(--font-ui)}.on-this-page a:hover{color:var(--green)}.labs-page{max-width:880px;margin:0 auto;padding:80px 52px 120px}.labs-hero{border-bottom:1px solid var(--line-dark);padding-bottom:48px}.labs-hero h1{font:400 clamp(50px, 8vw, 80px)/1 var(--font-text);letter-spacing:-.04em;margin:14px 0 20px}.labs-hero p{max-width:690px;color:var(--muted);font:400 18px/1.7 var(--font-text);margin:0}.lab-card{border-top:2px solid var(--ink);margin-top:76px}.lab-copy{border-bottom:1px solid var(--line);grid-template-columns:40px 1fr;gap:15px;padding:20px 0;display:grid}.lab-number{color:var(--green);font:600 9px var(--font-code)}.lab-copy h2{font:600 26px var(--font-text);margin:0}.lab-copy p{color:var(--muted);font:400 14px/1.5 var(--font-text);margin:5px 0 0}.lab-grid{border-bottom:1px solid var(--line);grid-template-columns:minmax(260px,.8fr) minmax(0,1.2fr);display:grid}.lab-controls{border-right:1px solid var(--line);flex-direction:column;gap:19px;padding:28px 28px 28px 0;display:flex}.lab-controls-two{grid-template-columns:1fr 1fr;align-content:start;display:grid}.number-field>span{color:var(--muted);font:700 8px var(--font-ui);text-transform:uppercase;letter-spacing:.08em;margin-bottom:6px;display:block}.number-field>div{border-bottom:1px solid var(--line-dark);grid-template-columns:1fr auto;align-items:center;display:grid}.number-field input{width:100%;font:500 17px var(--font-code);background:0 0;border:0;outline:0;padding:8px 0}.number-field small{color:var(--muted);font:500 8px var(--font-code)}.lab-output{padding:31px}.lab-output>span{color:var(--muted);font:700 8px var(--font-ui);text-transform:uppercase;letter-spacing:.09em}.lab-output>strong{color:var(--green-deep);font:400 38px var(--font-text);margin:8px 0 22px;display:block}.stat-pair{border-top:1px solid var(--line);border-bottom:1px solid var(--line);grid-template-columns:1fr 1fr;gap:20px;padding:17px 0;display:grid}.stat-pair>span{font:500 12px var(--font-code)}.stat-pair small{color:var(--muted);font:700 7px var(--font-ui);text-transform:uppercase;letter-spacing:.08em;margin-bottom:5px;display:block}.roofline-mini{border-left:1px solid var(--line-dark);border-bottom:1px solid var(--line-dark);height:135px;margin:28px 0 20px;position:relative;overflow:hidden}.roof-slope{background:var(--green);transform-origin:0;width:60%;height:1px;position:absolute;bottom:0;left:0;transform:rotate(-32deg)}.roof-flat{background:var(--green);height:1px;position:absolute;top:19%;left:50%;right:0}.roofline-mini i{background:#a44f35;border:2px solid #fff;border-radius:50%;width:9px;height:9px;position:absolute;box-shadow:0 0 0 1px #a44f35}.lab-output>p{color:var(--muted);font:italic 13px/1.6 var(--font-text);margin:18px 0 0}.kv-output{flex-direction:column;display:flex}.kv-output>p{margin-top:auto;padding-top:24px}.lab-method{border-top:2px solid var(--ink);border-bottom:1px solid var(--line);grid-template-columns:repeat(3,1fr);margin-top:76px;display:grid}.lab-method>div{padding:24px 24px 28px 0}.lab-method span{color:var(--green);font:600 9px var(--font-code)}.lab-method h3{font:600 20px var(--font-text);margin:16px 0 8px}.lab-method p{color:var(--muted);font:400 13px/1.6 var(--font-text);margin:0}@media (width<=1120px){:root{--sidebar:276px}.chapter-layout{grid-template-columns:minmax(0,760px)}.on-this-page{display:none}}@media (width<=880px){.menu-button{color:var(--ink);display:block}.brand{min-width:0}.book-sidebar{transition:transform .2s;transform:translate(-102%);box-shadow:10px 0 28px #1419162e}.book-sidebar.open{transform:translate(0)}.sidebar-scrim{z-index:40;inset:var(--topbar) 0 0;background:#14191659;border:0;display:block;position:fixed}.book-main{margin-left:0}.front-matter{padding-left:40px;padding-right:40px}}@media (width<=650px){:root{--topbar:58px}.book-topbar{gap:8px;padding:0 13px}.brand-mark{width:28px;height:28px}.brand strong{max-width:230px;font-size:10px}.brand small,.topbar-links a:first-child{display:none}.topbar-links a{font-size:9px}.front-matter{padding:0 22px 75px}.title-page{min-height:auto;padding:78px 0}.title-page h1{font-size:clamp(44px,13.5vw,62px);line-height:.94}.title-deck{font-size:18px}.preface,.audience-note,.reading-method{grid-template-columns:1fr;gap:18px;padding:62px 0}.front-prose h2{font-size:38px}.front-prose p{font-size:17px}.contents-page>header{grid-template-columns:1fr;gap:18px}.contents-part{grid-template-columns:1fr;gap:20px}.contents-part a{grid-template-columns:31px 1fr}.contents-part i{grid-column:2}.front-footer{flex-direction:column;align-items:flex-start;gap:20px}.chapter-layout{padding:56px 20px 85px}.chapter-hero h1{font-size:42px}.lesson-hero h1{font-size:40px}.chapter-opening p{font-size:17px}.chapter-contract{grid-template-columns:1fr}.lesson-index a{grid-template-columns:38px 1fr}.lesson-index i{grid-column:2}.textbook-section{padding-top:66px}.textbook-section>h2{font-size:34px}.section-body>p,.lesson-opening>p,.lesson-development>p,.technical-summary>p,.worked-example>p{font-size:17px}.worked-example{padding:25px 0 0}.system-path li{grid-template-columns:28px 1fr}.system-path li>div{grid-column:2}.model-body{grid-template-columns:1fr}.model-controls{border-right:0;border-bottom:1px solid var(--line)}.interactive-model figcaption{grid-template-columns:1fr}.interactive-model figcaption>code{grid-column:1}.chapter-pagination{grid-template-columns:1fr}.chapter-pagination>a:last-child{text-align:left}.labs-page{padding:58px 20px 85px}.lab-grid{grid-template-columns:1fr}.lab-controls{border-right:0;border-bottom:1px solid var(--line);padding-right:0}.lab-controls-two,.lab-method{grid-template-columns:1fr}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important}}
