:root{--ink:#202c35;--muted:#586571;--navy:#1b425a;--line:#dce2e7;--paper:#fff;--wash:#f5f7f9;--accent:#176d74}*{box-sizing:border-box}html{scroll-padding-top:90px}body{margin:0;background:var(--paper);color:var(--ink);font:17px/1.75 Georgia,'Times New Roman',serif}a{color:var(--navy);text-underline-offset:3px}button,summary{cursor:pointer}button{font:14px system-ui;background:white;color:var(--navy);border:1px solid var(--line);border-radius:4px;padding:8px 12px}button:focus-visible,a:focus-visible,summary:focus-visible,input:focus-visible{outline:3px solid #d69423;outline-offset:3px}header{height:72px;position:fixed;z-index:10;inset:0 0 auto;display:flex;align-items:center;gap:16px;background:#fff;border-bottom:1px solid var(--line);padding:0 28px}.brand{font:600 20px/1.3 system-ui;text-decoration:none;flex:1}.brand span{font:13px system-ui;color:var(--muted);display:block;margin-top:3px}#menu{display:none}#sidebar{position:fixed;top:72px;bottom:0;left:0;width:272px;border-right:1px solid var(--line);padding:28px 20px;overflow-y:auto;font:14px/1.5 system-ui;background:var(--wash)}.nav-label,.eyebrow{font:600 12px/1.5 system-ui;letter-spacing:.12em;color:var(--muted)}#navigation a{display:block;padding:7px 10px;text-decoration:none;border-radius:3px}#navigation a:hover{background:#e8edf1}#navigation a.active{color:var(--navy);background:#e2ebf0;box-shadow:inset 3px 0 var(--navy);font-weight:600}#navigation details{margin:10px 0}#navigation summary{font-weight:600;padding:8px 2px}#navigation details a{font-size:14px;margin-left:6px}.sidebar-note{border-top:1px solid var(--line);padding-top:20px;color:var(--muted);font-size:13px}main{margin:72px 218px 0 272px;padding:48px 46px 80px;max-width:1100px;min-height:90vh}#outline{position:fixed;right:0;top:108px;width:206px;padding:0 20px 20px 8px;font:13px/1.6 system-ui;max-height:80vh;overflow:auto}#outline a{display:block;color:var(--muted);text-decoration:none;padding:5px 0 5px 12px;border-left:1px solid var(--line)}#outline a:hover{color:var(--navy);border-color:var(--navy)}h1{font-size:40px;line-height:1.18;letter-spacing:-.025em;font-weight:500;margin:12px 0 24px;color:#173548}h2{font-size:27px;line-height:1.3;font-weight:500;margin:42px 0 14px;padding-top:6px}h3{font-size:21px;line-height:1.4;margin:28px 0 10px}p{margin:12px 0 18px}.lead{font-size:20px;color:#465866;max-width:720px}.meta{font:14px/1.5 system-ui;color:var(--muted);margin-bottom:24px}.box{padding:17px 22px;margin:24px 0;border:1px solid var(--line);border-left:3px solid var(--navy);background:#f8fafb}.box p:last-child{margin-bottom:0}.box-label{font:600 12px system-ui;text-transform:uppercase;letter-spacing:.08em;color:var(--navy);margin-bottom:10px}.definition{border-left-color:#467c6b}.example{background:#fff;border-left-color:#6a8395}.warning{background:#fffaf0;border-left-color:#b08331}.exam{background:#f3f7fa}.formula{background:#f2f7f7;border-left-color:var(--accent)}ul,ol{padding-left:25px}li{margin:6px 0}table{border-collapse:collapse;width:100%;font-size:15px;margin:22px 0}td,th{padding:11px 13px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}th{font:600 13px system-ui;background:var(--wash)}.table-wrap{overflow:auto}.katex-display{overflow-x:auto;overflow-y:hidden;padding:8px 2px;font-size:1em}.katex{font-size:1.08em}details.solution{border:1px solid var(--line);border-radius:3px;margin:14px 0 24px}details.solution>summary{padding:10px 15px;color:var(--navy);font:600 14px/1.5 system-ui;background:#f7f9fa}details.solution>.answer{padding:4px 20px 14px}.exercise-level{font:600 14px system-ui;letter-spacing:.03em;color:var(--accent);margin:26px 0 12px}.chapter-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 28px}.unit-entry{border-top:2px solid var(--navy);padding:14px 0 22px}.unit-entry a{font-size:23px;text-decoration:none}.unit-entry p{font-size:16px;color:var(--muted)}.nextprev{display:flex;justify-content:space-between;gap:25px;border-top:1px solid var(--line);margin-top:50px;padding-top:25px;font:14px/1.5 system-ui}.nextprev a{max-width:48%;text-decoration:none}.nextprev small{display:block;color:var(--muted);margin-bottom:6px}figure{margin:28px 0;padding:18px;border:1px solid var(--line);background:#fafcfd}svg{display:block;width:100%;height:auto}svg text{font:14px system-ui;fill:#354b5b}figcaption{font:14px/1.6 system-ui;color:var(--muted);margin-top:12px}.diagram-control{display:flex;align-items:center;gap:12px;font:14px system-ui;margin-top:15px}.diagram-control input{width:55%;accent-color:var(--navy)}.skip{position:fixed;left:10px;top:-80px;z-index:20;background:white;padding:10px}.skip:focus{top:10px}.check{color:#267052}.toc-list{columns:2;column-gap:30px}.toc-list li{break-inside:avoid}footer{border-top:1px solid var(--line);margin-top:35px;padding-top:16px;color:var(--muted);font:13px/1.6 system-ui}@media(min-width:1600px){main{margin-left:calc(272px + (100vw - 1600px)/2)}}@media(max-width:1200px){#outline{display:none}main{margin-right:0;padding:38px;max-width:1050px}}@media(max-width:800px){header{padding:0 16px;height:66px}.brand{font-size:17px}#menu{display:block}#sidebar{transform:translateX(-100%);top:66px;z-index:9;width:285px;box-shadow:4px 0 15px #0001}body.nav-open #sidebar{transform:none}main{margin:66px 0 0;padding:28px 20px 60px}h1{font-size:33px}h2{font-size:25px}.chapter-grid{grid-template-columns:1fr}.toc-list{columns:1}body{font-size:17px}#print{font-size:12px;padding:7px}td,th{padding:9px}.box{padding:14px 16px}}@media print{header,#sidebar,#outline,.nextprev,.diagram-control{display:none}main{margin:0;padding:0;max-width:none}body{font-size:11pt}h1{font-size:25pt}h2{font-size:19pt}.box,figure{break-inside:avoid}.katex-display{overflow:visible}details.solution>.answer{display:block}a{color:inherit}h2,h3{break-after:avoid}}

/* Diagrams retain legible labels on narrow screens. */
.figure-title{font:600 16px/1.5 system-ui;margin:0 0 14px;color:var(--navy)}.diagram-scroll{overflow-x:auto;overscroll-behavior-x:contain;max-width:100%;scrollbar-width:thin}.diagram-scroll svg{min-width:540px}.diagram-control{flex-wrap:wrap;line-height:1.5}.diagram-control output{min-width:45px}.diagram-control input{min-width:120px}.diagram-scroll:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media(max-width:800px){figure{padding:12px}.diagram-control input{flex:1}.figure-title{font-size:15px}}@media print{.diagram-scroll{overflow:visible}.diagram-scroll svg{min-width:0;width:100%}}

.diagram-mobile-hint{display:none}@media(max-width:800px){.diagram-mobile-hint{display:block;font:12px/1.5 system-ui;color:var(--muted);margin:8px 0}}@media print{.diagram-mobile-hint{display:none}}
