.book-index{max-width:1210px;margin:0 auto;padding:48px 44px}.book-intro{margin-bottom:30px}.book-labels{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:18px}.book-small{font-size:12px;color:var(--muted);line-height:1.65}.book-hero{background:var(--hero-bg);border:1px solid var(--hero-border);border-radius:16px;display:flex;align-items:center;gap:30px;justify-content:space-between;padding:32px 34px;margin-bottom:26px}.book-hero>div:first-child{max-width:650px}.book-hero h2{font-size:26px;line-height:1.3;font-weight:650;letter-spacing:-.6px;margin:18px 0 12px}.book-hero p:not(.next-pill){color:var(--hero-text);font-size:13px;line-height:1.8;max-width:540px}.book-hero-mark{display:flex;align-items:center;gap:12px;flex:0 0 auto;color:var(--hero-text);font-family:var(--font-mono);font-size:11px}.book-hero-mark strong{display:grid;place-items:center;color:#b9ff66;background:#233721;border:1px solid #536d40;width:90px;height:90px;border-radius:20px;font-family:var(--font-display);font-size:32px;transform:rotate(-8deg)}.book-section-heading{display:flex;justify-content:space-between;align-items:center;gap:20px;margin:32px 0 18px}.book-section-heading h2{font-size:24px;font-weight:650;letter-spacing:-.6px;margin:0}.book-section-heading .eyebrow{margin-bottom:9px}.book-chapters{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.book-chapter{display:flex;flex-direction:column;text-align:left;border:1px solid var(--border);background:var(--surface);color:var(--ink);border-radius:12px;padding:22px;cursor:pointer;min-width:0}.book-chapter:hover{background:var(--surface-2);border-color:var(--border-hi)}.book-chapter.selected,.book-index .btn.selected{border-color:var(--prompt);background:color-mix(in srgb,var(--prompt) 7%,var(--surface))}.book-chapter-top{display:flex;align-items:center;gap:12px;font-size:9px;letter-spacing:1.3px;color:var(--muted)}.book-topic-icon{display:inline-grid;place-items:center;font-size:24px;width:40px;height:40px;border-radius:8px;background:color-mix(in srgb,var(--prompt) 10%,transparent);color:var(--prompt)}.book-chapter:nth-child(2) .book-topic-icon{background:#8583ff18;color:#a2a0ff}.book-chapter:nth-child(3) .book-topic-icon{background:#f2ad6118;color:#f2ad61}html[data-theme=light] .book-chapter:nth-child(2) .book-topic-icon{color:#5f4abe}html[data-theme=light] .book-chapter:nth-child(3) .book-topic-icon{color:#97601a}.book-chapter h3{font-size:17px;letter-spacing:-.3px;margin:22px 0 10px;line-height:1.45}.book-chapter p{font-size:12px;color:var(--muted);line-height:1.8;margin-bottom:24px}.book-chapter-foot{display:flex;justify-content:space-between;align-items:center;gap:12px;border-top:1px solid var(--border);padding-top:16px;margin-top:auto;font-size:11px;color:var(--text-dim)}.book-chapter-foot .progress-track{width:55px;flex-shrink:0}.book-toolbar{display:flex;gap:14px;margin:0 0 22px;align-items:end}.book-toolbar label{display:grid;gap:7px}.book-toolbar .book-search{flex:1;min-width:0}.book-toolbar select{background:var(--surface);color:var(--ink);border:1px solid var(--border);border-radius:8px;font-size:13px;padding:13px 16px;min-height:48px}.book-lab-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.book-lab-card{display:flex;flex-direction:column;padding:24px;border:1px solid var(--border);background:var(--surface);color:var(--ink);border-radius:12px;min-width:0}.book-lab-card:hover{text-decoration:none;border-color:var(--border-hi);background:var(--surface-2)}.book-card-meta{display:flex;align-items:center;justify-content:space-between;gap:12px}.book-number{color:var(--muted);font-family:var(--font-mono);font-size:11px;letter-spacing:.5px}.book-lab-card h3{font-size:17px;font-weight:650;line-height:1.5;margin:16px 0 9px;letter-spacing:-.3px}.book-lab-card p{color:var(--muted);font-size:12px;line-height:1.8;margin-bottom:22px}.book-card-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;color:var(--muted);font-size:11px;border-top:1px solid var(--border);padding-top:16px;margin-top:auto}.book-card-footer>span:last-child{color:var(--prompt);white-space:nowrap}.book-empty{text-align:center;padding:42px 20px;border:1px dashed var(--border-hi);border-radius:12px;color:var(--muted)}.book-empty h3{color:var(--ink);font-size:19px}.book-footer{padding-top:24px;margin:32px 0 0;border-top:1px solid var(--border);color:var(--muted);font-size:12px;line-height:1.8}.book-workspace{padding:32px;max-width:1510px;margin:auto;min-width:0}.book-workspace-header{display:flex;align-items:start;justify-content:space-between;gap:22px;margin-bottom:26px}.book-workspace-header h1{font-size:clamp(24px,2.6vw,35px);font-weight:650;line-height:1.3;letter-spacing:-.8px;margin:12px 0 0}.book-workspace-header .btn{flex-shrink:0}.book-back{font-size:12px;color:var(--text-dim)}.book-workspace-grid{display:grid;grid-template-columns:minmax(280px,.85fr) minmax(0,1.15fr);gap:24px;align-items:start}.book-instructions{border:1px solid var(--border);background:var(--surface);border-radius:12px;min-width:0;overflow:hidden}.book-purpose{padding:24px 24px 8px;font-size:13px;line-height:1.85;color:var(--text-dim)}.book-purpose p{margin-bottom:14px}.book-purpose pre{white-space:pre-wrap;overflow-wrap:anywhere}.book-sim-note{font-size:11px;line-height:1.8;color:var(--muted);padding-left:12px;border-left:2px solid var(--border-hi)}.book-objectives{margin:4px 24px 22px;padding:14px 16px;border:1px solid var(--border);border-radius:8px;font-size:12px;color:var(--muted)}.book-objectives summary{color:var(--ink);font-weight:600;cursor:pointer}.book-objectives ul{padding-left:20px;margin-bottom:0}.book-step{border-top:1px solid var(--border);padding:22px 24px}.book-step.passed{box-shadow:inset 3px 0 var(--signal)}.book-step-heading{display:flex;align-items:baseline;gap:10px;margin-bottom:14px}.book-step-number{flex-shrink:0;color:var(--prompt);font:11px var(--font-mono)}.book-step h2{font-size:15px;line-height:1.5;letter-spacing:-.25px;font-weight:650;margin:0}.book-step-result{flex-shrink:0;margin-left:auto;font-size:10px;color:var(--bad)}.book-step-result.pass{color:var(--good)}.book-step-body{font-size:13px;color:var(--text-dim);line-height:1.85;overflow-wrap:anywhere}.book-step-body p:last-child{margin-bottom:0}.book-purpose code,.book-step-body code:not(pre code){font-family:var(--font-mono);font-size:.9em;background:var(--surface-3);border-radius:4px;padding:2px 4px}.book-solution pre,.book-step-body pre{white-space:pre-wrap;overflow-wrap:anywhere;background:var(--console);color:#cdd8e6;border:1px solid var(--border-hi);border-radius:8px;padding:15px;font:11px/1.9 var(--font-mono);margin:16px 0}.book-step-body ol,.book-step-body ul{padding-left:20px}.book-step-body table{display:block;overflow-x:auto;font-size:11px;max-width:100%;border-collapse:collapse}.book-step-body td,.book-step-body th{border:1px solid var(--border);padding:8px;text-align:left}.book-question{padding:0;border:0;min-width:0;margin:20px 0 0}.book-question legend{font-size:12px;color:var(--ink);font-weight:600;margin-bottom:10px}.book-question>label{display:flex;align-items:start;gap:10px;padding:11px 12px;margin-bottom:7px;border:1px solid var(--border);background:var(--bg);border-radius:8px;cursor:pointer;color:var(--text-dim);font-size:12px;line-height:1.65}.book-question>label:has(input:checked){border-color:var(--prompt);background:var(--good-bg)}.book-question input[type=radio]{accent-color:var(--prompt);margin-top:4px;flex-shrink:0}.book-checks{list-style:none;padding:14px 0 0;margin:15px 0 0;border-top:1px dashed var(--border);font-size:11px;line-height:1.7}.book-checks li{display:flex;align-items:start;gap:8px;margin-bottom:8px;overflow-wrap:anywhere}.book-checks .pass{color:var(--good)}.book-checks .unmet{color:var(--bad)}.book-check-panel{border-top:1px solid var(--border);padding:24px;background:var(--bg)}.book-check-panel>.book-small{margin-top:12px}.book-check-panel>div>.book-small{margin:0}.book-feedback,.book-success{border:1px solid var(--border-hi);border-radius:8px;padding:16px;font-size:13px;margin-top:18px}.book-success{border-color:var(--hero-border);background:var(--good-bg)}.book-feedback p,.book-success p{color:var(--muted);font-size:12px;margin:8px 0 0;line-height:1.8}.book-success .btn{margin-top:15px}.book-support{padding:24px;border-top:1px solid var(--border)}.book-support h2{font-size:16px;font-weight:650}.book-hints{color:var(--text-dim);font-size:12px;line-height:1.8;padding-left:20px}.book-hints li{margin:12px 0}.book-solution{margin-top:22px;border-top:1px solid var(--border);padding-top:18px}.book-solution summary{cursor:pointer;color:var(--muted);font-size:12px;font-weight:600}.book-solution>p{margin-top:14px}.book-support .book-verification{margin:20px 0}.book-solution-device h3{font-size:12px;margin:16px 0 8px}.book-solution-answer{font-size:12px;margin:18px 0;color:var(--text-dim)}.book-solution-answer p{margin:8px 0 0}.book-practice{min-width:0;display:grid;gap:18px;position:sticky;top:18px}.book-console,.book-topology,.book-worksheet-tip{min-width:0;border:1px solid var(--border);border-radius:12px;background:var(--surface);overflow:hidden}.book-pane-title{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:14px 18px;border-bottom:1px solid var(--border)}.book-pane-title h2{font-size:12px;font-weight:650;margin:0}.book-pane-title .book-small{font-size:10px}.book-topology .topo{width:100%;height:220px;min-height:0;display:block}.book-topology .node.host{cursor:pointer}.book-network-key{display:flex;align-items:center;justify-content:center;gap:22px;border-top:1px solid var(--border);color:var(--muted);font-size:10px;padding:10px}.book-network-key span{display:inline-flex;align-items:center;gap:6px}.book-network-key i{width:15px;height:2px;background:var(--signal)}.book-network-key i.down{background:var(--border-hi)}.book-console-body{display:flex;flex-direction:column;height:300px;min-width:0;background:var(--console)}.book-console .term-tabs{flex-shrink:0;display:flex;overflow-x:auto}.book-console .term-tab{min-height:42px;flex-shrink:0}.book-console .term-host{min-height:220px}.book-command-form{padding:13px 16px;border-top:1px solid var(--border)}.book-command-form label{display:block;font-size:10px;color:var(--muted);margin-bottom:7px}.book-command-form>div{display:flex;align-items:stretch;gap:8px}.book-command-form input{min-width:0;flex:1;border:1px solid var(--border-hi);border-radius:6px;background:var(--bg);color:var(--ink);font:12px var(--font-mono);padding:10px}.book-console-help{color:var(--muted);font-size:10px;padding:0 16px 14px;margin:0;line-height:2}.book-console-help kbd{font-size:9px}.book-worksheet-tip{padding:28px;background:var(--hero-bg);border-color:var(--hero-border)}.book-worksheet-tip h2{font-size:22px;font-weight:650;margin:18px 0 12px}.book-worksheet-tip p{color:var(--hero-text);font-size:13px;line-height:1.8}.book-worksheet-tip .book-small{font-size:12px}.book-neighbours{display:grid;grid-template-columns:1fr 1fr;gap:16px;border-top:1px solid var(--border);padding-top:25px;margin-top:32px}.book-neighbours a{display:flex;flex-direction:column;gap:6px;font-size:12px;color:var(--muted);min-width:0}.book-neighbours a:last-child{text-align:right}.book-neighbours strong{color:var(--ink);font-weight:600}.book-reset{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:18px 22px;margin-bottom:20px;background:var(--surface);border:1px solid var(--bad);border-radius:10px;font-size:13px}.book-reset>div{flex:1 1 100%}.book-reset p{color:var(--muted);font-size:12px;margin:7px 0 0}.book-notice{display:flex;justify-content:space-between;align-items:start;gap:18px;padding:12px 16px;margin:0 0 20px;background:var(--surface);border:1px solid var(--border);border-radius:8px;font-size:12px;color:var(--text-dim)}.book-notice .linklike{font-size:20px;line-height:1}.book-storage-warning{font-size:12px;color:var(--bad)}@media (min-width:1400px) and (min-height:1000px){.book-console-body{height:390px}.book-topology .topo{height:240px}}@media (min-width:1101px) and (max-height:850px){.book-practice{max-height:calc(100dvh - 36px);overflow-y:auto;scrollbar-width:thin}}@media (max-width:1100px){.book-index{padding:36px 28px}.book-chapters{gap:12px}.book-chapter{padding:18px}.book-hero-mark{display:none}.book-workspace{padding:26px 22px}.book-workspace-grid{grid-template-columns:minmax(0,1fr)}.book-practice{position:static;grid-row:1}.book-topology .topo{height:240px}.book-is-worksheet .book-practice{grid-row:auto}}@media (max-width:760px){.book-index{padding:32px 20px}.book-hero{padding:25px 22px}.book-hero h2{font-size:22px}.book-chapters,.book-lab-grid{grid-template-columns:minmax(0,1fr)}.book-chapter h3{margin-top:16px}.book-chapter p{margin-bottom:16px}.book-toolbar{flex-direction:column;align-items:stretch}.book-section-heading{gap:12px}.book-section-heading h2{font-size:21px}.book-index .library-stat{padding:0 13px}.book-index .library-stat strong{font-size:23px}.book-index .library-stat small{font-size:11px;display:block;line-height:1.5}.book-index .library-stat>span{font-size:10px}.book-workspace{padding:22px 16px}.book-workspace-header{flex-wrap:wrap;gap:15px}.book-workspace-header .book-labels{gap:8px}.book-workspace-header h1{font-size:25px}.book-workspace-header .btn{padding:8px 12px}.book-practice{gap:14px}.book-check-panel,.book-purpose,.book-step,.book-support{padding-left:18px;padding-right:18px}.book-objectives{margin-left:18px;margin-right:18px}.book-step-heading{align-items:start;flex-wrap:wrap}.book-step-heading h2{flex:1}.book-step-result{flex-basis:100%;text-align:right}.book-topology .topo{height:190px}.book-console-body{height:320px}.book-neighbours strong{font-size:11px}.book-reset{padding:16px}}@media (prefers-reduced-motion:reduce){.book-index *,.book-workspace *{scroll-behavior:auto;transition:none}}.book-chapter-picker{display:grid;gap:10px;margin-bottom:18px}.book-chapter-picker label{font-size:12px;color:var(--muted)}.book-chapter-picker select{width:100%;min-width:0;min-height:48px;border:1px solid var(--border);border-radius:10px;background:var(--surface);color:var(--ink);padding:12px 14px;font-size:14px}.book-chapter-browser>summary{cursor:pointer;font-size:13px;color:var(--text-dim);padding:8px 0}.book-chapter-browser[open]>summary{margin-bottom:14px}.book-load-more{display:flex;justify-content:center;padding-top:24px}.book-topology-expanded .topo{height:320px}@media (max-width:600px){.book-topology-expanded .topo{height:270px}}.book-connections{padding:10px 16px;border-top:1px solid var(--border);font-size:12px}.book-connections summary{cursor:pointer;font-weight:600}.book-connections ul{padding-left:16px;display:grid;gap:8px;overflow-wrap:anywhere}