:root{font-family:'DM Sans',system-ui,-apple-system,sans-serif;color:#202c42;background:#f5f6fa;--accent:#705cf0;--muted:#65748d;--line:#e1e6ef;--nav:#111a2b;--good:#087c60}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}a{color:#6651cf}button,a,input,select,summary{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.4}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid #aa99ff;outline-offset:3px}[hidden]{display:none!important}.skip{position:fixed;left:15px;top:-100px;background:white;padding:12px;z-index:20}.skip:focus{top:12px}.rail{width:274px;position:fixed;inset:0 auto 0 0;background:var(--nav);color:white;display:flex;flex-direction:column;padding:26px 16px 16px}.brand{display:flex;align-items:center;gap:11px;color:white;text-decoration:none;font-size:22px;font-weight:700;letter-spacing:-.7px;padding:0 10px}.brand span:last-child span{font-weight:400;color:#a7b1c7}.logo{display:grid;place-items:center;width:35px;height:35px;background:var(--accent);border-radius:10px;font-size:27px}.edition{font-size:12px;letter-spacing:1.5px;color:#9eabc3;padding:18px 10px 23px}.rail nav{overflow:auto;scrollbar-width:thin;scrollbar-color:#34405a transparent;flex:1;min-height:0;padding-right:5px}.nav-group{color:#91a0ba;font-size:12px;text-transform:uppercase;letter-spacing:1px;padding:23px 10px 10px}.nav-group:first-child{padding-top:0}.chapter-link{width:100%;display:flex;align-items:flex-start;gap:11px;text-align:left;padding:10px 11px;border:0;border-radius:7px;background:none;color:#bcc7db;font-size:14px;line-height:1.4;margin-bottom:3px}.chapter-link:hover{background:#202c42}.chapter-link.active{background:#2a304e;color:#fff;box-shadow:inset 3px 0 var(--accent)}.chapter-number{font-family:monospace;color:#9f93ef;flex:none}.rail-foot{border-top:1px solid #2b3447;margin:17px 10px 0;padding-top:14px;font-size:12px;color:#9ba9c2;line-height:1.7}.rail-foot a{color:#c0c9dd}.page{margin-left:274px;padding:0 38px 28px;max-width:1680px}.topbar{height:70px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);font-size:12px;color:var(--muted);letter-spacing:1px;gap:15px}.pill{border:1px solid #dce1ee;border-radius:30px;padding:7px 12px;white-space:nowrap;font-size:12px;letter-spacing:0}.intro{padding:30px 0 25px}.eyebrow{font-size:12px;text-transform:uppercase;letter-spacing:1.4px;font-weight:700;color:#7864bd}.intro h1{font-size:clamp(26px,3vw,36px);line-height:1.2;letter-spacing:-1px;margin:13px 0 14px;font-weight:750}.intro p{margin:0;max-width:850px;color:var(--muted);font-size:16px;line-height:1.7}.mobile-select{display:none}.modebar{display:flex;align-items:center;justify-content:space-between;gap:15px;border-bottom:1px solid var(--line);margin-bottom:24px}.tabs{display:flex;gap:30px}.tabs button{border:0;background:none;color:var(--muted);padding:14px 0;border-bottom:2px solid transparent;font-size:14px}.tabs button[aria-selected=true]{color:var(--accent);border-color:var(--accent);font-weight:700}.chapter-count{font-size:12px;color:var(--muted)}h2{font-size:20px;letter-spacing:-.4px;line-height:1.4;margin:0 0 14px}h3{font-size:16px;margin:0 0 9px;line-height:1.5}p{line-height:1.8;font-size:16px;margin:0 0 16px}ul,ol{padding-left:22px;line-height:1.8;font-size:16px}li{margin:7px 0}.card{border:1px solid var(--line);background:#fff;border-radius:12px;padding:26px}.learning-head{display:grid;grid-template-columns:1.4fr 1fr;gap:20px;margin-bottom:24px}.objectives{background:#eeebff;border-color:#dfd8ff}.objectives ul{color:#554778;margin-bottom:0}.content-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.reading-card p{color:#596780}.reading-card:last-child:nth-child(odd){grid-column:1/-1}.section-index{font-family:monospace;font-size:13px;color:var(--accent);margin-bottom:10px}.source-note{margin-top:22px;color:var(--muted);font-size:14px}.subsection{margin-top:24px}.table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:9px;background:white}table{width:100%;border-collapse:collapse;text-align:left;font-size:14px;line-height:1.6}th{background:#f1f3f9;font-weight:600;color:#4e5b73}th,td{padding:13px 16px;border-bottom:1px solid var(--line);vertical-align:top}tr:last-child td{border-bottom:0}.architecture{display:flex;flex-wrap:wrap;gap:9px;list-style:none;padding:0;margin:0;counter-reset:flow}.architecture li{flex:1 1 135px;margin:0;background:#f7f8fc;border:1px solid var(--line);border-radius:8px;padding:13px;font-size:14px;line-height:1.5;counter-increment:flow}.architecture li:before{content:counter(flow,decimal-leading-zero);display:block;color:var(--accent);font-family:monospace;font-size:12px;margin-bottom:5px}.footnote{color:var(--muted);font-size:13px;line-height:1.6;margin:12px 0 0}.lab-heading{display:flex;justify-content:space-between;align-items:start;gap:20px;margin-bottom:20px}.lab-heading h2{margin:0 0 7px}.lab-heading p{color:var(--muted);margin:0}.btn{background:#fff;color:#34415b;border:1px solid #dbe1ed;border-radius:7px;padding:10px 15px;font-size:14px;font-weight:600;white-space:nowrap}.btn:hover:not(:disabled){background:#f0edff}.btn.primary{background:var(--accent);color:#fff;border-color:var(--accent)}.lab-layout{display:grid;grid-template-columns:minmax(0,1fr) 290px;gap:20px;align-items:start}.lab-control{grid-column:2;grid-row:1;padding:24px;position:sticky;top:20px}.lab-results{grid-column:1;grid-row:1;min-width:0}.control{margin-bottom:24px}.control label{display:flex;justify-content:space-between;gap:10px;font-size:14px;font-weight:500;margin-bottom:13px;line-height:1.5}.control output{font-family:monospace;color:#674fcc;font-size:14px;white-space:nowrap}.control input[type=range]{width:100%;accent-color:var(--accent);cursor:pointer}.control input[type=number],.control input[type=text],.control select{width:100%;border:1px solid #d9dfeb;border-radius:7px;padding:10px;background:#fff;color:#23314b;min-width:0}.ends{display:flex;justify-content:space-between;font-size:12px;color:#8090a7;margin-top:5px}.preset-label{font-size:12px;color:var(--muted);letter-spacing:1px;text-transform:uppercase;margin:25px 0 10px}.presets{display:flex;flex-wrap:wrap;gap:7px}.presets .btn{white-space:normal;text-align:left;font-size:13px;font-weight:500;padding:9px 11px}.presets .btn.selected{background:#eeeaff;border-color:#a797ef;color:#5941b5}.metric-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-bottom:18px}.metric{padding:20px;border-radius:10px;background:#fff;border:1px solid var(--line)}.metric-label{font-size:13px;color:var(--muted)}.metric-value{font-size:clamp(22px,2.4vw,31px);font-weight:700;letter-spacing:-.6px;line-height:1.3;margin:10px 0;overflow-wrap:anywhere}.metric-value small{font-size:13px;letter-spacing:0;font-weight:400;color:var(--muted);margin-left:5px}.metric-note{font-size:12px;color:var(--muted);line-height:1.6}.insight{background:#eeebff;border:1px solid #dfd7ff;border-radius:10px;padding:21px 24px;margin:18px 0}.insight p{color:#514675;margin:9px 0 0}.visual-panel{background-color:#fff;background-image:radial-gradient(#e2e6ef .7px,transparent .7px);background-size:18px 18px;margin-bottom:18px}.stage-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:18px}.stage{background:white;border:1px solid #dcd6f6;border-radius:9px;padding:15px;position:relative;min-width:0}.stage small{font-size:12px;color:var(--accent);font-family:monospace}.stage h3{margin:6px 0;font-size:15px}.stage p{font-size:14px;color:var(--muted);line-height:1.6;margin:0;overflow-wrap:anywhere}.bar-row{display:grid;grid-template-columns:minmax(95px,.8fr) 1fr minmax(72px,.7fr);align-items:center;gap:13px;margin:20px 0;font-size:13px}.bar-track{height:9px;background:#eceef6;border-radius:7px;overflow:hidden}.bar-fill{height:100%;background:var(--accent);border-radius:7px}.bar-value{text-align:right;font-variant-numeric:tabular-nums;color:#647089;overflow-wrap:anywhere}.assumptions{margin-top:20px}.assumptions summary,details summary{font-size:14px;color:#6651c5;cursor:pointer;font-weight:600;line-height:1.5}details p{margin-top:16px}details ul{font-size:14px;color:var(--muted)}details[open] summary{margin-bottom:12px}.exercise{max-width:950px}.exercise .eyebrow{display:block;margin-bottom:14px}.exercise h2{font-size:24px}.exercise details{margin-top:20px;border-top:1px solid var(--line);padding-top:20px}.exercise .solution{white-space:pre-line}.pitfall-card{border-left:3px solid #dc9a45}.references{display:flex;flex-wrap:wrap;gap:14px;font-size:14px;margin-top:18px}.pagination{display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--line);padding-top:24px;margin-top:30px;gap:12px}.pagination .btn{white-space:normal;max-width:45%;text-align:left;line-height:1.5}.pagination .btn:last-child{text-align:right}.pagination small{display:block;color:var(--muted);font-size:12px;margin-bottom:4px;font-weight:400}.page-footer{font-size:12px;color:#7b879b;line-height:1.7;margin-top:26px}.legacy-frame{width:100%;border:0;min-height:1150px;border-radius:12px;display:block}.legacy-note{display:flex;justify-content:space-between;gap:15px;background:#eeebff;border:1px solid #dfd7ff;padding:15px 20px;border-radius:8px;font-size:14px;margin-bottom:18px}.legacy-note p{font-size:14px;margin:0}.empty-error{background:#fff3ed;padding:24px;border-radius:10px;font-size:16px;line-height:1.7}.no-script{padding:30px;font-size:18px}.focus-ring{scroll-margin-top:20px}@media(min-width:1550px){.lab-layout{grid-template-columns:1fr 340px}.metric-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.stage-list{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:1150px){.rail{width:244px}.page{margin-left:244px;padding:0 26px 24px}.lab-layout{grid-template-columns:minmax(0,1fr) 255px}.lab-control{padding:20px}.content-grid,.learning-head{grid-template-columns:1fr}.stage-list{grid-template-columns:1fr}.intro h1{font-size:29px}.bar-row{grid-template-columns:1fr 1fr}.bar-value{grid-column:2;text-align:right}.metric{padding:16px}}@media(max-width:900px){.rail{position:relative;inset:auto;width:100%;padding:16px 22px}.rail nav,.rail-foot,.edition{display:none}.brand{padding:0;font-size:20px}.page{margin-left:0;padding:0 22px 24px}.topbar{height:54px}.mobile-select{display:block;margin-top:20px}.mobile-select label{display:block;font-size:12px;color:var(--muted);margin-bottom:8px}.mobile-select select{width:100%;padding:12px;border:1px solid #dbe0eb;background:white;border-radius:7px;font-size:14px;color:#233149}.intro{padding:24px 0}.lab-layout{grid-template-columns:minmax(0,1fr) 275px}.stage-list{grid-template-columns:1fr 1fr}.legacy-frame{min-height:1250px}}@media(max-width:650px){.page{padding:0 16px 24px}.topbar{font-size:11px}.topbar .pill{font-size:11px}.intro h1{font-size:27px;line-height:1.3}.intro p{font-size:16px}.tabs{gap:24px}.tabs button{font-size:14px}.chapter-count{display:none}.lab-layout{display:flex;flex-direction:column}.lab-control{position:static;width:100%}.lab-results{width:100%}.metric-value{font-size:25px}.lab-heading{gap:10px}.lab-heading h2{font-size:19px}.lab-heading .btn{font-size:12px;padding:9px 11px}.card{padding:21px}.stage-list{grid-template-columns:1fr}.content-grid{gap:16px}.pagination .btn{font-size:13px}.legacy-frame{min-height:1840px}.legacy-note{display:block}.learning-head{gap:16px}.references{display:block}.references a{display:block;margin:12px 0}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}
.language-picker{display:flex;align-items:center;gap:8px;position:relative;letter-spacing:0}.language-picker label{font-size:12px;color:var(--muted);white-space:nowrap}.language-picker select{padding:8px 10px;background:white;border:1px solid #dce1ee;color:#28344c;border-radius:7px;font-size:14px;max-width:180px}.language-picker [role=status]{position:absolute;inset-block-start:42px;inset-inline-end:0;font-size:12px;color:#b44155;min-width:240px;text-align:end;background:#f5f6fa}.language-picker [role=status]:empty{display:none}.chapter-link,th,td,.presets .btn{text-align:start}.pagination .btn:last-child{text-align:end}[dir=rtl] .rail{left:auto;right:0}[dir=rtl] .page{margin-left:0;margin-right:274px}[dir=rtl] .chapter-link.active{box-shadow:inset -3px 0 var(--accent)}[dir=rtl] .pitfall-card{border-left:1px solid var(--line);border-right:3px solid #dc9a45}[dir=rtl] .metric-value small{margin-left:0;margin-right:5px}[dir=rtl] ul,[dir=rtl] ol{padding-left:0;padding-right:22px}@media(max-width:1150px){[dir=rtl] .page{margin-right:244px}.topbar{flex-wrap:wrap;height:auto;min-height:70px;padding:12px 0;gap:10px}.language-picker{margin-inline-start:auto}}@media(max-width:900px){[dir=rtl] .page{margin-right:0}}@media(max-width:650px){.topbar>.pill{display:none}.topbar{gap:10px}.language-picker label{display:none}.language-picker select{font-size:13px;max-width:155px}.topbar>span:first-child{font-size:10px;letter-spacing:0}}
