:root{--bg:#fcfcfd;--bg-soft:#f3f4f8;--bg-raised:#fff;--bg-sunken:#eef0f5;--fg:#1b1e27;--fg-strong:#0f1219;--fg-muted:#576071;--border:#dfe2ea;--border-strong:#c4c9d6;--link:#3730a3;--accent:#4338ca;--accent-fg:#fff;--accent-soft:#eceafd;--ok:#166534;--ok-soft:#e6f5eb;--bad:#b42318;--bad-soft:#fdecea;--warn:#8a4a05;--warn-soft:#fff2d9;--focus:#4338ca;--code-bg:#f5f6fa;--code-fg:#1f2430;--code-gutter-bg:#eceef4;--code-gutter-fg:#6a7384;--code-active-line:#e8ebf8;--code-selection:#cfd5fb;--tok-keyword:#a626a4;--tok-string:#1f7a3d;--tok-number:#a15a00;--tok-comment:#6a7384;--tok-type:#0b6fa4;--tok-func:#3730a3;--h1:#4f46e5;--h1-soft:#eef0ff;--h1-ink:#3730a3;--h2:#0d9488;--h2-soft:#e3f6f3;--h2-ink:#0f5f57;--h3:#d97706;--h3-soft:#fff1da;--h3-ink:#8a4a05;--h4:#e11d48;--h4-soft:#ffe7ec;--h4-ink:#9f1239;--h5:#0284c7;--h5-soft:#e2f2fc;--h5-ink:#075985;--h6:#16a34a;--h6-soft:#e5f6ea;--h6-ink:#166534;--h7:#9333ea;--h7-soft:#f1e6fd;--h7-ink:#6b21a8;--h8:#ea580c;--h8-soft:#ffeadd;--h8-ink:#9a3412;--shadow-sm:0 1px 2px #1418280f, 0 1px 1px #1418280a;--shadow:0 8px 24px #14182824;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--radius:10px;--radius-sm:6px;--measure:70ch;--font:system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--mono:ui-monospace, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;--text-sm:.875rem;--text-base:1.0625rem;--leading:1.75}:root[data-theme=dark]{--bg:#0e1117;--bg-soft:#151a23;--bg-raised:#1a202b;--bg-sunken:#11151d;--fg:#e6e9f0;--fg-strong:#f6f8fc;--fg-muted:#a3adbf;--border:#2b3342;--border-strong:#3d485c;--link:#a5b4ff;--accent:#8b9bff;--accent-fg:#0b1020;--accent-soft:#212a52;--ok:#6fd48b;--ok-soft:#14301e;--bad:#ff8f87;--bad-soft:#3a1917;--warn:#f1c35b;--warn-soft:#382c0e;--focus:#a5b4ff;--code-bg:#131822;--code-fg:#e3e7ee;--code-gutter-bg:#1a202c;--code-gutter-fg:#8793a6;--code-active-line:#1f2736;--code-selection:#2d4375;--tok-keyword:#d68cf0;--tok-string:#8fd49f;--tok-number:#f0b36b;--tok-comment:#8793a6;--tok-type:#78c3ee;--tok-func:#a5b4ff;--h1:#8b9bff;--h1-soft:#1f2650;--h1-ink:#c7d0ff;--h2:#2dd4bf;--h2-soft:#10312e;--h2-ink:#99efe3;--h3:#fbbf24;--h3-soft:#3a2a0c;--h3-ink:#fde3a1;--h4:#fb7185;--h4-soft:#3d1620;--h4-ink:#fecdd3;--h5:#38bdf8;--h5-soft:#0f2d40;--h5-ink:#bae6fd;--h6:#4ade80;--h6-soft:#12301d;--h6-ink:#bbf7d0;--h7:#c084fc;--h7-soft:#2d1a45;--h7-ink:#e9d5ff;--h8:#fb923c;--h8-soft:#3a1f0e;--h8-ink:#fed7aa;--shadow-sm:0 1px 2px #0006;--shadow:0 10px 28px #0000008c;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}@media (prefers-color-scheme:dark){:root:not([data-theme=light]):not([data-theme=dark]){--bg:#0e1117;--bg-soft:#151a23;--bg-raised:#1a202b;--bg-sunken:#11151d;--fg:#e6e9f0;--fg-strong:#f6f8fc;--fg-muted:#a3adbf;--border:#2b3342;--border-strong:#3d485c;--link:#a5b4ff;--accent:#8b9bff;--accent-fg:#0b1020;--accent-soft:#212a52;--ok:#6fd48b;--ok-soft:#14301e;--bad:#ff8f87;--bad-soft:#3a1917;--warn:#f1c35b;--warn-soft:#382c0e;--focus:#a5b4ff;--code-bg:#131822;--code-fg:#e3e7ee;--code-gutter-bg:#1a202c;--code-gutter-fg:#8793a6;--code-active-line:#1f2736;--code-selection:#2d4375;--tok-keyword:#d68cf0;--tok-string:#8fd49f;--tok-number:#f0b36b;--tok-comment:#8793a6;--tok-type:#78c3ee;--tok-func:#a5b4ff;--h1:#8b9bff;--h1-soft:#1f2650;--h1-ink:#c7d0ff;--h2:#2dd4bf;--h2-soft:#10312e;--h2-ink:#99efe3;--h3:#fbbf24;--h3-soft:#3a2a0c;--h3-ink:#fde3a1;--h4:#fb7185;--h4-soft:#3d1620;--h4-ink:#fecdd3;--h5:#38bdf8;--h5-soft:#0f2d40;--h5-ink:#bae6fd;--h6:#4ade80;--h6-soft:#12301d;--h6-ink:#bbf7d0;--h7:#c084fc;--h7-soft:#2d1a45;--h7-ink:#e9d5ff;--h8:#fb923c;--h8-soft:#3a1f0e;--h8-ink:#fed7aa;--shadow-sm:0 1px 2px #0006;--shadow:0 10px 28px #0000008c;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}@media print{:root:root:root{--bg:#fff;--bg-soft:#f4f4f4;--bg-raised:#fff;--bg-sunken:#f4f4f4;--fg:#000;--fg-strong:#000;--fg-muted:#333;--border:#999;--border-strong:#666;--link:#000;--accent:#4338ca;--accent-fg:#fff;--accent-soft:#eceafd;--ok:#166534;--ok-soft:#e6f5eb;--bad:#b42318;--bad-soft:#fdecea;--warn:#8a4a05;--warn-soft:#fff2d9;--focus:#4338ca;--code-bg:#fff;--code-fg:#000;--code-gutter-bg:#fff;--code-gutter-fg:#6a7384;--code-active-line:#e8ebf8;--code-selection:#cfd5fb;--tok-keyword:#000;--tok-string:#000;--tok-number:#000;--tok-comment:#444;--tok-type:#000;--tok-func:#000;--h1:#4f46e5;--h1-soft:#eef0ff;--h1-ink:#3730a3;--h2:#0d9488;--h2-soft:#e3f6f3;--h2-ink:#0f5f57;--h3:#d97706;--h3-soft:#fff1da;--h3-ink:#8a4a05;--h4:#e11d48;--h4-soft:#ffe7ec;--h4-ink:#9f1239;--h5:#0284c7;--h5-soft:#e2f2fc;--h5-ink:#075985;--h6:#16a34a;--h6-soft:#e5f6ea;--h6-ink:#166534;--h7:#9333ea;--h7-soft:#f1e6fd;--h7-ink:#6b21a8;--h8:#ea580c;--h8-soft:#ffeadd;--h8-ink:#9a3412;--shadow-sm:none;--shadow:none;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}body{background:var(--bg);color:var(--fg);font-family:var(--font);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;flex-direction:column;min-height:100vh;margin:0;font-size:1rem;line-height:1.6;display:flex}#root{flex-direction:column;min-height:100vh;display:flex}a{color:var(--link);text-underline-offset:.18em;text-decoration-thickness:1px}a:hover{text-decoration-thickness:2px}:focus-visible{outline:3px solid var(--focus);outline-offset:2px;border-radius:3px}h1,h2,h3,h4,h5{color:var(--fg-strong);letter-spacing:-.012em;text-wrap:balance;margin:1.6em 0 .5em;line-height:1.25}h1{letter-spacing:-.02em;margin-top:.4em;font-size:2.1rem;font-weight:760}h2{font-size:1.5rem;font-weight:720}h3{font-size:1.2rem;font-weight:680}h4{font-size:1.05rem;font-weight:680}p{margin:0 0 1em}code,kbd,pre{font-family:var(--mono);font-size:.9em}:not(pre)>code{background:var(--bg-soft);border:1px solid var(--border);overflow-wrap:anywhere;border-radius:4px;padding:.05em .35em}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.muted{color:var(--fg-muted)}.print-only{display:none}.skip-link{background:var(--accent);color:var(--accent-fg);z-index:100;padding:.6rem 1rem;position:absolute;top:0;left:-999px}.skip-link:focus{left:0}.btn{font:inherit;border-radius:var(--radius);border:1px solid var(--border);background:var(--bg-raised);min-height:2.5rem;color:var(--fg);cursor:pointer;align-items:center;gap:.4rem;padding:.55rem .95rem;font-weight:600;line-height:1.2;text-decoration:none;display:inline-flex}.btn:hover:not(:disabled){background:var(--bg-soft);border-color:var(--fg-muted)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn-primary{background:var(--accent);color:var(--accent-fg);border-color:var(--accent)}.btn-primary:hover:not(:disabled){background:var(--accent);filter:brightness(1.1)}.btn-done{background:var(--ok-soft);color:var(--ok);border-color:var(--ok)}.btn-danger{background:var(--bad);color:var(--bg);border-color:var(--bad)}.btn-danger:hover:not(:disabled){background:var(--bad);filter:brightness(1.1)}.btn-danger-outline{color:var(--bad);border-color:var(--bad)}.btn-small{min-height:2rem;padding:.25rem .6rem;font-size:.85rem}.icon-btn{font:inherit;border-radius:var(--radius);border:1px solid var(--border);background:var(--bg-raised);width:2.5rem;height:2.5rem;color:var(--fg);cursor:pointer;flex:none;font-size:1.2rem}.icon-btn:hover{background:var(--bg-soft)}input[type=search],input[type=text],select{font:inherit;color:var(--fg);background:var(--bg-raised);border:1px solid var(--border);border-radius:var(--radius);max-width:100%;min-height:2.5rem;padding:.5rem .7rem}.kbd{font-family:var(--mono);border:1px solid var(--border);border-bottom-width:2px;border-radius:4px;padding:0 .3rem;font-size:.75rem;font-weight:500}.badge{border:1px solid var(--border);background:var(--bg-soft);color:var(--fg-muted);vertical-align:middle;white-space:nowrap;border-radius:999px;margin-left:.5rem;padding:.05rem .5rem;font-size:.75rem;font-weight:600;line-height:1.4;display:inline-block}.badge-done{background:var(--ok-soft);color:var(--ok);border-color:var(--ok)}.badge-progress{background:var(--accent-soft);color:var(--link);border-color:var(--accent)}.badge-wrong{background:var(--bad-soft);color:var(--bad);border-color:var(--bad)}.badge-soon{background:var(--warn-soft);color:var(--warn);border-color:var(--warn)}.chapter-meta .badge,.chip-row .badge{margin-left:0}.chip{background:var(--accent-soft);color:var(--link);border-radius:999px;padding:.15rem .7rem;font-size:.9rem;font-weight:600;text-decoration:none;display:inline-block}.chip:hover{text-decoration:underline}.chip-row,.chip-list{flex-wrap:wrap;align-items:center;gap:.5rem .6rem;margin:.6rem 0;padding:0;list-style:none;display:flex}.lang-select,.lang-chip{align-items:center;gap:.5rem;font-size:.9rem;display:inline-flex}.lang-chip{color:var(--fg-muted)}.toolbar{flex-wrap:wrap;align-items:center;gap:.6rem .8rem;margin:.8rem 0;display:flex}.filters{flex-wrap:wrap;align-items:flex-end;gap:.8rem 1rem;margin:1rem 0;display:flex}.filters label{flex-direction:column;gap:.25rem;font-size:.9rem;font-weight:600;display:flex}.filters input[type=search]{width:22rem;max-width:100%}.app-header{z-index:40;background:var(--bg);border-bottom:1px solid var(--border);position:sticky;top:0}.header-row{align-items:center;gap:.75rem;max-width:78rem;margin:0 auto;padding:.6rem 1rem;display:flex}.brand{color:var(--fg);flex:none;align-items:center;gap:.6rem;font-weight:700;text-decoration:none;display:flex}.brand-mark{background:linear-gradient(135deg, var(--h1), var(--h7));color:#fff;font-family:var(--mono);letter-spacing:.02em;box-shadow:var(--shadow-sm);border-radius:7px;padding:.28rem .45rem;font-size:.78rem;font-weight:700}.brand-name{display:none}.searchbox{flex:auto;min-width:0;position:relative}.searchbox input{width:100%}.suggestions{background:var(--bg-raised);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);z-index:60;max-height:70vh;margin:0;padding:.25rem;list-style:none;position:absolute;top:calc(100% + 4px);left:0;right:0;overflow:auto}.suggestion,.suggestion-all,.suggestion-note{border-radius:6px;padding:.5rem .6rem}.suggestion{cursor:pointer;align-items:baseline;gap:.6rem;display:flex}.suggestion.active,.suggestion:hover,.suggestion-all:hover{background:var(--accent-soft)}.suggestion-kind{text-transform:uppercase;letter-spacing:.04em;color:var(--fg-muted);min-width:4.8rem;font-size:.72rem;font-weight:700}.suggestion-all{cursor:pointer;color:var(--link);font-weight:600}.suggestion-note{color:var(--fg-muted)}.mainnav{scrollbar-width:thin;gap:.25rem;max-width:78rem;margin:0 auto;padding:0 .6rem .4rem;display:flex;overflow-x:auto}.mainnav a{color:var(--fg-muted);border-radius:999px;flex:none;padding:.38rem .85rem;font-size:.93rem;font-weight:600;text-decoration:none;transition:background-color .12s,color .12s}.mainnav a:hover{background:var(--bg-soft);color:var(--fg-strong)}.mainnav a.active{background:var(--accent-soft);color:var(--link)}.banner{background:var(--warn-soft);color:var(--fg);border-bottom:1px solid var(--warn);padding:.6rem 1rem;font-size:.93rem}.banner-error{background:var(--bad-soft);border-color:var(--bad)}.banner-inline{border:1px solid var(--warn);border-radius:var(--radius);margin:.5rem 0 1rem}.main{flex:1 0 auto;width:100%;max-width:78rem;margin:0 auto;padding:1rem 1rem 3rem}.main:focus{outline:none}.app-footer{border-top:1px solid var(--border);text-align:center;color:var(--fg-muted);flex-wrap:wrap;justify-content:center;gap:.3rem 1.4rem;padding:1rem;font-size:.88rem;display:flex}@media (width>=720px){.brand-name{display:inline}.header-row{padding:.7rem 1.5rem}.searchbox{max-width:28rem;margin-left:auto}.main{padding:1.5rem 1.5rem 4rem}}.loading{color:var(--fg-muted);align-items:center;gap:.7rem;padding:2rem 0;display:flex}.spinner{border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;width:1.2rem;height:1.2rem;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.spinner{animation-duration:3s}}.error-box{border:1px solid var(--bad);background:var(--bad-soft);border-radius:var(--radius);margin:1rem 0;padding:.8rem 1rem 1rem}.error-box h2{margin-top:.2em}.error-message{white-space:pre-wrap;overflow-wrap:anywhere;background:var(--bg);border:1px solid var(--border);border-radius:6px;max-height:24rem;padding:.6rem .8rem;overflow:auto}.error-actions{flex-wrap:wrap;align-items:center;gap:.8rem;margin:.6rem 0 0;display:flex}.notice{border:1px solid var(--border);background:var(--bg-soft);border-radius:var(--radius);margin:.8rem 0;padding:.6rem .9rem}.notice-warn{background:var(--warn-soft);border-color:var(--warn)}.notice-error{background:var(--bad-soft);border-color:var(--bad)}.bar{background:var(--bg-soft);border:1px solid var(--border);border-radius:999px;height:6px;overflow:hidden}.bar-fill{background:var(--ok);height:100%}.tablist{box-shadow:inset 0 -2px 0 var(--border);scrollbar-width:thin;gap:.2rem;padding:4px 4px 0;display:flex;overflow:auto hidden}.tab{font:inherit;color:var(--fg-muted);cursor:pointer;white-space:nowrap;border-radius:var(--radius-sm) var(--radius-sm) 0 0;background:0 0;border:none;border-bottom:3px solid #0000;padding:.65rem 1.05rem;font-size:.95rem;font-weight:600;transition:color .12s,background-color .12s}.tab:hover{color:var(--fg-strong);background:var(--bg-soft)}.tab[aria-selected=true]{color:var(--link);border-bottom-color:var(--accent)}.tabpanel{padding-top:1.2rem}.tabpanel:focus{outline:none}.page-head{margin-bottom:1rem}.crumbs{color:var(--fg-muted);margin-bottom:.2rem;font-size:.9rem}.lede{color:var(--fg-muted);max-width:var(--measure);font-size:1.1rem}.continue{border:1px solid var(--accent);background:var(--accent-soft);border-radius:var(--radius);flex-wrap:wrap;align-items:center;gap:.6rem 1.2rem;margin:1rem 0 1.5rem;padding:1rem 1.2rem;display:flex}.continue>div{flex:14rem}.eyebrow{letter-spacing:.06em;text-transform:uppercase;color:var(--fg-muted);font-size:.75rem;font-weight:700}.continue-title{font-size:1.15rem}.continue-last{flex-basis:100%;font-size:.9rem}.part{margin:2rem 0}.part-head{flex-wrap:wrap;align-items:baseline;gap:.4rem 1rem;display:flex}.part-head h2{margin:0}.part-summary{color:var(--fg-muted);max-width:var(--measure);margin-top:.3rem}.coming-soon{border:1px dashed var(--border);border-radius:var(--radius);color:var(--fg-muted);padding:.8rem 1rem}.chapter-list,.exercise-list,.pattern-grid,.term-list,.result-list,.reference-list,.progress-list{margin:0;padding:0;list-style:none}.chapter-list,.exercise-list{grid-template-columns:repeat(auto-fill,minmax(min(100%,22rem),1fr));gap:.8rem;display:grid}.chapter-card,.exercise-card,.pattern-card{border:1px solid var(--border);background:var(--bg-raised);border-radius:var(--radius);flex-direction:column;gap:.5rem;padding:.9rem 1rem;display:flex}.chapter-card.status-done{border-color:var(--ok)}.chapter-card-head,.exercise-card-head,.pattern-card-head{flex-wrap:wrap;align-items:baseline;gap:.6rem;display:flex}.chapter-card h3,.exercise-card h3,.pattern-card h3{flex:auto;margin:0;font-size:1.1rem}.chapter-order{font-family:var(--mono);color:var(--fg-muted);font-size:.85rem}.chapter-summary,.pattern-card p{color:var(--fg-muted);margin:0;font-size:.95rem}.chapter-meta{flex-wrap:wrap;align-items:center;gap:.3rem .9rem;font-size:.85rem;display:flex}.meta-done{color:var(--ok);font-weight:600}.prereq{background:var(--bg-soft);border-radius:6px;margin:0;padding:.4rem .6rem;font-size:.88rem}.diff-easy{color:var(--ok)}.diff-medium{color:var(--warn)}.diff-hard{color:var(--bad)}.pattern-grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,19rem),1fr));gap:.8rem;display:grid}.prose{max-width:var(--measure);font-size:var(--text-base);line-height:var(--leading);overflow-wrap:break-word}.prose>:first-child{margin-top:0}.prose h1{font-size:1.9rem}.prose h2{margin-top:2.6em;scroll-margin-top:8rem}.prose h3{margin-top:1.9em;scroll-margin-top:8rem}.prose ul,.prose ol{margin:0 0 1.1em;padding-left:1.5rem}.prose li{margin:.3em 0}.prose li::marker{color:var(--fg-muted)}.prose strong{color:var(--fg-strong)}.prose blockquote{border:1px solid var(--border);border-left:4px solid var(--accent);border-radius:0 var(--radius) var(--radius) 0;background:var(--accent-soft);color:var(--fg);margin:1.4em 0;padding:.9em 1.2em .9em 1.4em;position:relative}.prose blockquote>:last-child{margin-bottom:0}.prose hr{border:none;border-top:1px solid var(--border);margin:2rem 0}.prose img{max-width:100%;height:auto}.inline-prose{font-size:1rem}.inline-prose p{margin:0}.lesson-neutral>h1:first-child{display:none}.lang-section{margin-top:2rem}.table-wrap{border:1px solid var(--border);border-radius:var(--radius);max-width:100%;margin:1.2em 0;overflow-x:auto}table{border-collapse:separate;border-spacing:0;min-width:100%;font-size:.93rem;line-height:1.5}th,td{border-bottom:1px solid var(--border);text-align:left;vertical-align:top;padding:.55rem .8rem}th{background:var(--bg-soft);color:var(--fg-strong);text-transform:uppercase;letter-spacing:.05em;border-bottom:2px solid var(--border-strong);font-size:.78rem;font-weight:700;position:sticky;top:0}tbody tr:nth-child(2n) td{background:color-mix(in srgb, var(--bg-soft) 55%, transparent)}tbody tr:last-child td{border-bottom:none}.ref-unresolved{border-bottom:2px dotted var(--bad);cursor:help}.reflink{display:inline;position:relative}.reflink>a{text-underline-offset:.2em;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.refcard{z-index:30;background:var(--bg-raised);width:min(22rem,80vw);color:var(--fg);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);flex-direction:column;gap:.25rem;padding:.7rem .9rem;font-size:.92rem;font-weight:400;line-height:1.45;display:flex;position:absolute;top:calc(100% + 6px);left:0}.refcard-kind{text-transform:uppercase;letter-spacing:.06em;color:var(--fg-muted);font-size:.7rem;font-weight:700}.refcard-more{color:var(--link);font-weight:600}@media (width<=480px){.reflink{position:static}.refcard{width:auto;left:1rem;right:1rem}}.codeblock{border:1px solid var(--border);border-radius:var(--radius);background:var(--code-bg);margin:1em 0;overflow:hidden}.codeblock-bar{background:var(--code-gutter-bg);border-bottom:1px solid var(--border);color:var(--fg-muted);font-size:.78rem;font-family:var(--mono);justify-content:space-between;align-items:center;padding:.2rem .4rem .2rem .8rem;display:flex}.codeblock pre{color:var(--code-fg);tab-size:4;margin:0;padding:.8rem 1rem;line-height:1.5;overflow-x:auto}.codeblock pre code{background:0 0;border:none;padding:0}.hljs-keyword,.hljs-built_in,.hljs-literal{color:var(--tok-keyword)}.hljs-string,.hljs-regexp{color:var(--tok-string)}.hljs-number{color:var(--tok-number)}.hljs-comment,.hljs-quote{color:var(--tok-comment);font-style:italic}.hljs-type,.hljs-title.class_{color:var(--tok-type)}.hljs-title.function_,.hljs-title{color:var(--tok-func)}.hljs-attr,.hljs-attribute,.hljs-variable{color:var(--tok-type)}.diagram{max-width:100%;margin:1.6em 0;position:relative}.diagram-svg{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-raised);box-shadow:var(--shadow-sm);text-align:center;padding:1.1rem;overflow-x:auto}.diagram-svg svg{max-width:100%;height:auto}.diagram-tools{justify-content:flex-end;gap:.4rem;margin-top:.4rem;display:flex}.diagram-dialog{border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--bg-raised);width:min(96vw,90rem);height:min(92vh,60rem);color:var(--fg);box-shadow:var(--shadow);padding:0}.diagram-dialog[open]{flex-direction:column;display:flex}.diagram-dialog::backdrop{background:#0a0c149e}.diagram-dialog-bar{border-bottom:1px solid var(--border);background:var(--bg-soft);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.8rem;padding:.6rem .9rem;display:flex}.diagram-dialog-buttons{flex-wrap:wrap;gap:.4rem;display:flex}.diagram-dialog-scroll{flex:auto;padding:1.2rem;overflow:auto}.diagram-dialog-svg{text-align:center;min-width:100%;display:inline-block}.diagram-loading{border:1px dashed var(--border);border-radius:var(--radius);text-align:center;padding:1.5rem}.diagram-source{margin-top:.4rem;font-size:.88rem}.diagram-source pre{background:var(--code-bg);border:1px solid var(--border);border-radius:6px;padding:.6rem .8rem;overflow-x:auto}.cm-host{height:100%;min-height:20rem}.cm-host .cm-editor{height:100%;font-size:.9rem;font-family:var(--mono)}.cm-host .cm-scroller{font-family:var(--mono);overflow:auto}.tok-keyword,.tok-operatorKeyword,.tok-controlKeyword,.tok-definitionKeyword,.tok-moduleKeyword{color:var(--tok-keyword)}.tok-string,.tok-string2{color:var(--tok-string)}.tok-number,.tok-bool,.tok-atom{color:var(--tok-number)}.tok-comment,.tok-lineComment,.tok-blockComment{color:var(--tok-comment);font-style:italic}.tok-typeName,.tok-className,.tok-namespace{color:var(--tok-type)}.tok-variableName.tok-definition,.tok-propertyName.tok-definition,.tok-function{color:var(--tok-func)}.with-toc{display:block}.toc ul{margin:0;padding:0;list-style:none}.toc li{margin:.2rem 0}.toc a{font-size:.9rem;text-decoration:none}.toc a:hover{text-decoration:underline}.toc-sub{padding-left:.9rem}.toc-inline{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-soft);margin-bottom:1rem;padding:.4rem .9rem}.toc-inline summary{cursor:pointer;font-weight:600}.toc-side h2{text-transform:uppercase;letter-spacing:.06em;color:var(--fg-muted);margin:0 0 .5rem;font-size:.8rem}@media (width>=1100px){.with-toc{grid-template-columns:15rem minmax(0,1fr);align-items:start;gap:2.5rem;display:grid}.toc-side{max-height:calc(100vh - 10rem);position:sticky;top:8rem;overflow-y:auto}}.lesson-footer{border-top:1px solid var(--border);margin-top:2.5rem;padding-top:1rem}.toolbar+.printable{margin-top:.5rem}.cheatsheet{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-raised);padding:.5rem 1.2rem 1rem}.drill{border:1px solid var(--border);background:var(--bg-raised);border-radius:var(--radius);max-width:50rem;margin:1.2rem 0;padding:1rem 1.2rem 1.2rem}.drill h3{margin-top:0}.drill-options{border:none;margin:1rem 0;padding:0}.drill-options legend{margin-bottom:.5rem;padding:0;font-weight:600}.drill-option{border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;flex-wrap:wrap;align-items:center;gap:.4rem .7rem;min-height:2.75rem;margin:.4rem 0;padding:.6rem .8rem;display:flex}.drill-option input{width:1.15rem;height:1.15rem}.drill-option.is-answer{border-color:var(--ok);background:var(--ok-soft)}.drill-option.is-wrong{border-color:var(--bad);background:var(--bad-soft)}.drill-mark{margin-left:auto;font-size:.85rem;font-weight:700}.drill-result{border-top:1px solid var(--border);margin-top:1rem}.drill-costs{padding:0;list-style:none}.drill-costs li{border-left:4px solid var(--border);background:var(--bg-soft);border-radius:0 6px 6px 0;margin:.5rem 0;padding:.6rem .8rem}.drill-costs li.chosen{border-left-color:var(--bad);background:var(--bad-soft)}.drill-costs p{margin:.2rem 0 0}.project-command{border:1px solid var(--accent);background:var(--accent-soft);border-radius:var(--radius);margin-bottom:1.5rem;padding:.4rem 1rem 1rem}.command-line{flex-wrap:wrap;align-items:center;gap:.6rem;margin:.4rem 0;display:flex}.command-line code{background:var(--code-bg);border:1px solid var(--border);-webkit-user-select:all;user-select:all;border-radius:6px;padding:.4rem .7rem;font-size:1rem}.milestone{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-raised);margin:.8rem 0;padding:.5rem 1rem}.milestone summary{cursor:pointer;padding:.3rem 0;font-weight:600}.milestone-n{color:var(--fg-muted);margin-right:.4rem;font-weight:700}.hints{margin-top:2rem}.hints h2{margin-top:0}.hint-list li{background:var(--bg-soft);border-left:4px solid var(--accent);border-radius:0 6px 6px 0;margin:.5rem 0;padding:.3rem .8rem}.cli-steps ol{padding-left:1.3rem}.cli-alt{margin-top:1.5rem}.solution-gate,.workspace-start{max-width:44rem}.confirm{border:2px solid var(--bad);background:var(--bad-soft);border-radius:var(--radius);max-width:44rem;margin:1rem 0;padding:.3rem 1rem 1rem}.workspace-toolbar{z-index:20;background:var(--bg);margin-top:0;padding:.5rem 0;position:sticky;top:6.6rem}.save-state{color:var(--fg-muted);font-size:.88rem}.save-error{color:var(--bad);font-weight:600}.editor-layout{flex-direction:column;gap:.6rem;display:flex}.file-list{gap:.3rem;margin:0;padding:0;list-style:none;display:flex;overflow-x:auto}.file{font:inherit;font-family:var(--mono);text-align:left;white-space:nowrap;border:1px solid var(--border);background:var(--bg-raised);width:100%;color:var(--fg);cursor:pointer;border-radius:6px;padding:.4rem .7rem;font-size:.85rem}.file.active{background:var(--accent-soft);border-color:var(--accent);color:var(--link);font-weight:700}.editor-pane{border:1px solid var(--border);border-radius:var(--radius);height:60vh;min-height:22rem;overflow:hidden}@media (width>=900px){.editor-layout{flex-direction:row;align-items:stretch}.file-list{flex-direction:column;flex:none;width:13rem;overflow-x:visible}.editor-pane{flex:auto;min-width:0}}.run-results{margin-top:1.5rem;scroll-margin-top:10rem}.run-summary{border-radius:6px;padding:.5rem .8rem;font-weight:700}.run-pass{background:var(--ok-soft);color:var(--ok)}.run-fail{background:var(--bad-soft);color:var(--bad)}.test-list{margin:.8rem 0;padding:0;list-style:none}.test-row{border:1px solid var(--border);background:var(--bg-raised);border-radius:6px;margin:.3rem 0}.row-fail{border-color:var(--bad)}.test-head{cursor:default;align-items:baseline;gap:.6rem;padding:.4rem .7rem;display:flex}summary.test-head{cursor:pointer}.test-icon{text-align:center;width:1.2rem;font-weight:800}.test-pass{color:var(--ok)}.test-fail{color:var(--bad)}.test-skip{color:var(--fg-muted)}.test-name{font-family:var(--mono);overflow-wrap:anywhere;font-size:.9rem}.test-time{white-space:nowrap;margin-left:auto;font-size:.8rem}.test-output,.build-output{background:var(--code-bg);color:var(--code-fg);border-top:1px solid var(--border);white-space:pre-wrap;overflow-wrap:anywhere;max-height:28rem;margin:0;padding:.7rem .9rem;font-size:.82rem;overflow:auto}.build-output{border:1px solid var(--border);border-radius:6px;margin-top:.5rem}.pattern-section ul{padding-left:1.3rem}.pattern-section ul.chip-list{padding-left:0}.two-col{grid-template-columns:repeat(auto-fit,minmax(min(100%,20rem),1fr));gap:0 2rem;display:grid}.letters{flex-wrap:wrap;gap:.25rem;margin:.5rem 0;display:flex}.letter{font:inherit;border:1px solid var(--border);background:var(--bg-raised);width:2.1rem;height:2.1rem;color:var(--link);cursor:pointer;border-radius:6px;justify-content:center;align-items:center;font-weight:700;display:inline-flex}.letter-off{color:var(--fg-muted);opacity:.45;cursor:default;background:0 0}.letter-heading{border-bottom:2px solid var(--border);padding-bottom:.2rem;scroll-margin-top:8rem}.term-list li{padding:.3rem 0 .6rem;scroll-margin-top:8rem}.term-list h3{margin:.4rem 0 .1rem;font-size:1.1rem}.term-list p{color:var(--fg-muted);max-width:var(--measure);margin:0}.term-fields dt{margin-top:1rem;font-weight:700}.term-fields dd{max-width:var(--measure);margin:.2rem 0 0}.reference-list li,.result-list li{padding:.35rem 0}.result-list p{margin:.1rem 0 0;font-size:.92rem}.stats{flex-wrap:wrap;gap:.6rem 1.8rem;padding:0;font-size:1.05rem;list-style:none;display:flex}.stats strong{font-size:1.5rem}.progress-row{flex-wrap:wrap;justify-content:space-between;gap:.2rem 1rem;margin-bottom:.2rem;display:flex}.progress-list li{margin:.6rem 0}.manage .toolbar{margin-bottom:.5rem}@media print{body{color:#000;background:#fff;min-height:0;font-size:10pt;display:block}#root{min-height:0;display:block}.no-print,.app-header,.app-footer,.banner,.tablist,.skip-link,.codeblock-bar button,.diagram-source{display:none!important}.print-only{margin:0 0 .5em;font-size:16pt;display:block}.main{max-width:none;padding:0}.tabpanel{padding-top:0}.cheatsheet,.printable{border:none;margin:0;padding:0}.prose{max-width:none;font-size:9pt;line-height:1.3}.prose p,.prose ul,.prose ol{margin:0 0 .4em}.prose li{margin:.05em 0}.prose h1{margin:0 0 .3em;font-size:15pt}.prose h2{font-size:12pt}.prose h3,.prose h4{margin:.7em 0 .2em;font-size:10pt}.codeblock{margin:.4em 0}.prose h2{break-after:avoid;border-top:none;margin-top:.8em}.prose h3{break-after:avoid}.prose pre,.diagram,.table-wrap,table,.codeblock{break-inside:avoid}.table-wrap{border:0;overflow:visible}table{width:100%;min-width:0;font-size:8pt}th,td{padding:.8mm 1.4mm}th{position:static}.codeblock pre{white-space:pre-wrap;padding:.3rem .5rem;font-size:8pt;line-height:1.3}.diagram-svg{background:0 0;border:none;padding:0}.diagram-svg svg{max-height:7cm}a{color:#000;text-decoration:none}@page{margin:10mm}}.mm-b1,.sheet-b1{--c:var(--h1);--c-soft:var(--h1-soft);--c-ink:var(--h1-ink)}.mm-b2,.sheet-b2{--c:var(--h2);--c-soft:var(--h2-soft);--c-ink:var(--h2-ink)}.mm-b3,.sheet-b3{--c:var(--h3);--c-soft:var(--h3-soft);--c-ink:var(--h3-ink)}.mm-b4,.sheet-b4{--c:var(--h4);--c-soft:var(--h4-soft);--c-ink:var(--h4-ink)}.mm-b5,.sheet-b5{--c:var(--h5);--c-soft:var(--h5-soft);--c-ink:var(--h5-ink)}.mm-b6,.sheet-b6{--c:var(--h6);--c-soft:var(--h6-soft);--c-ink:var(--h6-ink)}.mm-b7,.sheet-b7{--c:var(--h7);--c-soft:var(--h7-soft);--c-ink:var(--h7-ink)}.mm-b8,.sheet-b8{--c:var(--h8);--c-soft:var(--h8-soft);--c-ink:var(--h8-ink)}.mm{margin:1rem 0 2rem}.mm-toolbar{background:var(--bg-soft);border:1px solid var(--border);border-radius:var(--radius) var(--radius) 0 0;flex-wrap:wrap;align-items:center;gap:.5rem .7rem;padding:.6rem .75rem;display:flex}.mm-search{flex:0 15rem;min-width:9rem}.mm-search input{width:100%}.mm-count{min-width:4.5rem;font-size:.85rem}.mm-group{flex-wrap:wrap;gap:.3rem;display:inline-flex}.mm-spacer{flex:auto}.mm-viewport{border:1px solid var(--border);border-radius:0 0 var(--radius) var(--radius);background-color:var(--bg-raised);background-image:radial-gradient(var(--border) 1px, transparent 1px);cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;background-size:22px 22px;border-top:none;height:clamp(380px,70vh,780px);position:relative;overflow:hidden}.mm-viewport.is-dragging{cursor:grabbing}.mm-canvas{transform-origin:0 0;position:absolute;top:0;left:0}.mm-edges{pointer-events:none;position:absolute;top:0;left:0;overflow:visible}.mm-edge{fill:none;stroke:var(--c);stroke-width:2px;opacity:.7;transition:opacity .15s}.mm-edge.is-dim{opacity:.12}.mm-node{background:var(--bg-raised);border:1px solid var(--border-strong);border-left:4px solid var(--c,var(--border-strong));box-shadow:var(--shadow-sm);color:var(--fg);border-radius:10px;align-items:stretch;font-size:14px;line-height:19px;transition:opacity .15s;display:flex;position:absolute}.mm-node[data-depth="0"]{background:var(--fg-strong);border-color:var(--fg-strong);color:var(--bg);border-radius:14px;font-size:15px;font-weight:700}.mm-node[data-depth="1"]{background:var(--c-soft);border:2px solid var(--c);color:var(--c-ink);font-weight:700}.mm-node[data-depth="2"]{font-weight:600}.mm-node.is-dim{opacity:.3}.mm-node.is-match{background:var(--warn-soft);border-color:var(--warn);color:var(--fg-strong);box-shadow:0 0 0 3px var(--warn)}.mm-node:focus-within{box-shadow:0 0 0 3px var(--focus)}.mm-main{border-radius:inherit;min-width:0;font:inherit;color:inherit;text-align:left;background:0 0;border:0;flex:auto;justify-content:space-between;align-items:center;gap:6px;padding:0 10px 0 12px;display:flex}button.mm-main{cursor:pointer}button.mm-main:focus-visible{outline:none}.mm-text{min-width:0}.mm-line{white-space:nowrap;display:block}.mm-mark{border:1px solid var(--c,var(--border-strong));background:var(--c-soft,var(--bg-soft));min-width:22px;color:var(--c-ink,var(--fg));text-align:center;border-radius:999px;flex:none;padding:0 6px;font-size:11px;font-weight:700;line-height:17px}.mm-node[data-depth="0"] .mm-mark{background:var(--bg);color:var(--fg-strong);border-color:var(--bg)}.mm-open{background:var(--bg-raised);border:1px solid var(--accent);width:17px;height:17px;color:var(--accent);border-radius:50%;justify-content:center;align-items:center;font-size:11px;font-weight:700;line-height:1;text-decoration:none;display:flex;position:absolute;top:-8px;right:-7px}.mm-open:hover{background:var(--accent);color:var(--accent-fg)}.mm-hint{margin:.5rem 0 0;font-size:.85rem}.mm-outline-wrap{margin-top:1rem}.mm-viewport~.mm-outline-wrap{display:none}.mm-outline-root{letter-spacing:.05em;text-transform:uppercase;color:var(--fg-muted);margin:0 0 .7rem;font-size:.85rem;font-weight:700}.mm-cards{column-width:17rem;column-gap:1rem}.mm-card{break-inside:avoid;background:var(--bg-raised);border:1px solid var(--border);border-top:4px solid var(--c);border-radius:var(--radius);box-shadow:var(--shadow-sm);margin:0 0 1rem;padding:.1rem 1rem .9rem}.mm-card h3{color:var(--c-ink);margin:.8rem 0 .5rem;font-size:1.02rem}.mm-list{margin:0;padding:0;font-size:.93rem;line-height:1.45;list-style:none}.mm-list li{margin:.3em 0}.mm-list .mm-list{border-left:2px solid var(--c-soft);color:var(--fg-muted);margin:.15em 0 .5em .5rem;padding-left:.8rem}.mm-item a{font-weight:650}.mm-list li.has-children>.mm-item{color:var(--fg-strong);font-weight:650}.mm-item.is-match{background:var(--warn-soft);box-shadow:0 0 0 2px var(--warn);border-radius:3px}@page mindmap{size:A4 landscape;margin:10mm}@media print{.reference-doc.is-mindmap{page:mindmap}.mm-toolbar,.mm-viewport,.mm-hint{display:none!important}.mm-viewport~.mm-outline-wrap{display:block!important}.mm-outline-wrap{margin:0}.mm-cards{column-width:7cm;column-gap:6mm}.mm-card{box-shadow:none;border:.3mm solid var(--border-strong);border-top:1.6mm solid var(--c);-webkit-print-color-adjust:exact;print-color-adjust:exact;margin:0 0 4mm;padding:0 3mm 3mm}.mm-card h3{background:var(--c-soft);color:var(--c-ink);-webkit-print-color-adjust:exact;print-color-adjust:exact;margin:0 -3mm 1.5mm;padding:1.4mm 3mm;font-size:10pt}.mm-list{font-size:8.5pt;line-height:1.3}.mm-list .mm-list{color:var(--fg);border-left:.6mm solid var(--c)}.mm-outline-root{font-size:8pt}}@media (prefers-reduced-motion:reduce){.mm-node,.mm-edge{transition:none}}.reference-group{margin:2rem 0 2.5rem}.reference-group h2{margin-top:0}.ref-grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,17rem),1fr));gap:1rem;margin:1rem 0 0;padding:0;list-style:none;display:grid}.ref-card{border:1px solid var(--border);border-top:4px solid var(--c);border-radius:var(--radius);background:var(--bg-raised);box-shadow:var(--shadow-sm);transition:transform .12s,box-shadow .12s,border-color .12s;display:flex}.ref-card:hover,.ref-card:focus-within{box-shadow:var(--shadow);border-color:var(--c);transform:translateY(-2px)}.ref-card-link{width:100%;color:inherit;flex-direction:column;gap:.35rem;padding:.9rem 1rem 1rem;text-decoration:none;display:flex}.ref-card-kind{letter-spacing:.07em;text-transform:uppercase;color:var(--c-ink);font-size:.72rem;font-weight:700}.ref-card-title{color:var(--fg-strong);font-size:1.08rem;font-weight:700;line-height:1.3}.ref-card-facts{color:var(--fg-muted);font-size:.85rem}.ref-card-chips{flex-wrap:wrap;gap:.3rem;margin-top:.3rem;display:flex}.ref-chip{background:var(--c-soft);color:var(--c-ink);text-overflow:ellipsis;white-space:nowrap;border-radius:999px;max-width:100%;padding:.1rem .5rem;font-size:.75rem;font-weight:600;line-height:1.5;overflow:hidden}.ref-chip-more{border:1px solid var(--border);color:var(--fg-muted);background:0 0}@media (prefers-reduced-motion:reduce){.ref-card{transition:none}.ref-card:hover,.ref-card:focus-within{transform:none}}mark{background:var(--warn-soft);color:inherit;box-shadow:0 0 0 2px var(--warn-soft), 0 0 0 3px var(--warn);border-radius:3px;padding:0 1px}.sheet-toolbar,.guide-toolbar{background:var(--bg-soft);border:1px solid var(--border);border-radius:var(--radius);flex-wrap:wrap;align-items:center;gap:.5rem .8rem;margin:.5rem 0 1.2rem;padding:.6rem .75rem;display:flex}.sheet-filter{flex:0 18rem;min-width:10rem}.sheet-filter input{width:100%}.sheet-progress{align-items:center;gap:.6rem;font-size:.9rem;font-weight:600;display:inline-flex}.sheet-bar{width:8rem}.sheet-cards{grid-template-columns:repeat(auto-fill,minmax(min(100%,24rem),1fr));align-items:start;gap:1.2rem;margin-top:1.2rem;display:grid}.sheet-card{break-inside:avoid;background:var(--bg-raised);border:1px solid var(--border);border-top:4px solid var(--c);border-radius:var(--radius);min-width:0;box-shadow:var(--shadow-sm);padding:.2rem 1.2rem 1rem}.sheet-card.is-wide{grid-column:1/-1}.sheet-card .prose{max-width:none;font-size:.96rem;line-height:1.6}.sheet-card .prose h2{color:var(--c-ink);border:0;margin:.8rem 0 .6rem;padding:0;font-size:1.1rem}.sheet-card .prose h3{margin-top:1.1em;font-size:1rem}.sheet-card .prose>:last-child{margin-bottom:0}.sheet-card .table-wrap{margin-left:-.4rem;margin-right:-.4rem}.prose ul.contains-task-list{padding-left:0;list-style:none}.prose li.task-list-item{align-items:flex-start;gap:.65rem;margin:.45em 0;display:flex}.task-box{width:1.15rem;height:1.15rem;accent-color:var(--accent);cursor:pointer;flex:none;margin:.32em 0 0}.task-box:disabled{cursor:default}.prose li.task-list-item:has(.task-box:checked){color:var(--fg-muted);text-decoration:line-through;-webkit-text-decoration-color:var(--border-strong);text-decoration-color:var(--border-strong)}.guide-search{flex:100%}.guide-search input{width:100%}.guide-status{margin:-.6rem 0 1rem;font-size:.88rem}.guide-group{margin:2rem 0}.guide-group h2{margin:0 0 .8rem;font-size:1.25rem}.guide-grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,22rem),1fr));align-items:start;gap:1rem;display:grid}.guide-card{background:var(--bg-raised);border:1px solid var(--border);border-top:4px solid var(--c);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:.9rem 1.1rem 1rem;font-size:.93rem;line-height:1.5}.guide-card-head{justify-content:space-between;align-items:baseline;gap:.6rem;display:flex}.guide-card-head h3{margin:0;font-size:1.1rem}.guide-card-head h3 a{color:var(--c-ink)}.guide-pick{color:var(--fg-muted);cursor:pointer;align-items:center;gap:.35rem;font-size:.82rem;display:inline-flex}.guide-pick input{accent-color:var(--accent)}.guide-intent{color:var(--fg-muted);margin:.4rem 0 .8rem}.guide-fields h4{text-transform:uppercase;letter-spacing:.07em;color:var(--c-ink);margin:.8rem 0 .2rem;font-size:.72rem}.guide-fields ul,.guide-table ul,.guide-compare-table ul{margin:0;padding-left:1.1rem}.guide-fields li,.guide-table li,.guide-compare-table li{margin:.2em 0}.guide-fields .is-gain h4{color:var(--ok)}.guide-fields .is-cost h4,.guide-fields .is-avoid h4{color:var(--bad)}.guide-card-foot{margin-top:.9rem;font-size:.85rem;font-weight:600}.guide-compare{background:var(--bg-raised);border:2px solid var(--accent);border-radius:var(--radius);box-shadow:var(--shadow);margin:0 0 2rem;padding:.4rem 1rem 1rem}.guide-compare-head{justify-content:space-between;align-items:center;gap:1rem;display:flex}.guide-compare-head h2{margin:.5rem 0;font-size:1.2rem}.guide-compare-table{table-layout:fixed;min-width:36rem}.guide-compare-table th[scope=row]{width:8rem;font-size:.75rem;position:static}.guide-remove{color:var(--fg-muted);cursor:pointer;background:0 0;border:0;margin-left:.4rem;font-size:1.1rem;line-height:1}.guide-remove:hover{color:var(--bad)}.guide-table{table-layout:fixed;min-width:52rem;font-size:.9rem}.guide-table th[scope=row]{text-transform:none;letter-spacing:0;width:9rem;font-size:.95rem;position:static}.guide-table-cat{color:var(--fg-muted);text-transform:uppercase;letter-spacing:.05em;margin-top:.15rem;font-size:.72rem;font-weight:600;display:block}.guide-print-table.is-print-only{display:none}@page guide{size:A4 landscape;margin:8mm}@media print{.reference-doc.is-guide{page:guide}.sheet-toolbar,.guide-toolbar,.guide-status,.guide-group,.guide-remove{display:none!important}.guide-print-table.is-print-only{display:block!important}.guide-table{min-width:0;font-size:6.8pt;line-height:1.25}.guide-table th,.guide-table td{border-bottom:.2mm solid #999;padding:1mm 1.4mm}.guide-table th{position:static}.guide-table tr{break-inside:avoid}.guide-table-cat{font-size:5.5pt}.guide-compare{box-shadow:none;break-inside:avoid;border:.3mm solid #000}.sheet-cards{grid-template-columns:repeat(auto-fill,minmax(min(100%,8.5cm),1fr));gap:4mm 6mm;margin-top:3mm}.sheet-card{box-shadow:none;border:.3mm solid var(--border-strong);border-top:1.6mm solid var(--c);-webkit-print-color-adjust:exact;print-color-adjust:exact;padding:0 3mm 2.5mm}.sheet-card .prose{font-size:8.5pt;line-height:1.3}.sheet-card .prose h2{background:var(--c-soft);color:var(--c-ink);-webkit-print-color-adjust:exact;print-color-adjust:exact;margin:0 -3mm 1mm;padding:.9mm 3mm;font-size:10pt}.task-box{accent-color:var(--accent)}mark{box-shadow:none;background:0 0}}.guide-score{background:var(--warn-soft);color:var(--fg-strong);border:1px solid var(--warn);white-space:nowrap;border-radius:999px;margin-left:auto;padding:0 .5rem;font-size:.74rem;font-weight:700;line-height:1.6}.diagram-paper{display:none}@page sheet{size:A4;margin:6mm}@media print{.diagram.has-paper .diagram-svg:not(.diagram-paper){display:none}.diagram-paper{display:block}.reference-doc.is-sheet{page:sheet}.sheet-card .diagram{margin:1.5mm 0}.sheet-card .diagram-svg svg{max-height:3cm}.sheet-cards{gap:2.5mm 5mm}.sheet-card .prose{font-size:8pt;line-height:1.25}.sheet-card .prose p{margin:0 0 1.2mm}.sheet-card .prose h2{margin:1.5mm 0 1mm;font-size:10pt}.sheet-card table{font-size:7.5pt}.guide-table-wrap,.guide-table{break-inside:auto}.guide-table thead{display:table-header-group}}.reading-progress{z-index:60;pointer-events:none;height:3px;position:fixed;top:0;left:0;right:0}.reading-progress-bar{background:linear-gradient(90deg, var(--h1), var(--h7));transform-origin:0;height:100%;transform:scaleX(0)}.lesson-section{margin:2.6em 0 0}.lesson-section>h2{margin-top:0}.lesson-section.is-interview,.lesson-section.is-pitfalls,.lesson-section.is-avoid,.lesson-section.is-tradeoffs{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-soft);border-left-width:5px;padding:.2rem 1.4rem 1.1rem}.lesson-section.is-interview{border-color:var(--h1);background:color-mix(in srgb, var(--h1-soft) 70%, var(--bg))}.lesson-section.is-pitfalls{border-color:var(--h3);background:color-mix(in srgb, var(--h3-soft) 60%, var(--bg))}.lesson-section.is-avoid{border-color:var(--h4);background:color-mix(in srgb, var(--h4-soft) 55%, var(--bg))}.lesson-section.is-tradeoffs{border-color:var(--h2);background:color-mix(in srgb, var(--h2-soft) 60%, var(--bg))}.lesson-section.is-interview>h2{color:var(--h1-ink)}.lesson-section.is-pitfalls>h2{color:var(--h3-ink)}.lesson-section.is-avoid>h2{color:var(--h4-ink)}.lesson-section.is-tradeoffs>h2{color:var(--h2-ink)}.lesson-section.is-interview blockquote{background:var(--bg-raised);border-left-color:var(--h1)}.lesson-section>:last-child{margin-bottom:0}.lesson-section .table-wrap{background:var(--bg-raised)}@media print{.lesson-section.is-interview,.lesson-section.is-pitfalls,.lesson-section.is-avoid,.lesson-section.is-tradeoffs{break-inside:avoid;-webkit-print-color-adjust:exact;print-color-adjust:exact;padding:0 3mm 2mm}}.guide-body{min-width:0;max-width:52rem;font-size:var(--text-base);line-height:var(--leading)}.guide-section{margin:0 0 3rem;scroll-margin-top:8rem}.guide-section>h2{margin:0 0 .8rem;padding-top:.2rem;scroll-margin-top:8rem}.guide-section h3{margin:0 0 .3rem;font-size:1.1rem}.guide-section ul{padding-left:1.4rem}.guide-section li{margin:.35em 0}.guide-steps{counter-reset:step;margin:1rem 0;padding:0;list-style:none}.guide-steps>li{counter-increment:step;margin:0 0 1rem;padding:0 0 0 2.6rem;position:relative}.guide-steps>li:before{content:counter(step);background:var(--accent-soft);border:1px solid var(--accent);width:1.8rem;height:1.8rem;color:var(--link);border-radius:50%;justify-content:center;align-items:center;font-size:.85rem;font-weight:700;display:flex;position:absolute;top:.1rem;left:0}.guide-steps .command-line{margin-top:.5rem}.guide-dl{margin:1rem 0}.guide-dl dt{color:var(--fg-strong);margin-top:1.1rem;font-weight:700}.guide-dl dd{max-width:var(--measure);margin:.2rem 0 0}.guide-paths{grid-template-columns:repeat(auto-fit,minmax(min(100%,20rem),1fr));gap:1rem;margin-top:1rem;display:grid}.guide-path{background:var(--bg-raised);border:1px solid var(--border);border-top:4px solid var(--accent);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:.9rem 1.1rem 1rem}.guide-path:nth-child(2){border-top-color:var(--h2)}.guide-path:nth-child(3){border-top-color:var(--h3)}.guide-path:nth-child(4){border-top-color:var(--h4)}.guide-path p{margin:0 0 .6rem;font-size:.92rem;line-height:1.5}.guide-path ol{margin:0;padding-left:1.3rem;font-size:.93rem;line-height:1.5}.guide-path li{margin:.3em 0}.guide-path li a{font-weight:600}.guide .notice{margin:1rem 0}.download-table th[scope=row]{text-transform:none;letter-spacing:0;background:0 0;width:16rem;font-size:.92rem;position:static}.download-hint{background:var(--accent-soft);color:var(--link);border-color:var(--accent);white-space:nowrap;margin-left:.5rem;display:inline-block}.download-sha{white-space:nowrap}.download-sha .btn{margin-left:.4rem}@media print{.guide-path,.guide-steps>li{break-inside:avoid}.command-line .btn{display:none}}
