:root{--bg:#1e1f22;--bg-alt:#26282b;--bg-sidebar:#2b2d30;--bg-code:#1a1b1d;--bg-hover:rgba(255,255,255,0.04);--border:#393b40;--border-soft:#2f3134;--text:#c7cdd4;--text-dim:#82868c;--text-bright:#eef0f2;--accent:#ffc66d;--accent-dim:#c99a52;--blue:#6897bb;--purple:#cc7832;--string:#6a8759;--comment:#7c7c7c;--func:#ffc66d;--macro:#bbb529;--link:#5ea1f2;--cta-bg:#185abd;--warn:#ff6b68;--danger:#e5484d;--ok:#6fbf73;--tip:#5ea1f2;--scrollbar-thumb:#4a4d52;--scrollbar-thumb-hover:#5a5d63;--radius-sm:4px;--radius:8px;--radius-lg:12px;--sidebar-w:300px;--content-max:1120px;--content-max-wide:1400px;--scale:1;--weight:400;--line-height-scale:1;--letter-spacing-extra:0em}html[data-theme=light]{--bg:#ffffff;--bg-alt:#f3f4f6;--bg-sidebar:#f7f8fa;--bg-code:#f0f1f3;--bg-hover:rgba(0,0,0,0.045);--border:#dde1e6;--border-soft:#e9ebee;--text:#2b2d30;--text-dim:#63676e;--text-bright:#101113;--accent:#a3670a;--accent-dim:#8a5808;--blue:#1a5fb4;--purple:#8250df;--string:#0f7b3b;--comment:#6e7781;--func:#a3670a;--macro:#8a6d00;--link:#0969da;--warn:#bc4c00;--danger:#cf222e;--ok:#1a7f37;--tip:#0969da;--scrollbar-thumb:#c7cbd1;--scrollbar-thumb-hover:#b3b8bf}html[data-theme=light] .callout.senior{background:rgba(163,103,10,.07)}html[data-theme=light] .callout.senior-thoughts{background:rgba(130,80,223,.06)}html[data-theme=light] .callout.architect{background:rgba(26,95,180,.06)}html[data-theme=sepia]{--bg:#f4ecd8;--bg-alt:#ede2c8;--bg-sidebar:#efe5cd;--bg-code:#e9dcbe;--bg-hover:rgba(91,70,54,0.05);--border:#ddccA4;--border-soft:#e3d4ae;--text:#4a3b2e;--text-dim:#7a6a55;--text-bright:#2e2318;--accent:#a3670a;--accent-dim:#8a5808;--blue:#2b6ca3;--purple:#8250df;--string:#4a7a2e;--comment:#8a7a5f;--func:#a3670a;--macro:#8a6d00;--link:#a3450a;--warn:#b3450a;--danger:#a3312e;--ok:#3f7a37;--tip:#2b6ca3;--scrollbar-thumb:#d8c69c;--scrollbar-thumb-hover:#c9b686}html[data-theme=sepia] .callout.senior{background:rgba(163,103,10,.08)}html[data-theme=sepia] .callout.senior-thoughts{background:rgba(130,80,223,.06)}html[data-theme=sepia] .callout.architect{background:rgba(43,108,163,.07)}*{box-sizing:border-box}html,body{margin:0;padding:0}html{background:var(--bg);-webkit-text-size-adjust:100%;text-size-adjust:100%}body{font-family:"Segoe UI",-apple-system,BlinkMacSystemFont,sans-serif;background:var(--bg);color:var(--text);font-size:calc(15px*var(--scale));font-weight:var(--weight);line-height:1.7;-webkit-font-smoothing:antialiased;transition:background-color .15s ease,color .15s ease}code,pre,.mono{font-family:"JetBrains Mono","Consolas","Courier New",monospace;font-variant-ligatures:none;-webkit-font-feature-settings:"liga"0,"calt"0;font-feature-settings:"liga"0,"calt"0}a{color:var(--link);text-decoration:none}a:hover{text-decoration:underline}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:var(--bg-alt)}::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb);border-radius:5px}::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-thumb-hover)}#shell,#sidebar,#topbar,.callout,pre,table,th,td,.link-block,.exercise,.selfcheck,.tag-pill,.tag-cloud a,.cluster-topics a,#hero,.principle,.faq-item{transition:background-color .15s ease,border-color .15s ease,color .15s ease}#shell{display:flex;min-height:100vh}#sidebar{width:var(--sidebar-w);min-width:var(--sidebar-w);background:var(--bg-sidebar);border-right:1px solid var(--border);display:flex;flex-direction:column;height:100vh;position:sticky;top:0;overflow:hidden}#sidebar-brand{padding:18px 18px 14px 18px;border-bottom:1px solid var(--border)}#sidebar-brand a{display:block;color:var(--text-bright);font-weight:700;font-size:14.5px;letter-spacing:.2px}#sidebar-brand .tagline{color:var(--text-dim);font-size:11px;margin-top:3px;line-height:1.4}.section-switch-block{text-align:center;margin-top:10px}.section-switch-block .section-badge{color:var(--accent);font-size:11px;letter-spacing:.3px;font-weight:700}.section-switch-block a.section-switch-btn{display:inline-block;margin-top:8px;padding:7px 16px;background:var(--bg-alt);border:1.5px solid var(--accent);border-radius:999px;color:var(--text-bright);font-weight:600;font-size:12.5px;letter-spacing:.1px;text-decoration:none;transition:background-color .15s ease,color .15s ease}.section-switch-block a.section-switch-btn:hover{background:var(--accent);color:var(--bg-sidebar)}#sidebar-search{padding:12px 14px;border-bottom:1px solid var(--border)}#sidebar-search input{width:100%;background:var(--bg-code);border:1px solid var(--border);border-radius:var(--radius-sm);padding:8px 10px;color:var(--text);font-size:13px;outline:0}#sidebar-search input:focus{border-color:var(--link)}#sidebar-search-results{max-height:0;overflow:hidden;transition:max-height .15s ease}#sidebar-search-results.open{max-height:320px;overflow-y:auto}#sidebar-search-results .sr-item,#hero-search-results .sr-item{display:block;padding:8px 14px;border-bottom:1px solid var(--border-soft);cursor:pointer}#sidebar-search-results .sr-item:hover,#hero-search-results .sr-item:hover{background:var(--bg-hover)}#sidebar-search-results .sr-title,#hero-search-results .sr-title{color:var(--text-bright);font-size:12.5px;font-weight:600;display:block}#sidebar-search-results .sr-snippet,#hero-search-results .sr-snippet{color:var(--text-dim);font-size:11px;display:block;margin-top:2px}#sidebar-search-results .sr-empty,#hero-search-results .sr-empty{padding:14px;color:var(--text-dim);font-size:12px;text-align:center}#sidebar-tree{flex:1;overflow-y:auto;padding:8px 0 20px 0}.tree-group{color:var(--text-dim);font-size:10.5px;text-transform:uppercase;letter-spacing:.6px;font-weight:700;padding:14px 18px 6px 18px}.tree-group:first-child{padding-top:6px}.sidebar-intro-block{padding-bottom:10px;margin-bottom:8px;border-bottom:1px solid var(--border)}.sidebar-intro-block .tree-group{padding-top:6px}.tree-item{display:flex;align-items:flex-start;gap:8px;padding:6px 18px 6px 22px;color:var(--text);font-size:13px;border-left:3px solid transparent;line-height:1.4}.tree-item:hover{background:var(--bg-hover);text-decoration:none}.tree-item.active{background:rgba(94,161,242,.12);border-left-color:var(--link);color:var(--text-bright)}.tree-item .ti-num{color:var(--text-dim);font-family:"JetBrains Mono",monospace;font-size:10.5px;min-width:20px;margin-top:1px}.tree-item .ti-status{width:6px;height:6px;border-radius:50%;margin-top:6px;flex-shrink:0}.tree-item .ti-status.reference{background:var(--accent)}.tree-item .ti-status.done{background:var(--text-dim)}.tree-item .ti-status.planned{background:var(--border);border:1px solid var(--text-dim)}.tree-item .ti-status.pending{background:0 0;border:1px solid var(--text-dim)}.tree-item .ti-progress{display:inline-flex;flex-shrink:0;margin-top:3px}.tree-item .ti-progress .icon-inline{width:12px;height:12px;vertical-align:middle}.tree-item .ti-progress.not_started{color:var(--text-dim)}.tree-item .ti-progress.in_progress{color:var(--accent)}.tree-item .ti-progress.completed{color:var(--ok)}.tree-item .ti-progress.needs_review{color:var(--warn)}#topbar-actions{display:flex;align-items:center;gap:8px;margin-left:auto}#sidebar-burger,#settings-toggle{background:var(--bg-code);border:1px solid var(--border);color:var(--text);border-radius:var(--radius-sm);width:34px;height:34px;display:inline-flex;align-items:center;justify-content:center;font-size:15px;cursor:pointer;transition:background-color .15s ease,border-color .15s ease,color .15s ease}#sidebar-burger{display:none}#sidebar-burger:hover,#settings-toggle:hover{border-color:var(--link);color:var(--text-bright)}.burger-label{display:none}.topbar-dropdown{position:relative}.topbar-dropdown-toggle{background:var(--bg-code);border:1px solid var(--border);color:var(--text);border-radius:var(--radius-sm);height:34px;padding:0 12px;display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:600;cursor:pointer;white-space:nowrap;transition:background-color .15s ease,border-color .15s ease,color .15s ease}.topbar-dropdown-toggle:hover{border-color:var(--link);color:var(--text-bright)}.topbar-dropdown-toggle .dd-caret{font-size:10px;color:var(--text-dim)}.topbar-dropdown-menu{position:absolute;top:calc(100% + 6px);right:0;min-width:200px;max-width:calc(100vw - 24px);max-height:70vh;overflow-y:auto;background:var(--bg-alt);border:1px solid var(--border);border-radius:var(--radius-sm);box-shadow:0 8px 24px rgba(0,0,0,.25);padding:6px;display:none;flex-direction:column;gap:2px;z-index:50}.topbar-dropdown-menu.open{display:flex}.dd-item{display:block;padding:8px 10px;border-radius:var(--radius-sm);font-size:13px;color:var(--text);cursor:pointer;text-decoration:none;white-space:nowrap}.dd-item:hover{background:var(--bg-code);color:var(--text-bright)}.dd-item.dd-current{color:var(--ok);font-weight:700}.dd-item.dd-disabled{color:var(--text-dim);cursor:default;opacity:.6}.dd-item.dd-disabled:hover{background:0 0;color:var(--text-dim)}.topbar-ghost-btn,.topbar-cta-btn{height:34px;padding:0 14px;border-radius:var(--radius-sm);font-size:13px;font-weight:700;cursor:pointer;white-space:nowrap;transition:opacity .15s ease,border-color .15s ease}.topbar-ghost-btn{background:0 0;border:1px solid var(--border);color:var(--text)}.topbar-ghost-btn:hover{border-color:var(--link);color:var(--text-bright)}.topbar-cta-btn{background:var(--cta-bg,var(--link));border:0;color:#fff}.topbar-cta-btn:hover{opacity:.9}.topbar-ghost-btn:disabled,.topbar-cta-btn:disabled{cursor:wait;opacity:.65}.topbar-account-loading{color:var(--text-dim);font-size:13px;padding:0 6px}@media (max-width:640px){.topbar-dropdown-toggle,.topbar-ghost-btn,.topbar-cta-btn{padding:0 9px;font-size:12px}}.settings-overlay{position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:100;display:none;align-items:center;justify-content:center;padding:20px}.settings-overlay.open{display:flex}#settings-modal{background:var(--bg-sidebar);border:1px solid var(--border);border-radius:var(--radius-lg);width:400px;max-width:100%;max-height:86vh;overflow-y:auto;padding:22px 24px;box-shadow:0 24px 60px rgba(0,0,0,.5)}html[data-theme=light] #settings-modal{box-shadow:0 24px 60px rgba(20,21,23,.18)}.settings-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px;padding-bottom:14px;border-bottom:1px solid var(--border)}.settings-title{color:var(--text-bright);font-size:15.5px;font-weight:700}.settings-close{background:0 0;border:0;color:var(--text-dim);font-size:18px;cursor:pointer;line-height:1;padding:4px 6px;border-radius:var(--radius-sm)}.settings-close:hover{color:var(--text-bright);background:var(--bg-hover)}.settings-block{margin-bottom:22px}.settings-block:last-child{margin-bottom:0}.settings-block-label{color:var(--text-dim);font-size:11px;text-transform:uppercase;letter-spacing:.5px;font-weight:700;margin-bottom:10px;display:flex;justify-content:space-between;align-items:center}.settings-reset{background:0 0;border:0;color:var(--link);font-size:11px;cursor:pointer;padding:0;text-transform:none;letter-spacing:0;font-weight:600}.settings-reset:hover{text-decoration:underline}.settings-slider-row{display:flex;align-items:center;gap:10px}.settings-slider-row input[type=range]{flex:1;accent-color:var(--link);height:4px}.settings-slider-row input[type=number]{width:58px;background:var(--bg-code);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-bright);font-size:12.5px;padding:6px 6px;text-align:center}.settings-slider-row input[type=number]:focus{border-color:var(--link);outline:0}.settings-value{color:var(--text-dim);font-size:11.5px;margin-top:8px}#settings-theme-btn{width:100%;display:flex;align-items:center;justify-content:center;gap:8px;padding:11px 12px;font-size:13px;font-weight:600;background:var(--bg-code);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);cursor:pointer;transition:background-color .15s ease,border-color .15s ease,color .15s ease}#settings-theme-btn:hover{border-color:var(--link);color:var(--text-bright)}#main{flex:1;min-width:0;display:flex;flex-direction:column}#topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 32px;border-bottom:1px solid var(--border);background:var(--bg-alt);position:sticky;top:0;z-index:5;transition:transform .25s ease}#breadcrumbs{font-size:12.5px;color:var(--text-dim);display:flex;align-items:center;gap:6px;flex-wrap:wrap;min-width:0}#breadcrumbs a{color:var(--text-dim)}#breadcrumbs a:hover{color:var(--link)}#breadcrumbs .bc-sep{color:var(--border)}#breadcrumbs .bc-current{color:var(--text-bright)}#page-body{flex:1;display:flex;justify-content:center;gap:36px;padding:40px 32px 100px 32px}#article{max-width:var(--content-max);width:100%;min-width:0}.eyebrow{color:var(--accent);font-size:calc(11px*var(--scale));text-transform:uppercase;letter-spacing:1px;font-weight:700;margin-bottom:10px}h1.article-title{color:var(--text-bright);font-size:calc(30px*var(--scale));font-weight:700;margin:0 0 12px 0;line-height:1.25}.article-lead{color:var(--text-dim);font-size:calc(16px*var(--scale));line-height:1.6;margin:0 0 20px 0}.tag-row{display:flex;flex-wrap:wrap;gap:6px;margin:14px 0 28px 0}.tag-pill{font-size:calc(11px*var(--scale));color:var(--text-dim);background:var(--bg-alt);border:1px solid var(--border);border-radius:12px;padding:3px 10px}.tag-pill:hover{color:var(--text-bright);border-color:var(--link);text-decoration:none}article h2{color:var(--text-bright);font-size:calc(21px*var(--scale));font-weight:700;margin:44px 0 14px 0;padding-bottom:10px;border-bottom:1px solid var(--border);scroll-margin-top:80px}article h2 .h-num{color:var(--accent);font-family:"JetBrains Mono",monospace;margin-right:10px}article h3{color:var(--text-bright);font-size:calc(16.5px*var(--scale));font-weight:700;margin:28px 0 10px 0;scroll-margin-top:80px}article h4{color:var(--text-bright);font-size:calc(14.5px*var(--scale));font-weight:700;margin:20px 0 8px 0}article p{margin:12px 0;color:var(--text);line-height:calc(1.75*var(--line-height-scale));letter-spacing:var(--letter-spacing-extra)}article strong{color:var(--text-bright);font-weight:700}article ul,article ol{line-height:calc(1.85*var(--line-height-scale));letter-spacing:var(--letter-spacing-extra);padding-left:24px;margin:12px 0}article li{margin:5px 0}article hr{border:0;border-top:1px solid var(--border);margin:36px 0}article img{max-width:100%;border-radius:var(--radius);border:1px solid var(--border)}.callout{background:var(--bg-alt);border-left:3px solid var(--link);padding:14px 18px;margin:18px 0;border-radius:0 var(--radius-sm) var(--radius-sm)0;line-height:calc(1.7*var(--line-height-scale));letter-spacing:var(--letter-spacing-extra)}.callout .cal-title{font-weight:700;color:var(--text-bright);font-size:11.5px;text-transform:uppercase;letter-spacing:.5px;margin-bottom:7px;display:flex;align-items:center;gap:6px}.callout.important{border-left-color:var(--tip)}.callout.error{border-left-color:var(--danger)}.callout.tip{border-left-color:var(--ok)}.callout.senior{border-left-color:var(--accent);background:rgba(255,198,109,.06)}.callout.senior-thoughts{border-left-color:var(--purple);background:rgba(204,120,50,.06);padding:11px 16px;margin:16px 0;font-size:calc(13.5px*var(--scale));line-height:1.65}.callout.senior-thoughts .cal-title{color:var(--purple);font-size:11px}.callout.senior-thoughts p{margin:4px 0}.callout.architect{border-left-color:var(--blue);background:rgba(104,151,187,.07)}.callout.architect .cal-title{color:var(--blue)}.callout p:first-child{margin-top:0}.callout p:last-child{margin-bottom:0}.code-block{margin:16px 0}.code-block .code-caption{display:flex;justify-content:space-between;align-items:center;background:var(--bg-alt);border:1px solid var(--border);border-bottom:none;border-radius:var(--radius-sm) var(--radius-sm)0 0;padding:8px 14px;font-size:11.5px;color:var(--text-dim)}.code-block .code-caption .cc-file{font-family:"JetBrains Mono",monospace;color:var(--text-bright)}pre{background:var(--bg-code);border:1px solid var(--border);border-radius:var(--radius-sm);padding:16px 18px;overflow-x:auto;margin:0;line-height:1.6;font-size:calc(13px*var(--scale))}.code-block .code-caption+pre{border-radius:0 0 var(--radius-sm) var(--radius-sm)}pre code{color:var(--text);white-space:pre}.tok-kw{color:var(--purple)}.tok-type{color:var(--text);font-weight:600}.tok-str{color:var(--string)}.tok-com{color:var(--comment);font-style:italic}.tok-func{color:var(--func)}.tok-macro{color:var(--macro)}.tok-num{color:var(--blue)}.diagram{color:#8fbf8f}.line-breakdown{margin:14px 0 24px 0;border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden}.lb-row{display:flex;align-items:flex-start;flex-wrap:wrap;gap:6px 14px;padding:10px 14px;border-bottom:1px solid var(--border-soft);font-size:calc(13px*var(--scale))}.lb-row:last-child{border-bottom:none}.lb-row:nth-child(odd){background:var(--bg-alt)}.lb-line{font-family:"JetBrains Mono",monospace;color:var(--accent);white-space:normal;overflow-wrap:anywhere;flex:0 0 220px;max-width:100%;line-height:1.5;font-size:calc(12.5px*var(--scale))}.lb-explain{color:var(--text);line-height:1.6;flex:1 1 260px;min-width:0}code.inline,p code,li code{background:var(--bg-alt);border:1px solid var(--border);border-radius:3px;padding:1px 6px;font-size:calc(12.5px*var(--scale));color:var(--accent);overflow-wrap:break-word}td code{background:var(--bg-alt);border:1px solid var(--border);border-radius:3px;padding:1px 6px;font-size:calc(12.5px*var(--scale));color:var(--accent);white-space:nowrap}table{border-collapse:collapse;width:100%;margin:18px 0;font-size:calc(13.5px*var(--scale));table-layout:auto;display:block;overflow-x:auto;-webkit-overflow-scrolling:touch}th,td{border:1px solid var(--border);padding:9px 13px;text-align:left;vertical-align:top;overflow-wrap:break-word}th{background:var(--bg-alt);color:var(--text-bright);font-weight:700;font-size:calc(12px*var(--scale));text-transform:uppercase;letter-spacing:.3px;white-space:nowrap}.link-block{background:var(--bg-alt);border:1px solid var(--border);border-radius:var(--radius);padding:16px 20px;margin:20px 0}.link-block .lb-title{font-weight:700;color:var(--text-bright);font-size:calc(13px*var(--scale));text-transform:uppercase;letter-spacing:.4px;margin-bottom:10px;display:flex;align-items:center;gap:8px}.link-block.prereq{border-left:3px solid var(--warn)}.link-block.next{border-left:3px solid var(--ok)}.link-block.related{border-left:3px solid var(--link)}.link-block ul{list-style:none;padding:0;margin:0}.link-block li{margin:8px 0}.link-block a.ll{color:var(--text-bright);font-weight:600;font-size:calc(14px*var(--scale))}.link-block .ll-desc{color:var(--text-dim);font-size:calc(12.5px*var(--scale));margin-top:2px;display:block}.article-attribution{margin:36px 0 4px 0;padding-top:16px;border-top:1px solid var(--border);color:var(--text-dim);font-size:calc(12.5px*var(--scale));line-height:1.7}.article-attribution a{color:var(--text-dim);text-decoration:underline}.article-attribution a:hover{color:var(--link)}.article-copyright{display:flex;align-items:center;gap:8px;margin-top:10px!important}.copyright-logo{width:18px;height:18px;border-radius:4px;opacity:.8;flex-shrink:0}.faq-item{border-bottom:1px solid var(--border);padding:16px 0}.faq-item:last-child{border-bottom:none}.faq-q{color:var(--text-bright);font-weight:700;margin-bottom:8px;line-height:1.5;display:flex;gap:8px}.faq-q .faq-mark{color:var(--accent)}.faq-a{color:var(--text);line-height:calc(1.75*var(--line-height-scale));letter-spacing:var(--letter-spacing-extra);margin:0}.checklist{list-style:none;padding:0;margin:16px 0}.checklist li{display:flex;align-items:flex-start;gap:10px;padding:8px 0;border-bottom:1px solid var(--border-soft);line-height:calc(1.6*var(--line-height-scale));letter-spacing:var(--letter-spacing-extra)}.checklist li:last-child{border-bottom:none}.checklist li::before{content:"☐";color:var(--accent);font-size:15px;flex-shrink:0;margin-top:1px}.exercise{background:var(--bg-alt);border-left:3px solid var(--accent);padding:16px 20px;margin:20px 0;border-radius:0 var(--radius-sm) var(--radius-sm)0}.exercise-tag{font-size:10.5px;text-transform:uppercase;letter-spacing:.5px;color:var(--accent);font-weight:700;margin-bottom:8px}.exercise-task{color:var(--text-bright);line-height:calc(1.65*var(--line-height-scale));letter-spacing:var(--letter-spacing-extra)}details.exercise-answer{margin-top:12px}details.exercise-answer summary{cursor:pointer;color:var(--link);font-size:13px;padding:6px 0;user-select:none;font-weight:600}details.exercise-answer summary:hover{text-decoration:underline}details.exercise-answer[open] summary{margin-bottom:6px}.exercise-options{margin-top:12px;display:flex;flex-direction:column;gap:6px}.exercise-option{display:flex;align-items:flex-start;gap:8px;padding:8px 10px;border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;font-size:13px;color:var(--text)}.exercise-option:hover{border-color:var(--link)}.exercise-option input{margin-top:2px;flex-shrink:0}.exercise-option.sc-option-correct{border-color:var(--ok);color:var(--ok)}.exercise-option.sc-option-incorrect{border-color:var(--danger);color:var(--danger)}.exercise-feedback{margin-top:10px;font-size:13px;font-weight:600}.exercise-feedback.sc-feedback-correct{color:var(--ok)}.exercise-feedback.sc-feedback-incorrect{color:var(--danger)}.selfcheck{background:var(--bg-code);border:1px dashed var(--border);border-radius:var(--radius);padding:16px 20px;margin:24px 0;font-size:12.5px;color:var(--text-dim)}.lab-task{background:var(--bg-alt);border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:0 var(--radius) var(--radius)0;padding:18px 20px;margin:20px 0}.lab-task.lab-task-passed{border-left-color:var(--ok)}.lab-prompt{color:var(--text-bright);font-size:calc(14px*var(--scale));line-height:calc(1.6*var(--line-height-scale));letter-spacing:var(--letter-spacing-extra);margin:0 0 12px 0}.lab-steps{color:var(--text-dim);font-size:calc(12.5px*var(--scale));line-height:1.6;margin:0 0 12px 0;padding:8px 12px;background:var(--bg-code);border-left:2px solid var(--border);border-radius:0 var(--radius-sm) var(--radius-sm)0}.lab-code-input{display:block;width:100%;min-height:280px;background:var(--bg-code);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);font-family:"JetBrains Mono",monospace;font-size:12.5px;line-height:1.6;padding:12px 14px;resize:vertical;box-sizing:border-box}.lab-code-input:focus{outline:0;border-color:var(--link)}.lab-monaco-host{width:100%;height:280px;border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden;margin-bottom:0}.lab-monaco-host:focus-within{border-color:var(--link)}.code-block .code-monaco-host{width:100%;border:1px solid var(--border);border-top:none;overflow:hidden;border-radius:0 0 var(--radius-sm) var(--radius-sm)}.lab-task-actions{display:flex;align-items:center;gap:10px;margin-top:10px;flex-wrap:wrap}.lab-check-btn,.lab-hint-btn{height:32px;padding:0 14px;border-radius:var(--radius-sm);font-size:12.5px;font-weight:700;cursor:pointer;white-space:nowrap;transition:opacity .15s ease,border-color .15s ease}.lab-check-btn{background:var(--cta-bg,var(--link));border:0;color:#fff}.lab-check-btn:hover{opacity:.9}.lab-hint-btn{background:0 0;border:1px solid var(--border);color:var(--text)}.lab-hint-btn:hover{border-color:var(--link);color:var(--text-bright)}.lab-hint{color:var(--text-dim);font-size:12.5px;line-height:1.55;margin:10px 0 0 0;padding:10px 12px;background:var(--bg-code);border:1px dashed var(--border);border-radius:var(--radius-sm)}.lesson-reset-btn{display:inline-block;margin:4px 0 20px 0;padding:7px 16px;background:0 0;border:1.5px solid var(--border);border-radius:999px;color:var(--text-dim);font-size:12.5px;font-weight:600;cursor:pointer;transition:border-color .15s ease,color .15s ease}.lesson-reset-btn:hover{border-color:var(--accent);color:var(--text-bright)}.lab-result{margin-top:10px;font-size:12.5px;line-height:1.5;min-height:1em;font-weight:600}.lab-result-pass{color:var(--ok)}.lab-result-fail{color:var(--danger)}.lab-result:empty{margin-top:0}.lab-terminal{margin-top:10px;background:var(--bg-code);border:1px solid var(--border);border-radius:var(--radius-sm);font-family:"JetBrains Mono",monospace;font-size:12px;line-height:1.7;overflow:hidden}.lab-terminal-bar{display:flex;align-items:center;gap:6px;padding:7px 12px;background:var(--bg-alt);border-bottom:1px solid var(--border)}.lab-terminal-dot{width:9px;height:9px;border-radius:50%;background:var(--border);opacity:.6}.lab-terminal-title{margin-left:6px;color:var(--text-dim);font-size:11px;letter-spacing:.3px}.lab-terminal-body{padding:10px 14px 12px 14px;white-space:pre-wrap;word-break:break-word}.lab-terminal-prompt{color:var(--text-dim)}.lab-terminal-prompt::before{content:"$ ";color:var(--accent)}.lab-terminal-verdict{display:block;margin-top:6px;font-weight:700}.lab-terminal-verdict.lab-terminal-pass{color:var(--ok)}.lab-terminal-verdict.lab-terminal-pass::before{content:"✓ "}.lab-terminal-verdict.lab-terminal-fail{color:var(--danger)}.lab-terminal-verdict.lab-terminal-fail::before{content:"✗ "}.lab-terminal-verdict.lab-terminal-pending{color:var(--text-dim);font-weight:600}.lab-terminal-note{display:block;margin-top:8px;color:var(--text-dim);font-size:10.5px;font-style:italic}.lab-terminal-output{display:block;margin-top:8px;padding:8px 10px;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);font-size:11.5px;max-height:220px;overflow:auto}.lab-terminal-output-label{display:block;color:var(--text-dim);font-size:10px;text-transform:uppercase;letter-spacing:.3px;margin-bottom:4px}.lab-xp-feedback{margin-top:8px;padding:8px 12px;background:var(--bg-alt);border:1px solid var(--border);border-radius:var(--radius-sm);font-size:12px;color:var(--text-dim)}.lab-xp-feedback-levelup{border-color:var(--accent);border-width:2px;background:rgba(94,161,242,.08);color:var(--text)}.lab-xp-delta{color:var(--ok);font-weight:700}.lab-xp-levelup-title{color:var(--accent);font-weight:700}.lab-xp-total{display:block;margin-top:4px;color:var(--text-dim);font-size:11px}.pager{display:flex;justify-content:space-between;gap:16px;margin-top:56px;padding-top:24px;border-top:1px solid var(--border)}.pager a{color:var(--text-dim);font-size:calc(13px*var(--scale));border:1px solid var(--border);padding:10px 16px;border-radius:var(--radius-sm);max-width:45%}.pager a:hover{color:var(--text-bright);border-color:var(--link);text-decoration:none}.pager .dir{display:block;font-size:10px;text-transform:uppercase;color:var(--text-dim);margin-bottom:3px;letter-spacing:.3px}.pager .pg-title{color:var(--text-bright);font-weight:600}#hero{padding:64px 48px 44px 48px;border-bottom:1px solid var(--border);background:var(--bg-sidebar)}#hero .eyebrow{margin-bottom:12px}#hero h1{color:var(--text-bright);font-size:34px;margin:0 0 16px 0;font-weight:700;max-width:820px}#hero p.sub{color:var(--text);font-size:16px;max-width:760px;margin:0 0 10px 0;line-height:1.65}#hero-search{max-width:560px;margin-top:24px;position:relative}#hero-search input{width:100%;background:var(--bg-code);border:1px solid var(--border);border-radius:var(--radius);padding:14px 18px;color:var(--text-bright);font-size:15px;outline:0}#hero-search input:focus{border-color:var(--link)}#hero-search-results{position:absolute;left:0;right:0;top:calc(100% + 6px);background:var(--bg-alt);border:1px solid var(--border);border-radius:var(--radius);max-height:0;overflow:hidden;transition:max-height .15s ease;z-index:10}#hero-search-results.open{max-height:400px;overflow-y:auto}.home-wrap{max-width:1180px;margin:0 auto;padding:44px 48px 100px 48px}.section-h{color:var(--text-bright);font-size:21px;margin:52px 0 8px 0;border-bottom:1px solid var(--border);padding-bottom:10px}.section-sub{color:var(--text-dim);font-size:13px;margin-bottom:22px}.principle-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px;margin:20px 0 10px 0}.principle{background:var(--bg-alt);border:1px solid var(--border);border-radius:var(--radius);padding:16px 18px}.principle .ptitle{color:var(--text-bright);font-weight:700;font-size:13.5px;margin-bottom:5px}.principle .pdesc{color:var(--text-dim);font-size:12.5px;line-height:1.55}.tag-cloud{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0 10px 0}.tag-cloud a{font-size:12.5px;color:var(--text);background:var(--bg-alt);border:1px solid var(--border);border-radius:14px;padding:5px 13px}.tag-cloud a:hover{color:var(--text-bright);border-color:var(--link);text-decoration:none}.cluster{display:flex;gap:18px;padding:20px 0;border-bottom:1px solid var(--border)}.cluster:last-child{border-bottom:none}.cluster-num{min-width:44px;flex-shrink:0;color:var(--text-dim);font-family:"JetBrains Mono",monospace;font-size:20px;font-weight:700}.cluster-body{flex:1;min-width:0}.cluster-title{color:var(--text-bright);font-size:16px;font-weight:700;margin-bottom:4px}.cluster-desc{color:var(--text-dim);font-size:13px;margin-bottom:8px;line-height:1.55}.cluster-topics{display:flex;flex-wrap:wrap;gap:8px}.cluster-topics a{font-size:12.5px;color:var(--text);background:var(--bg-code);border:1px solid var(--border);border-radius:6px;padding:5px 10px}.cluster-topics a:hover{border-color:var(--link);color:var(--text-bright);text-decoration:none}.cluster-topics a .badge-ref{color:var(--accent);font-size:10px;margin-left:4px}.phil-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:16px;margin:22px 0 10px 0}.phil-card{background:var(--bg-alt);border:1px solid var(--border);border-left:3px solid var(--link);border-radius:0 var(--radius) var(--radius)0;padding:18px 20px;display:flex;flex-direction:column;gap:8px}.phil-card.soon{border-left-color:var(--text-dim)}.phil-q{color:var(--text-bright);font-weight:700;font-size:15px;line-height:1.4}.phil-a{color:var(--text);font-size:13.5px;line-height:1.65;flex:1}.phil-link{font-size:12.5px;color:var(--link);margin-top:2px}.phil-soon-badge{display:inline-block;color:var(--text-dim);font-size:10.5px;text-transform:uppercase;letter-spacing:.4px;border:1px dashed var(--border);border-radius:10px;padding:2px 9px;margin-top:2px;width:fit-content}.phil-soon-badge--ready{color:var(--text-dim);border:0;border-radius:0;padding:0;text-transform:none;letter-spacing:0;font-size:12px;line-height:1.5;white-space:normal;width:auto;max-width:100%}.pricing-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:16px;margin:24px 0}.pricing-card{background:var(--bg-alt);border:1px solid var(--border);border-radius:var(--radius);padding:26px 20px 24px;display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center;overflow:hidden}.pricing-card.featured{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.pricing-plan{color:var(--text-bright);font-size:23px;font-weight:800;letter-spacing:.2px;line-height:1.2}.pricing-desc{color:var(--text-dim);font-size:13px;line-height:1.55;max-width:230px;margin-bottom:4px}.pricing-badge{align-self:center;color:var(--accent);font-size:10.5px;text-transform:uppercase;letter-spacing:.4px;border:1px solid var(--accent-dim);border-radius:10px;padding:2px 10px}.pricing-cta-slot{margin-top:6px;width:100%;display:flex;justify-content:center;overflow:hidden}.pricing-cta-slot stripe-buy-button{width:100%;max-width:260px}.pricing-cta{margin-top:8px;background:var(--link);color:#fff;border:0;border-radius:var(--radius-sm);padding:11px 16px;font-size:13.5px;font-weight:700;cursor:pointer;transition:background-color .15s ease,opacity .15s ease}.pricing-cta:hover{opacity:.9}.pricing-cta:disabled{opacity:.5;cursor:not-allowed}.account-status-card{background:var(--bg-alt);border:1px solid var(--border);border-radius:var(--radius);padding:20px 24px;margin:20px 0}.account-status-row{display:flex;justify-content:space-between;align-items:center;padding:8px 0;border-bottom:1px solid var(--border-soft)}.account-status-row:last-child{border-bottom:none}.account-status-label{color:var(--text-dim);font-size:12.5px;text-transform:uppercase;letter-spacing:.3px}.account-status-value{color:var(--text-bright);font-weight:700}.account-status-value.role-premium,.account-status-value.role-admin{color:var(--ok)}.account-status-value.role-guest,.account-status-value.role-registered{color:var(--warn)}#clerk-auth-widget{margin:20px 0}.form-message{font-size:13px;padding:10px 14px;border-radius:var(--radius-sm);margin:14px 0}.form-message.error{background:rgba(229,72,77,.12);color:var(--danger);border:1px solid var(--danger)}.form-message.info{background:rgba(94,161,242,.12);color:var(--link);border:1px solid var(--link)}.locked-screen{max-width:520px;margin:64px auto;text-align:center;padding:0 20px}.locked-icon{font-size:44px;line-height:1;margin-bottom:14px}.locked-actions{margin-top:24px;display:flex;justify-content:center;flex-wrap:wrap;gap:12px}.locked-actions .pricing-cta{margin-top:0}#graph-wrap{max-width:1200px;margin:0 auto;padding:40px 48px 100px 48px}#graph-canvas{background:var(--bg-alt);border:1px solid var(--border);border-radius:var(--radius);padding:20px;overflow:auto}.gnode{fill:var(--bg-code);stroke:var(--border);stroke-width:1.5}.gnode.reference{stroke:var(--accent);stroke-width:2}.gnode.planned{stroke-dasharray:4,3}.gnode-label{fill:var(--text-bright);font-size:12px;font-family:"Segoe UI",sans-serif}.gnode-sub{fill:var(--text-dim);font-size:10px}.gedge{stroke:var(--border);stroke-width:1.5;fill:none;marker-end:url(#arrow)}.gnode-group{cursor:pointer}.gnode-group:hover .gnode{stroke:var(--link)}.icon-inline{width:16px;height:16px;vertical-align:-3px;flex-shrink:0}.dh-title .icon-inline{margin-right:6px}.favorite-star-btn{display:inline-flex;align-items:center;margin-left:10px;vertical-align:middle;background:0 0;border:0;cursor:pointer;line-height:1;color:var(--text-dim);padding:2px 4px}.favorite-star-btn .icon-inline{width:20px;height:20px;vertical-align:baseline;fill:none}.favorite-star-btn:hover{color:var(--accent)}.favorite-star-btn.is-favorite{color:var(--accent)}.favorite-star-btn.is-favorite .icon-inline{fill:currentColor}.favorite-star-btn:disabled{opacity:.5;cursor:default}#dynamic-home-blocks{max-width:1200px;margin:0 auto;padding:0 48px}.dh-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;margin:24px 0 8px 0}.dh-block{background:var(--bg-alt);border:1px solid var(--border);border-radius:var(--radius);padding:16px 18px}.dh-title{color:var(--text-bright);font-size:13px;font-weight:700;margin-bottom:10px}.dh-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:7px}.dh-item a{color:var(--link);font-size:13px;line-height:1.4}.dh-item a:hover{text-decoration:underline}.dh-item.dh-missing{color:var(--text-dim);font-size:12px;font-style:italic}.dh-empty{color:var(--text-dim);font-size:12.5px;line-height:1.5}.dh-progress{margin-top:12px}.dh-progress-bar{background:var(--bg-code);border:1px solid var(--border);border-radius:999px;height:6px;overflow:hidden}.dh-progress-fill{background:var(--accent);height:100%;border-radius:999px;transition:width .3s}.dh-progress-label{display:block;color:var(--text-dim);font-size:11px;margin-top:6px}.dh-guest-note{margin-top:10px;padding:8px 12px;background:var(--bg-alt);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-dim);font-size:11.5px;line-height:1.5}.dh-level-badge{color:var(--accent);font-size:20px;font-weight:800;line-height:1.2}.dh-level-title{color:var(--text-dim);font-size:12px;font-weight:600;margin-top:2px}#user-sidebar{width:230px;min-width:230px;box-sizing:border-box;background:var(--bg-sidebar);border-left:1px solid var(--border);display:flex;flex-direction:column;height:100vh;position:sticky;top:0;overflow-y:auto;padding:18px 16px}#user-sidebar .us-title{color:var(--text-bright);font-size:13px;font-weight:700;margin-bottom:12px}#user-sidebar .us-guest{color:var(--text-dim);font-size:12.5px;line-height:1.5}#user-sidebar .us-stat{color:var(--text-dim);font-size:11.5px;margin-top:10px;line-height:1.4}#user-sidebar .us-link-block{margin-top:16px;padding-top:14px;border-top:1px solid var(--border)}#user-sidebar .us-link-block a{display:block;color:var(--link);font-size:12.5px;line-height:2;text-decoration:none}#user-sidebar .us-link-block a:hover{text-decoration:underline}#user-sidebar .us-link-block:first-child{margin-top:0;padding-top:0;border-top:none}@media (max-width:1400px){#user-sidebar{position:fixed;top:0;right:-260px;height:100vh;z-index:20;transition:right .2s ease;box-shadow:-4px 0 20px rgba(0,0,0,.4)}#user-sidebar.open{right:0}#user-sidebar-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:19}#user-sidebar-overlay.open{display:block}#user-sidebar-reopen-btn{display:flex;position:fixed;right:0;top:96px;z-index:15;width:22px;height:46px;padding:0;align-items:center;justify-content:center;background:var(--bg-code);border:1px solid var(--border);border-right:none;border-radius:8px 0 0 8px;color:var(--text-dim);font-size:11px;cursor:pointer;box-shadow:-2px 0 8px rgba(0,0,0,.15);transition:border-color .15s ease,color .15s ease}html.user-sidebar-mobile-open #user-sidebar-reopen-btn{display:none}#user-sidebar-reopen-btn:hover{color:var(--text-bright);border-color:var(--link)}html.sidebar-locked,html.sidebar-locked body{overflow:hidden;height:100%}}#user-sidebar .us-close-btn{position:absolute;top:14px;right:14px;background:0 0;border:0;color:var(--text-dim);font-size:13px;line-height:1;cursor:pointer;padding:2px 4px}#user-sidebar .us-close-btn:hover{color:var(--text-bright)}#user-sidebar-reopen-btn{display:none}@media (min-width:1401px){html.user-sidebar-hidden #user-sidebar{display:none}#user-sidebar-reopen-btn{display:none;position:fixed;right:0;top:96px;z-index:15;width:22px;height:46px;padding:0;align-items:center;justify-content:center;background:var(--bg-code);border:1px solid var(--border);border-right:none;border-radius:8px 0 0 8px;color:var(--text-dim);font-size:11px;cursor:pointer;box-shadow:-2px 0 8px rgba(0,0,0,.15);transition:border-color .15s ease,color .15s ease}html.user-sidebar-hidden #user-sidebar-reopen-btn{display:flex}#user-sidebar-reopen-btn:hover{color:var(--text-bright);border-color:var(--link)}}#nav-collapse-btn,#nav-reopen-btn{display:none}@media (min-width:861px){html.nav-collapsed #sidebar{display:none}html.nav-collapsed #article{max-width:var(--content-max-wide)}#nav-collapse-btn{position:absolute;top:14px;right:-13px;z-index:6;width:26px;height:26px;padding:0;display:flex;align-items:center;justify-content:center;background:var(--bg-code);border:1px solid var(--border);border-radius:50%;color:var(--text-dim);font-size:11px;line-height:1;cursor:pointer;transition:border-color .15s ease,color .15s ease}#nav-collapse-btn:hover{color:var(--text-bright);border-color:var(--link)}#nav-reopen-btn{display:none;position:fixed;left:0;top:96px;z-index:15;width:22px;height:46px;padding:0;align-items:center;justify-content:center;background:var(--bg-code);border:1px solid var(--border);border-left:none;border-radius:0 8px 8px 0;color:var(--text-dim);font-size:11px;cursor:pointer;box-shadow:2px 0 8px rgba(0,0,0,.15);transition:border-color .15s ease,color .15s ease}html.nav-collapsed #nav-reopen-btn{display:flex}#nav-reopen-btn:hover{color:var(--text-bright);border-color:var(--link)}}@media (max-width:860px){#sidebar{position:fixed;left:-320px;z-index:20;transition:left .2s;box-shadow:4px 0 20px rgba(0,0,0,.4)}#sidebar.open{left:0}#sidebar-burger{display:inline-flex}#page-body{padding:28px 18px 80px 18px}#topbar{padding:10px 14px;flex-wrap:wrap;row-gap:8px}#hero{padding:40px 20px 32px 20px}#topbar.topbar-hidden{transform:translateY(-100%)}#sidebar-burger,#settings-toggle{width:42px;height:42px;font-size:16px}.topbar-dropdown-toggle,.topbar-ghost-btn,.topbar-cta-btn{height:40px}#topbar-actions{gap:6px}#sidebar-burger{width:auto;padding:0 12px;gap:6px}.burger-label{display:inline;font-size:11.5px;font-weight:600;white-space:nowrap}#breadcrumbs a{display:inline-block;padding:9px 3px;margin:-9px -3px}#topbar-actions{flex-wrap:wrap;justify-content:flex-end;row-gap:8px}#sidebar-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:19}#sidebar-overlay.open{display:block}#sidebar-close{display:inline-flex;align-items:center;justify-content:center;position:absolute;top:14px;right:14px;width:34px;height:34px;background:var(--bg-code);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-dim);font-size:16px;cursor:pointer;z-index:1}#sidebar-close:hover{color:var(--text-bright);border-color:var(--link)}html.sidebar-locked,html.sidebar-locked body{overflow:hidden;height:100%}.topbar-dropdown-menu{position:fixed;width:calc(100vw - 32px);max-width:280px;max-height:60vh}#dropdown-backdrop{display:none;position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:3}#dropdown-backdrop.open{display:block}}@media (max-width:640px){#breadcrumbs{flex-wrap:nowrap;overflow:hidden}#breadcrumbs .bc-cluster{display:none}#breadcrumbs .bc-current{display:inline-block;max-width:46vw;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}}@media (max-width:480px){h1.article-title{font-size:calc(24px*var(--scale))}.pager{flex-direction:column}.pager a{max-width:100%}}#prereq-block,.link-block.prereq{display:none!important}