:root{--bg: #f7f4ed;--surface: #fffdf9;--ink: #2b2620;--muted: #8a8174;--line: #e6ded0;--accent: #c2410c;--accent-2: #d97706;--code-bg: #f4efe6;--code-ink: #2b2620;--code-border: #ddd6c8;--particle: rgba(180, 110, 50, .4);--note-bg: #fff7e6;--note-border: #f0a93a;--tip-bg: #edf6f2;--tip-border: #22a06b;--warn-bg: #fdf0ef;--warn-border: #e35d5d;--key-bg: #eef3fd;--key-border: #4f7fd9;--highlight: #f5c518;--on-accent: #ffffff;--mastered: #16a34a;--star: #f59e0b;--gantt-1: #d97706;--gantt-2: #0f766e;--gantt-3: #4f46e5;--gantt-4: #be123c;--shadow-sm: 0 1px 2px rgba(90, 60, 20, .04);--shadow: 0 1px 2px rgba(90, 60, 20, .06), 0 10px 32px rgba(90, 60, 20, .08);--shadow-lg: 0 4px 16px rgba(90, 60, 20, .1), 0 16px 48px rgba(90, 60, 20, .12);--radius-sm: 8px;--radius: 12px;--radius-lg: 16px;--topbar-h: 58px}:root[data-theme=dark]{--bg: #16130f;--surface: #201c16;--ink: #e9e1d3;--muted: #9b907d;--line: #342e24;--accent: #f59e0b;--accent-2: #fb923c;--code-bg: #1a1712;--code-ink: #e9e1d3;--code-border: #342e24;--particle: rgba(245, 158, 11, .3);--note-bg: #2a2212;--note-border: #8a5c12;--tip-bg: #10261d;--tip-border: #1c7a53;--warn-bg: #2a1515;--warn-border: #8a3535;--key-bg: #141d2e;--key-border: #3a5c9c;--highlight: #e5b81a;--on-accent: #ffffff;--mastered: #22c55e;--star: #f59e0b;--gantt-1: #d97706;--gantt-2: #14b8a6;--gantt-3: #818cf8;--gantt-4: #e11d48;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .3);--shadow: 0 1px 2px rgba(0, 0, 0, .4), 0 10px 32px rgba(0, 0, 0, .5);--shadow-lg: 0 4px 16px rgba(0, 0, 0, .5), 0 16px 48px rgba(0, 0, 0, .6)}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;font-family:Segoe UI,PingFang SC,Microsoft YaHei,Hiragino Sans GB,system-ui,sans-serif;background:var(--bg);color:var(--ink);line-height:1.9;transition:background .4s,color .4s;-webkit-font-smoothing:antialiased}#bgCanvas{position:fixed;top:0;right:0;bottom:0;left:0;width:100%;height:100%;z-index:0;pointer-events:none}#app{position:relative;z-index:1}.topbar{position:sticky;top:0;z-index:60;display:flex;align-items:center;gap:16px;padding:0 22px;height:var(--topbar-h);background:color-mix(in srgb,var(--bg) 86%,transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-bottom:1px solid var(--line);transition:transform .3s}.topbar.hidden,.progress-track.hidden{display:none}.brand{display:flex;align-items:center;gap:8px;border:none;background:none;color:var(--ink);font-size:.98rem;font-weight:700;cursor:pointer;letter-spacing:.02em}.brand:hover{color:var(--accent)}.topnav{display:flex;gap:4px;margin-left:auto}.topnav button{border:none;background:none;color:var(--muted);font-size:.9rem;padding:7px 14px;border-radius:8px;cursor:pointer;transition:all .2s}.topnav button:hover{color:var(--ink);background:var(--line)}.topnav button.active{color:var(--accent);font-weight:600}.theme-toggle{border:1px solid var(--line);background:var(--surface);color:var(--ink);font-size:1rem;width:36px;height:36px;border-radius:50%;cursor:pointer;transition:all .2s}.theme-toggle:hover{border-color:var(--accent);transform:rotate(20deg)}.progress-track{position:sticky;top:var(--topbar-h);z-index:59;height:3px;background:var(--line)}.progress-bar{height:100%;width:0;background:linear-gradient(90deg,var(--accent),var(--accent-2));transition:width .15s linear}.view{display:none}.view.active{display:block;animation:viewIn .4s ease both}.view-cover.active{display:flex}.view-reader.active{display:grid}@keyframes viewIn{0%{opacity:0}to{opacity:1}}.page-title{font-size:1.6rem;margin:40px auto 24px;max-width:900px;padding:0 24px;font-weight:800;letter-spacing:.02em}.view-cover{min-height:100vh;align-items:center;justify-content:center;padding:48px 24px}.cover-inner{max-width:720px;text-align:center;animation:coverRise .8s ease both}@keyframes coverRise{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:none}}.cover-kicker{letter-spacing:.28em;font-size:.82rem;color:var(--accent);margin-bottom:18px;text-transform:uppercase}.cover-title{font-size:clamp(1.9rem,5vw,3rem);font-weight:900;line-height:1.25;margin:0 0 20px;background:linear-gradient(120deg,var(--accent),var(--accent-2));-webkit-background-clip:text;background-clip:text;color:transparent}.cover-badges{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-bottom:22px}.badge{font-size:.8rem;padding:5px 14px;border:1px solid var(--line);background:var(--surface);border-radius:999px;color:var(--muted)}.cover-lines{color:var(--muted);font-size:.92rem;margin-bottom:26px}.cover-lines p{margin:4px 0}.cover-stats{display:flex;gap:28px;justify-content:center;flex-wrap:wrap;margin:10px 0 34px}.stat{text-align:center}.stat-num{display:block;font-size:2rem;font-weight:800;color:var(--accent);font-variant-numeric:tabular-nums}.stat-label{font-size:.78rem;color:var(--muted);letter-spacing:.08em}.cover-actions{display:flex;gap:14px;justify-content:center;flex-wrap:wrap}.btn-primary{border:none;background:linear-gradient(120deg,var(--accent),var(--accent-2));color:var(--on-accent);font-size:1rem;font-weight:600;padding:13px 30px;border-radius:999px;cursor:pointer;box-shadow:0 8px 20px color-mix(in srgb,var(--accent) 35%,transparent);transition:transform .2s,box-shadow .2s}.btn-primary:hover{transform:translateY(-2px);box-shadow:0 12px 28px color-mix(in srgb,var(--accent) 45%,transparent)}.btn-ghost{border:1px solid var(--line);background:var(--surface);color:var(--ink);font-size:.92rem;padding:12px 24px;border-radius:999px;cursor:pointer;transition:all .2s}.btn-ghost:hover{border-color:var(--accent);color:var(--accent)}.btn-ghost:disabled{opacity:.4;cursor:not-allowed}.cover-foot{margin-top:48px;font-size:.78rem;color:var(--muted);letter-spacing:.1em}.toc-wrap{max-width:900px;margin:0 auto;padding:0 24px 80px}.toc-meta{margin-bottom:30px}.toc-front{border:1px solid var(--line);background:var(--surface);border-radius:12px;margin-bottom:12px;overflow:hidden;box-shadow:var(--shadow)}.toc-front summary{padding:14px 20px;font-weight:700;cursor:pointer;color:var(--accent);font-size:.95rem}.toc-front-body{padding:4px 22px 18px;color:var(--muted);font-size:.9rem}.toc-front-body p{margin:10px 0}.toc-group-title{font-size:.82rem;color:var(--muted);letter-spacing:.12em;margin:28px 0 14px}.toc-chapters{display:flex;flex-direction:column;gap:10px}.toc-chapter{border:1px solid var(--line);background:var(--surface);border-radius:12px;overflow:hidden;box-shadow:var(--shadow);transition:border-color .2s,transform .2s;cursor:pointer}.toc-chapter:hover{border-color:var(--accent);transform:translate(4px)}.toc-ch-head{display:flex;align-items:center;gap:14px;padding:14px 20px}.toc-ch-num{font-size:1.3rem;font-weight:900;color:var(--accent);min-width:40px;font-variant-numeric:tabular-nums}.toc-ch-title{font-weight:700;flex:1}.toc-ch-count{font-size:.78rem;color:var(--muted)}.toc-sections{margin:0;padding:0 20px 14px 74px;list-style:none;display:flex;flex-direction:column;gap:6px}.toc-sections li{font-size:.88rem;color:var(--muted);cursor:pointer;padding:2px 0}.toc-sections li:hover{color:var(--accent)}.toc-appendix{margin-top:10px;display:flex;flex-direction:column;gap:10px}.view-reader{max-width:1240px;margin:0 auto;grid-template-columns:290px 1fr;align-items:start}.sidebar{position:sticky;top:calc(var(--topbar-h) + 3px);height:calc(100vh - var(--topbar-h) - 3px);overflow-y:auto;padding:24px 18px 40px;border-right:1px solid var(--line);background:color-mix(in srgb,var(--surface) 60%,var(--bg))}.side-head{font-size:.74rem;letter-spacing:.14em;color:var(--muted);margin:22px 8px 10px;text-transform:uppercase;font-weight:700}.side-head:first-child{margin-top:0}.side-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px}.side-sec,.side-ch{font-size:.85rem;padding:7px 12px;border-radius:8px;cursor:pointer;color:var(--muted);transition:all .18s;border:1px solid transparent}.side-sec:hover,.side-ch:hover{color:var(--ink);background:var(--line);border-color:var(--line)}.side-sec.active{color:var(--accent);background:color-mix(in srgb,var(--accent) 10%,transparent);font-weight:600;border-color:color-mix(in srgb,var(--accent) 20%,transparent)}.side-ch.active{color:var(--accent);font-weight:600}.side-id{display:inline-block;min-width:34px;font-variant-numeric:tabular-nums;color:var(--accent-2);opacity:.7;font-weight:600}.side-num{display:inline-block;min-width:28px;font-variant-numeric:tabular-nums;color:var(--accent-2);opacity:.7;font-weight:600}.side-note{padding:0 10px;color:var(--muted);font-size:.85rem}.reader-main{padding:40px 52px 80px;max-width:var(--reader-width, 780px);margin:0 auto}.chapter-head{margin-bottom:40px;text-align:center}.chapter-kicker{font-size:.78rem;letter-spacing:.22em;color:var(--accent);text-transform:uppercase;font-weight:600}.chapter-title{font-size:1.9rem;font-weight:800;margin:10px 0 18px;line-height:1.35}.chapter-rule{width:64px;height:3px;background:linear-gradient(90deg,var(--accent),var(--accent-2));border-radius:2px;margin:0 auto}.book-section{margin-bottom:38px;scroll-margin-top:calc(var(--topbar-h) + 24px)}.section-title{font-size:1.18rem;font-weight:700;margin:0 0 18px;padding-left:14px;border-left:4px solid var(--accent);color:var(--ink);scroll-margin-top:calc(var(--topbar-h) + 24px);line-height:1.4}.section-blocks p{margin:14px 0;font-size:var(--reader-font-size, 1rem);line-height:var(--reader-line-height, 2);text-align:justify;text-indent:2em}.section-blocks p:first-child{text-indent:0}.callout+p{text-indent:0}.formula{margin:18px 0;padding:16px 22px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);text-align:center;font-family:Consolas,Courier New,JetBrains Mono,Fira Code,monospace;font-size:.98rem;color:var(--accent-2);box-shadow:var(--shadow-sm);letter-spacing:.02em;overflow-x:auto;white-space:nowrap}.code-block{margin:18px 0;background:var(--code-bg);border:1px solid var(--code-border);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow-sm)}.code-block-header{display:flex;align-items:center;justify-content:space-between;padding:8px 16px;background:color-mix(in srgb,var(--code-border) 30%,transparent);border-bottom:1px solid var(--code-border);font-size:.75rem;color:var(--muted);letter-spacing:.05em}.code-block pre{margin:0;padding:16px 20px;overflow-x:auto;font-family:Consolas,Courier New,JetBrains Mono,Fira Code,monospace;font-size:.88rem;line-height:1.75;color:var(--code-ink);white-space:pre;-moz-tab-size:4;tab-size:4}.code-block code{font-family:inherit;font-size:inherit}.inline-code{display:inline;padding:1px 6px;background:var(--code-bg);border:1px solid var(--code-border);border-radius:4px;font-family:Consolas,Courier New,JetBrains Mono,monospace;font-size:.88em;color:var(--accent)}.example{margin:20px 0;background:var(--note-bg);border:1px solid var(--note-border);border-left:4px solid var(--note-border);border-radius:0 var(--radius) var(--radius) 0;padding:16px 20px;box-shadow:var(--shadow-sm)}.example-tag{font-weight:700;color:var(--accent);margin-bottom:8px;font-size:.9rem;letter-spacing:.04em}.example-body{font-size:.95rem;line-height:1.9}.example-body .code-block{margin:12px 0}.caption{margin:8px 0 14px;text-align:center;font-size:.85rem;color:var(--muted);font-weight:600;letter-spacing:.02em}.book-figure{margin:20px 0;text-align:center;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:14px;box-shadow:var(--shadow);transition:box-shadow .3s}.book-figure:hover{box-shadow:var(--shadow-lg)}.book-figure img{max-width:100%;height:auto;display:block;margin:0 auto;border-radius:4px}.book-figure[data-reveal]{transition-delay:.05s}.steps{margin:18px 0;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:18px 22px;box-shadow:var(--shadow)}.steps-title{font-weight:700;color:var(--accent);margin-bottom:12px;font-size:.92rem;letter-spacing:.03em}.step-line{display:flex;gap:12px;align-items:flex-start;padding:6px 0;font-family:Consolas,Microsoft YaHei,monospace;font-size:.92rem;line-height:1.7}.step-line:nth-child(2){transition-delay:.1s}.step-line:nth-child(3){transition-delay:.2s}.step-line:nth-child(4){transition-delay:.3s}.step-line:nth-child(5){transition-delay:.4s}.step-line:nth-child(6){transition-delay:.5s}.step-line:nth-child(7){transition-delay:.6s}.step-line:nth-child(8){transition-delay:.7s}.step-line:nth-child(9){transition-delay:.8s}.step-line:nth-child(10){transition-delay:.9s}.step-idx{flex:none;width:24px;height:24px;border-radius:50%;background:var(--accent);color:var(--on-accent);font-size:.75rem;display:inline-flex;align-items:center;justify-content:center;margin-top:3px;font-weight:700}.table-wrap{overflow-x:auto;margin:18px 0;border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);background:linear-gradient(to right,var(--surface) 30%,transparent),linear-gradient(to left,var(--surface) 30%,transparent),radial-gradient(farthest-side at 0 50%,color-mix(in srgb,var(--ink) 8%,transparent),transparent),radial-gradient(farthest-side at 100% 50%,color-mix(in srgb,var(--ink) 8%,transparent),transparent);background-repeat:no-repeat;background-size:40px 100%,40px 100%,14px 100%,14px 100%;background-position:0 0,100% 0,0 0,100% 0;background-attachment:scroll,scroll,scroll,scroll}.table-wrap table{width:100%;border-collapse:collapse;font-size:.88rem;min-width:460px}.table-wrap th{background:color-mix(in srgb,var(--accent) 9%,var(--surface));color:var(--accent);text-align:left;padding:11px 16px;white-space:nowrap;font-weight:700;font-size:.82rem;letter-spacing:.04em;border-bottom:2px solid var(--line)}.table-wrap td{padding:10px 16px;border-top:1px solid var(--line);font-family:Consolas,Microsoft YaHei,monospace;font-size:.87rem}.table-wrap tr{transition:background .2s}.table-wrap tbody tr:hover{background:color-mix(in srgb,var(--accent) 6%,transparent)}.table-wrap tbody tr:nth-child(2n){background:color-mix(in srgb,var(--accent) 3%,transparent)}.table-wrap tbody tr:nth-child(2n):hover{background:color-mix(in srgb,var(--accent) 8%,transparent)}.callout{display:flex;gap:12px;margin:18px 0;padding:16px 20px;border-radius:var(--radius);border:1px solid;font-size:.94rem;line-height:1.8;box-shadow:var(--shadow-sm)}.callout-label{flex:none;font-weight:800;font-size:.84rem;padding-top:1px;letter-spacing:.04em}.callout-note{background:var(--note-bg);border-color:var(--note-border)}.callout-note .callout-label{color:var(--note-border)}.callout-tip{background:var(--tip-bg);border-color:var(--tip-border)}.callout-tip .callout-label{color:var(--tip-border)}.callout-warn{background:var(--warn-bg);border-color:var(--warn-border)}.callout-warn .callout-label{color:var(--warn-border)}.callout-key{background:var(--key-bg);border-color:var(--key-border)}.callout-key .callout-label{color:var(--key-border)}.num-item{display:flex;gap:10px;margin:8px 0}.num-badge{flex:none;min-width:24px;height:24px;border-radius:6px;background:var(--key-bg);color:var(--key-border);font-size:.78rem;font-weight:700;display:inline-flex;align-items:center;justify-content:center;margin-top:4px}.chapter-nav-foot{display:flex;justify-content:space-between;gap:12px;margin-top:52px;padding-top:24px;border-top:2px solid var(--line);flex-wrap:wrap}[data-reveal]{opacity:0;transform:translateY(14px);transition:opacity .55s ease,transform .55s ease}[data-reveal].in{opacity:1;transform:none}#view-lab{max-width:1080px;margin:0 auto;padding:0 24px 80px}.lab-sub{color:var(--muted);max-width:760px;margin:0 auto 26px;text-align:center}#labBox{display:flex;flex-direction:column;gap:22px}.lab-stats{display:flex;gap:30px;justify-content:center;margin:0 auto 24px;flex-wrap:wrap;font-size:.92rem;color:var(--muted)}.lab-stats b{color:var(--accent);font-size:1.05rem}.lab-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:14px}.lab-search{flex:1;min-width:220px;border:1px solid var(--line);border-radius:999px;padding:10px 18px;font-size:.92rem;background:var(--surface);color:var(--ink);outline:none;transition:border-color .2s,box-shadow .2s}.lab-search:focus{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 18%,transparent)}.lab-chips{display:flex;flex-wrap:wrap;gap:8px}.lab-chip{border:1px solid var(--line);background:var(--surface);color:var(--muted);font-size:.82rem;padding:6px 14px;border-radius:999px;cursor:pointer;transition:all .2s}.lab-chip:hover{border-color:var(--accent);color:var(--accent)}.lab-chip.active{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.lab-expand{border:1px solid var(--line);background:var(--surface);color:var(--ink);font-size:.84rem;padding:8px 16px;border-radius:999px;cursor:pointer;transition:all .2s}.lab-expand:hover{border-color:var(--accent);color:var(--accent)}.lab-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(360px,1fr));gap:18px;align-items:start}@media (max-width: 760px){.lab-cards{grid-template-columns:1fr}}.chip-hide,.search-hide{display:none!important}.demo-card.hit{border-color:color-mix(in srgb,var(--accent) 60%,var(--line));box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 22%,transparent)}.demo-card.hit .demo-head h3{color:var(--accent-2)}.demo-card.mastered{background:color-mix(in srgb,var(--surface) 88%,var(--bg))}.demo-card.mastered .demo-head h3{color:var(--muted)}.demo-card.mastered .demo-head h3:before{content:"✓ ";color:var(--mastered);font-weight:800}.demo-card.mastered .demo-chapter{opacity:.55}.lab-count{font-size:.82rem;color:var(--muted);margin:-6px 0 14px}.lab-count b{color:var(--accent)}.lab-empty{grid-column:1 / -1;text-align:center;padding:56px 20px;color:var(--muted);border:1px dashed var(--line);border-radius:var(--radius-lg);background:var(--surface)}.lab-empty .empty-emoji{font-size:2.6rem;display:block;margin-bottom:10px;opacity:.6}.lab-empty .empty-tip{font-size:.84rem;margin-top:6px}.demo-card{border:1px solid var(--line);background:var(--surface);border-radius:16px;box-shadow:var(--shadow);overflow:hidden;scroll-margin-top:88px;transition:box-shadow .25s,border-color .25s}.demo-card.open{border-color:color-mix(in srgb,var(--accent) 45%,var(--line));box-shadow:0 10px 30px -14px color-mix(in srgb,var(--accent) 40%,transparent)}.demo-head{padding:20px 26px 14px;cursor:pointer;display:flex;align-items:flex-start;justify-content:space-between;gap:16px;transition:background .2s}.demo-head:hover{background:color-mix(in srgb,var(--accent) 4%,transparent)}.demo-head-text{flex:1;min-width:0}.demo-head-actions{display:flex;align-items:center;gap:4px;flex:none}.master-btn{border:none;background:none;cursor:pointer;font-size:1.35rem;line-height:1;padding:2px 6px;border-radius:8px;color:var(--muted);transition:transform .2s,color .2s}.master-btn:hover{transform:scale(1.25)}.master-btn.on{color:var(--star)}.lab-goto{font-size:1.05rem;line-height:1;text-decoration:none;padding:3px 7px;border-radius:8px;color:var(--muted);transition:all .2s}.lab-goto:hover{color:var(--accent);background:color-mix(in srgb,var(--accent) 10%,transparent)}.fold-arrow{color:var(--muted);font-size:.9rem;transition:transform .3s;align-self:center}.demo-card.open .fold-arrow{transform:rotate(180deg)}.demo-chapter{font-size:.74rem;letter-spacing:.1em;color:var(--accent-2);text-transform:uppercase}.demo-head h3{margin:6px 0 4px;font-size:1.2rem;color:var(--accent)}.demo-head p{margin:0;color:var(--muted);font-size:.9rem}.demo-body{padding:18px 26px 26px;animation:bodyIn .35s ease both}@keyframes bodyIn{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}.demo-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px}.demo-controls{display:flex;flex-direction:column;gap:10px}.demo-controls label{display:flex;align-items:center;gap:10px;font-size:.88rem;color:var(--muted)}.demo-controls input,.demo-controls select{flex:1;border:1px solid var(--line);border-radius:8px;padding:8px 12px;font-size:.92rem;background:var(--bg);color:var(--ink);outline:none;transition:border-color .2s}.demo-controls input:focus,.demo-controls select:focus{border-color:var(--accent)}.demo-btn{align-self:flex-start;border:none;background:var(--accent);color:var(--on-accent);font-size:.88rem;font-weight:600;padding:10px 20px;border-radius:999px;cursor:pointer;transition:all .2s}.demo-btn:hover{background:var(--accent-2);transform:translateY(-1px)}.demo-btn:disabled{opacity:.5;cursor:not-allowed}.out-row{display:flex;align-items:center;gap:12px;padding:6px 0;font-size:.88rem;border-bottom:1px dashed var(--line)}.out-row:last-child{border-bottom:none}.out-row span{color:var(--muted);min-width:56px}.out-row code{font-family:Consolas,monospace;font-size:.95rem;background:var(--bg);border-radius:6px;padding:2px 12px;color:var(--accent-2);letter-spacing:.05em}.demo-stage{min-height:140px;border:1px dashed var(--line);border-radius:12px;padding:16px;background:var(--bg)}.stage-hint{color:var(--muted);font-size:.85rem;margin:4px 0}.div-anim{display:flex;flex-direction:column;gap:6px}.div-step{font-size:.9rem;font-family:Consolas,Microsoft YaHei,monospace}.div-step b{color:var(--accent)}.div-sec{font-size:.82rem;font-weight:700;color:var(--accent-2);margin:8px 0 2px;letter-spacing:.05em}.warn-text{color:var(--warn-border)}.div-final{margin-top:8px;font-weight:700;color:var(--accent)}.pop{animation:pop .45s ease both}@keyframes pop{0%{opacity:0;transform:translateY(10px) scale(.97)}to{opacity:1;transform:none}}.bits{display:flex;gap:3px;flex-wrap:wrap}.bit{display:inline-flex;align-items:center;justify-content:center;width:28px;height:34px;border-radius:6px;font-family:Consolas,monospace;font-size:.9rem;background:var(--bg);border:1px solid var(--line);color:var(--muted);transition:all .2s}.bit.on{background:var(--accent);color:var(--on-accent);border-color:var(--accent)}.bit.pop{animation:bitPop .3s ease both}@keyframes bitPop{0%{transform:scale(.6)}60%{transform:scale(1.15)}to{transform:scale(1)}}.float-box{display:flex;gap:10px;flex-wrap:wrap;margin:14px 0}.float-group{display:flex;flex-direction:column;gap:6px}.float-label{font-size:.72rem;color:var(--muted);letter-spacing:.05em}.float-bits{display:flex;gap:2px}.f-sign .bit.on{background:var(--warn-border)}.f-exp .bit.on{background:var(--key-border)}.f-man .bit.on{background:var(--tip-border)}.float-legend{margin-top:8px}.hamming-box{margin-top:14px}.hamming-slots{display:flex;gap:6px;flex-wrap:wrap}.hamming-slot{display:flex;flex-direction:column;align-items:center;gap:2px;padding:6px 8px;border:1px solid var(--line);border-radius:8px;background:var(--bg);min-width:44px;transition:all .3s}.hamming-slot small{font-size:.68rem;color:var(--muted)}.hamming-slot b{font-family:Consolas,monospace;font-size:1.1rem}.hamming-slot.hl-data{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 12%,transparent)}.hamming-slot.hl-p1{box-shadow:inset 0 0 0 2px var(--note-border)}.hamming-slot.hl-p2{box-shadow:inset 0 0 0 2px var(--tip-border)}.hamming-slot.hl-p4{box-shadow:inset 0 0 0 2px var(--key-border)}.hamming-steps{margin-top:14px;display:flex;flex-direction:column;gap:6px}.hamming-steps .final{font-weight:700;color:var(--accent)}.hamming-err{margin-top:16px;border-top:1px dashed var(--line);padding-top:12px}.hamming-edit{display:flex;gap:6px;flex-wrap:wrap;margin:10px 0}.hamming-edit-slot{cursor:pointer;border:1px solid var(--line);background:var(--bg);min-width:46px}.hamming-edit-slot:hover{border-color:var(--accent);transform:translateY(-2px)}.hamming-edit-slot.err-bit{border-color:var(--warn-border);box-shadow:0 0 0 2px color-mix(in srgb,var(--warn-border) 45%,transparent);background:var(--warn-bg)}.hamming-report{display:flex;flex-direction:column;gap:6px}.hamming-report .final{color:var(--accent);font-weight:700}.task-table{display:flex;gap:10px;flex-wrap:wrap;margin:12px 0}.task-chip{font-size:.82rem;padding:4px 12px;border-radius:999px;background:var(--bg);border:1px solid var(--line);font-family:Consolas,monospace}.gantt{display:flex;height:58px;border:1px solid var(--line);border-radius:10px;overflow:hidden;margin:14px 0;background:var(--bg)}.gantt-seg{display:flex;flex-direction:column;align-items:center;justify-content:center;border-right:1px solid var(--surface);color:var(--on-accent);font-family:Consolas,monospace;opacity:.25;transition:opacity .4s,background .4s;font-size:.82rem}.gantt-seg small{font-size:.66rem;opacity:.85}.gantt-seg.done{opacity:1}.gantt-seg:nth-child(4n+1){background:var(--gantt-1)}.gantt-seg:nth-child(4n+2){background:var(--gantt-2)}.gantt-seg:nth-child(4n+3){background:var(--gantt-3)}.gantt-seg:nth-child(4n+4){background:var(--gantt-4)}.demo-metrics{font-size:.9rem;color:var(--muted);display:flex;gap:22px;flex-wrap:wrap}.demo-metrics b{color:var(--accent)}.ref-string{font-family:Consolas,monospace;font-size:.9rem;color:var(--muted);margin:12px 0;letter-spacing:.05em}.page-table{display:flex;flex-direction:column;gap:6px;margin:12px 0;overflow-x:auto}.page-header{display:flex;gap:6px}.page-ref{flex:none;width:34px;height:34px;display:inline-flex;align-items:center;justify-content:center;font-family:Consolas,monospace;font-size:.9rem;border-radius:6px;border:1px solid var(--line);color:var(--muted);transition:all .25s}.page-ref.active{background:var(--accent);color:var(--on-accent);border-color:var(--accent)}.page-row{display:flex;gap:6px;height:34px}.page-cell{flex:none;width:34px;height:34px;display:inline-flex;align-items:center;justify-content:center;font-family:Consolas,monospace;font-size:.9rem;border-radius:6px;animation:pop .35s ease both}.page-cell.hit{background:var(--tip-bg);border:1px solid var(--tip-border);color:var(--tip-border)}.page-cell.fault{background:var(--warn-bg);border:1px solid var(--warn-border);color:var(--warn-border)}.lab-group{font-size:1.05rem;font-weight:800;margin:34px 4px 16px;color:var(--ink);letter-spacing:.02em}#diagramBox,#labBox{display:flex;flex-direction:column;gap:22px}.diagram{position:relative}.svg{width:100%;height:auto;display:block}.d-layer{animation:dIn .6s ease both}@keyframes dIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.mem-shape{fill:color-mix(in srgb,var(--accent) 22%,var(--surface));stroke:var(--accent);stroke-width:1.5;transition:fill .3s}.d-layer:hover .mem-shape{fill:color-mix(in srgb,var(--accent) 45%,var(--surface))}.mem-label{font-size:.85rem;font-weight:700;fill:var(--ink);text-anchor:middle}.mem-sub{font-size:.7rem;fill:var(--muted);text-anchor:middle}.fig-svg{width:100%;height:auto;display:block;border-radius:6px}.fig-figure{margin:0}.fig-figcaption{display:none}.fig-placeholder{padding:48px 20px;text-align:center;color:var(--muted);border:1px dashed var(--line);border-radius:8px;font-size:.9rem;background:color-mix(in srgb,var(--surface) 60%,transparent)}.fig-box{fill:color-mix(in srgb,var(--accent) 8%,var(--surface));stroke:var(--accent);stroke-width:1.4}.fig-box-dim{fill:color-mix(in srgb,var(--muted) 6%,var(--surface));stroke:var(--muted);stroke-width:1.2;opacity:.95}.fig-line{stroke:var(--accent);stroke-width:1.6;fill:none}.fig-line-dim{stroke:var(--muted);stroke-width:1.2;fill:none}.fig-axis{stroke:var(--muted);stroke-width:1.6}.fig-curve{stroke:var(--accent);stroke-width:2.4;fill:none}.fig-dot{fill:var(--accent)}.fig-circle{fill:color-mix(in srgb,var(--accent) 12%,var(--surface));stroke:var(--accent);stroke-width:1.4}.fig-ellipse{fill:color-mix(in srgb,var(--accent) 10%,var(--surface));stroke:var(--accent);stroke-width:1.4}.fig-cell{fill:color-mix(in srgb,var(--accent) 10%,var(--surface));stroke:var(--accent);stroke-width:1.1}.fig-cell-alt{fill:color-mix(in srgb,var(--tip-border) 12%,var(--surface));stroke:var(--tip-border);stroke-width:1.1}.fig-arrow-head{fill:var(--accent)}.fig-t{fill:var(--ink);font-size:1rem;font-weight:600}.fig-t-sm{fill:var(--ink);font-size:.85rem}.fig-t-xs{fill:var(--muted);font-size:.72rem}.fig-t-dim{fill:var(--muted)}.fig-cap-inline{fill:var(--accent);font-size:1.05rem;font-weight:800}.figc-flow,.figc-layers,.figc-tree,.figc-split,.figc-grid{width:100%}.figc-row{display:flex;flex-wrap:wrap;gap:10px;align-items:stretch;justify-content:center}.figc-col{display:flex;flex-direction:column;gap:10px;align-items:center}.figc-card,.figc-cell{background:color-mix(in srgb,var(--accent) 8%,var(--surface));border:1.4px solid var(--accent);border-radius:8px;padding:10px 14px;text-align:center;min-width:70px}.figc-card{min-width:140px}.figc-accent{background:color-mix(in srgb,var(--accent) 20%,var(--surface))}.figc-card-label{font-weight:700;color:var(--ink);font-size:.95rem}.figc-card-sub,.figc-cell-sub{color:var(--muted);font-size:.78rem;margin-top:3px}.figc-cell-label{font-size:.85rem;color:var(--ink)}.figc-group{border:1px dashed var(--line);border-radius:10px;padding:10px;display:flex;flex-direction:column;gap:8px;align-items:center}.figc-group-title{font-size:.8rem;color:var(--muted);font-weight:700}.figc-arrow{display:flex;align-items:center;justify-content:center;color:var(--accent);position:relative}.figc-arrow-down{height:22px}.figc-arrow-down:after{content:"";width:2px;height:14px;background:var(--accent)}.figc-arrow-down:before{content:"";position:absolute;bottom:0;border:5px solid transparent;border-top-color:var(--accent)}.figc-arrow-up{height:22px}.figc-arrow-up:after{content:"";width:2px;height:14px;background:var(--accent)}.figc-arrow-up:before{content:"";position:absolute;top:0;border:5px solid transparent;border-bottom-color:var(--accent)}.figc-arrow-right{width:40px;height:2px;background:var(--accent)}.figc-arrow-right:after{content:"";position:absolute;right:0;border:5px solid transparent;border-left-color:var(--accent)}.figc-arrow-left{width:40px;height:2px;background:var(--accent)}.figc-arrow-left:after{content:"";position:absolute;left:0;border:5px solid transparent;border-right-color:var(--accent)}.figc-arrow-label{font-size:.72rem;color:var(--muted);margin:0 6px;white-space:nowrap}.figc-flow{display:flex;flex-direction:column;align-items:center;gap:4px}.figc-flow-step{display:flex;flex-direction:column;align-items:center;width:100%;max-width:520px}.figc-flow-card{width:100%}.figc-layers{display:flex;flex-direction:column;gap:8px;align-items:center}.figc-layer{width:100%}.figc-layer-title{font-size:.78rem;color:var(--muted);font-weight:700;margin-bottom:4px;text-align:center}.figc-layer-items{display:flex;flex-wrap:wrap;gap:8px;justify-content:center}.figc-grid{display:flex;flex-direction:column;gap:6px}.figc-grid-head,.figc-grid-row{display:grid;gap:6px}.figc-grid-hcell{background:color-mix(in srgb,var(--accent) 15%,var(--surface));font-weight:700;font-size:.8rem;padding:6px 8px;border-radius:6px;text-align:center;color:var(--accent)}.figc-grid-cell{border:1px solid var(--line);border-radius:6px;padding:6px 8px;font-size:.8rem;text-align:center;color:var(--ink);background:var(--surface)}.figc-tree{display:flex;flex-direction:column;align-items:center}.figc-tree-children{display:flex;flex-wrap:wrap;gap:10px;justify-content:center}.figc-split{display:grid;grid-template-columns:1fr 1fr;gap:16px}.figc-legend{display:flex;flex-wrap:wrap;gap:14px;justify-content:center;font-size:.78rem;color:var(--muted);margin-top:6px}.figc-legend-item:before{content:"■ ";color:var(--accent)}.figc-note{font-size:.8rem;color:var(--muted);text-align:center;padding:6px 0}@media (max-width: 640px){.figc-split{grid-template-columns:1fr}}.fig-int{display:grid;grid-template-columns:200px 1fr;gap:16px;align-items:start;padding:4px 0}@media (max-width: 640px){.fig-int{grid-template-columns:1fr}}.fig-int-left{display:flex;flex-direction:column;gap:10px}.fig-int-node{display:flex;flex-direction:column;gap:2px;text-align:left;padding:10px 14px;border:1.4px solid var(--line);border-radius:10px;background:var(--surface);color:var(--ink);cursor:pointer;font:inherit;transition:all .2s ease}.fig-int-node:hover{border-color:var(--accent);transform:translate(3px)}.fig-int-node.active{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 14%,var(--surface));box-shadow:0 2px 8px color-mix(in srgb,var(--accent) 25%,transparent)}.fig-int-node-label{font-weight:700;font-size:.92rem}.fig-int-node-sub{font-size:.72rem;color:var(--muted)}.fig-int-right{display:flex;flex-direction:column;gap:10px}.fig-int-target{padding:12px 16px;border:1.4px solid var(--line);border-radius:10px;background:var(--surface);opacity:.45;transition:all .25s ease}.fig-int-target.active{opacity:1;border-color:var(--accent);background:color-mix(in srgb,var(--accent) 8%,var(--surface));box-shadow:0 2px 10px color-mix(in srgb,var(--accent) 20%,transparent)}.fig-int-target-label{font-weight:700;color:var(--ink);font-size:.92rem}.fig-int-target-desc{margin-top:5px;font-size:.84rem;color:var(--muted);line-height:1.7}.fig-int-hint{grid-column:1 / -1;text-align:center;font-size:.8rem;color:var(--muted);background:color-mix(in srgb,var(--accent) 6%,transparent);border-radius:8px;padding:8px 12px;min-height:1.6em}.vn-box{fill:var(--surface);stroke:var(--line);stroke-width:1.5;transition:stroke .3s,fill .3s}.vn-ctrl{fill:color-mix(in srgb,var(--note-border) 12%,var(--surface))}.vn-alu{fill:color-mix(in srgb,var(--tip-border) 12%,var(--surface))}.vn-mem{fill:color-mix(in srgb,var(--key-border) 12%,var(--surface))}.vn-io{fill:color-mix(in srgb,var(--accent) 10%,var(--surface))}.vn-box:hover{stroke:var(--accent)}.vn-label{font-size:.82rem;font-weight:700;fill:var(--ink);text-anchor:middle}.vn-cpu{fill:none;stroke:var(--accent);stroke-width:1.5;stroke-dasharray:6 4}.vn-cpu-label{font-size:.8rem;fill:var(--accent);font-weight:700;text-anchor:middle}.vn-line{fill:none;stroke-width:1.6}.vn-ctrl-line{stroke:var(--note-border);stroke-dasharray:5 4;animation:dashFlow 1.2s linear infinite}.vn-data-line{stroke:var(--key-border)}.arrow-head{fill:var(--muted)}.d-legend-text{font-size:.72rem;fill:var(--muted)}.d-legend{text-align:center;font-size:.8rem;color:var(--muted);margin-top:8px}@keyframes dashFlow{to{stroke-dashoffset:-18}}.ts-circle{fill:var(--surface);stroke-width:2.5;transition:all .3s}.ts-run .ts-circle{stroke:var(--accent);fill:color-mix(in srgb,var(--accent) 12%,var(--surface))}.ts-ready .ts-circle{stroke:var(--tip-border)}.ts-block .ts-circle{stroke:var(--warn-border)}.ts-label{font-size:.9rem;font-weight:800;fill:var(--ink);text-anchor:middle}.ts-state{cursor:pointer}.ts-state:hover .ts-circle{filter:brightness(1.15)}.ts-line{fill:none;stroke:var(--muted);stroke-width:1.6}.ts-l1{stroke:var(--tip-border)}.ts-l2{stroke:var(--accent)}.ts-l3{stroke:var(--warn-border)}.ts-l4{stroke:var(--key-border)}.ts-note{font-size:.7rem;fill:var(--muted)}@keyframes tsPulse{0%,to{opacity:1}50%{opacity:.45}}.ts-run{animation:tsPulse 2.2s ease-in-out infinite}.ir-flow{display:flex;align-items:flex-start;gap:8px;flex-wrap:wrap}.ir-step{flex:1;min-width:120px;text-align:center}@keyframes irIn{0%{opacity:0;transform:translateY(14px) scale(.95)}to{opacity:1;transform:none}}.ir-box{border:2px solid var(--accent);background:var(--surface);border-radius:12px;padding:14px 8px;display:flex;flex-direction:column;gap:4px;align-items:center;transition:all .3s}.ir-box b{width:26px;height:26px;border-radius:50%;background:var(--accent);color:var(--on-accent);display:inline-flex;align-items:center;justify-content:center;font-size:.8rem}.ir-box span{font-weight:700;font-size:.86rem;color:var(--ink)}.ir-desc{font-size:.72rem;color:var(--muted);margin-top:6px;line-height:1.5}.logic-inputs{display:flex;gap:10px;flex-wrap:wrap}.logic-btn{border:1px solid var(--line);background:var(--bg);color:var(--muted);font-family:Consolas,monospace;font-size:.88rem;padding:8px 16px;border-radius:8px;cursor:pointer;transition:all .2s}.logic-btn.on{background:var(--accent);color:var(--on-accent);border-color:var(--accent)}.gate-wrap{display:flex;justify-content:center;margin-bottom:14px}.gate-svg{width:140px;height:auto}.gate-path{fill:color-mix(in srgb,var(--accent) 14%,var(--surface));stroke:var(--accent);stroke-width:2}.gate-wire{stroke:var(--muted);stroke-width:1.8}.gate-dot{fill:var(--accent)}.truth-table{display:flex;flex-direction:column;gap:3px;font-family:Consolas,monospace}.tt-row{display:flex;gap:3px;animation:dIn .4s ease both}.tt-cell{flex:1;text-align:center;padding:5px 0;border-radius:5px;border:1px solid var(--line);font-size:.85rem;color:var(--ink);transition:all .25s}.tt-head{font-weight:700;background:color-mix(in srgb,var(--accent) 12%,var(--surface));color:var(--accent)}.tt-row-active .tt-cell{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 10%,var(--surface))}.tt-active{font-weight:800;color:var(--accent)}.rel-box{fill:color-mix(in srgb,var(--tip-border) 16%,var(--surface));stroke:var(--tip-border);stroke-width:1.5}.rel-label{font-size:.78rem;fill:var(--ink);text-anchor:middle;font-family:Consolas,monospace}.pipe{margin:14px 0;overflow-x:auto}.pipe-head{display:flex;gap:5px;margin-bottom:5px}.pipe-stage{flex:1;min-width:60px;text-align:center;font-size:.76rem;font-weight:700;color:var(--accent);background:color-mix(in srgb,var(--accent) 10%,var(--surface));border-radius:6px;padding:5px 0}.pipe-body{display:flex;flex-direction:column;gap:4px}.pipe-row{display:flex;gap:5px;opacity:0}.pipe-row.pipe-in{animation:irIn .4s ease both}.pipe-cell{flex:1;min-width:60px;text-align:center;padding:6px 0;border-radius:6px;border:1px solid var(--line);font-family:Consolas,monospace;font-size:.82rem;color:var(--muted);transition:all .2s}.pipe-cell.busy{background:color-mix(in srgb,var(--accent) 22%,var(--surface));border-color:var(--accent);color:var(--accent);font-weight:700}.site-foot{text-align:center;font-size:.78rem;color:var(--muted);padding:32px 0 40px;border-top:1px solid var(--line);margin-top:20px}sup{font-size:.72em;color:var(--accent)}sub{font-size:.72em;color:var(--accent-2)}.notes-toggle{border:1px solid var(--line);background:var(--surface);color:var(--ink);font-size:.88rem;padding:7px 14px;border-radius:999px;cursor:pointer;transition:all .2s}.notes-toggle:hover{border-color:var(--accent);color:var(--accent)}.selection-toolbar{position:fixed;z-index:120;display:flex;gap:4px;padding:5px;background:var(--surface);border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow)}.selection-toolbar[hidden]{display:none}.selection-toolbar button{border:none;background:none;color:var(--ink);font-size:.85rem;padding:6px 10px;border-radius:7px;cursor:pointer;white-space:nowrap}.selection-toolbar button:hover{background:var(--line);color:var(--accent)}.annotation-popover{position:fixed;z-index:125;display:flex;flex-direction:column;gap:4px;padding:6px;background:var(--surface);border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow)}.annotation-popover[hidden]{display:none}.annotation-popover button{border:none;background:none;color:var(--ink);font-size:.85rem;padding:7px 12px;border-radius:7px;cursor:pointer;text-align:left;white-space:nowrap}.annotation-popover button:hover{background:var(--line);color:var(--accent)}.annotation-popover button.danger{color:var(--warn-border)}.annotation-popover button.danger:hover{background:var(--warn-bg)}.annotation-popover button:disabled{opacity:.45;cursor:not-allowed}mark.hl{background:color-mix(in srgb,var(--highlight) 38%,transparent);border-radius:3px;padding:0 1px;cursor:pointer;transition:background .2s,box-shadow .2s}mark.hl:hover{background:color-mix(in srgb,var(--highlight) 60%,transparent)}mark.hl.has-note{border-bottom:2px solid color-mix(in srgb,var(--accent) 70%,transparent)}mark.hl.flash{animation:hl-flash 1.6s ease;box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 35%,transparent)}@keyframes hl-flash{0%,to{box-shadow:0 0 0 0 transparent}30%{box-shadow:0 0 0 6px color-mix(in srgb,var(--accent) 45%,transparent)}}.notes-panel{position:fixed;top:0;right:0;bottom:0;width:380px;max-width:92vw;z-index:110;background:var(--surface);border-left:1px solid var(--line);box-shadow:var(--shadow-lg);display:flex;flex-direction:column;transform:translate(0);transition:transform .25s ease}.notes-panel[hidden]{display:none}.notes-panel-head{display:flex;align-items:center;justify-content:space-between;padding:16px 18px;border-bottom:1px solid var(--line)}.notes-panel-head h3{margin:0;font-size:1.05rem}.notes-panel-head button{border:none;background:none;color:var(--muted);font-size:1.4rem;line-height:1;cursor:pointer;padding:4px 8px;border-radius:6px}.notes-panel-head button:hover{color:var(--accent);background:var(--line)}.notes-panel-body{flex:1;overflow-y:auto;padding:14px 16px 30px}.notes-empty{color:var(--muted);text-align:center;padding:40px 10px;font-size:.92rem;line-height:2}.note-item{border:1px solid var(--line);border-radius:10px;padding:12px 14px;margin-bottom:12px;background:var(--bg)}.note-meta{font-size:.76rem;color:var(--muted);margin-bottom:6px;letter-spacing:.03em}.note-quote{margin:6px 0;padding:6px 10px;border-left:3px solid var(--highlight);background:color-mix(in srgb,var(--highlight) 12%,transparent);border-radius:0 6px 6px 0;font-size:.88rem;color:var(--ink);max-height:72px;overflow-y:auto}.note-body{margin:8px 0 4px;font-size:.9rem;color:var(--ink);white-space:pre-wrap}.note-muted{margin:8px 0 4px;font-size:.82rem;color:var(--muted)}.note-actions{display:flex;gap:6px;margin-top:8px;flex-wrap:wrap}.note-actions button{border:1px solid var(--line);background:var(--surface);color:var(--ink);font-size:.8rem;padding:4px 10px;border-radius:6px;cursor:pointer}.note-actions button:hover{border-color:var(--accent);color:var(--accent)}.note-actions button.danger:hover{border-color:var(--warn-border);color:var(--warn-border)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:130;background:color-mix(in srgb,var(--ink) 45%,transparent);display:flex;align-items:center;justify-content:center;padding:20px}.modal-backdrop[hidden]{display:none}.modal{width:560px;max-width:100%;background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:20px 22px;box-shadow:var(--shadow)}.modal h3{margin:0 0 10px}.note-selected{margin:0 0 12px;padding:8px 12px;border-left:3px solid var(--highlight);background:color-mix(in srgb,var(--highlight) 12%,transparent);border-radius:0 8px 8px 0;font-size:.9rem;max-height:96px;overflow-y:auto;white-space:pre-wrap;color:var(--ink)}#noteText{width:100%;box-sizing:border-box;border:1px solid var(--line);border-radius:8px;background:var(--bg);color:var(--ink);padding:10px 12px;font:inherit;font-size:.92rem;resize:vertical}#noteText:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 18%,transparent)}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:14px}.modal-actions .danger{color:var(--warn-border);border-color:color-mix(in srgb,var(--warn-border) 45%,var(--line))}.modal-actions .danger:hover{background:var(--warn-bg);border-color:var(--warn-border);color:var(--warn-border)}.modal-actions button:disabled{opacity:.45;cursor:not-allowed}@media (max-width: 900px){.view-reader{grid-template-columns:1fr}.sidebar{position:static;height:auto;border-right:none;border-bottom:1px solid var(--line);max-height:40vh}.reader-main{padding:28px 22px 60px}.demo-grid{grid-template-columns:1fr}.notes-panel{width:340px}}@media (max-width: 560px){.brand span{display:none}.topbar{padding:0 12px;gap:8px}.topnav button{padding:6px 10px;font-size:.82rem}.cover-stats{gap:18px}.stat-num{font-size:1.6rem}.chapter-title{font-size:1.5rem}.toc-sections{padding-left:20px}.notes-panel{width:100%;max-width:100%}.selection-toolbar button{font-size:.8rem;padding:5px 8px}}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--line);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--muted)}*{scrollbar-width:thin;scrollbar-color:var(--line) transparent}@media print{#bgCanvas,.topbar,.progress-track,.sidebar,.notes-panel,.selection-toolbar,.annotation-popover,.modal-backdrop,.chapter-nav-foot,.site-foot,.theme-toggle,.notes-toggle{display:none!important}body{background:#fff;color:#000;font-size:11pt;line-height:1.7}.view-reader{display:block!important;max-width:100%}.reader-main{padding:0;max-width:100%}.book-figure{break-inside:avoid;box-shadow:none;border:1px solid #ccc}.table-wrap,.code-block,.example,.callout,.steps{break-inside:avoid;box-shadow:none}.chapter-head{text-align:left}.chapter-rule{margin:0}a{color:inherit;text-decoration:none}}::selection{background:color-mix(in srgb,var(--accent) 25%,transparent);color:var(--ink)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}.topbar-btn{border:1px solid var(--line);background:transparent;color:var(--ink);border-radius:var(--radius-sm);padding:6px 10px;cursor:pointer;font-size:.95rem;transition:background .2s,transform .2s}.topbar-btn:hover{background:color-mix(in srgb,var(--accent) 10%,transparent);transform:translateY(-1px)}.settings-pop[hidden]{display:none}.settings-pop{position:fixed;top:calc(var(--topbar-h) + 10px);right:18px;z-index:90;width:260px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-lg);padding:14px 16px;display:flex;flex-direction:column;gap:12px}.settings-row{display:flex;align-items:center;gap:6px}.settings-label{flex:0 0 44px;color:var(--muted);font-size:.85rem}.settings-row button{border:1px solid var(--line);background:transparent;color:var(--ink);border-radius:6px;padding:4px 10px;cursor:pointer;font-size:.85rem;transition:background .2s}.settings-row button:hover{background:color-mix(in srgb,var(--accent) 12%,transparent)}.settings-row button.ghost{color:var(--muted)}.settings-hint{color:var(--muted);font-size:.75rem;text-align:center}.searchbar{position:fixed;top:calc(var(--topbar-h) + 12px);right:18px;z-index:90;width:min(420px,calc(100vw - 36px));background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-lg);padding:8px}.searchbar-inner{display:flex;align-items:center;gap:6px}.searchbar-icon{color:var(--muted)}.searchbar input{flex:1;border:none;outline:none;background:transparent;color:var(--ink);font-size:.95rem;padding:4px}.searchbar-count{color:var(--muted);font-size:.8rem;min-width:62px;text-align:center;font-variant-numeric:tabular-nums}.searchbar-btn{border:1px solid var(--line);background:transparent;color:var(--ink);border-radius:6px;padding:3px 9px;cursor:pointer;font-size:.9rem}.searchbar-btn:hover{background:color-mix(in srgb,var(--accent) 12%,transparent)}mark.search-hit{background:color-mix(in srgb,var(--accent) 30%,transparent);color:inherit;border-radius:3px;padding:0 1px}mark.search-cur{background:var(--accent);color:var(--on-accent)}mark.search-hit.flash{animation:searchFlash .35s ease 3}@keyframes searchFlash{50%{box-shadow:0 0 0 3px var(--accent)}}.book-figure{position:relative}.fig-zoom-btn{position:absolute;top:8px;right:8px;z-index:3;border:1px solid var(--line);background:color-mix(in srgb,var(--surface) 80%,transparent);color:var(--ink);border-radius:7px;width:30px;height:30px;cursor:pointer;font-size:.9rem;opacity:.35;transition:opacity .2s,background .2s}.book-figure:hover .fig-zoom-btn{opacity:.95}.fig-zoom-btn:hover{background:color-mix(in srgb,var(--accent) 16%,transparent)}body.viewer-open{overflow:hidden}.viewer{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000}.viewer[hidden]{display:none}.viewer-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;background:#000000c7}.viewer-dialog{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column}.viewer-toolbar{position:relative;z-index:2;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 16px;color:#eee;background:#14120e99;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.viewer-caption{font-size:.9rem;opacity:.9;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.viewer-tools{display:flex;gap:6px;flex:none}.viewer-tools button{border:1px solid rgba(255,255,255,.3);background:#ffffff14;color:#eee;border-radius:7px;min-width:32px;height:32px;cursor:pointer;font-size:1rem;transition:background .2s}.viewer-tools button:hover{background:#fff3}.viewer-stage{position:relative;flex:1;overflow:hidden;display:flex;align-items:center;justify-content:center;cursor:grab;touch-action:none}.viewer-stage.dragging{cursor:grabbing}.viewer-zoom{transform-origin:center center;will-change:transform;transition:transform .12s ease-out}.viewer-stage.dragging .viewer-zoom{transition:none}.viewer-content{display:flex;align-items:center;justify-content:center}.viewer-content .book-figure{border:none;background:transparent;box-shadow:none;margin:0;padding:8px}.viewer-content .fig-svg{width:min(92vw,92vh,1100px);height:auto}.lab-speed{display:flex;align-items:center;gap:6px;font-size:.85rem;color:var(--muted);white-space:nowrap}.lab-speed select{border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:6px;padding:4px 6px}.div-steps{display:flex;flex-direction:column;gap:6px}.div-step{font-size:.9rem;font-family:Consolas,Microsoft YaHei,monospace;white-space:pre-wrap;word-break:break-all;opacity:0;transform:translate(-6px)}.div-step.in{opacity:1;transform:none;transition:all .3s ease}.div-step code{font-family:inherit;background:color-mix(in srgb,var(--accent) 6%,transparent);border-radius:5px;padding:2px 8px;letter-spacing:.04em}.div-result{margin-top:10px;padding:8px 12px;border-radius:8px;background:var(--surface);border:1px solid var(--line);font-size:.9rem}.div-result b{color:var(--accent);font-family:Consolas,monospace;letter-spacing:.05em}.demo-note{font-size:.84rem;color:var(--muted);line-height:1.7;margin:0}.cpm-table{overflow-x:auto;margin-bottom:8px}.cpm-table table{border-collapse:collapse;width:100%;font-size:.86rem}.cpm-table th,.cpm-table td{border:1px solid var(--line);padding:6px 8px;text-align:center;white-space:nowrap}.cpm-table th{background:var(--surface);color:var(--muted);font-weight:600}.cpm-table td[data-c]{font-family:Consolas,monospace;color:var(--accent-2)}.cpm-table tr.cpm-crit{background:color-mix(in srgb,var(--mastered) 14%,transparent)}.cpm-table tr.cpm-crit td{color:var(--ink);font-weight:600}.cpm-table td.flash{animation:cellFlash .5s ease}@keyframes cellFlash{0%{background:var(--accent);color:var(--on-accent)}to{background:transparent}}.code-copy{border:1px solid var(--code-border);background:transparent;color:var(--muted);border-radius:5px;padding:2px 9px;cursor:pointer;font-size:.72rem;letter-spacing:.04em;transition:color .2s,background .2s}.code-copy:hover{color:var(--accent);background:color-mix(in srgb,var(--accent) 8%,transparent)}.code-copy.ok{color:var(--mastered);border-color:var(--mastered)}.map-hint,.path-hint{color:var(--muted);font-size:.88rem;margin:-10px 0 16px}.map-list{display:flex;flex-direction:column;gap:12px;margin-bottom:36px}.map-domain{border:1px solid var(--line);border-radius:14px;background:var(--surface);overflow:hidden;transition:border-color .2s}.map-domain.open{border-color:color-mix(in srgb,var(--accent) 45%,var(--line))}.map-domain-head{display:flex;align-items:center;gap:14px;padding:14px 18px;cursor:pointer;transition:background .2s;text-align:left}.map-domain-head:hover{background:color-mix(in srgb,var(--accent) 4%,transparent)}.map-icon{font-size:1.5rem;flex:none}.map-domain-title{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}.map-domain-title b{font-size:1.02rem;color:var(--ink)}.map-domain-summary{font-size:.82rem;color:var(--muted)}.map-domain-meta em{font-style:normal;font-size:.76rem;color:var(--accent-2);white-space:nowrap;background:color-mix(in srgb,var(--accent) 8%,transparent);padding:3px 11px;border-radius:999px}.map-domain-meta em.muted{color:var(--muted);background:var(--bg)}.map-domain-body{padding:6px 18px 18px;border-top:1px dashed var(--line);display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px}.map-topic{border:1px solid var(--line);border-radius:10px;padding:12px 14px;background:var(--bg)}.map-topic-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px}.map-topic-name{font-weight:700;font-size:.92rem;color:var(--ink)}.map-sec{border:none;background:none;color:var(--accent-2);font-size:.76rem;cursor:pointer;padding:2px 6px;border-radius:6px;white-space:nowrap}.map-sec:hover{background:color-mix(in srgb,var(--accent) 10%,transparent);color:var(--accent)}.map-points{margin:0 0 8px;padding-left:18px;color:var(--muted);font-size:.82rem;display:flex;flex-direction:column;gap:3px}.map-points li::marker{color:var(--accent-2)}.map-tools{display:flex;flex-wrap:wrap;gap:6px}.map-tool-pill{border:1px solid color-mix(in srgb,var(--accent) 40%,var(--line));background:color-mix(in srgb,var(--accent) 7%,transparent);color:var(--accent-2);font-size:.78rem;padding:4px 10px;border-radius:999px;cursor:pointer;transition:all .2s;font-weight:600}.map-tool-pill:hover{background:var(--accent);color:var(--on-accent);border-color:var(--accent)}.map-none{font-size:.78rem;color:var(--muted);opacity:.75}.map-domain .fold-arrow{align-self:flex-start;margin-top:3px}.map-domain.open .fold-arrow{transform:rotate(180deg)}.lab-domain-group{margin-bottom:24px}.lab-domain-group.hidden{display:none}.lab-domain-head{margin:18px 0 12px;font-size:.98rem;color:var(--ink);display:flex;align-items:center;gap:8px}.lab-domain-head span{font-size:.76rem;color:var(--muted);font-weight:400;background:var(--surface);border:1px solid var(--line);padding:2px 10px;border-radius:999px}.demo-tags{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.demo-domain-tag{font-size:.72rem;color:var(--ink);background:var(--bg);border:1px solid var(--line);padding:2px 8px;border-radius:999px}.lab-empty-global{margin-top:16px}.lab-path{margin-top:8px}.path-card{border:1px solid var(--line);border-radius:14px;background:var(--surface);padding:14px 18px;margin-bottom:12px}.path-head{display:flex;flex-direction:column;gap:2px;margin-bottom:12px}.path-head b{color:var(--ink);font-size:.98rem}.path-head span{color:var(--muted);font-size:.82rem}.path-steps{display:flex;align-items:center;flex-wrap:wrap;gap:8px}.path-step{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--line);background:var(--bg);color:var(--ink);font-size:.82rem;padding:7px 14px;border-radius:999px;cursor:pointer;transition:all .2s}.path-step i{font-style:normal;background:var(--accent);color:var(--on-accent);width:20px;height:20px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:.72rem}.path-step:hover{border-color:var(--accent);color:var(--accent);transform:translateY(-1px)}.path-arrow{color:var(--muted);font-size:.9rem}.demo-card.flash-card{animation:labFlash 1.2s ease}@keyframes labFlash{0%{box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 60%,transparent)}to{box-shadow:var(--shadow)}}@media (max-width: 640px){.settings-pop,.searchbar{right:10px}.reader-main{padding:28px 18px 60px}.map-domain-body{grid-template-columns:1fr}.path-steps{flex-direction:column;align-items:stretch}.path-arrow{transform:rotate(90deg);align-self:center}}
