@font-face{font-family:Ubuntu Sans;font-style:normal;font-weight:100 800;font-display:swap;src:url(/assets/ubuntu-sans-latin-ext-wght-normal-B9YaNJWD.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Ubuntu Sans;font-style:normal;font-weight:100 800;font-display:swap;src:url(/assets/ubuntu-sans-latin-wght-normal-4elLiOro.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Ubuntu Sans;font-style:italic;font-weight:100 800;font-display:swap;src:url(/assets/ubuntu-sans-latin-ext-wght-italic-CmTvNV2a.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Ubuntu Sans;font-style:italic;font-weight:100 800;font-display:swap;src:url(/assets/ubuntu-sans-latin-wght-italic-Ci2ELJKW.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(/assets/jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:100 800;font-display:swap;src:url(/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--font-sans:"Ubuntu Sans", "Ubuntu", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--font-reading:var(--font-sans);--font-mono:"JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;--code-size:13px;--code-size-sm:12.5px;--code-inline:.86em;--radius-sm:6px;--radius:10px;--radius-lg:14px;--ease-out:cubic-bezier(.22, 1, .36, 1);--ease-spring:cubic-bezier(.34, 1.56, .64, 1);--dur-fast:.15s;--dur:.22s;--header-h:56px;--sidebar-w:304px;--toc-w:250px;--content-w:740px;--purple-50:#eeedfe;--purple-100:#cecbf6;--purple-200:#afa9ec;--purple-400:#7f77dd;--purple-600:#534ab7;--purple-800:#3c3489;--purple-900:#26215c;--teal-50:#e1f5ee;--teal-100:#9fe1cb;--teal-200:#5dcaa5;--teal-400:#1d9e75;--teal-600:#0f6e56;--teal-800:#085041;--teal-900:#04342c;--coral-50:#faece7;--coral-100:#f5c4b3;--coral-200:#f0997b;--coral-400:#d85a30;--coral-600:#993c1d;--coral-800:#712b13;--coral-900:#4a1b0c;--pink-50:#fbeaf0;--pink-100:#f4c0d1;--pink-200:#ed93b1;--pink-400:#d4537e;--pink-600:#993556;--pink-800:#72243e;--pink-900:#4b1528;--gray-50:#f2f2f2;--gray-100:#d2d2d2;--gray-200:#b8bbbe;--gray-400:#8a8d90;--gray-600:#6a6e73;--gray-800:#3c3f42;--gray-900:#212427;--blue-50:#e6f1fb;--blue-100:#b5d4f4;--blue-200:#85b7eb;--blue-400:#378add;--blue-600:#185fa5;--blue-800:#0c447c;--blue-900:#042c53;--green-50:#eaf3de;--green-100:#c0dd97;--green-200:#97c459;--green-400:#639922;--green-600:#3b6d11;--green-800:#27500a;--green-900:#173404;--amber-50:#faeeda;--amber-100:#fac775;--amber-200:#ef9f27;--amber-400:#ba7517;--amber-600:#854f0b;--amber-800:#633806;--amber-900:#412402;--red-50:#fcebeb;--red-100:#f7c1c1;--red-200:#f09595;--red-400:#e24b4a;--red-600:#a32d2d;--red-800:#791f1f;--red-900:#501313}:root,:root[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f8f8f8;--bg-elev:#fff;--bg-sunken:#ededed;--bg-hover:#1515150d;--bg-active:#15151514;--border:#1515151f;--border-strong:#1515153d;--text:#151515;--text-2:#3c3f42;--text-3:#6a6e73;--accent:#e00;--accent-hover:#c00;--accent-soft:#fce3e3;--accent-text:#a60000;--code-bg:#f2f2f2;--code-inline-bg:#1515150f;--shadow:0 1px 2px #1515150d, 0 4px 16px #1515150f;--shadow-lg:0 12px 48px #1515152e;--ok:var(--green-600);--ok-soft:var(--green-50);--changed:var(--amber-600);--changed-soft:var(--amber-50);--fail:var(--red-600);--fail-soft:var(--red-50)}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#151515;--bg-elev:#1f1f1f;--bg-sunken:#0e0e0e;--bg-hover:#ffffff0f;--bg-active:#ffffff1a;--border:#ffffff1f;--border-strong:#ffffff3d;--text:#f0f0f0;--text-2:#c7c7c7;--text-3:#8a8d90;--accent:#e00;--accent-hover:#ff3b3b;--accent-soft:#ee00002e;--accent-text:#f56e6e;--code-bg:#0e0e0e;--code-inline-bg:#ffffff14;--shadow:0 1px 2px #0000004d, 0 4px 16px #0000004d;--shadow-lg:0 12px 48px #0009;--ok:var(--green-200);--ok-soft:#6399222e;--changed:var(--amber-100);--changed-soft:#ba751733;--fail:var(--red-200);--fail-soft:#e24b4a2e}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;font-feature-settings:"calt" 0;scroll-padding-top:calc(var(--header-h) + 24px)}body{background:var(--bg);color:var(--text);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;margin:0;font-size:15px;line-height:1.5}a{color:inherit}button{font:inherit;color:inherit}img,svg{max-width:100%;display:block}code,kbd,pre,samp,textarea,.mono{font-family:var(--font-mono);font-variant-ligatures:none;font-feature-settings:"liga" 0, "calt" 0}::selection{background:var(--accent-soft)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;overflow:hidden;position:absolute!important}.btn{border:1px solid var(--border);background:var(--bg-elev);height:34px;color:var(--text);cursor:pointer;white-space:nowrap;border-radius:8px;align-items:center;gap:6px;padding:0 14px;font-size:13.5px;font-weight:500;text-decoration:none;transition:background .15s,border-color .15s,color .15s;display:inline-flex}.btn:hover{background:var(--bg-hover);border-color:var(--border-strong)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn-primary:hover{background:var(--accent-hover);border-color:var(--accent-hover)}.btn-ghost{background:0 0;border-color:#0000}.btn-sm{border-radius:7px;height:28px;padding:0 10px;font-size:12.5px}.icon-btn{width:34px;height:34px;color:var(--text-2);cursor:pointer;background:0 0;border:0;border-radius:8px;place-items:center;display:inline-grid}.icon-btn:hover{background:var(--bg-hover);color:var(--text)}kbd{border:1px solid var(--border);background:var(--bg-elev);min-width:20px;color:var(--text-3);text-align:center;border-bottom-width:2px;border-radius:5px;padding:1px 5px;font-size:11px;line-height:16px;display:inline-block}.pill{background:var(--bg-sunken);height:22px;color:var(--text-3);white-space:nowrap;border-radius:999px;align-items:center;gap:5px;padding:0 9px;font-size:12px;font-weight:500;display:inline-flex}.pill-accent{background:var(--accent-soft);color:var(--accent-text)}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@media (width<=600px){textarea,input:not([type=radio]):not([type=checkbox]),select{font-size:max(16px,1em)}textarea{max-width:100%;min-height:120px}}.boot-status,.boot-error{max-width:560px;color:var(--text-2);font-family:var(--font-sans);text-align:center;margin:20vh auto;padding:0 24px}.boot-error h1{color:var(--text);font-size:22px;font-weight:600}:root[data-app=js] .prerendered{display:none}.prerendered{max-width:760px;margin:0 auto;padding:32px 20px 64px}.skip-link{z-index:200;background:var(--accent);color:#fff;border-radius:8px;padding:8px 12px;text-decoration:none;position:absolute;top:-40px;left:12px}.skip-link:focus{top:10px}.header{z-index:40;height:var(--header-h);border-bottom:1px solid var(--border);background:color-mix(in srgb, var(--bg) 88%, transparent);-webkit-backdrop-filter:saturate(1.4)blur(10px);backdrop-filter:saturate(1.4)blur(10px);align-items:center;gap:12px;padding:0 16px;display:flex;position:sticky;top:0}.header-menu{display:none}.brand{min-width:0;color:var(--text);align-items:center;gap:10px;text-decoration:none;display:flex}.brand-name{font-family:var(--font-reading);letter-spacing:-.01em;white-space:nowrap;font-size:18px;font-weight:600}.brand-pill{background:var(--bg-elev);cursor:pointer;border:1px solid var(--border);font-family:var(--font-mono);border-radius:6px;flex:none;padding:0;font-size:11px;font-weight:500;line-height:20px;text-decoration:none;transition:border-color .15s,box-shadow .15s;display:inline-flex;overflow:hidden}.brand-pill span{color:var(--text-3);padding:0 7px}.brand-pill:hover{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.brand-pill span:first-child{background:var(--accent);color:#fff}.search-trigger{border:1px solid var(--border);background:var(--bg-elev);width:min(380px,36vw);height:36px;color:var(--text-3);cursor:pointer;border-radius:9px;align-items:center;gap:10px;margin-left:auto;padding:0 8px 0 12px;font-size:13.5px;transition:border-color .15s;display:flex}.search-trigger:hover{border-color:var(--border-strong)}.search-trigger kbd{margin-left:auto}.header-actions{align-items:center;gap:4px;display:flex}.search-icon-only{display:none}.header-progress{height:34px;color:var(--text-2);font-variant-numeric:tabular-nums;align-items:center;gap:7px;padding:0 10px;font-size:13px;font-weight:500;display:flex}.ring-track{fill:none;stroke:var(--border)}.ring-fill{fill:none;stroke:var(--accent);stroke-linecap:round;transition:stroke-dashoffset .5s}.shell-body{align-items:flex-start;display:flex}.shell-main{min-width:0;min-height:calc(100vh - var(--header-h));outline:none;flex-direction:column;flex:1;display:flex}.shell-main>:first-child{flex:1 0 auto}.site-footer{border-top:1px solid var(--border);background:var(--bg-sunken);color:var(--text-2);margin-top:32px;padding:36px 40px 40px;font-size:13.5px;line-height:1.6}.site-footer-inner,.site-footer-legal{max-width:calc(var(--content-w) + var(--toc-w) + 56px);margin:0 auto}.site-footer-inner{grid-template-columns:minmax(0,1.6fr) minmax(0,1fr) minmax(0,1fr);gap:28px 40px;display:grid}.site-footer p{margin:0 0 8px}.site-footer-brand{color:var(--text);font-family:var(--font-reading);align-items:center;gap:8px;font-size:16px;font-weight:600;display:flex}.site-footer-head{color:var(--text-3);letter-spacing:.05em;text-transform:uppercase;font-size:11.5px;font-weight:600}.site-footer ul{gap:5px;margin:0;padding:0;list-style:none;display:grid}.site-footer a{color:var(--text-2);text-decoration:underline;-webkit-text-decoration-color:var(--border-strong);text-decoration-color:var(--border-strong);text-underline-offset:3px}.site-footer a:hover{color:var(--accent-text);text-decoration-color:currentColor}.site-footer-legal{border-top:1px solid var(--border);color:var(--text-3);margin-top:28px;padding-top:20px;font-size:12.5px}.site-footer-disclaimer{color:var(--text-2);font-size:13.5px}.site-footer-disclaimer strong{color:var(--text);font-weight:600}@media (width<=760px){.site-footer{padding:28px 16px 32px}.site-footer-inner{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.site-footer-about{grid-column:1/-1}}.page-grid{grid-template-columns:minmax(0, var(--content-w)) var(--toc-w);justify-content:center;gap:56px;padding:48px 40px 96px;display:grid}.page-article{min-width:0}.page-aside{top:calc(var(--header-h) + 40px);max-height:calc(100vh - var(--header-h) - 60px);position:sticky;overflow-y:auto}.toc{font-size:14.5px}.toc-title{color:var(--text);margin:0 0 10px;font-size:13.5px;font-weight:600}.toc ul{border-left:1px solid var(--border);margin:0;padding:0;list-style:none}.toc button{width:100%;color:var(--text-3);text-align:left;cursor:pointer;background:0 0;border:0;border-left:1.5px solid #0000;margin-left:-1px;padding:5px 0 5px 12px;font-size:14.5px;line-height:1.4;display:block}.toc .toc-l3 button{padding-left:24px;font-size:13.5px}.toc button:hover{color:var(--text)}.toc button.is-active{border-left-color:var(--accent);color:var(--text);font-weight:500}@media (width<=1280px){.page-grid{grid-template-columns:minmax(0, var(--content-w))}.page-aside{display:none}}@media (width<=960px){.header-menu{display:inline-grid}.page-grid{padding:32px 20px 72px}}@media (width<=480px){.brand-name{display:none}}@media (width<=640px){.search-trigger,.brand-pill span:last-child{display:none}.brand-name{font-size:16px}.search-icon-only{display:inline-grid}.header-actions{margin-left:auto}.header-progress span{display:none}.header{gap:6px;padding:0 10px}.page-grid{padding:24px 16px 64px}}.progress-menu{position:relative}button.header-progress{cursor:pointer;background:0 0;border:0;border-radius:8px}button.header-progress:hover,button.header-progress[aria-expanded=true]{background:var(--bg-hover)}.progress-panel{z-index:60;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--bg-elev);width:min(340px,100vw - 24px);box-shadow:var(--shadow-lg);padding:16px;animation:.12s fade-in;position:absolute;top:calc(100% + 8px);right:0}.progress-panel-title{margin:0 0 2px;font-size:15px;font-weight:600}.progress-panel-sub{color:var(--text-3);margin:0 0 14px;font-size:13px}.progress-chapters{gap:10px;margin:0 0 14px;padding:0;list-style:none;display:grid}.progress-chapters li{grid-template-columns:1fr auto;gap:4px 8px;font-size:13px;display:grid}.progress-chapter-name{color:var(--text-2)}.progress-chapter-count{color:var(--text-3);font-variant-numeric:tabular-nums}.progress-chapter-bar{background:var(--bg-sunken);border-radius:2px;grid-column:1/-1;height:4px;overflow:hidden}.progress-chapter-bar span{background:var(--ok);height:100%;transition:width .3s;display:block}.progress-panel-note{background:var(--bg-sunken);color:var(--text-2);border-radius:8px;margin:0 0 12px;padding:10px 12px;font-size:12.5px;line-height:1.5}.progress-actions{gap:6px;display:flex}.progress-reset{color:var(--text-3);margin-left:auto}.progress-message{margin:10px 0 0;font-size:12.5px}.progress-message.is-ok{color:var(--ok)}.progress-message.is-error{color:var(--fail)}.header-spacer{flex:1}.program-menu{flex:none;display:flex;position:relative}button.brand-pill{color:inherit;align-items:center}.brand-pill svg{color:var(--text-3);margin:0 6px 0 2px}.program-panel{width:min(360px,100vw - 24px);left:0;right:auto}.program-group-title{color:var(--text-3);font-family:var(--font-mono);letter-spacing:.04em;margin:14px 0 6px;font-size:11.5px;font-weight:500}.program-list{gap:6px;margin:0;padding:0;list-style:none;display:grid}.program-item{border:1px solid var(--border);color:var(--text);border-radius:10px;gap:4px;padding:10px 12px;text-decoration:none;transition:border-color .15s,background .15s;display:grid}.program-item:hover{border-color:var(--border-strong);background:var(--bg-hover)}.program-item.is-current{border-color:var(--accent);background:var(--accent-soft)}.program-item-name{justify-content:space-between;align-items:center;gap:8px;font-size:14px;font-weight:600;display:flex}.program-item-meta{color:var(--text-3);font-size:12.5px}.program-links{justify-content:space-between;gap:12px;margin-top:14px;font-size:13px;display:flex}.platform-home{grid-template-columns:minmax(0, calc(var(--content-w) + 160px))}.sidebar{top:var(--header-h);flex:0 0 var(--sidebar-w);height:calc(100vh - var(--header-h));height:calc(100dvh - var(--header-h));border-right:1px solid var(--border);background:var(--bg);position:sticky;overflow:hidden}@media (width>=961px){.sidebar{transition:flex-basis .28s var(--ease-out)}.sidebar.is-rail{flex-basis:64px}.scrim{display:none}}.map{flex-direction:column;height:100%;display:flex}.map-head{border-bottom:1px solid var(--border);flex-direction:column;gap:8px;padding:12px 10px 10px;display:flex}.map-search-row{align-items:center;gap:4px;display:flex}.map-search-row .map-filter{flex:1;min-width:0;margin:0}.map-collapse,.map-close{color:var(--text-3);flex:none}.map-scroll{overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent;flex:1;min-height:0;padding:0 10px 28px;scroll-padding:16px 0;overflow-y:auto}.map-card{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-elev);align-items:center;gap:10px;padding:6px 6px 6px 8px;display:flex}.map-card-ring{height:38px;color:var(--text);font-variant-numeric:tabular-nums;transition:transform var(--dur) var(--ease-spring);border-radius:50%;flex:0 0 38px;place-items:center;font-size:10.5px;font-weight:600;text-decoration:none;display:grid;position:relative}.map-card-ring svg{position:absolute;inset:0}.map-card-ring span{position:relative}.map-card-ring:hover{transform:scale(1.06)}.map-next{min-width:0;color:var(--text);transition:background-color var(--dur-fast);border-radius:7px;flex:1;grid-template-columns:minmax(0,1fr) auto;align-items:center;column-gap:6px;padding:4px 6px;text-decoration:none;display:grid}.map-next:hover{background:var(--bg-hover)}.map-next-label{color:var(--accent-text);letter-spacing:.06em;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap;font-size:10.5px;font-weight:600;overflow:hidden}.map-next-stat{color:var(--text-3);letter-spacing:0;text-transform:none;font-weight:500}.map-next-title{text-overflow:ellipsis;white-space:nowrap;grid-column:1;font-size:13px;font-weight:500;line-height:1.35;overflow:hidden}.map-next-arrow{color:var(--text-3);transition:transform var(--dur) var(--ease-out), color var(--dur-fast);grid-area:1/2/span 2}.map-next:hover .map-next-arrow{color:var(--accent);transform:translate(3px)}.map-next.is-finished{color:var(--ok);margin:0;font-size:13px;font-weight:500}.map-ring{flex:none;place-items:center;display:inline-grid;position:relative}.map-ring>svg{position:absolute;inset:0}.map-ring-track{fill:var(--bg-elev);stroke:var(--border);transition:fill var(--dur), stroke var(--dur)}.map-ring-fill{fill:none;stroke:var(--ok);stroke-linecap:round;transition:stroke-dashoffset .7s var(--ease-out)}.map-ring-num{color:var(--text-3);font-variant-numeric:tabular-nums;place-items:center;font-size:11.5px;font-weight:600;display:grid;position:relative}.map-ring.is-done .map-ring-track{fill:var(--ok);stroke:var(--ok)}.map-ring.is-done .map-ring-num{color:var(--bg-elev)}.is-current .map-ring:not(.is-done) .map-ring-track{fill:var(--accent-soft);stroke:#0000}.is-current .map-ring:not(.is-done) .map-ring-num{color:var(--accent-text)}.map-filter{border:1px solid var(--border);background:var(--bg-elev);height:34px;color:var(--text-3);transition:border-color var(--dur-fast), box-shadow var(--dur-fast);border-radius:9px;align-items:center;gap:8px;margin:0 0 4px;padding:0 6px 0 11px;display:flex}.map-filter:focus-within{border-color:var(--border-strong);box-shadow:0 0 0 3px var(--bg-active)}.map-filter input{min-width:0;height:100%;color:var(--text);font:inherit;background:0 0;border:0;outline:0;flex:1;font-size:13.5px}.map-filter input::-webkit-search-cancel-button{appearance:none}.map-filter-clear{background:var(--bg-hover);width:24px;height:24px;color:var(--text-2);cursor:pointer;border:0;border-radius:6px;place-items:center;display:grid}.map-empty{color:var(--text-3);margin:12px 4px;font-size:13px}.map mark{background:var(--accent-soft);color:var(--accent-text);border-radius:3px}.map-stage{margin-top:16px}.map-stage-title{color:var(--text-3);letter-spacing:.07em;text-transform:uppercase;margin:0 0 4px;padding:0 8px;font-size:11px;font-weight:600}.map-chapters,.map-sections{margin:0;padding:0;list-style:none}.map-chapter+.map-chapter{margin-top:1px}.map-chapter-row{transition:background-color var(--dur-fast);border-radius:10px;align-items:center;display:flex}.map-chapter-row:hover{background:var(--bg-hover)}.map-chapter-link{min-width:0;color:var(--text);flex:1;align-items:center;gap:10px;padding:6px 4px 6px 5px;font-size:14.5px;font-weight:500;line-height:1.3;text-decoration:none;display:flex}.map-chapter-link.active{color:var(--accent-text)}.map-chapter.is-soon .map-chapter-link{color:var(--text-3);font-weight:400}.map-soon{color:var(--text-3);margin-right:8px;font-size:12px}.map-expand{height:30px;color:var(--text-3);cursor:pointer;background:0 0;border:0;border-radius:7px;align-items:center;gap:4px;padding:0 6px 0 8px;display:flex}.map-expand:hover{color:var(--text)}.map-expand svg{transition:transform .3s var(--ease-out);transform:rotate(-90deg)}.map-chapter.is-open .map-expand svg{transform:none}.map-count{font-variant-numeric:tabular-nums;font-size:11.5px}.map-drawer{transition:grid-template-rows .34s var(--ease-out);grid-template-rows:0fr;display:grid}.map-chapter.is-open>.map-drawer{grid-template-rows:1fr}.map-drawer-inner{min-height:0;overflow:hidden}.map-drawer-inner>.map-sections{opacity:0;transition:opacity .2s, transform .3s var(--ease-out);transform:translateY(-6px)}.map-chapter.is-open .map-drawer-inner>.map-sections{opacity:1;transform:none}.map-sections{margin:2px 0 8px;position:relative}.map-section{position:relative}.map-section:before{content:"";background:var(--border);border-radius:1px;width:1.5px;transition:background-color .4s;position:absolute;top:22px;bottom:-10px;left:20.25px}.map-section:last-child:before{display:none}.map-section.is-linked:before{background:var(--ok)}.map-section-link{z-index:1;color:var(--text-2);transition:color var(--dur-fast);border-radius:8px;grid-template-columns:22px auto minmax(0,1fr) auto;align-items:start;column-gap:7px;padding:6px 6px 6px 10px;font-size:13.5px;line-height:1.45;text-decoration:none;display:grid;position:relative}.map-section-link:hover{color:var(--text)}.map-section-link:hover .map-node{border-color:var(--text-3)}.map-section-link[aria-current=page]{color:var(--text);font-weight:500}.map-node{border:1.5px solid var(--border-strong);background:var(--bg);width:12px;height:12px;color:var(--bg-elev);border-radius:50%;justify-self:center;place-items:center;margin-top:4px;transition:background-color .3s,border-color .3s,box-shadow .3s;display:grid}.map-section.is-done .map-node{border-color:var(--ok);background:var(--ok)}.map-section-link[aria-current=page] .map-node{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.map-section.is-done .map-section-link[aria-current=page] .map-node{border-color:var(--ok)}.map-section-num{color:var(--text-3);font-variant-numeric:tabular-nums;font-size:12px;font-weight:400;line-height:1.6}.map-section-title{min-width:0}.map-kind{border-radius:6px;align-self:center;place-items:center;width:20px;height:20px;display:grid}.map-kind.kind-lab{background:var(--teal-50);color:var(--teal-600)}.map-kind.kind-quiz{background:var(--coral-50);color:var(--coral-600)}.map-kind.kind-summary{background:var(--amber-50);color:var(--amber-600)}:root[data-theme=dark] .map-kind.kind-lab{color:var(--teal-100);background:#1d9e7529}:root[data-theme=dark] .map-kind.kind-quiz{color:var(--coral-100);background:#d85a3029}:root[data-theme=dark] .map-kind.kind-summary{color:var(--amber-100);background:#ba751729}.map-marker{top:var(--marker-top);height:var(--marker-height);background:var(--bg-active);transition:top .38s var(--ease-out), height .38s var(--ease-out);border-radius:8px;position:absolute;left:0;right:0}.rail{scrollbar-width:none;flex-direction:column;align-items:center;gap:2px;height:100%;padding:10px 0 20px;display:flex;overflow-y:auto}.rail-stage{border-top:1px solid var(--border);flex-direction:column;align-items:center;gap:2px;width:40px;margin:6px 0 0;padding:6px 0 0;list-style:none;display:flex}.rail-item{width:40px;height:40px;color:var(--text-2);transition:background-color var(--dur-fast), transform var(--dur-fast) var(--ease-out);border-radius:10px;place-items:center;text-decoration:none;display:grid}.rail-item:hover,.rail-item.active,.rail-chapter.is-current{background:var(--bg-active);color:var(--text)}.rail-item:active{transform:scale(.94)}.rail-chapter.is-soon{opacity:.5}.rail-chapter.is-current .map-ring:not(.is-done) .map-ring-track{fill:var(--accent-soft);stroke:#0000}.rail-chapter.is-current .map-ring:not(.is-done) .map-ring-num{color:var(--accent-text)}.rail-flyout{top:var(--flyout-top,0);left:var(--flyout-left,70px);z-index:70;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--bg-elev);width:290px;max-height:min(440px,100vh - 24px);box-shadow:var(--shadow-lg);opacity:0;visibility:hidden;transform-origin:0 0;transition:opacity .16s .12s, transform .22s var(--ease-out) .12s, visibility 0s .34s;padding:12px;position:fixed;overflow-y:auto;transform:translate(-6px)scale(.98)}.rail-flyout:before{content:"";width:10px;position:absolute;top:0;bottom:0;left:-10px}.rail-entry:hover .rail-flyout,.rail-entry:focus-within .rail-flyout{opacity:1;visibility:visible;transition:opacity .16s 60ms, transform .22s var(--ease-out) 60ms, visibility 0s;transform:none}.rail-flyout-stage{color:var(--text-3);letter-spacing:.07em;text-transform:uppercase;margin:0;font-size:10.5px;font-weight:600}.rail-flyout-title{margin:2px 0 8px;font-size:14px;font-weight:600;line-height:1.35}.rail-flyout-bar{background:var(--bg-sunken);border-radius:2px;height:3px;overflow:hidden}.rail-flyout-bar span{background:var(--ok);height:100%;display:block}.rail-flyout ol{margin:8px 0 0;padding:0;list-style:none}.rail-flyout a{color:var(--text-2);border-radius:7px;grid-template-columns:auto minmax(0,1fr) auto;align-items:start;gap:8px;padding:5px 6px;font-size:13px;line-height:1.4;text-decoration:none;display:grid}.rail-flyout a:hover{background:var(--bg-hover);color:var(--text)}.rail-flyout a.active{background:var(--bg-active);color:var(--text);font-weight:500}.rail-flyout a svg{color:var(--ok);margin-top:3px}.scrim{display:none}@media (width<=960px){.sidebar{top:calc(var(--overlay-top,0px) + var(--header-h));z-index:50;width:min(380px,88vw);height:calc(var(--overlay-height,100dvh) - var(--header-h));transition:transform .34s var(--ease-out), box-shadow .34s;touch-action:pan-y;border-right:0;border-radius:0 18px 18px 0;position:fixed;left:0;transform:translate(-100%)}.sidebar.is-open{box-shadow:var(--shadow-lg);transform:none}.sidebar.is-open:after{content:"";background:var(--border-strong);pointer-events:none;border-radius:2px;width:4px;height:36px;margin-top:-18px;position:absolute;top:50%;right:5px}.scrim{inset:var(--header-h) 0 0 0;z-index:45;opacity:0;pointer-events:none;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#14141359;transition:opacity .3s;display:block;position:fixed}.scrim.is-open{opacity:1;pointer-events:auto}.map-head{padding:14px 14px 10px}.map-scroll{padding:4px 14px calc(28px + env(safe-area-inset-bottom))}.map-chapter-link{min-height:44px;font-size:15.5px}.map-expand{justify-content:center;min-width:44px;height:44px}.map-filter{height:42px}.map-filter input{font-size:16px}.map-section-link{padding-top:10px;padding-bottom:10px;font-size:14.5px}.map-section:before{top:26px;bottom:-14px}}@media (width<=960px) and (prefers-reduced-motion:reduce){.sidebar,.sidebar.is-open{transition:none}}.page-header{margin-bottom:36px}.page-eyebrow{color:var(--accent-text);margin:0 0 12px;font-size:13px;font-weight:500;text-decoration:none;display:inline-block}a.page-eyebrow:hover{text-underline-offset:3px;text-decoration:underline}.page-title{font-family:var(--font-reading);letter-spacing:-.015em;text-wrap:balance;margin:0 0 16px;font-size:clamp(30px,4.2vw,40px);font-weight:500;line-height:1.15}.page-num{color:var(--text-3);font-weight:400}.page-meta{flex-wrap:wrap;gap:6px;display:flex}.pill-done{background:var(--ok-soft);color:var(--ok)}.prose{color:var(--text);font-family:var(--font-reading);font-optical-sizing:auto;font-size:17px;line-height:1.7}.prose>:first-child{margin-top:0}.prose p{margin:0 0 1.1em}.prose .lead{color:var(--text-2);font-size:19px;line-height:1.6}.prose h2,.prose h3,.prose h4{font-family:var(--font-reading);letter-spacing:-.01em;text-wrap:balance;font-weight:500}.prose .heading-link{border-radius:var(--radius-sm);width:28px;height:28px;color:var(--text-3);vertical-align:middle;cursor:pointer;opacity:0;background:0 0;border:0;justify-content:center;align-items:center;margin-left:6px;padding:0;transition:opacity .15s,color .15s,background .15s;display:inline-flex}.prose h2:hover .heading-link,.prose h3:hover .heading-link,.prose .heading-link:focus-visible,.prose .heading-link[data-copied]{opacity:1}.prose .heading-link:hover{background:var(--bg-hover);color:var(--text)}.prose .heading-link[data-copied]{color:var(--ok)}.prose .heading-link{position:relative}.prose .heading-link[data-copied]:after{content:"Link copied";border-radius:var(--radius-sm);background:var(--ok-soft);color:var(--ok);font-family:var(--font-sans);letter-spacing:0;white-space:nowrap;pointer-events:none;padding:2px 8px;font-size:12px;font-weight:500;position:absolute;top:50%;left:calc(100% + 4px);transform:translateY(-50%)}@media (hover:none){.prose .heading-link{opacity:.55}}.prose h2{margin:2.2em 0 .6em;font-size:27px;line-height:1.25}.prose h3{margin:1.8em 0 .5em;font-size:21px;line-height:1.3}.prose h4{font-family:var(--font-sans);letter-spacing:0;margin:1.5em 0 .4em;font-size:15px;font-weight:600}.prose a{color:var(--accent-text);text-decoration:underline;-webkit-text-decoration-color:color-mix(in srgb, var(--accent) 40%, transparent);text-decoration-color:color-mix(in srgb, var(--accent) 40%, transparent);text-underline-offset:3px}.prose a:hover{text-decoration-color:currentColor}.prose strong{font-weight:600}.prose :where(ul,ol){margin:0 0 1.2em;padding-left:1.4em}.prose :where(li){margin:.35em 0;padding-left:.2em}.prose li::marker{color:var(--text-3)}.prose hr{border:0;border-top:1px solid var(--border);margin:2.5em 0}.prose blockquote{border-left:2px solid var(--border-strong);color:var(--text-2);margin:1.5em 0;padding:0 0 0 1.2em;font-style:italic}.prose :not(pre)>code{background:var(--code-inline-bg);font-size:var(--code-inline);white-space:break-spaces;word-break:break-word;border-radius:5px;padding:.12em .36em;font-weight:450}.table-wrap{min-width:0;max-width:100%;margin:1.6em 0;container:content-table/inline-size}.table-frame{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-elev)}.prose .content-table{table-layout:fixed;border-collapse:separate;border-spacing:0;width:100%;font-family:var(--font-sans);font-size:14px;line-height:1.6}.prose .content-table th{border-bottom:1px solid var(--border-strong);background:var(--bg-sunken);color:var(--text-2);text-align:left;vertical-align:top;padding:12px 14px;font-size:12.5px;font-weight:600}.prose .content-table thead th:first-child{border-top-left-radius:calc(var(--radius) - 1px)}.prose .content-table thead th{top:var(--header-h);z-index:1;position:sticky}.prose .content-table thead th:last-child{border-top-right-radius:calc(var(--radius) - 1px)}.prose .content-table td{border-bottom:1px solid var(--border);color:var(--text-2);vertical-align:top;padding:14px}.prose .content-table td:first-child{color:var(--text);font-weight:500}.prose .content-table tbody tr:nth-child(2n){background:color-mix(in srgb, var(--bg-sunken) 22%, var(--bg-elev))}.prose .content-table tbody tr:hover,.prose .content-table tbody tr:focus-within{background:color-mix(in srgb, var(--bg-sunken) 45%, var(--bg-elev))}.prose .content-table tr:last-child td{border-bottom:0}.prose .content-table tbody tr:last-child td:first-child{border-bottom-left-radius:calc(var(--radius) - 1px)}.prose .content-table tbody tr:last-child td:last-child{border-bottom-right-radius:calc(var(--radius) - 1px)}.prose .content-table th,.prose .content-table td,.prose .content-table .td-val{overflow-wrap:anywhere;min-width:0}.prose .content-table th code,.prose .content-table td code{white-space:break-spaces;overflow-wrap:anywhere;word-break:normal}.prose .diagram,.prose .widget,.prose .callout,.prose .code-block,.prose .quiz,.prose .lab,.prose .cards,.prose .flashcards{font-family:var(--font-sans)}.skeleton{flex-direction:column;gap:14px;display:flex}.skeleton span{background:linear-gradient(90deg, var(--bg-sunken), var(--bg-hover), var(--bg-sunken));background-size:200% 100%;border-radius:6px;height:14px;animation:1.4s infinite shimmer;display:block}.skeleton .skeleton-block{border-radius:var(--radius-lg);height:180px}@keyframes shimmer{to{background-position:-200% 0}}.load-error{color:var(--fail)}.page-footer{border-top:1px solid var(--border);margin-top:64px;padding-top:32px}.complete-btn{border:1px dashed var(--border-strong);border-radius:var(--radius);width:100%;height:48px;color:var(--text-2);cursor:pointer;background:0 0;justify-content:center;align-items:center;gap:10px;font-size:14.5px;font-weight:500;transition:all .15s;display:flex}.complete-btn:hover{background:var(--bg-hover);color:var(--text);border-style:solid}.complete-check{border:1.5px solid var(--border-strong);color:#0000;border-radius:50%;place-items:center;width:20px;height:20px;display:grid}.complete-btn.is-done{background:var(--ok-soft);color:var(--ok);border:1px solid #0000}.complete-btn.is-done .complete-check{border-color:var(--ok);background:var(--ok);color:var(--bg-elev)}.pager{grid-template-columns:1fr 1fr;gap:12px;margin-top:16px;display:grid}.pager-link{border:1px solid var(--border);border-radius:var(--radius);color:var(--text);flex-direction:column;gap:4px;padding:14px 16px;text-decoration:none;transition:border-color .15s,background .15s;display:flex}.pager-link:hover{border-color:var(--border-strong);background:var(--bg-elev)}.pager-link.is-next{text-align:right;align-items:flex-end}.pager-dir{color:var(--text-3);align-items:center;gap:5px;font-size:12.5px;display:inline-flex}.pager-title{font-size:14.5px;font-weight:500;line-height:1.4}@media (width<=640px){.prose{font-size:16px}.prose .lead{font-size:17px}.prose h2{font-size:24px}.pager{grid-template-columns:1fr}}.platform-disclaimer>p{margin:0}@container content-table (width<=640px){.table-frame{background:0 0;border:0;border-radius:0}.prose .table-wrap table,.prose .table-wrap tbody,.prose .table-wrap tr,.prose .table-wrap td{width:auto;display:block}.prose .table-wrap colgroup{display:none}.prose .table-wrap .content-table{line-height:1.5}.prose .table-wrap thead{clip-path:inset(50%);width:1px;height:1px;position:absolute;overflow:hidden}.prose .table-wrap thead th{position:static}.prose .table-wrap tr{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-elev);margin-bottom:8px;padding:10px 12px}.prose .table-wrap td{color:var(--text);border:0;grid-template-columns:minmax(0,34%) minmax(0,1fr);align-items:baseline;gap:0 12px;padding:0;font-weight:400;display:grid}.prose .table-wrap td+td{border-top:1px dashed var(--border);margin-top:7px;padding-top:7px}.prose .table-wrap td:has(.td-val:empty){display:none}.prose .table-wrap td:before{content:attr(data-label);color:var(--text-3);letter-spacing:.04em;text-transform:uppercase;overflow-wrap:anywhere;font-size:11px;font-weight:600;line-height:1.5}.prose .table-wrap td[data-label=""]{grid-template-columns:minmax(0,1fr)}.prose .table-wrap td[data-label=""]:before{display:none}.prose .table-wrap .td-val{overflow-wrap:anywhere;min-width:0}.prose .table-wrap tbody tr:nth-child(2n),.prose .table-wrap tbody tr:hover,.prose .table-wrap tbody tr:focus-within{background:var(--bg-elev)}.prose .table-wrap tbody tr:last-child td{border-radius:0}.prose .table-wrap td:first-child .td-val{font-weight:500}.prose .table-wrap td code{white-space:normal;overflow-wrap:anywhere}}.prose a.btn{color:var(--text);text-decoration:none}.prose a.btn-primary{color:#fff}.platform-disclaimer{border-top:1px solid var(--border);color:var(--text-3);padding-top:14px;font-size:12.5px;line-height:1.5;margin-top:1.8em!important}.code-block{border:1px solid var(--border);border-radius:var(--radius);background:var(--code-bg);margin:1.5em 0;overflow:hidden}.code-head{border-bottom:1px solid var(--border);min-height:36px;color:var(--text-3);font-family:var(--font-sans);grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:8px;padding:5px 6px 5px 14px;font-size:12.5px;display:grid}.code-label{align-items:flex-start;gap:7px;min-width:0;padding:3px 0;line-height:20px;display:flex}.code-label>svg{flex-shrink:0;margin-top:3.5px}.code-label-text{overflow-wrap:anywhere;min-width:0}.code-label .is-file{color:var(--text-2);font-family:var(--font-mono);font-size:12px;font-weight:500}.code-lang{background:var(--bg-hover);font-family:var(--font-sans);white-space:nowrap;vertical-align:1px;border-radius:4px;margin-left:7px;padding:0 6px;font-size:11px;font-weight:400;line-height:18px;display:inline-block}.code-copy{height:26px;color:var(--text-3);cursor:pointer;background:0 0;border:0;border-radius:6px;align-items:center;gap:5px;padding:0 8px;font-size:12px;display:flex}.code-copy:hover{background:var(--bg-hover);color:var(--text)}.code-block pre{font-size:var(--code-size);tab-size:2;margin:0;padding:14px 0;line-height:1.65;overflow-x:auto;background:0 0!important}.code-block pre code{min-width:max-content;display:block}.code-block.is-wrapped pre code{min-width:0}.code-block .line{width:100%;padding:0 18px;display:inline-block}.code-block .line.highlighted{background:var(--accent-soft);box-shadow:inset 2px 0 var(--accent)}.shiki span{color:var(--shiki-light)}:root[data-theme=dark] .shiki span{color:var(--shiki-dark)}.code-block.is-terminal .code-head{color:var(--text-3)}.callout{border-radius:var(--radius);background:var(--c-bg);--c-bg:var(--bg-sunken);--c-fg:var(--text-2);gap:12px;margin:1.6em 0;padding:14px 16px;font-size:15px;line-height:1.6;display:flex}.callout-icon{color:var(--c-fg);flex:none;margin-top:2px}.callout-body{min-width:0;color:var(--text)}.callout-title{color:var(--c-fg);letter-spacing:.01em;font-size:13px;font-weight:600;margin:0 0 4px!important}.callout-body>:last-child{margin-bottom:0}.callout-body p{margin:0 0 .6em}.callout-body ul{margin:.3em 0 .6em}.callout .code-block{margin:.8em 0}.callout-note{--c-bg:var(--blue-50);--c-fg:var(--blue-600)}.callout-tip{--c-bg:var(--green-50);--c-fg:var(--green-600)}.callout-important{--c-bg:var(--purple-50);--c-fg:var(--purple-600)}.callout-warning{--c-bg:var(--amber-50);--c-fg:var(--amber-600)}.callout-exam{--c-bg:var(--accent-soft);--c-fg:var(--accent-text)}:root[data-theme=dark] .callout-note{--c-bg:#378add21;--c-fg:var(--blue-100)}:root[data-theme=dark] .callout-tip{--c-bg:#63992224;--c-fg:var(--green-100)}:root[data-theme=dark] .callout-important{--c-bg:#7f77dd26;--c-fg:var(--purple-100)}:root[data-theme=dark] .callout-warning{--c-bg:#ba751729;--c-fg:var(--amber-100)}.objectives{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-elev);font-family:var(--font-sans);margin:0 0 2em;padding:16px 20px;font-size:15px;line-height:1.6}.objectives-title{color:var(--text-3);letter-spacing:.04em;text-transform:uppercase;align-items:center;gap:6px;font-size:12px;font-weight:600;display:flex;margin:0 0 6px!important}.objectives ul{margin:0}.objectives li{margin:.2em 0}.cards{gap:12px;margin:1.6em 0;display:grid}.cards.cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.cards.cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.card{border:.75px solid var(--s);border-radius:var(--radius);background:color-mix(in srgb, var(--f) 55%, var(--bg-elev));padding:14px 16px;font-size:14.5px;line-height:1.55}.card-kicker{color:var(--ts);letter-spacing:.05em;text-transform:uppercase;font-size:11.5px;font-weight:600;margin:0 0 2px!important}.card-title{color:var(--tt);font-size:15px;font-weight:600;margin:0 0 6px!important}.card-body{color:var(--text-2)}.card-body>:last-child{margin-bottom:0}.card-body p{margin:0 0 .5em}.card-body ul{margin:0;padding-left:1.1em}.card-body li{margin:.15em 0}.columns{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:1.6em 0;display:grid}.column{border-radius:var(--radius);background:color-mix(in srgb, var(--f) 45%, var(--bg-elev));border:.75px solid var(--s);min-width:0;font-family:var(--font-sans);padding:12px 14px 4px}.column-title{color:var(--tt);font-size:13.5px;font-weight:600;margin:0 0 8px!important}.column .code-block{margin:0 0 10px}.column p{font-size:14.5px;line-height:1.55}.tabs{margin:1.6em 0}.tabs-list{border-bottom:1px solid var(--border);font-family:var(--font-sans);gap:2px;display:flex}.tabs-list button{color:var(--text-3);cursor:pointer;background:0 0;border:0;border-bottom:2px solid #0000;margin-bottom:-1px;padding:8px 14px;font-size:13.5px;font-weight:500}.tabs-list button:hover{color:var(--text)}.tabs-list button.is-active{border-bottom-color:var(--accent);color:var(--text)}.tabs-panel>.code-block:first-child{margin-top:12px}.reveal{border:1px solid var(--border);border-radius:var(--radius);font-family:var(--font-sans);margin:1.2em 0}.reveal-toggle{width:100%;color:var(--text-2);text-align:left;cursor:pointer;background:0 0;border:0;align-items:center;gap:8px;padding:10px 14px;font-size:14px;font-weight:500;display:flex}.reveal-toggle svg{transition:transform .2s;transform:rotate(-90deg)}.reveal.is-open .reveal-toggle svg{transform:none}.reveal-toggle:hover{color:var(--text)}.reveal-body{padding:0 14px 4px;font-size:15px}.reveal-body .code-block{margin-top:0}.steps{counter-reset:step;margin:1.5em 0;padding:0;list-style:none}.step{counter-increment:step;position:relative;margin:0!important;padding:0 0 18px 42px!important}.step:before{content:counter(step);background:var(--bg-sunken);width:26px;height:26px;color:var(--text-2);font-family:var(--font-sans);border-radius:50%;place-items:center;font-size:12.5px;font-weight:600;display:grid;position:absolute;top:2px;left:0}.step:after{content:"";background:var(--border);width:1px;position:absolute;top:32px;bottom:4px;left:12.5px}.step:last-child:after{display:none}.step-title{font-family:var(--font-sans);font-size:15.5px;font-weight:600;margin:0 0 4px!important}.step-body>:last-child{margin-bottom:0}.step-body .code-block{margin:.7em 0}.glossary{border-top:1px solid var(--border);font-family:var(--font-sans);margin:1.5em 0;font-size:15px;line-height:1.55}.glossary-row{border-bottom:1px solid var(--border);grid-template-columns:170px 1fr;gap:16px;padding:11px 0;display:grid}.glossary dt{font-weight:600}.glossary dd{color:var(--text-2);margin:0}.widget{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--bg-elev);font-family:var(--font-sans);margin:28px 0;padding:18px;font-size:14px}.widget-label{color:var(--text-3);letter-spacing:.05em;text-transform:uppercase;align-items:center;gap:5px;font-size:11.5px;font-weight:600;display:flex;margin:0 0 8px!important}.widget-title{font-size:15px;font-weight:600;margin:0 0 4px!important}.widget-sub{color:var(--text-3);font-size:13.5px;line-height:1.5;margin:0 0 14px!important}.terminal{border-radius:var(--radius);background:var(--bg-sunken);font-family:var(--font-mono);font-size:var(--code-size-sm);white-space:pre;padding:12px 14px;line-height:1.7;overflow-x:auto}.terminal p{margin:0!important}.term-muted{color:var(--text-3)}.term-ok{color:var(--ok)}.term-changed{color:var(--changed)}.term-fail{color:var(--fail)}.term-drift{color:var(--accent-text);margin:6px 0!important}.term-run+.term-run,.term-drift+.term-run{border-top:1px dashed var(--border);margin-top:10px;padding-top:10px}.chip{border:.75px solid var(--s,var(--border));background:color-mix(in srgb, var(--f,var(--bg-elev)) 60%, var(--bg-elev));height:28px;color:var(--tt,var(--text));font-family:var(--font-mono);cursor:pointer;border-radius:7px;align-items:center;gap:5px;padding:0 10px;font-size:12px;transition:box-shadow .15s,opacity .15s;display:inline-flex}.chip:hover{box-shadow:0 0 0 1px var(--s,var(--border-strong))}.chip.is-active{box-shadow:0 0 0 2px var(--s,var(--accent))}.chip.is-dim{opacity:.4}.chip-row{flex-wrap:wrap;gap:6px;display:flex}.idem-top{grid-template-columns:1fr 1fr;gap:16px;margin-bottom:14px;display:grid}.idem-host ul{margin:0 0 10px;padding:0;list-style:none}.idem-host li{color:var(--text-3);align-items:center;gap:8px;padding:3px 0;display:flex}.idem-host li:before{content:"";border:1.5px solid var(--border-strong);border-radius:50%;width:9px;height:9px}.idem-host li.is-ok{color:var(--text)}.idem-host li.is-ok:before{border-color:var(--ok);background:var(--ok)}.idem-state{border-radius:999px;padding:3px 9px;font-size:12px;font-weight:500;display:inline-block}.idem-state.is-ok{background:var(--ok-soft);color:var(--ok)}.idem-state.is-drift{background:var(--changed-soft);color:var(--changed)}.idem-actions{flex-direction:column;align-items:flex-start;gap:10px;display:flex}.idem-drift{flex-wrap:wrap;gap:6px;display:flex}.idem-drift .widget-label{width:100%;margin:0!important}.quiz,.flashcards{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--bg-elev);margin:28px 0;padding:18px}.quiz.is-single{padding:16px 18px}.quiz-head,.flashcards-head{justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:14px;display:flex}.quiz-title{font-size:15px;font-weight:600;margin:0!important}.quiz-score{color:var(--text-3);font-variant-numeric:tabular-nums;font-size:13px}.quiz-list{list-style:none;margin:0!important;padding:0!important}.quiz-item{margin:0!important;padding:0!important}.quiz-item+.quiz-item{border-top:1px solid var(--border);margin-top:22px!important;padding-top:20px!important}.quiz-q{gap:10px;font-size:15.5px;font-weight:500;line-height:1.5;display:flex;margin:0 0 12px!important}.quiz-q-text{flex:1;min-width:0}.quiz-q-num{background:var(--bg-sunken);height:22px;color:var(--text-3);text-align:center;border-radius:6px;flex:0 0 22px;font-size:12px;font-weight:600;line-height:22px}.quiz-q-kicker{background:var(--accent-soft);color:var(--accent-text);border-radius:999px;flex:none;align-self:center;padding:2px 8px;font-size:11.5px;font-weight:600}.quiz-code{background:var(--code-bg);border-radius:8px;margin:0 0 12px;padding:10px 12px;font-size:12.5px;line-height:1.6;overflow-x:auto}.quiz-options{gap:6px;display:grid}.quiz-option{border:1px solid var(--border);background:var(--bg);width:100%;color:var(--text);text-align:left;cursor:pointer;border-radius:9px;align-items:flex-start;gap:10px;padding:9px 12px;font-size:14.5px;line-height:1.45;transition:border-color .15s,background .15s;display:flex}.quiz-option:not(:disabled):hover{border-color:var(--border-strong);background:var(--bg-hover)}.quiz-option:disabled{cursor:default}.quiz-letter{border:1px solid var(--border-strong);height:22px;color:var(--text-3);border-radius:50%;flex:0 0 22px;place-items:center;font-size:11.5px;font-weight:600;display:grid}.quiz-option.is-correct{border-color:var(--ok);background:var(--ok-soft)}.quiz-option.is-correct .quiz-letter{border-color:var(--ok);background:var(--ok);color:var(--bg-elev)}.quiz-option.is-wrong{border-color:var(--fail);background:var(--fail-soft)}.quiz-option.is-wrong .quiz-letter{border-color:var(--fail);background:var(--fail);color:var(--bg-elev)}.quiz-option.is-muted{opacity:.55}.quiz-explain{background:var(--bg-sunken);color:var(--text-2);border-radius:8px;padding:10px 12px;font-size:14px;line-height:1.55;margin:10px 0 0!important}.quiz-explain.is-correct strong{color:var(--ok)}.quiz-explain.is-wrong strong{color:var(--fail)}.quiz-foot{border-top:1px solid var(--border);color:var(--text-2);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin-top:18px;padding-top:14px;font-size:14px;display:flex}.quiz-foot p{margin:0!important}.quiz.is-single .quiz-foot{border-top:0;justify-content:flex-end;margin-top:10px;padding-top:0}.quiz :not(pre)>code,.flashcards :not(pre)>code,.lab :not(pre)>code,.widget :not(pre)>code{background:var(--code-inline-bg);border-radius:4px;padding:.1em .35em;font-size:.88em}.flashcard{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);cursor:pointer;text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:10px;width:100%;min-height:170px;padding:24px;transition:background .2s;display:flex}.flashcard.is-flipped{background:var(--accent-soft);border-color:#0000}.flashcard-side{color:var(--text-3);letter-spacing:.06em;text-transform:uppercase;font-size:11.5px;font-weight:600}.flashcard-text{max-width:520px;color:var(--text);font-family:var(--font-reading);font-size:18px;line-height:1.45}.flashcard-hint{color:var(--text-3);font-size:12px}.flashcards-controls{justify-content:space-between;gap:8px;margin-top:12px;display:flex}.flashcards-nav{gap:6px;display:flex}.lab{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--bg-elev);margin:28px 0}.lab-head{border-bottom:1px solid var(--border);padding:18px 20px 16px}.lab-title-row{align-items:center;gap:10px;display:flex}.lab-icon{background:var(--teal-50);width:30px;height:30px;color:var(--teal-600);border-radius:8px;place-items:center;display:grid}:root[data-theme=dark] .lab-icon{color:var(--teal-100);background:#1d9e7529}.lab-title{flex:1;font-size:16px;font-weight:600;margin:0!important}.lab-count{color:var(--text-3);font-variant-numeric:tabular-nums;font-size:13px}.lab-progress{background:var(--bg-sunken);border-radius:2px;height:4px;margin:14px 0;overflow:hidden}.lab-progress span{background:var(--ok);border-radius:2px;height:100%;transition:width .3s;display:block}.lab-meta{grid-template-columns:1fr auto;gap:16px 28px;font-size:14px;line-height:1.55;display:grid}.lab-meta-label{color:var(--text-3);letter-spacing:.05em;text-transform:uppercase;font-size:11.5px;font-weight:600;margin:0 0 4px!important}.lab-meta ul{margin:0!important;padding-left:1.1em!important}.lab-meta li{margin:.15em 0!important}.lab-meta .lab-hosts{list-style:none;padding:0!important}.lab-hosts li{color:var(--text-3);align-items:center;gap:6px;display:flex}.lab-classroom{background:var(--bg-sunken);color:var(--text-2);border-radius:8px;padding:10px 12px;font-size:13.5px;line-height:1.55;margin:14px 0 0!important}.lab-tasks{list-style:none;margin:0!important;padding:6px 20px 8px!important}.lab-task{margin:0!important;padding:16px 0!important}.lab-task+.lab-task{border-top:1px solid var(--border)}.lab-task-head{align-items:flex-start;gap:12px;display:flex}.lab-check{border:1.5px solid var(--border-strong);background:var(--bg);height:26px;color:var(--text-2);cursor:pointer;border-radius:8px;flex:0 0 26px;place-items:center;font-size:12px;font-weight:600;transition:all .15s;display:grid}.lab-check:hover{border-color:var(--ok)}.lab-task.is-done .lab-check{border-color:var(--ok);background:var(--ok);color:var(--bg-elev)}.lab-task-title{font-size:15.5px;font-weight:600;line-height:1.45;margin:2px 0 0!important}.lab-task.is-done .lab-task-title{color:var(--text-3)}.lab-task-body{font-family:var(--font-reading);padding-left:38px;font-size:16px}.lab-task-body>:first-child{margin-top:8px}.lab-task-body>:last-child{margin-bottom:0}.lab-task-body .code-block{margin:.8em 0}.lab-done{border-top:1px solid var(--border);background:var(--ok-soft);border-radius:0 0 var(--radius-lg) var(--radius-lg);color:var(--ok);align-items:center;gap:8px;padding:12px 20px;font-size:14px;font-weight:500;display:flex}.search-backdrop{z-index:100;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#14141373;justify-content:center;padding:10vh 16px 16px;animation:.12s fade-in;display:flex;position:fixed;inset:0}.search-dialog{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--bg-elev);width:min(640px,100%);max-height:min(560px,80vh);box-shadow:var(--shadow-lg);flex-direction:column;display:flex;overflow:hidden}.search-input-row{border-bottom:1px solid var(--border);color:var(--text-3);align-items:center;gap:10px;padding:0 14px;display:flex}.search-input-row input{height:52px;color:var(--text);font:inherit;background:0 0;border:0;outline:0;flex:1;font-size:16px}.search-results{padding:6px;overflow-y:auto}.search-empty,.search-none{color:var(--text-3);margin:0;padding:18px 12px;font-size:13.5px}.search-empty p{margin:0 0 10px}.search-suggestions{flex-wrap:wrap;gap:6px;display:flex}.search-suggestions .pill{cursor:pointer;border:0}.search-suggestions .pill:hover{background:var(--bg-active);color:var(--text)}.search-hit{text-align:left;cursor:pointer;background:0 0;border:0;border-radius:9px;align-items:flex-start;gap:10px;width:100%;padding:10px 12px;display:flex}.search-hit.is-active{background:var(--bg-active)}.search-hit-icon{color:var(--text-3);flex:none;margin-top:2px}.search-hit-body{flex-direction:column;flex:1;gap:3px;min-width:0;display:flex}.search-hit-title{color:var(--text);font-size:14px;font-weight:500}.search-hit-num,.search-hit-heading{color:var(--text-3);font-weight:400}.search-hit-snippet{-webkit-line-clamp:2;color:var(--text-3);-webkit-box-orient:vertical;font-size:13px;line-height:1.5;display:-webkit-box;overflow:hidden}.search-hit-snippet mark{background:var(--accent-soft);color:var(--accent-text);border-radius:3px}.search-hit-enter{color:var(--text-3);flex:none;margin-top:3px}@media (width<=640px){.cards.cols-2,.cards.cols-3,.columns,.idem-top,.lab-meta{grid-template-columns:1fr}.glossary-row{grid-template-columns:1fr;gap:2px}.lab-task-body{padding-left:0}}@media (width>=641px) and (width<=900px){.cards.cols-3{grid-template-columns:repeat(2,minmax(0,1fr))}}.terminal .term-muted{white-space:pre-wrap}.tabs-list{scrollbar-width:none;overflow-x:auto}.quiz-option>span:last-child,.quiz-q{overflow-wrap:anywhere;min-width:0}.ph{border-radius:4px}.ph.is-empty{background:var(--changed-soft);box-shadow:inset 0 -1px 0 var(--changed);padding:0 2px;color:var(--changed)!important}.ph.is-filled{background:var(--ok-soft);padding:0 2px;color:var(--ok)!important}.lab-classroom a{color:var(--accent-text);text-underline-offset:2px}.callout-homelab{--c-bg:var(--teal-50);--c-fg:var(--teal-600)}.env{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);margin:1.2em 0}.option-switch{border-bottom:1px solid var(--border);font-family:var(--font-sans);gap:2px;padding:4px;display:flex}.option-switch button{color:var(--text-3);cursor:pointer;background:0 0;border:0;border-radius:6px;align-items:center;gap:6px;padding:5px 10px;font-size:12.5px;font-weight:500;display:inline-flex}.option-switch button:hover{color:var(--text)}.option-switch button.is-active{background:var(--bg-sunken);color:var(--text)}.env-home .env-switch button.is-active{background:var(--teal-50);color:var(--teal-600)}.env-panel{min-width:0;padding:12px 14px;font-size:14.5px;line-height:1.6}.env-panel>:first-child{margin-top:0}.env-panel>:last-child{margin-bottom:0}.env-panel p{margin:0 0 .6em}.env-panel .code-block{margin:.7em 0}.env-same{color:var(--text-3)}.lab-prep{background:var(--bg-sunken);margin:16px 0 0}.lab-prep-head{border-bottom:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:6px 12px;padding:6px 6px 6px 14px;display:flex}.lab-prep-head .lab-meta-label{margin:0}.lab-prep-head .env-switch{border:0;padding:0}.lab-prep .env-switch button.is-active{background:var(--bg)}.lab-prep .env-panel{color:var(--text-2);font-size:14px}.lab-prep-steps{margin:0;padding-left:20px}.lab-prep-steps li+li{margin-top:6px}.lab-prep-extra{border-top:1px dashed var(--border);margin-top:10px;padding-top:10px}.lab-prep-extra>:last-child{margin-bottom:0}.starter{margin-top:8px}.starter-files{flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none;display:flex}.starter-files li{margin:0!important}.starter-files button,.starter-hook{border:1px solid var(--border);background:var(--bg);color:var(--text-2);font-family:var(--font-mono);border-radius:999px;align-items:center;gap:5px;padding:3px 9px;font-size:12px;display:inline-flex}.starter-files button{cursor:pointer}.starter-files button:hover,.starter-files button.is-active{border-color:var(--teal-400);color:var(--teal-600)}.starter-hook{font-family:var(--font-sans);border-style:dashed}.starter-view{border:1px solid var(--border);background:var(--bg);max-height:320px;font-size:var(--code-size-sm);border-radius:8px;margin:8px 0 0;padding:10px 12px;line-height:1.55;overflow:auto}.starter-none{color:var(--text-3);font-size:13px;margin:6px 0 0!important}:root[data-theme=dark] .callout-homelab{--c-bg:#1d9e7524;--c-fg:var(--teal-100)}:root[data-theme=dark] .env-home .env-switch button.is-active{color:var(--teal-100);background:#1d9e752e}:root[data-theme=dark] .starter-files button:hover,:root[data-theme=dark] .starter-files button.is-active{border-color:var(--teal-200);color:var(--teal-100)}summary.reveal-toggle{list-style:none}summary.reveal-toggle::-webkit-details-marker{display:none}.activity-panel .quiz-title{font-family:var(--font-sans);letter-spacing:0;font-size:15px;font-weight:600;line-height:1.5}.quiz-option.is-selected{border-color:var(--border-strong);background:var(--bg-sunken)}.quiz-option.is-selected .quiz-letter{background:var(--bg-elev);color:var(--text)}.activity-actions{justify-content:flex-start;gap:8px}.diagram{margin:28px 0}.diagram-canvas{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--bg-elev);padding:20px 16px;position:relative}.diagram-zoom{width:28px;height:28px;color:var(--text-3);cursor:pointer;opacity:0;background:0 0;border:0;border-radius:7px;place-items:center;transition:opacity .15s,background .15s;display:grid;position:absolute;top:8px;right:8px}.diagram-canvas:hover .diagram-zoom,.diagram-zoom:focus-visible{opacity:1}.diagram-zoom:hover{background:var(--bg-hover);color:var(--text)}.diagram figcaption,.widget-caption{color:var(--text-3);font-family:var(--font-sans);text-align:center;margin-top:10px;font-size:13px;line-height:1.5}.dg{width:100%;height:auto;font-family:var(--font-sans);--line:var(--gray-400);--hot:var(--accent);--label:var(--text-3);overflow:visible}:root[data-theme=dark] .dg{--line:var(--gray-400)}.dg-node rect{fill:var(--f);stroke:var(--s);stroke-width:.75px;transition:fill .2s,stroke .2s,stroke-width .2s,opacity .2s}.dg-node text{pointer-events:none;transition:opacity .2s}.dg-title{fill:var(--tt);font-size:14px;font-weight:500}.dg-title.is-mono,.dg-label.is-mono{font-family:var(--font-mono);font-size:12.5px}.dg-sub{fill:var(--ts);font-size:12px}.dg-node.is-clickable{cursor:pointer;outline:none}.dg-node.is-clickable:hover rect{stroke-width:1.5px}.dg-node.is-clickable:focus-visible rect{stroke:var(--accent);stroke-width:2px}.dg-group-select{cursor:pointer;outline:none}.dg-group-select:focus-visible>.dg-group>rect{stroke:var(--accent);stroke-width:2px}.dg-node.is-active rect{stroke-width:2px}.dg-node.is-dim rect,.dg-node.is-dim text,.dg-group.is-dim,.dg-arrow.is-dim{opacity:.32}.dg-group rect{fill:var(--f);fill-opacity:.35;stroke:var(--s);stroke-width:.75px;stroke-dasharray:4 4;transition:opacity .2s,stroke-width .2s}.dg-group.is-solid rect{stroke-dasharray:none;fill-opacity:.5}.dg-group.is-active rect{stroke-width:1.75px;stroke-dasharray:none}.dg-group-label{fill:var(--tt);letter-spacing:.02em;font-size:12px;font-weight:600}.dg-group-sub{fill:var(--ts);font-size:11.5px}.dg-arrow path{fill:none;stroke:var(--line);stroke-width:1.25px;transition:stroke .2s,opacity .2s}.dg-arrow path.is-dashed{stroke-dasharray:5 4}.dg-arrow.is-hot path{stroke:var(--hot);stroke-width:1.75px}.dg-head{fill:none;stroke:var(--line);stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round}.dg-head.is-hot{stroke:var(--hot)}.dg-arrow-label{fill:var(--label);paint-order:stroke;stroke:var(--bg-elev);stroke-width:4px;stroke-linejoin:round;font-size:11.5px}.dg-arrow.is-hot .dg-arrow-label{fill:var(--accent-text)}.dg-label{fill:var(--text-2);font-size:13px}.dg-label.is-muted{fill:var(--text-3);font-size:12px}.dg-badge circle{fill:var(--bg-elev);stroke:var(--border-strong);stroke-width:1px}.dg-badge text{fill:var(--text-2);font-size:11px;font-weight:600}.dg-badge.is-hot circle{fill:var(--accent);stroke:var(--accent)}.dg-badge.is-hot text{fill:#fff}.lightbox{z-index:100;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#1414138c;place-items:center;padding:24px;animation:.15s fade-in;display:grid;position:fixed;inset:0}.lightbox-body{border-radius:var(--radius-lg);background:var(--bg-elev);width:min(1200px,100%);max-height:100%;box-shadow:var(--shadow-lg);padding:40px 32px 24px;position:relative;overflow:auto}.lightbox-close{position:absolute;top:8px;right:8px}.lightbox-caption{color:var(--text-3);text-align:center;margin:16px 0 0;font-size:14px}.step-controls{border-top:1px solid var(--border);font-family:var(--font-sans);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px 20px;margin-top:14px;padding-top:14px;display:flex}.step-text{min-height:62px;color:var(--text-2);flex-direction:column;flex:300px;gap:2px;font-size:14px;line-height:1.5;display:flex}.step-text strong{color:var(--text);font-weight:600}.step-index{color:var(--text-3);text-transform:uppercase;letter-spacing:.05em;font-size:12px;font-weight:500}.step-buttons{align-items:center;gap:8px;display:flex}.step-dots{gap:5px;margin-right:6px;display:flex}.step-dots button{background:var(--border-strong);cursor:pointer;border:0;border-radius:50%;width:7px;height:7px;padding:0}.step-dots button.is-past{background:var(--text-3)}.step-dots button.is-active{background:var(--accent);border-radius:4px;width:18px}@keyframes fade-in{0%{opacity:0}}.t-purple{--f:var(--purple-50);--s:var(--purple-600);--tt:var(--purple-800);--ts:var(--purple-600)}.t-teal{--f:var(--teal-50);--s:var(--teal-600);--tt:var(--teal-800);--ts:var(--teal-600)}.t-coral{--f:var(--coral-50);--s:var(--coral-600);--tt:var(--coral-800);--ts:var(--coral-600)}.t-pink{--f:var(--pink-50);--s:var(--pink-600);--tt:var(--pink-800);--ts:var(--pink-600)}.t-gray{--f:var(--gray-50);--s:var(--gray-600);--tt:var(--gray-800);--ts:var(--gray-600)}.t-blue{--f:var(--blue-50);--s:var(--blue-600);--tt:var(--blue-800);--ts:var(--blue-600)}.t-green{--f:var(--green-50);--s:var(--green-600);--tt:var(--green-800);--ts:var(--green-600)}.t-amber{--f:var(--amber-50);--s:var(--amber-600);--tt:var(--amber-800);--ts:var(--amber-600)}.t-red{--f:var(--red-50);--s:var(--red-600);--tt:var(--red-800);--ts:var(--red-600)}:root[data-theme=dark] .t-purple{--f:var(--purple-800);--s:var(--purple-200);--tt:var(--purple-50);--ts:var(--purple-100)}:root[data-theme=dark] .t-teal{--f:var(--teal-800);--s:var(--teal-200);--tt:var(--teal-50);--ts:var(--teal-100)}:root[data-theme=dark] .t-coral{--f:var(--coral-800);--s:var(--coral-200);--tt:var(--coral-50);--ts:var(--coral-100)}:root[data-theme=dark] .t-pink{--f:var(--pink-800);--s:var(--pink-200);--tt:var(--pink-50);--ts:var(--pink-100)}:root[data-theme=dark] .t-gray{--f:var(--gray-800);--s:var(--gray-200);--tt:var(--gray-50);--ts:var(--gray-100)}:root[data-theme=dark] .t-blue{--f:var(--blue-800);--s:var(--blue-200);--tt:var(--blue-50);--ts:var(--blue-100)}:root[data-theme=dark] .t-green{--f:var(--green-800);--s:var(--green-200);--tt:var(--green-50);--ts:var(--green-100)}:root[data-theme=dark] .t-amber{--f:var(--amber-800);--s:var(--amber-200);--tt:var(--amber-50);--ts:var(--amber-100)}:root[data-theme=dark] .t-red{--f:var(--red-800);--s:var(--red-200);--tt:var(--red-50);--ts:var(--red-100)}:root[data-theme=dark] .dg-group.t-purple{--f:var(--purple-900);--s:var(--purple-400);--tt:var(--purple-100);--ts:var(--purple-200)}:root[data-theme=dark] .dg-group.t-teal{--f:var(--teal-900);--s:var(--teal-400);--tt:var(--teal-100);--ts:var(--teal-200)}:root[data-theme=dark] .dg-group.t-coral{--f:var(--coral-900);--s:var(--coral-400);--tt:var(--coral-100);--ts:var(--coral-200)}:root[data-theme=dark] .dg-group.t-pink{--f:var(--pink-900);--s:var(--pink-400);--tt:var(--pink-100);--ts:var(--pink-200)}:root[data-theme=dark] .dg-group.t-gray{--f:var(--gray-900);--s:var(--gray-400);--tt:var(--gray-100);--ts:var(--gray-200)}:root[data-theme=dark] .dg-group.t-blue{--f:var(--blue-900);--s:var(--blue-400);--tt:var(--blue-100);--ts:var(--blue-200)}:root[data-theme=dark] .dg-group.t-green{--f:var(--green-900);--s:var(--green-400);--tt:var(--green-100);--ts:var(--green-200)}:root[data-theme=dark] .dg-group.t-amber{--f:var(--amber-900);--s:var(--amber-400);--tt:var(--amber-100);--ts:var(--amber-200)}:root[data-theme=dark] .dg-group.t-red{--f:var(--red-900);--s:var(--red-400);--tt:var(--red-100);--ts:var(--red-200)}.dg-info{border-radius:var(--radius);background:var(--bg-sunken);min-height:72px;margin-top:14px;padding:12px 14px;font-size:14px;line-height:1.55}.dg-info[class*=t-]{background:color-mix(in srgb, var(--f) 70%, var(--bg-elev));border-left:3px solid var(--s)}.dg-info-title{color:var(--text);margin:0 0 3px;font-weight:600}.dg-info-text{color:var(--text-2);margin:0}.dg-info-hint{color:var(--text-3);margin:0}:root[data-theme=dark] .dg-info[class*=t-]{background:color-mix(in srgb, var(--f) 40%, var(--bg-elev))}.dg-arrow.is-ok path{stroke:var(--ok);stroke-width:2px}.dg-arrow.is-bad path{stroke:var(--fail);stroke-width:2px;stroke-dasharray:5 4}.dg-head.is-ok{stroke:var(--ok)}.dg-head.is-bad{stroke:var(--fail);stroke-width:2.2px}.dg-arrow.is-ok .dg-arrow-label{fill:var(--ok)}.dg-arrow.is-bad .dg-arrow-label{fill:var(--fail)}.segmented{background:var(--bg-sunken);border-radius:9px;flex-wrap:wrap;gap:2px;padding:3px;display:inline-flex}.segmented button{height:26px;color:var(--text-3);font-family:var(--font-mono);cursor:pointer;background:0 0;border:0;border-radius:7px;padding:0 10px;font-size:12px}.segmented button:hover{color:var(--text)}.segmented button.is-active{background:var(--bg-elev);color:var(--text);box-shadow:0 1px 2px #00000014}.inv-grid{grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:18px;display:grid}.inv-editor{flex-direction:column;display:flex}.inv-editor-head{justify-content:space-between;align-items:center;min-height:28px;display:flex}.inv-editor-head .widget-label{margin:0!important}.inv-editor textarea{border:1px solid var(--border);border-radius:var(--radius);background:var(--code-bg);min-height:380px;color:var(--text);font-family:var(--font-mono);resize:vertical;outline:none;flex:1;margin-top:6px;padding:12px 14px;font-size:12.5px;line-height:1.6}.inv-editor textarea:focus{border-color:var(--accent)}.inv-view .widget-label:first-child{align-items:center;min-height:28px;display:flex;margin-bottom:6px!important}.inv-hosts-label{margin-top:16px!important}.inv-view .terminal{min-height:130px}.inv-warnings{background:var(--changed-soft);color:var(--changed);border-radius:8px;font-size:13px;list-style:none;margin:14px 0 0!important;padding:10px 12px!important}.inv-warnings li{align-items:baseline;gap:6px;display:flex;margin:2px 0!important}.ranges-input{border:1px solid var(--border);border-radius:var(--radius);background:var(--code-bg);width:100%;height:42px;color:var(--text);font-family:var(--font-mono);outline:none;padding:0 14px;font-size:15px}.ranges-input:focus{border-color:var(--accent)}.ranges-presets{margin:10px 0 14px}.ranges-presets .pill{font-family:var(--font-mono);cursor:pointer;border:0}.ranges-count{color:var(--text-2);margin:0 0 8px!important}.ranges-list{flex-wrap:wrap;align-items:center;gap:5px;display:flex}.ranges-list code{color:var(--teal-800);border-radius:6px;background:var(--teal-50)!important;padding:3px 7px!important;font-size:12px!important}:root[data-theme=dark] .ranges-list code{color:var(--teal-100);background:#1d9e7529!important}.ranges-error{color:var(--fail);margin:0!important}.prec-list{list-style:none;margin:0!important;padding:0!important}.prec-row{border:1px solid var(--border);border-radius:var(--radius);grid-template-columns:38px 22px minmax(0,1fr) auto;align-items:center;gap:10px;transition:background .15s,border-color .15s,opacity .15s;display:grid;margin:0!important;padding:10px 12px!important}.prec-row+.prec-row{margin-top:6px!important}.prec-row.is-winner{border-color:var(--ok);background:var(--ok-soft)}.prec-row.is-ignored{opacity:.6}.prec-row.is-ignored .prec-label{text-decoration:line-through;-webkit-text-decoration-color:var(--text-3);text-decoration-color:var(--text-3)}.prec-row.is-off{border-style:dashed}.prec-row.is-off .prec-body{opacity:.55}.prec-toggle{background:var(--border-strong);cursor:pointer;border:0;border-radius:999px;width:34px;height:20px;padding:0;transition:background .15s;position:relative}.prec-toggle span{background:#fff;border-radius:50%;width:14px;height:14px;transition:transform .15s;position:absolute;top:3px;left:3px}.prec-toggle[aria-checked=true]{background:var(--accent)}.prec-toggle[aria-checked=true] span{transform:translate(14px)}.prec-rank{color:var(--text-3);text-align:center;font-size:12px;font-weight:600}.prec-body{flex-direction:column;gap:2px;min-width:0;display:flex}.prec-label{word-break:break-all;align-self:flex-start;font-weight:500;background:0 0!important;padding:0!important;font-size:13px!important}.prec-detail{color:var(--text-3);font-size:13px;line-height:1.45}.prec-status{color:var(--text-3);white-space:nowrap;align-items:center;gap:4px;font-size:12px;font-weight:500;display:flex}.prec-row.is-winner .prec-status{color:var(--ok)}.prec-note{color:var(--text-2);font-size:13.5px;line-height:1.55;margin:12px 0 0!important}.ayaml-grid{grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:16px;display:grid}.ayaml-code{border:1px solid var(--border);border-radius:var(--radius);background:var(--code-bg);overflow:hidden}.ayaml-code .code-label.is-file{color:var(--text-2);font-family:var(--font-mono);font-size:12px}.ayaml-hint{color:var(--text-3);font-size:11.5px}.ayaml-code pre{margin:0;padding:8px 0;font-size:13px;line-height:1.7;overflow-x:auto}.ayaml-line{width:100%;min-width:max-content;color:var(--text);font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;padding:0 12px 0 0;transition:background .12s;display:flex}.ayaml-line:hover{background:var(--bg-hover)}.ayaml-line.is-plain{cursor:default}.ayaml-line.is-plain:hover{background:0 0}.ayaml-line.is-on{background:var(--accent-soft);box-shadow:inset 2px 0 var(--accent)}.ayaml-num{color:var(--text-3);text-align:right;opacity:.6;-webkit-user-select:none;user-select:none;flex:0 0 34px;padding-right:10px}.ayaml-text{white-space:pre}.ayaml-guide{box-shadow:inset 1px 0 var(--border-strong)}.y-key{color:var(--blue-600)}.y-module{color:var(--purple-600);font-weight:500}.y-dash{color:var(--accent);font-weight:600}.y-val{color:var(--text)}.y-punct{color:var(--text-3)}.y-comment{color:var(--text-3);font-style:italic}.y-doc{color:var(--text-3)}:root[data-theme=dark] .y-key{color:var(--blue-100)}:root[data-theme=dark] .y-module{color:var(--purple-100)}.ayaml-note{border-radius:var(--radius);background:var(--bg-sunken);flex-direction:column;padding:14px 16px;display:flex}.ayaml-note-title{font-size:16px;font-weight:600;margin:0 0 6px!important}.ayaml-note-text{color:var(--text-2);font-size:14.5px;line-height:1.6;margin:0!important}.ayaml-steps{gap:5px;margin-top:auto;padding-top:14px;display:flex}.recap-line{white-space:normal;flex-wrap:wrap;align-items:center;gap:4px 2px;display:flex}.recap-counter{color:inherit;font:inherit;cursor:pointer;background:0 0;border:1px dashed #0000;border-radius:5px;padding:1px 6px}.recap-counter:hover{border-color:var(--border-strong)}.recap-counter.is-active{border:1px solid var(--accent);background:var(--accent-soft)}.recap-explain{color:var(--text-2);font-size:14.5px;line-height:1.55;margin:12px 0 0!important}.recap-explain strong{font-family:var(--font-mono);font-size:13px}.verb-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin-bottom:12px;display:flex}.verb-head .widget-label{margin:0!important}.verb-text{color:var(--text-2);margin:0 0 10px!important}.mline-grid{grid-template-columns:1fr 1fr;gap:12px;display:grid}.mline-cap{color:var(--text-3);font-size:12.5px;margin:0 0 6px!important}.mline-grid pre{min-height:108px;margin:0}.mline-nl{color:var(--accent);opacity:.8}.mods-head{flex-wrap:wrap;justify-content:space-between;gap:10px;margin-bottom:12px;display:flex}.mods-head .segmented button{font-family:var(--font-sans)}.mods-search{border:1px solid var(--border);background:var(--bg);max-width:220px;height:32px;color:var(--text);font:inherit;border-radius:8px;outline:none;flex:140px;padding:0 10px;font-size:13px}.mods-search:focus{border-color:var(--accent)}.mods-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;max-height:340px;display:grid;overflow-y:auto}.mods-item{border:1px solid var(--border);background:var(--bg);color:var(--text-2);text-align:left;cursor:pointer;border-radius:9px;flex-direction:column;align-items:flex-start;gap:3px;padding:9px 11px;font-size:13px;line-height:1.45;display:flex}.mods-item:hover{border-color:var(--border-strong)}.mods-item.is-active{border-color:var(--accent);background:var(--accent-soft)}.mods-item code{color:var(--text);font-weight:500;background:0 0!important;padding:0!important;font-size:12.5px!important}.mods-warn{background:var(--changed-soft);color:var(--changed);border-radius:4px;padding:1px 6px;font-size:11px;font-weight:600}.mods-cmd{background:var(--bg-sunken);border-radius:8px;justify-content:space-between;align-items:center;gap:8px;margin-top:12px;padding:8px 8px 8px 12px;display:flex}.mods-cmd code{white-space:nowrap;overflow-x:auto;background:0 0!important;padding:0!important;font-size:12.5px!important}.cvm-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:16px;display:flex}.cvm-intro{flex:280px;min-width:0}.cvm-head .widget-sub{margin-bottom:0!important}.cvm-actions{flex:none;align-items:flex-start;gap:6px;display:flex}.cvm-grid{gap:10px;display:grid}.cvm-col{border:.75px solid var(--s);border-radius:var(--radius);background:color-mix(in srgb, var(--f) 40%, var(--bg-elev));grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:0 14px;min-width:0;padding:12px;display:grid}.cvm-title{color:var(--tt);font-family:var(--font-mono);grid-column:1/-1;font-size:13px;font-weight:600;margin:0 0 8px!important}.cvm-code{background:var(--code-bg);border-radius:7px;margin:0;padding:8px 10px;font-size:11.5px;line-height:1.55;overflow-x:auto}.cvm-runs{flex-wrap:wrap;gap:4px;min-height:24px;display:flex}.cvm-run{font-family:var(--font-mono);border-radius:5px;padding:2px 7px;font-size:11.5px;font-weight:500}.cvm-run.is-changed{background:var(--changed-soft);color:var(--changed)}.cvm-run.is-ok{background:var(--ok-soft);color:var(--ok)}.cvm-run.is-skipped{background:var(--bg-sunken);color:var(--text-3)}.cvm-why{color:var(--text-2);font-size:13px;line-height:1.5;margin:10px 0 0!important}@media (width<=760px){.inv-grid,.ayaml-grid,.mline-grid,.cvm-grid,.mods-list{grid-template-columns:1fr}.inv-editor textarea{min-height:240px}.cvm-col{grid-template-columns:1fr}.cvm-code{margin-bottom:10px}.prec-row{grid-template-columns:38px minmax(0,1fr)}.prec-rank{display:none}.prec-status{grid-column:2}}.quiz-history{color:var(--text-3);font-size:13px}.lab-mode{border:1px solid var(--border);border-radius:var(--radius);width:fit-content;margin:16px 0}.lab-head>p{color:var(--text-2);margin:0 0 16px;font-size:14px;line-height:1.55}.lab-notes,.lab-challenge{border-bottom:1px solid var(--border);padding:18px 20px;font-size:15px;line-height:1.6}.lab-challenge{background:var(--bg-sunken)}.lab-notes p:last-child,.lab-challenge>:last-child{margin-bottom:0}.lab-notes details+details{margin-top:12px}.lab-notes summary,.lab-walkthrough>summary{cursor:pointer;font-weight:500}.lab-notes details>:not(summary){margin-top:12px}.lab-walkthrough>summary{padding:16px 20px;font-size:14px}.lab-walkthrough[open]>summary{border-bottom:1px solid var(--border)}.assessment-timer [role=timer]{font-variant-numeric:tabular-nums;margin:12px 0;font-size:26px}.assessment-timer>:last-child{margin-bottom:0}@media (width<=600px){.lab-meta{grid-template-columns:1fr}.lab-task-body{padding-left:0}}.lab-notes .reveal{margin:12px 0 0}.flow-map-options{border-radius:var(--radius);background:var(--bg);border-bottom:0;flex-wrap:wrap;margin-top:12px}.home{max-width:1080px;margin:0 auto;padding:56px 40px 80px}.hero{grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);align-items:center;gap:48px;display:grid}.hero h1{font-family:var(--font-reading);letter-spacing:-.02em;text-wrap:balance;margin:0 0 18px;font-size:clamp(36px,5vw,52px);font-weight:500;line-height:1.08}.hero-sub{color:var(--text-2);font-family:var(--font-reading);margin:0 0 14px;font-size:18px;line-height:1.6}.hero-focus{border-left:3px solid var(--accent);color:var(--text-2);margin:0 0 28px;padding-left:12px;font-size:15px;line-height:1.55}.hero-actions{flex-wrap:wrap;align-items:center;gap:16px;display:flex}.btn-lg{border-radius:10px;height:44px;padding:0 20px;font-size:15px}.hero-progress{color:var(--text-3);font-size:14px}.hero-art .diagram{margin:0}.hero-art .diagram-canvas{box-shadow:var(--shadow);padding:8px}.features{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:64px 0 0;display:grid}.feature{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-elev);padding:16px}.feature-icon{background:var(--f);width:32px;height:32px;color:var(--s);border-radius:8px;place-items:center;margin-bottom:12px;display:grid}:root[data-theme=dark] .feature-icon{color:var(--tt)}.feature-title{margin:0 0 4px;font-size:14.5px;font-weight:600}.feature-text{color:var(--text-3);margin:0;font-size:13.5px;line-height:1.5}.home-section{margin-top:64px}.home-section h2{font-family:var(--font-reading);letter-spacing:-.01em;margin:0 0 18px;font-size:28px;font-weight:500}.home-section-sub{color:var(--text-3);margin:-8px 0 18px;font-size:15px}.path{grid-template-columns:repeat(var(--path-stages,6), minmax(0, 1fr));gap:10px;margin:0;padding:0;list-style:none;display:grid}.path-stage{margin:0;position:relative}.path-stage:not(:last-child):after{content:"";background:var(--border-strong);width:calc(100% + 10px);height:2px;position:absolute;top:27px;left:50%}.path-stage.is-done:not(:last-child):after{background:var(--ok)}.path-link{z-index:1;border-radius:var(--radius);height:100%;color:inherit;text-align:center;flex-direction:column;align-items:center;gap:10px;padding:12px 8px 14px;text-decoration:none;display:flex;position:relative}.path-link:hover{background:var(--bg-hover)}.path-dot{border:2px solid var(--border-strong);background:var(--bg);width:32px;height:32px;color:var(--text-2);font-family:var(--font-mono);border-radius:50%;justify-content:center;align-items:center;font-size:13px;font-weight:600;display:inline-flex}.path-stage.is-started .path-dot{border-color:var(--accent);color:var(--accent-text)}.path-stage.is-done .path-dot{border-color:var(--ok);background:var(--ok);color:var(--bg)}.path-body{flex-direction:column;gap:3px;display:flex}.path-title{font-size:15px;font-weight:600}.path-chapters{color:var(--text-3);font-family:var(--font-mono);font-size:11.5px}.path-text{color:var(--text-2);font-size:13px;line-height:1.45}.chapter-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:0;padding:0;list-style:none;display:grid}.chapter-card{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--bg-elev);height:100%;color:var(--text);flex-direction:column;gap:6px;padding:18px;text-decoration:none;transition:border-color .15s,box-shadow .15s,transform .15s;display:flex}.chapter-card:hover{border-color:var(--border-strong);box-shadow:var(--shadow)}.chapter-card.is-soon{background:0 0}.chapter-card-top{justify-content:space-between;align-items:center;display:flex}.chapter-card-num{color:var(--text-3);font-family:var(--font-mono);font-size:13px}.chapter-card-title{font-family:var(--font-reading);font-size:20px;font-weight:500;line-height:1.3}.chapter-card.is-soon .chapter-card-title{color:var(--text-2)}.chapter-card-goal{color:var(--text-3);font-size:13.5px;line-height:1.5}.chapter-card-bar{background:var(--bg-sunken);border-radius:2px;height:3px;margin-top:auto;padding-top:0;overflow:hidden;transform:translateY(6px)}.chapter-card-bar span{background:var(--ok);height:100%;display:block}.home-lab{border-radius:var(--radius-lg);background:var(--bg-sunken);grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:32px;padding:28px;display:grid}.home-lab h2{font-size:23px}.home-lab p{color:var(--text-2);font-family:var(--font-reading);margin:0;font-size:16px;line-height:1.6}.home-lab code,.host-list code{background:var(--code-inline-bg);border-radius:4px;padding:.1em .35em;font-size:.86em}.host-list{align-self:center;margin:0}.host-list div{border-bottom:1px solid var(--border);padding:10px 0}.host-list div:last-child{border-bottom:0}.host-list dt{margin-bottom:2px;font-size:14px}.host-list dd{color:var(--text-3);margin:0;font-size:13.5px}.chapter-page{max-width:820px;margin:0 auto;padding:56px 40px 80px}.chapter-title{font-family:var(--font-reading);letter-spacing:-.02em;margin:0 0 14px;font-size:clamp(34px,4.6vw,46px);font-weight:500;line-height:1.1}.chapter-goal{color:var(--text-2);font-family:var(--font-reading);margin:0 0 24px;font-size:18px;line-height:1.6}.chapter-actions{flex-wrap:wrap;align-items:center;gap:16px;display:flex}.chapter-stat{color:var(--text-3);font-size:13.5px}.chapter-objectives{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--bg-elev);margin:40px 0 28px;padding:20px 24px}.chapter-objectives h2,.soon-card h2{color:var(--text-3);letter-spacing:.04em;text-transform:uppercase;margin:0 0 10px;font-size:13px;font-weight:600}.chapter-objectives ul,.soon-card ul{font-family:var(--font-reading);margin:0;padding-left:1.2em;font-size:16px;line-height:1.6}.chapter-objectives li+li{margin-top:6px}.section-list{gap:8px;margin:0;padding:0;list-style:none;display:grid}.section-card{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-elev);color:var(--text);align-items:center;gap:14px;padding:14px 16px;text-decoration:none;transition:border-color .15s;display:flex}.section-card:hover{border-color:var(--border-strong)}.section-card-icon{background:var(--bg-sunken);height:34px;color:var(--text-2);border-radius:9px;flex:0 0 34px;place-items:center;display:grid}.section-card.kind-lab .section-card-icon{background:var(--teal-50);color:var(--teal-600)}.section-card.kind-quiz .section-card-icon{background:var(--coral-50);color:var(--coral-600)}.section-card.kind-summary .section-card-icon{background:var(--amber-50);color:var(--amber-600)}:root[data-theme=dark] .section-card.kind-lab .section-card-icon{color:var(--teal-100);background:#1d9e7529}:root[data-theme=dark] .section-card.kind-quiz .section-card-icon{color:var(--coral-100);background:#d85a3029}:root[data-theme=dark] .section-card.kind-summary .section-card-icon{color:var(--amber-100);background:#ba751729}.section-card.is-done .section-card-icon{background:var(--ok-soft);color:var(--ok)}.section-card-body{flex-direction:column;flex:1;min-width:0;display:flex}.section-card-num{color:var(--text-3);font-size:12px}.section-card-title{font-size:15px;font-weight:500}.section-card-time{color:var(--text-3);white-space:nowrap;align-items:center;gap:4px;font-size:12.5px;display:flex}.soon-card{border:1px dashed var(--border-strong);border-radius:var(--radius-lg);margin-top:36px;padding:22px 24px}.soon-card p{color:var(--text-2);margin:0 0 10px}.kind-lab.pill{background:var(--teal-50);color:var(--teal-600)}.kind-quiz.pill{background:var(--coral-50);color:var(--coral-600)}.kind-summary.pill{background:var(--amber-50);color:var(--amber-600)}:root[data-theme=dark] .kind-lab.pill{color:var(--teal-100);background:#1d9e7529}:root[data-theme=dark] .kind-quiz.pill{color:var(--coral-100);background:#d85a3029}:root[data-theme=dark] .kind-summary.pill{color:var(--amber-100);background:#ba751729}.not-found{text-align:center;max-width:560px;margin:0 auto;padding:96px 24px}.not-found h1{font-family:var(--font-reading);margin:0 0 12px;font-size:36px;font-weight:500}.not-found p{color:var(--text-2)}@media (width<=900px){.hero,.home-lab{grid-template-columns:1fr}.hero-art{max-width:420px}.features{grid-template-columns:repeat(2,minmax(0,1fr))}.path{grid-template-columns:minmax(0,1fr);gap:0}.path-stage:not(:last-child):after{width:2px;height:calc(100% - 32px);top:44px;left:23px}.path-link{text-align:left;flex-direction:row;align-items:flex-start;gap:14px;padding:12px 8px}.path-dot{flex:none}}@media (width<=640px){.home,.chapter-page{padding:32px 16px 64px}.features,.chapter-grid{grid-template-columns:1fr}.home-lab{padding:20px}.section-card-time{display:none}}.home-lab-cta{margin-top:16px}.learning-dashboard{max-width:960px;margin:0 auto;padding:56px 40px 80px}.dashboard-intro{color:var(--text-2);max-width:68ch;font:18px/1.6 var(--font-reading);margin:0}.dashboard-stats{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin:0 0 24px;display:grid}.dashboard-stats>div{background:var(--bg-sunken);border-radius:var(--radius);padding:16px}.dashboard-stats dt{color:var(--text-3);margin-bottom:8px;font-size:12px}.dashboard-stats dd{margin:0;font-size:26px;font-weight:600;line-height:1.25}.dashboard-stats small{color:var(--text-3);margin-top:6px;font-size:12px;font-weight:400;line-height:1.5;display:block}.dashboard-card{border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--bg-elev);min-width:0;margin-bottom:20px;padding:24px}.dashboard-card h2{font:500 23px/1.3 var(--font-reading);margin:0 0 12px}.dashboard-card p{color:var(--text-2);margin:0 0 16px;line-height:1.6}.dashboard-card>:last-child{margin-bottom:0}.dashboard-card a:not(.btn){color:var(--accent-text);text-underline-offset:3px}.dashboard-card .page-eyebrow{color:var(--accent-text);margin-bottom:8px;font-size:12px}.dashboard-grid{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:20px;display:grid}.dashboard-list{margin:16px 0 0;padding:0;list-style:none}.dashboard-list>li{padding:12px 0;line-height:1.5}.dashboard-list>li+li{border-top:1px solid var(--border)}.dashboard-list>li:last-child{padding-bottom:0}.dashboard-list small{color:var(--text-3);margin-top:5px;font-size:12.5px;display:block}.dashboard-card summary{cursor:pointer;font-size:14px;font-weight:500;line-height:1.5}.dashboard-card details{margin-top:16px}.dashboard-actions{flex-wrap:wrap;align-items:center;gap:12px;margin:20px 0 16px;display:flex}.dashboard-actions span,.dashboard-card .dashboard-note{color:var(--text-3);font-size:13px}.dashboard-card code{font-family:var(--font-mono);background:var(--code-inline-bg);overflow-wrap:anywhere;border-radius:4px;padding:2px 5px;font-size:12px}.dashboard-card .dashboard-note{margin-top:16px}.dashboard-status:not(:empty),.dashboard-warning{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-sunken);margin:16px 0;padding:12px;font-size:14px}.dashboard-skill-links{flex-wrap:wrap;gap:8px 16px;margin-top:8px;font-size:13px;display:flex}@media (width<=760px){.learning-dashboard{padding:32px 20px 56px}.dashboard-grid{grid-template-columns:1fr;gap:0}.dashboard-card{padding:20px}}@media (width<=480px){.dashboard-stats{grid-template-columns:1fr;gap:8px}.dashboard-stats>div{justify-content:space-between;align-items:baseline;gap:16px;display:flex}.dashboard-stats dt{margin:0}.dashboard-stats dd{text-align:right;font-size:20px}}.reference-intro{max-width:68ch;color:var(--text-2);font:18px/1.6 var(--font-reading);margin:0}.reference-page .prose>:first-child{margin-top:0}.landing{--lt-50:var(--purple-50);--landing-w:min(1360px, 100%);isolation:isolate;width:100%;padding:clamp(8px,2vw,24px) clamp(16px,4vw,56px) 88px;position:relative;overflow-x:clip}.landing:before{content:"";z-index:-1;pointer-events:none;background:radial-gradient(48vw 36vw at 2% 6%, color-mix(in srgb, var(--purple-100) 70%, transparent), transparent 72%), radial-gradient(42vw 34vw at 98% 2%, color-mix(in srgb, var(--teal-100) 62%, transparent), transparent 72%), radial-gradient(38vw 26vw at 62% 62%, color-mix(in srgb, var(--coral-100) 46%, transparent), transparent 72%), radial-gradient(30vw 24vw at 18% 78%, color-mix(in srgb, var(--amber-100) 34%, transparent), transparent 72%);height:clamp(640px,95vh,1100px);position:absolute;inset:0 0 auto;-webkit-mask-image:linear-gradient(#000 45%,#0000);mask-image:linear-gradient(#000 45%,#0000)}:root[data-theme=dark] .landing:before{opacity:.34}.landing>*{max-width:var(--landing-w);margin-inline:auto}.landing>h2{font-family:var(--font-reading);letter-spacing:-.02em;text-align:center;text-wrap:balance;margin-block:clamp(48px,7vw,88px) 8px;font-size:clamp(28px,3.4vw,38px);font-weight:500}.landing>h2+p{max-width:620px;color:var(--text-2);text-align:center;text-wrap:balance;margin:0 auto 36px;font-size:17px;line-height:1.6}.landing>p{max-width:760px;color:var(--text-2);margin-inline:auto;line-height:1.65}.landing .callout{max-width:760px;margin:40px auto 0}.lh{min-height:min(640px, calc(100vh - var(--header-h) - 24px));grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);align-items:center;gap:clamp(32px,5vw,80px);padding:clamp(16px,4vw,48px) 0 0;display:grid;position:relative}.lh-eyebrow{border:1px solid var(--border);background:var(--bg-elev);color:var(--text-2);box-shadow:var(--shadow);border-radius:999px;align-items:center;gap:8px;margin:0 0 18px;padding:5px 12px 5px 10px;font-size:13px;font-weight:500;display:inline-flex}.lh-eyebrow:before{content:"";background:var(--accent);width:8px;height:8px;box-shadow:0 0 0 0 var(--accent);border-radius:50%;animation:2.4s ease-out infinite lh-ping}.lh-title{font-family:var(--font-reading);letter-spacing:-.03em;text-wrap:balance;margin:0 0 20px;font-size:clamp(38px,4.8vw,76px);font-weight:500;line-height:1.04}.lh-title .hl{white-space:nowrap;color:var(--accent-text);position:relative}.lh-title .hl:after{content:"";background:var(--accent);opacity:.28;transform-origin:0;height:.2em;animation:lh-underline .9s .5s var(--ease-out) both;border-radius:999px;position:absolute;bottom:-.06em;left:-2%;right:-2%}.lh-lead{max-width:560px;color:var(--text-2);font-size:clamp(17px,1.25vw,20px);line-height:1.6}.lh-lead p{margin:0 0 12px}.lh-lead em{background:color-mix(in srgb, var(--amber-100) 55%, transparent);color:var(--text);border-radius:4px;padding:0 4px;font-style:normal}.lh-actions{flex-wrap:wrap;gap:12px;margin-top:28px;display:flex}.lh-cta svg{transition:transform var(--dur) var(--ease-out)}.lh-cta:hover svg{transform:translate(3px)}.lh-secondary svg{animation:2.2s ease-in-out infinite lh-nudge}.lh-text>*{animation:km-rise .7s var(--ease-out) both}.lh-text>:nth-child(2){animation-delay:80ms}.lh-text>:nth-child(3){animation-delay:.16s}.lh-text>:nth-child(4){animation-delay:.24s}.lh-art{animation:lh-in .9s .15s var(--ease-out) both}@keyframes lh-ping{70%,to{box-shadow:0 0 0 9px #0000}}@keyframes lh-underline{0%{transform:scaleX(0)}}@keyframes lh-nudge{50%{transform:translateY(3px)}}@keyframes lh-in{0%{opacity:0;transform:translateY(18px)scale(.97)}}.ls{width:100%;height:auto;display:block;overflow:visible}.ls-blob{opacity:.5;transform-box:fill-box;transform-origin:50%;animation:9s ease-in-out infinite ls-float}:root[data-theme=dark] .ls-blob{opacity:.16}.ls-blob-b{animation-delay:-3s}.ls-blob-c{animation-delay:-6s}.ls-window{fill:var(--bg-elev);stroke:var(--border-strong);filter:drop-shadow(0 12px 24px #15151524)}.ls-titlebar{fill:var(--bg-sunken)}.ls-code text,.ls-name{fill:var(--text-2)}.ls-muted{fill:var(--text-3)}.ls-line{animation:km-rise .5s var(--ease-out) both;animation-delay:calc(.9s + var(--i) * .55s)}.ls-cursor{fill:var(--text-2);opacity:0;animation:1.1s step-end 3.4s infinite ls-blink}.ls-wire{stroke:var(--purple-200);stroke-width:2px;stroke-dasharray:3 7;stroke-linecap:round;animation:1.6s linear infinite ls-flow}.ls-packet{fill:var(--coral-400);offset-rotate:0deg;offset-distance:0%;animation:3.2s cubic-bezier(.5,0,.5,1) infinite ls-travel;animation-delay:calc(var(--i) * .7s);filter:drop-shadow(0 0 4px var(--coral-200))}.ls-rack{fill:var(--bg-elev);stroke:var(--border-strong);filter:drop-shadow(0 8px 14px #1515151a)}.ls-bar{fill:var(--purple-100)}.ls-bar-short{fill:var(--teal-100)}.ls-server{animation:km-rise .6s var(--ease-out) both;animation-delay:calc(.4s + var(--i) * .12s)}.ls-led{fill:var(--green-400);animation:2.6s ease-in-out infinite ls-led}.ls-led-b{fill:var(--amber-200);animation-delay:-1.2s}.ls-server:nth-of-type(odd) .ls-led-a{animation-delay:-.6s}.ls-badge rect{fill:var(--bg-elev);stroke:var(--border-strong);filter:drop-shadow(0 6px 10px #1515151f)}.ls-badge text{fill:var(--text);font-weight:500}.ls-badge{animation:5s ease-in-out infinite ls-bob}.ls-badge-b{animation-delay:-1.7s}.ls-badge-c{animation-delay:-3.2s}@keyframes ls-float{50%{transform:translate(10px,-14px)scale(1.06)}}@keyframes ls-flow{to{stroke-dashoffset:-20px}}@keyframes ls-travel{0%{offset-distance:0%;opacity:0}12%{opacity:1}88%{opacity:1}to{offset-distance:100%;opacity:0}}@keyframes ls-led{45%{opacity:.25}}@keyframes ls-blink{0%{opacity:.9}50%{opacity:0}}@keyframes ls-bob{50%{transform:translateY(-6px)}}@media (prefers-reduced-motion:reduce){.ls-packet{display:none}.ls-cursor{opacity:.9}}.showcase{scroll-margin-top:calc(var(--header-h) + 16px);grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;margin:0 auto;padding:0;list-style:none;display:grid}.showcase>li{opacity:0;transform:translateY(24px)}.showcase.is-in>li{animation:km-rise-lg .7s var(--ease-out) both;animation-delay:calc(var(--i) * .14s)}@keyframes km-rise-lg{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:none}}.sc{--t-50:var(--purple-50);--t-100:var(--purple-100);--t-200:var(--purple-200);--t-400:var(--purple-400);--t-600:var(--purple-600);border:1px solid var(--border);background:var(--bg-elev);height:100%;color:var(--text);box-shadow:var(--shadow);transition:transform var(--dur) var(--ease-out), box-shadow var(--dur) var(--ease-out), border-color var(--dur);border-radius:20px;flex-direction:column;text-decoration:none;display:flex;overflow:hidden}.sc-teal{--t-50:var(--teal-50);--t-100:var(--teal-100);--t-200:var(--teal-200);--t-400:var(--teal-400);--t-600:var(--teal-600)}.sc-coral{--t-50:var(--coral-50);--t-100:var(--coral-100);--t-200:var(--coral-200);--t-400:var(--coral-400);--t-600:var(--coral-600)}.sc-blue{--t-50:var(--blue-50);--t-100:var(--blue-100);--t-200:var(--blue-200);--t-400:var(--blue-400);--t-600:var(--blue-600)}.sc-pink{--t-50:var(--pink-50);--t-100:var(--pink-100);--t-200:var(--pink-200);--t-400:var(--pink-400);--t-600:var(--pink-600)}.sc-green{--t-50:var(--green-50);--t-100:var(--green-100);--t-200:var(--green-200);--t-400:var(--green-400);--t-600:var(--green-600)}.sc-amber{--t-50:var(--amber-50);--t-100:var(--amber-100);--t-200:var(--amber-200);--t-400:var(--amber-400);--t-600:var(--amber-600)}.sc:hover{border-color:var(--t-200);box-shadow:0 18px 44px color-mix(in srgb, var(--t-400) 22%, transparent);transform:translateY(-5px)}.sc:focus-visible{outline:3px solid var(--t-400);outline-offset:3px}.sc-art{background:radial-gradient(circle at 18px 18px, color-mix(in srgb, var(--t-400) 22%, transparent) 1.4px, transparent 1.6px) 0 0 / 22px 22px, linear-gradient(180deg, var(--t-50), color-mix(in srgb, var(--t-100) 55%, var(--t-50)));padding:22px 22px 0;display:block;position:relative}:root[data-theme=dark] .sc-art{background:radial-gradient(circle at 18px 18px, color-mix(in srgb, var(--t-400) 30%, transparent) 1.4px, transparent 1.6px) 0 0 / 22px 22px, linear-gradient(180deg, color-mix(in srgb, var(--t-400) 14%, var(--bg-elev)), var(--bg-elev))}.sc[data-planned] .sc-art{filter:saturate(.85)}.sc-body{flex-direction:column;flex:1;gap:10px;padding:22px 26px 26px;display:flex}.sc-top{justify-content:space-between;align-items:center;display:flex}.sc-platform{color:var(--t-600);font-family:var(--font-mono);letter-spacing:.02em;font-size:13px;font-weight:600}:root[data-theme=dark] .sc-platform{color:var(--t-200)}.sc-title{font-family:var(--font-reading);letter-spacing:-.015em;font-size:25px;font-weight:500;line-height:1.2}.sc-summary{color:var(--text-2);font-size:15px;line-height:1.6}.sc-chips{flex-wrap:wrap;gap:8px;margin-top:4px;display:flex}.sc-chip{background:var(--t-50);color:var(--t-600);border-radius:999px;padding:4px 11px;font-size:12.5px;font-weight:500}:root[data-theme=dark] .sc-chip{background:color-mix(in srgb, var(--t-400) 20%, transparent);color:var(--t-100)}.sc-bar{background:var(--bg-sunken);border-radius:2px;height:4px;overflow:hidden}.sc-bar span{background:var(--t-400);height:100%;display:block}.sc-go{color:var(--t-600);align-items:center;gap:8px;margin-top:auto;padding-top:12px;font-size:15px;font-weight:600;display:inline-flex}:root[data-theme=dark] .sc-go{color:var(--t-200)}.sc-go svg{transition:transform var(--dur) var(--ease-out)}.sc:hover .sc-go svg{transform:translate(5px)}.pa{width:100%;height:auto;display:block;overflow:visible}.pa-sheet{fill:var(--bg-elev);stroke:var(--border-strong);filter:drop-shadow(0 8px 16px #1515151a)}.pa-sheet-top{fill:var(--t-100)}:root[data-theme=dark] .pa-sheet-top{fill:color-mix(in srgb, var(--t-400) 28%, var(--bg-sunken))}.pa-title,.pa-line{fill:var(--text-2)}.pa-dim{fill:var(--text-3)}.pa-box{fill:var(--bg-elev);stroke:var(--t-400);stroke-width:1.6px}.pa-tick{fill:none;stroke:var(--t-600);stroke-width:2.4px;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1;animation:6s ease-in-out infinite pa-tick;animation-delay:calc(var(--i,0) * .9s)}.pa-task:first-of-type .pa-tick{animation-delay:0s}.pa-task:nth-of-type(2) .pa-tick{animation-delay:.9s}.pa-task:nth-of-type(3) .pa-tick{animation-delay:1.8s}.pa-bar{fill:var(--t-100)}.pa-wire{stroke:var(--t-200);stroke-width:2px;stroke-dasharray:3 7;stroke-linecap:round;animation:1.6s linear infinite ls-flow}.pa-host-box{fill:var(--bg-elev);stroke:var(--border-strong);filter:drop-shadow(0 4px 8px #15151514)}.pa-led{fill:var(--green-400);animation:6s ease-in-out infinite pa-light}.pa-host:first-of-type .pa-led,.pa-host:first-of-type{animation-delay:.3s}.pa-host .pa-led{animation-delay:calc(var(--i) * .9s + .4s)}.pa-line{animation:km-rise .5s var(--ease-out) both;animation-delay:calc(.3s + var(--i) * .5s)}.pa-cursor{fill:var(--text-2);animation:1.1s step-end infinite ls-blink}.pa-tile{animation:km-rise .6s var(--ease-out) both, ls-bob 6s ease-in-out infinite;animation-delay:calc(.3s + var(--i) * .15s), calc(var(--i) * -1.4s)}.pa-icon-fill{fill:var(--t-200)}.pa-icon-stroke{fill:none;stroke:var(--t-400);stroke-width:2px;stroke-linecap:round}@keyframes pa-tick{0%,8%{stroke-dashoffset:1px}22%,86%{stroke-dashoffset:0}to{stroke-dashoffset:1px}}@keyframes pa-light{0%,10%{opacity:.25}24%,86%{opacity:1}to{opacity:.25}}.fg{grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;margin:0 auto;padding:0;list-style:none;display:grid}.fg-item{--t-50:var(--purple-50);--t-100:var(--purple-100);--t-400:var(--purple-400);--t-600:var(--purple-600);border:1px solid var(--border);background:var(--bg-elev);opacity:0;transition:transform var(--dur) var(--ease-out), box-shadow var(--dur) var(--ease-out), border-color var(--dur);border-radius:18px;padding:24px;transform:translateY(20px)}.fg-teal{--t-50:var(--teal-50);--t-100:var(--teal-100);--t-400:var(--teal-400);--t-600:var(--teal-600)}.fg-coral{--t-50:var(--coral-50);--t-100:var(--coral-100);--t-400:var(--coral-400);--t-600:var(--coral-600)}.fg-blue{--t-50:var(--blue-50);--t-100:var(--blue-100);--t-400:var(--blue-400);--t-600:var(--blue-600)}.fg-amber{--t-50:var(--amber-50);--t-100:var(--amber-100);--t-400:var(--amber-400);--t-600:var(--amber-600)}.fg-green{--t-50:var(--green-50);--t-100:var(--green-100);--t-400:var(--green-400);--t-600:var(--green-600)}.fg-pink{--t-50:var(--pink-50);--t-100:var(--pink-100);--t-400:var(--pink-400);--t-600:var(--pink-600)}.fg-gray{--t-50:var(--gray-50);--t-100:var(--gray-100);--t-400:var(--gray-400);--t-600:var(--gray-600)}.fg.is-in .fg-item{animation:km-rise-lg .6s var(--ease-out) both;animation-delay:calc(var(--i) * 80ms)}.fg-item:hover{border-color:var(--t-100);box-shadow:0 14px 34px color-mix(in srgb, var(--t-400) 18%, transparent);transform:translateY(-4px)}.fg-icon{background:var(--t-50);width:48px;height:48px;color:var(--t-600);transition:transform var(--dur) var(--ease-spring);border-radius:14px;place-items:center;margin-bottom:16px;display:grid}:root[data-theme=dark] .fg-icon{background:color-mix(in srgb, var(--t-400) 22%, transparent);color:var(--t-100)}.fg-item:hover .fg-icon{transform:rotate(-6deg)scale(1.08)}.fg-title{margin:0 0 6px;font-size:18px;font-weight:600}.fg-text{color:var(--text-2);margin:0;font-size:15px;line-height:1.6}.td{color:#e6e6e6;background:#17181a;border:1px solid #2c2e31;border-radius:16px;max-width:720px;margin:0 auto;overflow:hidden;box-shadow:0 24px 60px #15151547}.td-bar{background:#212326;align-items:center;gap:8px;padding:12px 16px;display:flex}.td-dot{border-radius:50%;width:12px;height:12px}.td-r{background:var(--coral-200)}.td-y{background:var(--amber-200)}.td-g{background:var(--green-200)}.td-title{color:#9a9da1;font-family:var(--font-mono);margin-left:10px;font-size:12.5px}.td-body{font-family:var(--font-mono);padding:18px 20px 22px;font-size:14px;line-height:1.75}.td-line{opacity:0;gap:10px;min-height:1.75em;display:flex}.td-prompt{color:#5dcaa5;flex:none;width:1.2ch}.td-output .td-text{color:#a9acb0}.td-ok .td-prompt,.td-ok .td-text{color:#97c459}.td-changed .td-prompt,.td-changed .td-text{color:#fac775}.td-comment .td-prompt,.td-comment .td-text{color:#7d8185}.td-typed{white-space:pre;width:0;display:inline-block;overflow:hidden}.td.is-playing .td-line{animation:td-show 10ms var(--at) both}.td.is-playing .td-typed{animation:td-type var(--type) steps(var(--n)) var(--at) both}.td-cursor{background:#e6e6e6;width:.6em;height:1.2em;margin-top:.3em;animation:1.1s step-end infinite ls-blink}@keyframes td-show{to{opacity:1}}@keyframes td-type{to{width:calc(var(--n) * 1ch)}}@media (width<=960px){.lh{grid-template-columns:minmax(0,1fr);gap:28px;min-height:0;padding-top:24px}.lh-art{max-width:560px;margin-inline:auto}.showcase{grid-template-columns:minmax(0,1fr)}.fg{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=600px){.landing>h2{margin-top:44px}.fg{grid-template-columns:minmax(0,1fr)}.lh-actions .btn{flex:100%;justify-content:center}.sc-body{padding:18px 20px 22px}.td-body{padding:14px;font-size:12.5px}}@media (prefers-reduced-motion:reduce){.td-line,.td-typed,.showcase>li,.fg-item,.ls-line,.pa-line,.ls-server,.pa-tile{animation-delay:0s!important}}.landing>h2{margin-bottom:24px}.landing>h2+p{margin-top:-14px}.landing .heading-link{display:none}.code-editor{min-width:0}.editor-tools{flex-wrap:wrap;gap:6px;margin-bottom:8px;display:flex}.editor-wrap{margin-left:auto}.code-editor textarea{tab-size:2;resize:vertical;width:100%;min-width:0;display:block}.page-outline{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-elev);margin:-8px 0 24px}.page-outline summary{cursor:pointer;padding:12px 14px;font-size:14px;font-weight:500}.page-outline .toc{max-height:45dvh;padding:0 12px 12px;overflow-y:auto}.page-outline .toc button{min-height:2rem}.search-close{display:none}.progress-panel{max-height:calc(100dvh - var(--header-h) - 24px);overscroll-behavior:contain;overflow-y:auto}.diagram-viewport{min-width:0}.diagram-viewport .dg{width:100%;max-width:100%;height:auto;display:block}.lightbox-toolbar{justify-content:space-between;align-items:center;gap:12px;margin-bottom:16px;padding-right:40px;font-size:14px;display:flex}.lightbox-viewport{overscroll-behavior:contain;min-height:0;overflow:auto}.lightbox-viewport .dg{width:200%;display:block}.lightbox-viewport.is-fit .dg{width:100%}.lightbox-body{max-height:calc(var(--overlay-height,100dvh) - 48px);flex-direction:column;display:flex}.lightbox{top:var(--overlay-top,0px);height:var(--overlay-height,100dvh);bottom:auto}@media (width<=960px){.progress-backdrop{z-index:100;background:#14141359;position:fixed;inset:0}.progress-backdrop .progress-panel{inset:calc(var(--overlay-top,0px) + var(--header-h) + 8px) 12px auto;width:min(440px,100% - 24px);max-height:calc(var(--overlay-height,100dvh) - var(--header-h) - 24px - env(safe-area-inset-bottom));margin-inline:auto;position:absolute}.progress-close{position:absolute;top:8px;right:8px}.progress-panel-title{padding-right:44px}.progress-panel>a{align-items:center;min-height:2rem;display:flex}}@media (width<=760px),(pointer:coarse){.btn{white-space:normal;max-width:100%;height:auto;min-height:2rem;padding:.4rem .75rem;line-height:1.3}.prose input:not([type=checkbox]):not([type=radio]):not([type=range]),.prose textarea,.prose select{font-size:16px}.widget input:not([type=checkbox]):not([type=radio]):not([type=range]),.widget select{min-height:2rem}.code-copy{justify-content:center;min-width:2rem;height:2rem}.lab-check{flex-shrink:0}.lab-task-top{align-items:flex-start}.chip-row,.progress-actions{flex-wrap:wrap;gap:8px}.ptree-row.is-clickable,.dx-node{min-height:2rem}.code-editor textarea{font-size:16px}}@media (width<=640px){:root{--header-h:calc(3.5rem + env(safe-area-inset-top,0px))}.header{padding-top:env(safe-area-inset-top,0px);padding-left:max(8px, env(safe-area-inset-left));padding-right:max(8px, env(safe-area-inset-right));gap:4px}.header-actions{gap:2px}.page-grid{padding:24px max(16px, env(safe-area-inset-right)) 48px max(16px, env(safe-area-inset-left))}.page-header{margin-bottom:28px}.page-title{font-size:clamp(1.5rem,5vw,1.75rem);line-height:1.2}.page-meta{gap:8px}.widget{padding:14px}.activity-panel-body,.lab-notes,.lab-challenge,.reveal-body{padding-inline:14px}.tabs-list{scroll-snap-type:x proximity;overflow-x:auto}.tabs-list button{scroll-snap-align:start;flex-shrink:0}.tabs-panel{padding:16px 14px}.diagram-canvas{padding:12px}.diagram-tools{justify-content:flex-end;display:flex}.diagram-tools:has(button){margin-bottom:.375rem}.diagram-zoom{opacity:1;position:static}.lightbox{padding:max(8px, env(safe-area-inset-top)) 8px max(8px, env(safe-area-inset-bottom))}.lightbox-body{max-height:calc(var(--overlay-height,100dvh) - 16px - env(safe-area-inset-bottom));padding:16px 12px}.lightbox-toolbar{flex-wrap:wrap;padding-right:44px}.lightbox-close{width:44px;height:44px;top:4px;right:4px}.search-backdrop{top:var(--overlay-top,0px);height:var(--overlay-height,100dvh);padding:max(8px, env(safe-area-inset-top)) 8px max(8px, env(safe-area-inset-bottom));bottom:auto}.search-dialog{width:100%;max-height:100%}.search-input-row{gap:8px;padding-inline:12px}.search-input-row input{width:0;min-width:0}.search-input-row kbd{display:none}.search-close{flex-shrink:0;display:inline-grid}.search-hit{padding:12px 8px}.site-footer{padding-bottom:max(24px, env(safe-area-inset-bottom))}.site-footer-links a{align-items:center;min-height:2rem;display:inline-flex}}@media (width<=480px){.header-source{display:none}.editor-tools{gap:4px}.editor-tools .btn{padding-inline:8px;font-size:12px}}.code-actions{align-items:center;gap:2px;display:flex}.code-block.is-wrapped pre,.code-block.is-wrapped code{white-space:pre-wrap;overflow-wrap:anywhere}.code-wrap{justify-content:center}@media (width<=640px){.widget pre{white-space:pre-wrap;overflow-wrap:anywhere}.widget .terminal{white-space:pre-wrap}}@media (width<=760px),(pointer:coarse){.shell .shell-main input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=file]),.shell .shell-main textarea,.shell .shell-main select,.search-dialog input{font-size:16px}.shell .shell-main select{min-width:0;max-width:100%;min-height:2rem}:is(label:has(>input[type=checkbox]),label:has(>input[type=radio])){align-items:center;gap:8px;min-height:2rem;display:inline-flex}}.lightbox-viewport .dg{max-width:none}@media (width<=760px),(pointer:coarse){summary{align-content:center;min-height:2rem}.diagram-zoom{opacity:1}.step-buttons{flex:100%;min-width:0}.step-dots{scrollbar-width:none;flex:auto;gap:0;min-width:0;margin-right:auto;overflow-x:auto}.step-dots::-webkit-scrollbar{display:none}.step-dots button,.step-dots button.is-active,.step-dots button.is-past{background:0 0;border-radius:8px;flex:none;place-items:center;width:1.625rem;height:2rem;display:grid}.step-dots button:after{content:"";background:var(--border-strong);width:7px;height:7px;transition:width .25s var(--ease-out), background .2s;border-radius:999px}.step-dots button.is-past:after{background:var(--text-3)}.step-dots button.is-active{width:2rem}.step-dots button.is-active:after{background:var(--accent);width:18px}}.lightbox{grid-template-columns:minmax(0,1fr)}.lightbox-body{min-width:0;max-width:100%}.quiz-score,.lab-count{white-space:nowrap;flex-shrink:0}.quiz-title{min-width:0}.quiz.is-single .quiz-q{flex-direction:column;align-items:flex-start;gap:8px}.quiz.is-single .quiz-q-kicker{align-self:flex-start}@media (width<=640px){.callout{padding:12px 14px;display:block;position:relative}.callout-icon{margin:0;position:absolute;top:13px;left:14px}.callout-title{min-height:18px;padding-left:24px;line-height:18px}.callout-body :where(ul,ol){padding-left:1.2em}.lab-head{padding:16px 14px 14px}.lab-tasks{padding:4px 14px 8px!important}.lab-walkthrough>summary{padding:14px}.lab-done{padding:12px 14px}.lab-task-head{gap:10px}.objectives,.chapter-objectives{padding:14px 16px}.flashcard{min-height:150px;padding:20px 16px}.flashcard-text{font-size:17px}.step{padding-left:36px!important}.env-panel{padding:12px}.tabs-panel>.code-block:first-child{margin-top:0}.segmented{width:100%;display:flex}.segmented button{flex:auto;min-height:2rem}.option-switch{flex-wrap:wrap}.option-switch button{min-height:2rem}.mods-search{flex-basis:100%;max-width:none;height:2.25rem}.hero-actions{gap:10px}.hero-actions .btn{flex:auto;justify-content:center}.hero-actions .btn-primary{flex-basis:100%;order:-1}.home-section{margin-top:48px}.features{margin-top:40px}.feature{grid-template-columns:32px minmax(0,1fr);align-items:start;column-gap:12px;display:grid}.feature-icon{grid-row:span 2;margin:0}.feature-title{align-self:center;margin-top:6px}.learning-dashboard{padding-inline:16px}}@media (width<=480px){.dashboard-stats>div{padding:12px 14px;display:block}.dashboard-stats dt{margin:0 0 2px}.dashboard-stats dd{text-align:left;flex-wrap:wrap;align-items:baseline;gap:2px 8px;font-size:22px;display:flex}.dashboard-stats small{margin:0}.code-copy span{display:none}.hero-actions .btn{flex-basis:100%}}@media (width<=760px),(pointer:coarse){.ranges-presets .pill,.search-suggestions .pill{height:auto;min-height:2rem;padding-inline:10px}.chip{min-height:2rem}}@keyframes km-rise{0%{opacity:0;transform:translateY(4px)}}@keyframes km-drop{0%{opacity:0;transform:translateY(-6px)}}@keyframes km-pop{0%{opacity:0;transform:scale(.5)}60%{opacity:1;transform:scale(1.15)}to{transform:scale(1)}}@keyframes km-settle{0%{transform:scale(1)}40%{transform:scale(1.12)}to{transform:scale(1)}}@keyframes km-nudge{0%,to{transform:translate(0)}25%{transform:translate(-3px)}75%{transform:translate(3px)}}@keyframes km-flip{0%{opacity:0;transform:perspective(600px)rotateX(-60deg)}}@keyframes km-panel{0%{opacity:0;transform:translateY(-4px)scale(.98)}}:is(.btn,.icon-btn,.chip,button.pill,.segmented button,.option-switch button,.tabs-list button,.quiz-option,.code-copy,.lab-check,.complete-btn,.flashcard,.mods-item,.recap-counter,.starter-files button,.search-hit,.step-dots button,.brand-pill,.header-progress,.reveal-toggle,.lu-chip button){transition:background-color var(--dur-fast), border-color var(--dur-fast), color var(--dur-fast), box-shadow var(--dur-fast), opacity var(--dur-fast), transform var(--dur-fast) var(--ease-out)}:where(.btn,.icon-btn,.chip,button.pill,.segmented button,.option-switch button,.code-copy,.lab-check,.recap-counter,.starter-files button,.header-progress,.lu-chip button):not(:disabled):active{transform:scale(.95)}:where(.quiz-option,.complete-btn,.flashcard,.mods-item,.search-hit):not(:disabled):active{transform:scale(.985)}.btn svg,.pager-dir svg,.reveal-toggle svg{transition:transform var(--dur) var(--ease-out)}@media (hover:hover){.btn:not(:disabled):hover :is(.lucide-arrow-right,.lucide-chevron-right){transform:translate(2px)}.btn:not(:disabled):hover .lucide-chevron-left{transform:translate(-2px)}.pager-link:hover .lucide-arrow-right{transform:translate(3px)}.pager-link:hover .lucide-arrow-left{transform:translate(-3px)}.btn:not(:disabled):hover .lucide-rotate-ccw{transform:rotate(-40deg)}.btn:not(:disabled):hover .lucide-shuffle{transform:scale(1.12)}}.chapter-card,.section-card,.pager-link,.roadmap-item,.path-link{transition:border-color var(--dur-fast), background-color var(--dur-fast), box-shadow var(--dur), transform var(--dur) var(--ease-out)}@media (hover:hover){.chapter-card:hover{transform:translateY(-2px)}.section-card:hover,.pager-link:hover{box-shadow:var(--shadow);transform:translateY(-1px)}.section-card:hover .section-card-icon{transform:scale(1.06)}.path-link:hover .path-dot{border-color:var(--accent)}}.section-card-icon,.path-dot{transition:transform var(--dur) var(--ease-spring), border-color var(--dur-fast)}.chapter-card:active,.section-card:active,.pager-link:active,.roadmap-item:active{transform:scale(.99)}.quiz-option.is-correct .quiz-letter,.quiz-option.is-selected .quiz-letter{animation:km-settle .35s var(--ease-spring)}.quiz-option.is-wrong{animation:.32s ease-in-out km-nudge}.quiz-explain,.quiz-foot{animation:km-rise .28s var(--ease-out)}.quiz-option .quiz-letter{transition:background-color var(--dur-fast), border-color var(--dur-fast), color var(--dur-fast)}.lab-task.is-done .lab-check{animation:km-settle .35s var(--ease-spring)}.lab-task.is-done .lab-check svg,.code-copy .lucide-check,.pill-done svg{animation:km-pop .35s var(--ease-spring)}.lab-task-title{transition:color var(--dur)}.lab-done{animation:km-rise .3s var(--ease-out)}.lab-progress span,.progress-chapter-bar span,.chapter-card-bar span{transition:width .5s var(--ease-out)}.complete-btn{transition:background-color var(--dur), border-color var(--dur), color var(--dur), transform var(--dur-fast) var(--ease-out)}.complete-check{transition:background-color var(--dur), border-color var(--dur), color var(--dur)}.complete-btn.is-done .complete-check{animation:km-pop .4s var(--ease-spring)}.prec-toggle span{transition:transform .25s var(--ease-spring)}.flashcard-text{animation:km-flip .32s var(--ease-out);transform-origin:50%}.step-swap,.dg-info-title,.dg-info-text{animation:km-rise .25s var(--ease-out)}.tabs-panel:not([hidden]),.env-panel,.ayaml-note{animation:km-rise .22s var(--ease-out)}.tabs-list button{transition:color var(--dur-fast), border-color var(--dur) var(--ease-out), transform var(--dur-fast) var(--ease-out)}.reveal[open]>.reveal-body,.lab-notes details[open]>:not(summary),.lab-walkthrough[open]>:not(summary),.dashboard-card details[open]>:not(summary),.page-outline[open]>.toc{animation:km-drop .22s var(--ease-out)}.search-dialog,.lightbox-body{animation:km-panel .2s var(--ease-out)}.progress-panel{transform-origin:100% 0;animation:km-panel .18s var(--ease-out)}.search-hit{transition:background-color .1s}
