:root{color-scheme:light;--bg:#ede9df;--surface:#ffffff;--surface-2:#e3ddcf;--border:#d4ccb9;--text:#1c3028;--text-2:#4b5a52;--accent:#8e4620;--accent-ink:#ffffff;--focus:#8e4620;--viz-current-bg:#fff4c2;--viz-current-fg:#92400e;--viz-current-edge:#d97706;--viz-next-bg:#eff6ff;--viz-next-fg:#1d4ed8;--viz-changed-bg:#dcfce7;--viz-changed-fg:#166534;--viz-new-bg:#e0f2fe;--viz-new-fg:#075985;--viz-output-bg:#eef2ff;--viz-output-fg:#3730a3;--viz-error-bg:#fee2e2;--viz-error-fg:#991b1b;--viz-pointer:#7c3aed;--viz-return-bg:#cffafe;--viz-return-fg:#155e75;--code-keyword:#7928a1;--code-string:#08692b;--code-number:#8f4200;--code-comment:#5a5a53;--code-function:#1d4ed8;--font-ui:var(--font-inter),system-ui,sans-serif;--font-head:var(--font-head-face),var(--font-inter),system-ui,sans-serif;--font-code:var(--font-mono),ui-monospace,"Cascadia Mono",Consolas,monospace;--radius:6px;--orange:#c16b3c;--steel:var(--orange);--brand:#1c3028;--on-brand:#ffffff;--marker:#f2ded0;--on-marker:#1c3028;--grad:var(--brand);--grad-viz:#2e4a3e;--grad-lab:#a1532a;--brand-ink:#8e4620;--lift:0 6px 18px rgb(28 48 40/0.12)}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){color-scheme:dark;--bg:#13211b;--surface:#1c3028;--surface-2:#25392f;--border:#3a5246;--text:#ede9df;--text-2:#c4bcaa;--accent:#eba982;--accent-ink:#13211b;--focus:#eba982;--viz-current-bg:#3d3200;--viz-current-fg:#fcd34d;--viz-current-edge:#fbbf24;--viz-next-bg:#172554;--viz-next-fg:#93c5fd;--viz-changed-bg:#14532d;--viz-changed-fg:#bbf7d0;--viz-new-bg:#0c4a6e;--viz-new-fg:#bae6fd;--viz-output-bg:#312e81;--viz-output-fg:#c7d2fe;--viz-error-bg:#450a0a;--viz-error-fg:#fecaca;--viz-pointer:#a78bfa;--viz-return-bg:#164e63;--viz-return-fg:#a5f3fc;--code-keyword:#d8b4fe;--code-string:#86efac;--code-number:#fbbf24;--code-comment:#a3a39a;--code-function:#93c5fd}}:root[data-theme=dark]{color-scheme:dark;--bg:#13211b;--surface:#1c3028;--surface-2:#25392f;--border:#3a5246;--text:#ede9df;--text-2:#c4bcaa;--accent:#eba982;--accent-ink:#13211b;--focus:#eba982;--viz-current-bg:#3d3200;--viz-current-fg:#fcd34d;--viz-current-edge:#fbbf24;--viz-next-bg:#172554;--viz-next-fg:#93c5fd;--viz-changed-bg:#14532d;--viz-changed-fg:#bbf7d0;--viz-new-bg:#0c4a6e;--viz-new-fg:#bae6fd;--viz-output-bg:#312e81;--viz-output-fg:#c7d2fe;--viz-error-bg:#450a0a;--viz-error-fg:#fecaca;--viz-pointer:#a78bfa;--viz-return-bg:#164e63;--viz-return-fg:#a5f3fc;--code-keyword:#d8b4fe;--code-string:#86efac;--code-number:#fbbf24;--code-comment:#a3a39a;--code-function:#93c5fd}*,:after,:before{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-padding-top:72px}body{margin:0;font-feature-settings:none;font-variant-ligatures:none;background:var(--bg);color:var(--text);font-family:var(--font-ui);font-size:16px;line-height:1.6}a{color:var(--accent)}:focus-visible{outline:2px solid var(--focus);outline-offset:2px}code,kbd,pre{font-family:var(--font-code);font-feature-settings:none;font-variant-ligatures:none}h1,h2,h3{font-family:var(--font-head);letter-spacing:-.01em}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.container{width:100%;max-width:1200px;margin:0 auto;padding:0 16px}.site-header{border-bottom:1px solid var(--border);background:var(--bg);position:-webkit-sticky;position:sticky;top:0;z-index:10}.site-header .container{display:flex;align-items:center;gap:16px;min-height:56px}.logo{font-size:1.15rem;letter-spacing:-.01em;color:var(--text);text-decoration:none;font-family:var(--font-head);padding:6px 0}.logo:before{content:"";display:inline-block;width:32px;height:30px;margin-right:8px;background:url(/stepvioz-logo.png) 50%/contain no-repeat;vertical-align:-8px}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .logo:before{width:36px;height:34px;border-radius:8px;background-color:#f8f6f0;background-size:82%;vertical-align:-10px}}:root[data-theme=dark] .logo:before{width:36px;height:34px;border-radius:8px;background-color:#f8f6f0;background-size:82%;vertical-align:-10px}.nav{display:flex;margin-right:auto}.header-button,.nav-button{color:var(--text);text-decoration:none;padding:8px 12px;border-radius:var(--radius);border:1px solid transparent;min-height:44px;display:inline-flex;align-items:center;font-weight:500;transition:background .15s,border-color .15s,color .15s}.header-button:hover,.nav-button:hover{background:var(--surface-2)}.nav-button.active{background:var(--marker);color:var(--on-marker)}@media (max-width:480px){.nav{gap:2px}.nav-button{padding:8px 11px}}.header-button{border:1px solid var(--border);background:transparent}.button,.header-button{font:inherit;cursor:pointer}.button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:8px 18px;border-radius:var(--radius);border:1px solid var(--border);background:var(--surface);color:var(--text);font-weight:600;text-decoration:none;transition:background .15s,border-color .15s,transform .15s,box-shadow .15s}.button:hover{background:var(--surface-2);border-color:var(--accent)}.button:active{transform:translateY(0);box-shadow:none}.button.ghost{background:transparent;color:var(--text-2)}.button.ghost:hover{color:var(--text)}@media (prefers-reduced-motion:reduce){.button,.button:hover,.problem-row:hover,a.card:hover{transition:none;transform:none}}.button.primary{background:var(--brand);border-color:var(--brand);color:var(--on-brand)}.button.primary.teal,.button.primary.warm{color:#fff}.button.primary.teal{background:var(--grad-viz)}.button.primary:hover{background:color-mix(in srgb,var(--brand) 86%,var(--bg));border-color:var(--brand)}.button.primary.teal:hover{background:color-mix(in srgb,var(--grad-viz) 88%,#000);border-color:var(--grad-viz)}.button.primary.warm:hover{background:color-mix(in srgb,var(--grad-lab) 88%,#000);border-color:var(--grad-lab)}.button.primary.teal,.button.primary.warm{border-color:transparent}.button:disabled{opacity:.6;cursor:progress}.button.small{min-height:36px;padding:4px 12px;font-size:.9em}.hero-actions{display:flex;flex-wrap:wrap;gap:12px}.section{padding-top:32px;padding-bottom:32px}.section h2{font-size:1.5rem;margin:0 0 16px}.card{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);padding:20px}.card h2,.card h3{margin:0 0 6px;font-size:1.1rem}.card p{margin:0;color:var(--text-2)}a.card{color:inherit;text-decoration:none;display:block}.problem-row,a.card{transition:border-color .15s,transform .15s,box-shadow .15s}.problem-row:hover,a.card:hover{border-color:var(--accent);transform:translateY(-2px);box-shadow:0 6px 18px rgb(0 0 0/.14)}.badge{display:inline-block;font-size:max(.8em,12px);padding:2px 8px;border-radius:999px;border:1px solid var(--border);color:var(--text-2);margin-bottom:8px}.badge.live{border-color:var(--viz-changed-fg);color:var(--viz-changed-fg)}.demo{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);overflow:hidden}.demo-body{display:grid;grid-template-columns:1.2fr 1fr}.demo-side{border-left:1px solid var(--border);padding:12px;display:flex;flex-direction:column;gap:12px;font-size:.9em}.demo-footer{display:flex;gap:12px;align-items:center;justify-content:space-between;flex-wrap:wrap}.demo-explain,.demo-footer{border-top:1px solid var(--border);padding:10px 12px}.demo-explain{min-height:4.5em;font-size:.95em}.code-view{margin:0;padding:8px 0;font-size:14px;line-height:1.6;overflow-x:auto;counter-reset:line}.code-view .code-line{display:grid;grid-template-columns:2.5em 1.5em 1fr;white-space:pre;padding-right:12px}.code-view .code-line .ln{color:var(--text-2);text-align:right}.code-view .code-line .ln,.code-view .code-line .mark{-webkit-user-select:none;-moz-user-select:none;user-select:none}.code-view .code-line .mark{text-align:center}.code-line.is-current{background:var(--viz-current-bg);box-shadow:inset 3px 0 var(--viz-current-edge)}.code-line.is-current .mark{color:var(--viz-current-fg)}.code-line.is-next{background:var(--viz-next-bg);outline:1px dashed var(--viz-next-fg);outline-offset:-1px}.code-line.is-next .mark{color:var(--viz-next-fg)}.code-block{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:12px 16px;overflow-x:auto;font-size:14px;line-height:1.6;margin:0}.code-block:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.viz{display:grid;grid-template-columns:minmax(0,11fr) minmax(0,10fr);grid-gap:16px;gap:16px;height:100%;min-height:0}.viz-left,.viz-right{display:flex;flex-direction:column;gap:12px;min-width:0;min-height:0}.viz>div>*{flex:0 0 auto}.viz .editor-panel{flex:1 1 auto;min-height:140px;display:flex;flex-direction:column;overflow:hidden}.viz .editor-panel>*{flex:1 1 auto;min-height:0}.viz .editor-panel .cm-editor{height:100%;max-height:none}.viz .output-panel{flex:0 1 28%;min-height:96px;display:flex;flex-direction:column}.viz .output-panel .console{flex:1 1 auto;max-height:none}.viz .explain-panel{max-height:42%;overflow:auto}.viz .memory-panel{flex:1 1 auto;min-height:0;overflow:auto}.viz-page{display:flex;flex-direction:column;gap:12px;height:calc(100dvh - 58px);padding-block:16px}.viz-page .viz{flex:1 1 auto}.viz-lead{margin:0;color:var(--text-2);font-size:.95rem}.viz-loading{flex:1 1 auto;min-height:90vh;color:var(--text-2)}.viz-screen{position:fixed;inset:0;z-index:100;display:flex;flex-direction:column;gap:12px;padding:12px 20px 16px;background:var(--bg)}.viz-screen[hidden]{display:none}.viz-screen-bar{display:flex;align-items:center;gap:16px;min-width:0}.viz-screen-title{margin:0;font-size:1.05rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.viz-screen-body{flex:1 1 auto;min-height:0}body.viz-screen-open{overflow:hidden}.toolbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.controls select,.toolbar select{min-height:36px;border-radius:var(--radius);border:1px solid var(--border);background:var(--bg);color:var(--text);font:inherit;padding:4px 8px}.status-line{font-size:.9em;color:var(--text-2)}.panel{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);min-width:0}.panel>.panel-title,.panel>h2{margin:0;padding:8px 12px;font-family:var(--font-ui);font-size:.95rem;font-weight:700;letter-spacing:0;color:var(--text);border-bottom:1px solid var(--border);background:var(--surface);border-radius:var(--radius) var(--radius) 0 0}.panel-body{padding:10px 12px}.editor-panel .cm-editor{font-size:14px;max-height:420px;border-radius:0 0 var(--radius) var(--radius)}.editor-panel .cm-editor.cm-focused{outline:none}.cm-viz-current{background:var(--viz-current-bg)!important;box-shadow:inset 3px 0 var(--viz-current-edge)}.cm-viz-next{background:var(--viz-next-bg);outline:1px dashed var(--viz-next-fg);outline-offset:-1px}.cm-viz-error{background:var(--viz-error-bg)!important;-webkit-text-decoration:wavy underline var(--viz-error-fg);text-decoration:wavy underline var(--viz-error-fg)}.cm-viz-gutter .cm-gutterElement{width:1.4em;text-align:center}.viz-mark-current{color:var(--viz-current-fg)}.viz-mark-next{color:var(--viz-next-fg)}.viz-mark-error{color:var(--viz-error-fg)}.stdin{width:100%;min-height:2.6em;font-family:var(--font-code);font-size:14px;background:var(--bg);color:var(--text);padding:6px 8px;resize:vertical}.controls,.stdin{border:1px solid var(--border);border-radius:var(--radius)}.controls{display:flex;flex-wrap:wrap;align-items:center;gap:6px;padding:8px;background:var(--surface)}.controls button{min-width:44px;min-height:40px;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);color:var(--text);font-size:16px;cursor:pointer}.controls button:disabled{opacity:.45;cursor:default}.controls input[type=range]{flex:1 1 160px;min-width:120px;height:32px;margin:0;accent-color:var(--accent)}.step-label{font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-size:.9em;min-width:7em;text-align:center}.shortcuts{font-size:12px;color:var(--text-2)}.controls .shortcuts{flex-basis:100%}.controls button.play{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.empty{color:var(--text-2);font-size:.95em}.memory{position:relative;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-gap:32px;gap:32px;padding:12px}.memory-arrows{position:absolute;inset:0;pointer-events:none;overflow:visible}.memory h3{margin:0 0 8px;font-family:var(--font-ui);font-size:.9rem;font-weight:600;letter-spacing:0;color:var(--text-2)}.frame{border:1px solid var(--border);border-radius:var(--radius);margin-bottom:8px;background:var(--surface)}.frame.active{border-color:var(--viz-current-edge);box-shadow:inset 3px 0 var(--viz-current-edge)}.frame-name{font-weight:600;padding:4px 8px;border-bottom:1px solid var(--border)}.frame-name,.vars{font-family:var(--font-code);font-size:13px}.vars{width:100%;border-collapse:collapse}.vars td,.vars th{padding:3px 8px;text-align:left;vertical-align:middle}.vars th{font-weight:500;width:40%;color:var(--text-2)}.vars tr.changed td,.vars tr.changed th{background:var(--viz-changed-bg);color:var(--viz-changed-fg)}.vars tr.created td,.vars tr.created th{background:var(--viz-new-bg);color:var(--viz-new-fg)}.cell.changed .addr,tr.changed .addr,tr.created .addr{color:inherit}.vars tr.ret td,.vars tr.ret th{background:var(--viz-return-bg);color:var(--viz-return-fg)}.change-dot{font-size:.75em;margin-left:4px}.old-value{text-decoration:line-through;opacity:.7;margin-right:6px}.tag{font-family:var(--font-ui);font-size:max(12px,.75em);margin-left:6px;padding:0 6px;border-radius:999px;border:1px solid}.ptr{display:inline-block;width:10px;height:10px;border-radius:50%;background:var(--viz-pointer);vertical-align:middle}.heap-object{border:1px solid var(--border);border-radius:var(--radius);margin-bottom:10px;background:var(--surface);font-family:var(--font-code);font-size:13px}.heap-object.changed{border-color:var(--viz-changed-fg);box-shadow:0 0 0 2px var(--viz-changed-bg)}.heap-type{font-size:12px;padding:2px 8px;color:var(--text-2);border-bottom:1px solid var(--border)}.cells{display:flex;flex-wrap:wrap;padding:6px;gap:2px}.cell{border:1px solid var(--border);background:var(--bg);min-width:2.4em;text-align:center;padding:2px 6px}.cell .idx{display:block;font-size:12px;color:var(--text-2)}.cell.changed{background:var(--viz-changed-bg);border-color:var(--viz-changed-fg)}.web-preview{margin:20px 0;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);overflow:hidden}.web-preview-bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:6px;padding:6px 8px;border-bottom:1px solid var(--border)}.web-preview-tabs{display:flex;gap:4px}.web-preview-tabs button{min-height:32px;padding:4px 12px;border:1px solid var(--border);border-radius:6px;background:var(--bg);color:var(--text);font:inherit;cursor:pointer}.web-preview-tabs button.active{border-color:var(--brand-ink);box-shadow:inset 0 -3px var(--brand-ink);font-weight:600}.web-preview-actions{display:flex;gap:6px}.web-preview-editor .cm-editor{max-height:260px}.web-preview-out iframe{display:block;width:100%;border:0;border-top:1px solid var(--border);background:#fff}.web-preview-console{min-height:2.5em;max-height:140px;overflow:auto;padding:6px 10px;border-top:1px solid var(--border);font-family:var(--font-code);font-size:13px;white-space:pre-wrap}.web-preview-console .error{color:var(--viz-error-fg)}.cpu{container-type:inline-size;padding:12px}.cpu-grid{display:grid;grid-template-columns:minmax(0,1fr);grid-gap:16px;gap:16px}@container (min-width: 860px){.cpu-grid{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:24px}}.cpu h3{margin:0 0 8px;font-size:.8rem;text-transform:uppercase;letter-spacing:.04em;color:var(--text-2)}.cpu h3:not(:first-child){margin-top:14px}.cpu-regs td,.cpu-regs th{white-space:nowrap}.cpu-regs thead th{width:auto;font-size:12px;font-family:var(--font-ui)}.cpu-regs tbody th{width:3em;font-weight:700;color:var(--text)}.cpu-bin,.cpu-halves,.cpu-seg-note,.cpu-signed{color:var(--text-2)}tr.changed .cpu-bin,tr.changed .cpu-halves,tr.changed .cpu-seg-note,tr.changed .cpu-signed{color:inherit}.cpu-seg-note{font-family:var(--font-ui);font-size:12px}.cpu-seg-note.warn{color:var(--viz-error-fg);font-weight:600}.cpu-flags{display:flex;flex-wrap:wrap;gap:4px;margin:0;padding:0;list-style:none;font-family:var(--font-code);font-size:13px}.cpu-flags li{display:flex;flex-direction:column;align-items:center;min-width:4.6em;padding:4px 6px;border:1px solid var(--border);border-radius:6px;background:var(--surface)}.cpu-flags li.on strong{color:var(--code-keyword)}.cpu-flags li.changed{background:var(--viz-changed-bg);border-color:var(--viz-changed-fg);color:var(--viz-changed-fg)}.cpu-flags li.changed strong{color:inherit}.cpu-flags abbr{text-decoration:none;font-weight:700}.cpu-flag-name{font-family:var(--font-ui);font-size:12px;color:var(--text-2)}.cpu-flags li.changed .cpu-flag-name{color:inherit}.cpu-char{display:block;font-size:12px;color:var(--text-2)}.cell.changed .cpu-char{color:inherit}.cpu-segs th{width:3em;font-weight:700;color:var(--text)}.cpu-stack th{width:55%;white-space:nowrap}.cpu-regs td.cpu-note{white-space:normal;font-family:var(--font-ui);font-size:12px}@container (max-width: 520px){.cpu-bin{display:none}}@container (max-width: 340px){.cpu-halves{display:none}}.addr{display:block;font-family:var(--font-code);font-size:12px;font-weight:400;color:var(--text-2)}.heap-type .addr{display:inline;margin-left:8px}.ptr-value .addr{display:inline;margin-left:6px}.null,.uninit{color:var(--text-2);font-family:var(--font-code)}.uninit{font-weight:700;cursor:help}.dangling{color:var(--viz-error-fg);font-family:var(--font-code);font-size:12px}.agg{display:inline-block;max-width:100%}.agg .cells{padding:2px 0}.agg .cell .cells{padding:0}.agg-text{display:block;font-family:var(--font-code);font-size:12px;color:var(--code-string)}.vars.fields{margin:0}.vars.fields th{font-weight:400;color:var(--text-2)}.heap-label{font-size:12px;padding:2px 8px;color:var(--text-2)}.heap-label.warn{color:var(--viz-error-fg);font-weight:600}.heap-object.leaked{border-style:dashed}.console{font-family:var(--font-code);font-size:13px;margin:0;padding:8px 12px;max-height:220px;overflow:auto;white-space:pre-wrap}.out-chunk{display:flex;gap:8px;align-items:flex-start}.out-chunk.new{background:var(--viz-output-bg);color:var(--viz-output-fg)}.out-new{text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:3px}.out-step{font-family:var(--font-ui);font-size:11px;border:1px solid var(--border);border-radius:999px;padding:0 6px;background:var(--bg);color:var(--text-2);cursor:pointer;min-height:0}.calc{font-family:var(--font-code);font-size:14px;background:var(--surface);border-radius:var(--radius);padding:6px 10px;margin-bottom:8px;overflow-x:auto}.explain-text{margin:0}.error-box{border:1px solid var(--viz-error-fg);background:var(--viz-error-bg);color:var(--viz-error-fg);border-radius:var(--radius);padding:8px 12px;margin-top:8px}.error-box strong{display:block}.notice{background:var(--surface);border:1px dashed var(--border);border-radius:var(--radius);padding:8px 12px;font-size:.9em}.lesson-header{padding:24px 0 8px}.lesson-header h1{margin:4px 0;font-size:clamp(1.6rem,3vw,2.1rem)}.breadcrumb{font-size:.9em;color:var(--text-2)}.breadcrumb,.breadcrumb ol{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px}.breadcrumb ol{margin:0;padding:0;list-style:none}.breadcrumb li+li:before{content:"›";margin-right:12px}.breadcrumb li>a:not(.button){display:inline-flex;align-items:center;min-height:24px}.lesson-body{min-width:0}.lesson-body.reading{padding-bottom:48px}.lesson-page>*{max-width:48rem;margin-inline:auto}.lesson-body h2{margin-top:1.6em}.lesson-body pre{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:12px 16px;overflow-x:auto;font-size:14px}.lesson-body :not(pre)>code{background:var(--surface-2);padding:0 4px;border-radius:4px;font-size:.92em}.example{margin:16px 0}.example-bar{display:flex;justify-content:space-between;align-items:center;margin-top:6px;gap:8px}.note{border-left:4px solid var(--viz-current-edge);background:var(--surface);padding:8px 16px;border-radius:0 var(--radius) var(--radius) 0;margin:16px 0}.quiz{border:1px solid var(--border);border-radius:var(--radius);padding:16px;margin:24px 0}.quiz h2{margin:0 0 8px;font-size:1.2rem}.quiz fieldset{border:none;padding:0;margin:0 0 16px}.quiz legend{font-weight:600;margin-bottom:6px}.quiz label{display:flex;gap:8px;align-items:center;padding:6px 8px;border-radius:var(--radius);cursor:pointer;min-height:44px}.quiz label:hover{background:var(--surface)}.quiz input[type=radio]{width:24px;height:24px;margin:0;flex:none;accent-color:var(--accent)}.quiz-feedback.right{color:var(--viz-changed-fg)}.quiz-feedback.wrong{color:var(--viz-error-fg)}.lesson-nav{display:flex;justify-content:space-between;gap:12px;margin-top:32px;flex-wrap:wrap}.lesson-list{list-style:none;padding:0;display:grid;grid-gap:12px;gap:12px}.site-footer{border-top:1px solid var(--border);margin-top:48px;padding:24px 0;color:var(--text-2);font-size:.9em}@media (max-width:1023px){.viz{grid-template-columns:minmax(0,1fr)}.viz,.viz-page{height:auto}.viz .editor-panel{min-height:240px}.viz .output-panel .console{max-height:200px}.viz .explain-panel{max-height:none}.viz-screen{padding:10px 12px}.viz-screen-body{overflow:auto}}@media (max-width:767px){.demo-body{grid-template-columns:minmax(0,1fr)}.demo-side{border-left:none;border-top:1px solid var(--border)}.memory{grid-template-columns:minmax(0,1fr);gap:16px}.site-header .container{flex-wrap:wrap;row-gap:0}.logo{margin-right:auto}.nav{order:3;flex-basis:100%;margin-right:0;justify-content:space-between;border-top:1px solid var(--border)}.nav a{padding:8px}}@media (max-width:480px){.site-header .container{gap:4px}.nav{gap:0}.nav a{padding:8px 6px}.header-button{padding:6px 10px}.logo{font-size:.9em}}@media (prefers-reduced-motion:no-preference){.out-chunk.new,.vars tr.changed td,.vars tr.changed th{transition:background-color .3s ease}}.filters{display:flex;flex-wrap:wrap;gap:12px;margin:16px 0}.filters label{display:flex;flex-direction:column;gap:4px;min-width:0;max-width:100%;font-size:.9em;color:var(--text-2)}.filters select{max-width:100%;min-height:44px;border-radius:var(--radius);border:1px solid var(--border);background:var(--bg);color:var(--text);font:inherit;padding:4px 8px}.problem-list{list-style:none;padding:0;margin:0;display:grid;grid-gap:8px;gap:8px}.problem-row{display:flex;align-items:center;flex-wrap:wrap;gap:8px 12px;padding:12px 16px;min-height:56px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text);text-decoration:none}.problem-row .badge{margin:0}.problem-title{font-weight:600;margin-right:auto}.problem-check{width:1.5em;text-align:center;color:var(--viz-changed-fg);font-weight:700}.badge.difficulty-easy{border-color:var(--viz-changed-fg);color:var(--viz-changed-fg)}.badge.difficulty-medium{border-color:var(--viz-current-edge);color:var(--viz-current-fg)}.badge.difficulty-hard{border-color:var(--viz-error-fg);color:var(--viz-error-fg)}.io-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:8px;gap:8px;margin:8px 0}.io-grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.io-grid pre{margin:0;padding:8px 10px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);font-size:13px;overflow-x:auto;min-height:2.4em}.io-label{font-size:.8em;color:var(--text-2);margin-bottom:2px}.hint{border:1px solid var(--border);border-radius:var(--radius);padding:8px 12px;margin-bottom:8px}.hint summary{cursor:pointer;min-height:32px;font-weight:600}.practice-workspace{display:flex;flex-direction:column;gap:12px}.panel>h2.results-summary{text-transform:none;letter-spacing:0;font-size:1rem;color:var(--text)}.panel>h2.results-summary.all-passed{color:var(--viz-changed-fg)}.results{list-style:none;margin:0;padding:0}.result{padding:10px 12px;border-top:1px solid var(--border)}.result-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.result .time{margin-left:auto;font-size:.8em;color:var(--text-2);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.result .verdict{font-size:.85em;padding:0 8px;border-radius:999px;border:1px solid}.verdict-passed .result-mark,.verdict-passed .verdict{color:var(--viz-changed-fg)}.verdict-error .result-mark,.verdict-error .verdict,.verdict-wrong .result-mark,.verdict-wrong .verdict{color:var(--viz-error-fg)}.verdict-limit .result-mark,.verdict-limit .verdict{color:var(--viz-current-fg)}.result-help{margin:6px 0;font-size:.9em}@media (max-width:767px){.io-grid,.io-grid.two{grid-template-columns:minmax(0,1fr)}}.dashboard{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:16px;gap:16px}.dashboard .card h2{font-size:1.1rem;margin:0 0 8px}.dashboard .card p{margin:8px 0 0}.dashboard .status-line{grid-column:1/-1}.continue-card{border-color:var(--accent)}.meter{height:10px;background:var(--surface-2);overflow:hidden}.meter,.meter span{border-radius:999px}.meter span{display:block;height:100%;background:var(--viz-changed-fg)}.week{display:flex;gap:6px}.day{width:22px;height:22px;border-radius:6px;border:1px solid var(--border);background:var(--bg)}.day.on{background:var(--viz-changed-fg);border-color:var(--viz-changed-fg)}.lesson-card{display:flex!important;gap:12px;align-items:flex-start}.lesson-card .problem-check{flex:none;font-weight:700;color:var(--text-2);margin-top:2px}.button.done{border-color:var(--viz-changed-fg);color:var(--viz-changed-fg)}.button.danger{border-color:var(--viz-error-fg);color:var(--viz-error-fg)}.button.danger:hover{background:var(--viz-error-bg)}.your-data{grid-column:1/-1}.error-page .buttons,.your-data .buttons{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.your-data .status-line:empty{display:none}@media (max-width:767px){.dashboard{grid-template-columns:minmax(0,1fr)}}.error-page{max-width:640px;padding-block:48px}.error-page .error-code{margin:0;font-family:var(--font-code);color:var(--text-2)}.error-page details{margin-top:16px;color:var(--text-2)}.lesson-body table{border-collapse:collapse;margin:12px 0;font-size:.95em;display:block;overflow-x:auto}.lesson-body table:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.lesson-body td,.lesson-body th{border:1px solid var(--border);padding:6px 12px;text-align:left}.lesson-body th{background:var(--surface)}.lang-tabs{display:inline-flex;border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;margin-bottom:12px}.lang-tabs a,.lang-tabs button{display:inline-flex;align-items:center;justify-content:center;text-decoration:none;min-height:36px;min-width:72px;padding:6px 16px;border:0;background:var(--surface);color:var(--text);font:inherit;cursor:pointer}.lang-tabs a+a,.lang-tabs button+button{border-left:1px solid var(--border)}.lang-tabs a.active,.lang-tabs button.active{background:var(--accent);color:var(--accent-ink);font-weight:600}.memory.no-heap{grid-template-columns:minmax(0,1fr);row-gap:8px}.memory.no-heap .heap-column .empty{margin:0;font-size:13px}.ptr-value{display:inline-flex;flex-direction:column;align-items:flex-start;gap:2px}.ptr-value .addr{display:block;margin-left:0}.sql-view h2{margin:0;padding:8px 12px;font-size:.85rem;text-transform:uppercase;letter-spacing:.04em;color:var(--text-2);border-bottom:1px solid var(--border);background:var(--surface)}.sql-view>section:first-child h2{border-radius:var(--radius) var(--radius) 0 0}.sql-view>section+section h2{border-top:1px solid var(--border)}.sql-view>section>.empty{margin:0;padding:10px 12px}.sql-table{margin:10px 12px}.sql-table figcaption{margin-bottom:4px;font-size:14px}.sql-table.new figcaption strong{color:var(--viz-new-fg)}.sql-table.result table{border-color:var(--viz-output-fg)}.sql-scroll{overflow-x:auto}.sql-table table{border-collapse:collapse;font-family:var(--font-code);font-size:13px;border:1px solid var(--border)}.sql-table td,.sql-table th{padding:3px 10px;text-align:left;border-bottom:1px solid var(--border);white-space:nowrap}.sql-table th{background:var(--surface);font-weight:600;vertical-align:bottom}.sql-table td.num{text-align:right}.sql-type{display:block;font-weight:400;color:var(--text-2)}.sql-key,.sql-type{font-size:11px}.sql-table tr.added td{background:var(--viz-new-bg);color:var(--viz-new-fg)}.sql-table td.changed{background:var(--viz-changed-bg);color:var(--viz-changed-fg);font-weight:600}.sql-table tr.removed td{background:var(--viz-error-bg);color:var(--viz-error-fg);text-decoration:line-through}.sql-table td.empty{color:var(--text-2);font-style:italic}:root{--sim-1:#bfdbfe;--sim-2:#bbf7d0;--sim-3:#fde68a;--sim-4:#fbcfe8;--sim-5:#ddd6fe;--sim-6:#a5f3fc;--sim-7:#fed7aa;--sim-8:#d9f99d;--sim-ink-1:#1d4ed8;--sim-ink-2:#166534;--sim-ink-3:#92400e;--sim-ink-4:#9d174d;--sim-ink-5:#6d28d9;--sim-ink-6:#0b6178}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--sim-1:#1e3a8a;--sim-2:#14532d;--sim-3:#78350f;--sim-4:#831843;--sim-5:#4c1d95;--sim-6:#164e63;--sim-7:#7c2d12;--sim-8:#365314;--sim-ink-1:#60a5fa;--sim-ink-2:#4ade80;--sim-ink-3:#fbbf24;--sim-ink-4:#f472b6;--sim-ink-5:#a78bfa;--sim-ink-6:#22d3ee}}:root[data-theme=dark]{--sim-1:#1e3a8a;--sim-2:#14532d;--sim-3:#78350f;--sim-4:#831843;--sim-5:#4c1d95;--sim-6:#164e63;--sim-7:#7c2d12;--sim-8:#365314;--sim-ink-1:#60a5fa;--sim-ink-2:#4ade80;--sim-ink-3:#fbbf24;--sim-ink-4:#f472b6;--sim-ink-5:#a78bfa;--sim-ink-6:#22d3ee}.sim{margin:1.5rem 0;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg)}.sim>h3{margin:0;padding:8px 12px;font-size:.85rem;text-transform:uppercase;letter-spacing:.04em;color:var(--text-2);border-bottom:1px solid var(--border);background:var(--surface);border-radius:var(--radius) var(--radius) 0 0}.sim-body{display:grid;grid-gap:12px;gap:12px;padding:12px;min-width:0}.sim-inputs{display:flex;flex-wrap:wrap;gap:10px 16px;align-items:flex-end}.sim-inputs label{display:grid;grid-gap:4px;gap:4px;font-size:.9em;color:var(--text-2)}.sim-inputs input,.sim-inputs select,.sim-inputs textarea{font:inherit;font-family:var(--font-code);font-size:14px;color:var(--text);background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:6px 8px;min-height:40px}.sim-inputs select{font-family:var(--font-ui)}.sim-inputs input[type=number]{width:6em}.sim-inputs textarea{min-width:min(100%,16em);resize:vertical}.sim-inputs .wide{flex:1 1 100%}.sim-inputs .wide input{width:100%}.sim-error{background:var(--viz-error-bg);color:var(--viz-error-fg)}.sim-error,.sim-say{padding:8px 10px;border-radius:6px}.sim-say{margin:0;background:var(--viz-current-bg);color:var(--text);border-left:3px solid var(--viz-current-edge)}.sim-scroll{overflow-x:auto}.lesson-body .sim table,.sim table{display:table;overflow:visible;border-collapse:collapse;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-size:14px}.sim td,.sim th{padding:4px 10px;border:1px solid var(--border);text-align:center;white-space:nowrap}.sim tbody th,.sim tfoot td,.sim tfoot th,.sim thead th{background:var(--surface);font-weight:600}.sim .now{outline:2px solid var(--viz-current-edge);outline-offset:-2px}.sim .future{color:var(--text-2)}.sim .fault{background:var(--viz-error-bg);color:var(--viz-error-fg);font-weight:600}.sim .hit{background:var(--viz-changed-bg);color:var(--viz-changed-fg);font-weight:600}.sim td.future,.sim th.future{background:var(--surface);font-weight:400}.gantt-block.future{background:var(--surface)!important;color:var(--text-2);font-weight:400}.sim .yes{color:var(--viz-changed-fg);background:var(--viz-changed-bg)}.sim .no{color:var(--viz-error-fg);background:var(--viz-error-bg)}.sim .verdict{font-weight:600}.gantt{display:flex;min-width:100%;border:1px solid var(--border);border-radius:6px;overflow:hidden}.gantt-block{position:relative;min-width:26px;padding:10px 2px;text-align:center;font-weight:600;font-size:14px;color:var(--text);border-right:1px solid var(--border)}.gantt-block:last-child{border-right:0}.gantt-block.idle{background:repeating-linear-gradient(45deg,var(--surface),var(--surface) 4px,var(--surface-2) 4px,var(--surface-2) 8px);color:var(--text-2);font-weight:400}.gantt-times{position:relative;height:20px;font-size:12px;color:var(--text-2);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.gantt-times span{position:absolute;transform:translateX(-50%)}.gantt-times span:first-child{transform:none}.gantt-times span:last-child{transform:translateX(-100%)}.sim svg{display:block;width:100%;height:auto;max-width:640px}.sim svg text{fill:var(--text-2);font-size:12px;font-family:var(--font-ui)}.sim svg .axis{stroke:var(--border)}.sim svg .path{fill:none;stroke:var(--accent);stroke-width:2}.sim .chips{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:0;padding:0;list-style:none}.sim .chip{padding:2px 10px;border-radius:999px;border:1px solid var(--border);font-weight:600;font-size:14px}.sim details summary{cursor:pointer;color:var(--text-2)}.sim .buttons{display:flex;flex-wrap:wrap;gap:8px}.thread-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));grid-gap:10px;gap:10px}.thread{border:1px solid var(--border);border-radius:6px;padding:8px 10px}.thread ol{margin:6px 0;padding-left:1.6em;font-family:var(--font-code);font-size:13px}.thread li.next{background:var(--viz-current-bg);border-radius:4px}.thread li.done{color:var(--text-2)}.footer-row{display:flex;flex-wrap:wrap;gap:8px 24px;justify-content:space-between}.footer-links{display:flex;gap:16px;flex-wrap:wrap}.prose{max-width:720px;line-height:1.6}.prose h2{margin-top:1.8em;font-size:1.25rem}.sim svg text.halo{paint-order:stroke;stroke:var(--bg);stroke-width:4px;stroke-linejoin:round}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--brand-ink:#eba982;--brand:#ede9df;--on-brand:#1c3028;--marker:#5a3523;--on-marker:#ede9df;--lift:0 8px 22px rgb(0 0 0/0.4)}}:root[data-theme=dark]{--brand-ink:#eba982;--brand:#ede9df;--on-brand:#1c3028;--marker:#5a3523;--on-marker:#ede9df;--lift:0 8px 22px rgb(0 0 0/0.4)}.kicker{margin:0;font-size:.95rem;font-weight:600}.kicker,.lead{color:var(--text-2)}.lead{font-size:1.15rem;max-width:62ch}.grad-text{color:var(--orange)}.stretched:after{content:"";position:absolute;inset:0;border-radius:inherit}.home-hero{text-align:center;padding-top:64px;padding-bottom:28px}.home-hero h1{font-size:clamp(2.2rem,5.2vw,3.8rem);line-height:1.08;letter-spacing:-.02em;margin:12px 0 18px}.home-hero .lead{margin:0 auto}.paths{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:24px;gap:24px;padding-bottom:8px}.path-card{position:relative;display:flex;flex-direction:column;gap:12px;padding:32px 28px 28px;border:1px solid var(--border);border-radius:22px;overflow:hidden;transition:transform .2s,box-shadow .2s,border-color .2s}.path-card,.path-card.visualize{background:var(--surface)}.path-card:before{content:"";position:absolute;inset:0 0 auto;height:5px;background:var(--grad)}.path-card.visualize:before{background:var(--grad-viz)}.path-card:focus-within,.path-card:hover{transform:translateY(-4px);box-shadow:var(--lift);border-color:var(--brand-ink)}.path-icon{display:grid;place-items:center;width:56px;height:56px;border-radius:16px;color:var(--on-brand);background:var(--grad)}.path-card.visualize .path-icon{background:var(--grad-viz)}.path-kicker{margin:4px 0 0;font-size:.8rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--text-2)}.path-card h3{margin:0;font-size:1.7rem;line-height:1.2}.path-card p{margin:0;color:var(--text-2)}.path-chips{list-style:none;display:flex;flex-wrap:wrap;gap:6px;margin:4px 0 10px;padding:0}.path-chips li{padding:2px 10px;border:1px solid var(--border);border-radius:999px;background:var(--bg);font-size:.85rem}.popular-links{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));grid-gap:24px;gap:24px}.popular-links ul{list-style:none;margin:0;padding:0}.popular-links a{display:inline-block;padding:6px 0}.search-phrase-links a{display:inline-block;padding:2px 0}.path-card .button{margin-top:auto;align-self:flex-start;min-height:48px;padding-inline:22px;font-size:1.05rem}.stats{list-style:none;display:flex;flex-wrap:wrap;justify-content:center;gap:10px 36px;margin:28px 0 0;padding:16px 24px;border:1px solid var(--border);border-radius:999px;background:var(--surface);color:var(--text-2)}.stats strong{color:var(--brand-ink);font-size:1.35rem;margin-right:4px}.demo-section{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-gap:40px;gap:40px;align-items:center;padding-top:56px}.demo-section h2{font-size:2rem;margin:8px 0 12px}.how{counter-reset:how;list-style:none;display:grid;grid-gap:14px;gap:14px;margin:20px 0 0;padding:0}.how li{counter-increment:how;position:relative;padding-left:46px;color:var(--text-2)}.how li strong{display:block;color:var(--text)}.how li:before{content:counter(how);position:absolute;left:0;top:2px;display:grid;place-items:center;width:32px;height:32px;background:var(--grad);font-weight:700;font-size:.9rem}.section-head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:12px;margin-bottom:20px}.section-head h2{margin:4px 0 0;font-size:2rem}.cta-band{text-align:center;padding:44px 24px;border:1px solid var(--border);border-radius:24px;background:var(--surface)}.cta-band h2{margin:0 0 8px;font-size:2rem}.cta-band p{margin:0 0 20px;color:var(--text-2)}.cta-band .hero-actions{justify-content:center}.course-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(270px,1fr));grid-gap:16px;gap:16px}.course-grid.compact{grid-template-columns:repeat(auto-fill,minmax(210px,1fr))}.course-card{position:relative;display:flex;flex-direction:column;gap:8px;border:1px solid var(--border);background:var(--surface);color:var(--text);text-decoration:none;transition:transform .2s,box-shadow .2s,border-color .2s}a.course-card:focus-visible,a.course-card:hover{transform:translateY(-3px);box-shadow:var(--lift);border-color:var(--brand-ink)}.course-card.soon{border-style:dashed;background:transparent}.course-card h3{margin:6px 0 0;font-size:1.1rem;line-height:1.3}.course-summary{margin:0;color:var(--text-2);font-size:.93rem;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.course-meta{margin:auto 0 0;padding-top:4px;color:var(--text-2);font-size:.85rem;font-weight:500}.course-tile{display:grid;place-items:center;width:48px;height:48px;border-radius:13px;color:#fff;font-family:var(--font-code);font-size:.95rem;font-weight:800;box-shadow:inset 0 0 0 1px rgb(255 255 255/.15)}.course-card.soon .course-tile{width:40px;height:40px;font-size:.85rem}.hue-0{background:#1c3028}.hue-1{background:#a1532a}.hue-2{background:#2e4a3e}.hue-3{background:#8e4620}.hue-4{background:#3b5446}.hue-5{background:#9a4e26}.hue-6{background:#24392f}.hue-7{background:#4a6155}.page-hero{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-gap:24px;gap:24px;align-items:end;padding-bottom:8px}.page-hero h1{margin:6px 0 10px;font-size:clamp(2rem,4vw,2.8rem);letter-spacing:-.01em}.page-hero .lead{margin:0}.switch-card{max-width:320px;padding:18px 20px;border:1px dashed var(--border);border-radius:16px;background:var(--surface)}.switch-card p{margin:0 0 12px;color:var(--text-2)}.viz-topbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px 16px}body:has(.viz-page) .site-footer{display:none}.lang-tabs a.active,.lang-tabs button.active{background:var(--grad-viz);border-color:transparent;color:#fff}.viz .panel{border-radius:14px;box-shadow:0 1px 2px rgb(0 0 0/.06)}.viz .panel>h2{border-radius:14px 14px 0 0}.viz .explain-panel{border-color:var(--steel);box-shadow:inset 4px 0 0 var(--brand-ink)}.viz .explain-panel .explain-text{margin:0;font-size:1.05rem;line-height:1.55}.viz .controls,.viz .controls button{border-radius:var(--radius)}.viz .controls input[type=range]{flex-basis:90px;min-width:90px}.viz .controls .step-label{min-width:6.2em}.controls button.play{background:var(--grad);border-color:transparent;color:var(--on-brand)}.footer-links,.footer-row{align-items:center}.footer-brand p{margin:4px 0 0}.footer-brand .logo{display:inline-block}@media (max-width:860px){.demo-section,.page-hero,.paths{grid-template-columns:minmax(0,1fr)}.home-hero{padding-top:40px}.stats{border-radius:18px}.switch-card{max-width:none}}@media (prefers-reduced-motion:reduce){.course-card,.path-card,.path-card:hover,a.course-card:hover{transition:none;transform:none}}.viz-topbar-aside{display:flex;flex-wrap:wrap;gap:8px}.button.teal-outline{border-color:var(--steel)}.lab-picker{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));grid-gap:10px;gap:10px;margin:8px 0 20px}.lab-pick{display:flex;align-items:center;gap:12px;text-decoration:none;padding:10px 12px;border:1px solid var(--border);border-radius:14px;background:var(--surface);color:var(--text);font:inherit;text-align:left;cursor:pointer;transition:border-color .15s,transform .15s,box-shadow .15s}.lab-pick:hover{border-color:var(--brand-ink);transform:translateY(-2px)}.lab-pick.active{border-color:var(--brand-ink);box-shadow:inset 0 0 0 1px var(--brand-ink),var(--lift)}.lab-pick small{display:block;color:var(--text-2);font-size:.82rem}.lab-pick .course-tile{flex:none;width:42px;height:42px;font-size:.85rem}.lab-tool>h2{margin:0;padding:12px 16px;font-size:1.2rem;border-bottom:1px solid var(--border)}.lab-intro{margin:0;color:var(--text-2);max-width:80ch}.lab-form{display:flex;flex-wrap:wrap;align-items:flex-end;gap:8px 10px}.lab-form.column{flex-direction:column;align-items:stretch}.lab-form label,.lab-graph-inputs label,.lab-small{display:grid;grid-gap:4px;gap:4px;font-size:.9em;color:var(--text-2)}.lab-form input,.lab-form select,.lab-graph-inputs select,.lab-graph-inputs textarea,.lab-small input{min-height:36px;padding:4px 10px;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);color:var(--text);font:inherit}.lab-form input{width:9em}.lab-small{max-width:22em}.lab-small input{width:6em}.lab-check{display:flex!important;align-items:center;gap:8px}.lab-check input{width:24px;height:24px;min-height:0;margin:0}.lab-modes{display:inline-flex;flex-wrap:wrap;align-self:flex-start;justify-self:start;width:-moz-fit-content;width:fit-content;border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.lab-modes button{min-height:40px;padding:6px 16px;border:0;background:var(--bg);color:var(--text);font:inherit;cursor:pointer}.lab-modes button+button{border-left:1px solid var(--border)}.lab-modes button.active{background:var(--grad);color:var(--on-brand)}.lab-stage{overflow:auto;padding:6px 0;text-align:center}.sim .lab-stage svg{display:inline-block;width:auto;height:auto;max-width:none}.lab-empty,.lab-output{margin:0;color:var(--text-2)}.lab-output{font-family:var(--font-code);font-size:.95em}.lab-node circle{fill:var(--surface);stroke:var(--border);stroke-width:2;transition:fill .25s,stroke .25s}.lab-stage .lab-node text{fill:var(--text);font-family:var(--font-code);font-size:14px;font-weight:600}.lab-node.on-path circle{stroke:var(--brand-ink)}.lab-node.visited circle{fill:var(--viz-new-bg);stroke:var(--viz-new-fg)}.lab-node.visited text{fill:var(--viz-new-fg)}.lab-node.focus circle{fill:var(--viz-current-bg);stroke:var(--viz-current-edge);stroke-width:3}.lab-node.focus text{fill:var(--viz-current-fg)}.lab-node.added circle,.lab-node.found circle{fill:var(--viz-changed-bg);stroke:var(--viz-changed-fg);stroke-width:3}.lab-node.added text,.lab-node.found text{fill:var(--viz-changed-fg)}.lab-node.removing circle,.lab-node.unbalanced circle{fill:var(--viz-error-bg);stroke:var(--viz-error-fg);stroke-width:3}.lab-node.removing text,.lab-node.unbalanced text{fill:var(--viz-error-fg)}.lab-node.unbalanced circle{stroke-dasharray:5 3}.lab-stage .lab-balance,.lab-stage .lab-dist,.lab-stage .lab-weight{font-size:12px;font-family:var(--font-code);fill:var(--text-2)}.lab-stage .lab-node .lab-balance{font-size:12px;font-weight:500;fill:var(--text-2)}.lab-stage .lab-dist{fill:var(--brand-ink);font-weight:700}.lab-edge line,line.lab-edge{stroke:var(--border);stroke-width:2}.lab-edge.tree line,line.lab-edge.on-path{stroke:var(--brand-ink);stroke-width:3}.lab-edge.current line{stroke:var(--viz-current-edge);stroke-width:4}.lab-arrowhead{fill:var(--text-2)}.lab-row{display:flex;flex-wrap:wrap;align-items:center;gap:6px 2px;padding:14px 4px}.lab-link{display:inline-flex;align-items:center;gap:2px}.lab-box{position:relative;display:inline-grid;place-items:center;min-width:52px;height:46px;padding:0 10px;border:2px solid var(--border);border-radius:10px;background:var(--surface);font-family:var(--font-code);font-weight:700;transition:background .25s,border-color .25s}.lab-box.focus{background:var(--viz-current-bg);border-color:var(--viz-current-edge);color:var(--viz-current-fg)}.lab-box.added,.lab-box.found{background:var(--viz-changed-bg);border-color:var(--viz-changed-fg);color:var(--viz-changed-fg)}.lab-box.removing{background:var(--viz-error-bg);border-color:var(--viz-error-fg);color:var(--viz-error-fg)}.lab-arrow,.lab-null{color:var(--text-2)}.lab-arrow,.lab-null,.lab-tag{font-family:var(--font-code);padding:0 4px}.lab-tag{font-size:12px;color:var(--brand-ink);font-weight:700}.lab-tag.pointer{position:absolute;top:-20px;left:50%;transform:translateX(-50%);white-space:nowrap}.lab-stack{display:flex;flex-direction:column;align-items:center;gap:4px;padding:8px 0}.lab-stack .lab-box{min-width:120px}.lab-stack .lab-tag{position:absolute;right:-46px}.lab-array{display:flex;flex-wrap:wrap;justify-content:center;gap:4px}.lab-cell{display:grid;place-items:center;min-width:44px;padding:2px 6px 6px;border:1px solid var(--border);border-radius:8px;background:var(--surface);font-family:var(--font-code);font-weight:700}.lab-cell.focus{background:var(--viz-current-bg);color:var(--viz-current-fg)}.lab-cell.added{background:var(--viz-changed-bg);color:var(--viz-changed-fg)}.lab-cell.removing{background:var(--viz-error-bg);color:var(--viz-error-fg)}.lab-index{font-size:12px;font-weight:500;color:inherit;opacity:.85}.lab-graph-inputs{display:grid;grid-template-columns:minmax(0,1fr) minmax(220px,280px);grid-gap:12px;gap:12px}.lab-graph-inputs textarea{font-family:var(--font-code);resize:vertical}.lab-graph{display:grid;grid-template-columns:minmax(0,auto) minmax(200px,1fr);grid-gap:16px;gap:16px;align-items:start}.lab-side p{margin:0 0 10px}.lab-side p,.lab-side table{font-family:var(--font-code)}.lab-side table{border-collapse:collapse}.lab-side td,.lab-side th{padding:4px 14px;border:1px solid var(--border);text-align:center}.lab-side tr.now{background:var(--viz-current-bg);color:var(--viz-current-fg)}.race-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:12px;gap:12px}.race-lane{padding:10px 12px;border:1px solid var(--border);border-radius:14px;background:var(--surface)}.race-lane.done{border-color:var(--viz-changed-fg)}.race-lane header{display:flex;justify-content:space-between;align-items:center}.race-place{padding:0 10px;border-radius:999px;background:var(--grad);color:var(--on-brand);font-weight:700}.race-bars{display:flex;align-items:flex-end;gap:2px;height:120px;margin:10px 0 6px}.race-bars span{flex:1 1;min-height:3px;border-radius:3px 3px 0 0;background:var(--brand-ink);opacity:.55}.race-lane.done .race-bars span{background:var(--viz-changed-fg);opacity:.8}.race-bars span.compare{background:var(--viz-current-edge);opacity:1}.race-bars span.move{background:var(--viz-error-fg);opacity:1}.race-stats{margin:0;font-size:.9rem;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.race-stats span{color:var(--text-2);font-size:.85rem}@media (max-width:860px){.race-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.lab-graph,.lab-graph-inputs{grid-template-columns:minmax(0,1fr)}}@media (max-width:520px){.race-grid{grid-template-columns:minmax(0,1fr)}}@media (prefers-reduced-motion:reduce){.lab-box,.lab-node circle,.lab-pick,.lab-pick:hover,.sv-bar{transition:none;transform:none}}.tool-about{max-width:48rem;margin:40px 0 24px}.tool-about h2{margin-top:0}.tool-about ul{padding-left:1.2em}.tool-about li+li{margin-top:6px}.related-lessons .muted,.tool-about .muted{color:var(--text-2)}.related-lessons ul{padding-left:1.2em}.related-lessons li+li{margin-top:6px}.simulator-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));grid-gap:14px;gap:14px;margin:8px 0 24px;padding:0;list-style:none}.simulator-list li{padding:14px 16px;border:1px solid var(--border);border-radius:14px;background:var(--surface)}.simulator-list h2{margin:0 0 6px;font-size:1.05rem}.simulator-list p{margin:0;color:var(--text-2);font-size:.92rem}.sv-algos{display:flex;flex-wrap:wrap;gap:6px}.sv-numbers{flex:1 1 280px}.lab-form .sv-numbers input{width:100%;font-family:var(--font-code)}.sv-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(280px,380px);grid-gap:20px;gap:20px;align-items:start}.sv-stage{padding:12px 10px 8px;border:1px solid var(--border);border-radius:14px;background:var(--bg);overflow-x:auto}.sv-bars{display:flex;align-items:stretch;gap:3px;height:250px}.sv-col{flex:1 1;min-width:8px;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;border-radius:6px}.sv-col.in-range{background:color-mix(in srgb,var(--brand-ink) 10%,transparent)}.sv-idx,.sv-mark,.sv-val{height:16px;font-family:var(--font-code);font-size:12px;line-height:16px;color:var(--text-2);white-space:nowrap}.sv-val{color:var(--text);font-weight:700}.sv-mark{color:var(--brand-ink);font-weight:700}.sv-bar{width:100%;border-radius:4px 4px 0 0;background:color-mix(in srgb,var(--brand-ink) 62%,var(--bg));transition:height .15s ease}.sv-bar.compare,.sv-swatch.compare{background:var(--viz-current-edge)}.sv-bar.move,.sv-swatch.move{background:var(--viz-error-fg)}.sv-bar.sorted,.sv-swatch.sorted{background:var(--viz-changed-fg)}.sv-bar.pivot,.sv-swatch.pivot{background:var(--viz-pointer)}.sv-bar.hole,.sv-swatch.hole{background:transparent;border:2px dashed var(--viz-current-edge)}.sv-legend{list-style:none;display:flex;flex-wrap:wrap;gap:6px 18px;margin:10px 0;padding:0;color:var(--text-2);font-size:.9rem}.sv-swatch{display:inline-block;width:14px;height:14px;margin-right:4px;border-radius:3px;vertical-align:-2px}.sv-swatch.range{background:color-mix(in srgb,var(--brand-ink) 18%,transparent);border:1px solid var(--border)}.sv-aux{display:flex;flex-wrap:wrap;align-items:center;gap:4px;min-height:48px;margin-top:10px}.sv-aux-label{margin-right:6px;font-weight:700}.sv-aux-label,.sv-empty{font-family:var(--font-code);color:var(--text-2)}.sv-buckets{display:grid;grid-template-columns:repeat(10,minmax(0,1fr));grid-gap:4px;gap:4px;margin-top:10px}.sv-bucket{display:flex;flex-direction:column;justify-content:flex-end;align-items:center;min-height:96px;padding:4px 2px 0;border:2px solid var(--border);border-top:none;border-radius:0 0 10px 10px}.sv-bucket.focus{background:var(--viz-current-bg);border-color:var(--viz-current-edge)}.sv-bucket-items{display:flex;flex-direction:column-reverse;gap:2px;font-family:var(--font-code);font-size:12px}.sv-bucket strong{width:100%;margin-top:4px;border-top:1px solid var(--border);text-align:center;font-family:var(--font-code);color:var(--text-2)}.sv-say{min-height:3.2em}.sv-counts{display:flex;flex-wrap:wrap;gap:10px;margin:0}.sv-counts div{padding:6px 16px;border:1px solid var(--border);border-radius:10px;background:var(--surface)}.sv-counts dt{color:var(--text-2);font-size:.8rem}.sv-counts dd{margin:0;font-size:1.25rem;font-weight:700;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.sv-side h3{margin:0 0 6px;font-size:1rem}.sv-side p{margin:0 0 12px}.sv-code{margin:0 0 16px;padding:8px 0;border:1px solid var(--border);border-radius:10px;background:var(--surface);font-family:var(--font-code);font-size:13px;line-height:1.6;overflow-x:auto}.sv-code code>span{display:block;padding-right:12px;white-space:pre}.sv-ln{display:inline-block;width:2.8em;padding-right:10px;text-align:right;color:var(--text-2);-webkit-user-select:none;-moz-user-select:none;user-select:none}.sv-code span.now{background:var(--viz-current-bg);color:var(--viz-current-fg);box-shadow:inset 4px 0 var(--viz-current-edge)}.sv-code span.now .sv-ln{color:var(--viz-current-fg);font-weight:700}.sim table.sv-facts{width:100%;margin:8px 0 12px}.sv-facts th{font-weight:500;color:var(--text-2);text-align:left}@media (max-width:1024px){.sv-layout{grid-template-columns:minmax(0,1fr)}}.lab-node rect{fill:var(--surface);stroke:var(--border);stroke-width:2}.lab-node.focus rect{fill:var(--viz-current-bg);stroke:var(--viz-current-edge);stroke-width:3}.lab-node.visited rect{fill:var(--viz-new-bg);stroke:var(--viz-new-fg)}.lab-node.added rect{fill:var(--viz-changed-bg);stroke:var(--viz-changed-fg)}.lab-stage .lab-node .lab-weight,.lab-stage .lab-node text tspan{font-weight:500}.concept-code{margin:0;font-size:14px}.sql-null{color:var(--text-2);font-style:italic}.join-tables{display:flex;flex-wrap:wrap;gap:16px;align-items:flex-start}.join-tables table{border-collapse:collapse;font-family:var(--font-code)}.join-tables caption{padding-bottom:4px;text-align:left;font-weight:700;font-family:var(--font-ui)}.join-tables td,.join-tables th{padding:4px 12px;border:1px solid var(--border)}.join-tables tr.fresh,.join-tables tr.now{background:var(--viz-current-bg);color:var(--viz-current-fg)}.join-result{min-width:200px}.net-path{list-style:none;display:flex;flex-wrap:wrap;gap:8px;margin:0;padding:0}.net-path li{padding:6px 14px;border:1px solid var(--border);border-radius:999px;color:var(--text-2)}.net-path li.here{border-color:transparent;background:var(--grad-viz);color:#fff;font-weight:700}.packet-layer{padding:8px 10px 10px;border:2px solid var(--border);border-radius:12px;margin-top:6px}.packet-layer.layer-0{border-color:var(--viz-changed-fg);background:var(--viz-changed-bg)}.packet-layer.layer-1{border-color:var(--viz-new-fg)}.packet-layer.layer-2{border-color:var(--viz-pointer)}.packet-layer.layer-3{border-color:var(--viz-current-edge)}.packet-name{display:block;font-weight:700}.packet-header{display:block;font-family:var(--font-code);font-size:.9em}.handshake{display:grid;grid-gap:6px;gap:6px;max-width:560px}.hs-ends{display:flex;justify-content:space-between}.hs-msg{position:relative;padding:6px 12px;border:1px solid var(--border);border-radius:10px;font-family:var(--font-code);width:70%}.hs-msg.client{justify-self:start}.hs-msg.client:after{content:" →"}.hs-msg.server{justify-self:end;text-align:right}.hs-msg.server:before{content:"← "}.hs-msg.now{background:var(--viz-current-bg);border-color:var(--viz-current-edge);color:var(--viz-current-fg)}.mem-grid{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr) minmax(0,1fr);grid-gap:16px;gap:16px;align-items:start}.mem-code{margin:0;padding:8px 0;list-style:none;border:1px solid var(--border);border-radius:12px;background:var(--surface);counter-reset:line}.mem-code li{counter-increment:line;padding:2px 12px 2px 0;white-space:pre-wrap;overflow-wrap:anywhere}.mem-code li:before{content:counter(line);display:inline-block;width:2.2em;margin-right:10px;text-align:right;color:var(--text-2);font-family:var(--font-code);font-size:.85em}.mem-code li.now{background:var(--viz-current-bg);color:var(--viz-current-fg)}.mem-title{margin:0 0 6px;font-size:.85rem;text-transform:uppercase;letter-spacing:.06em;color:var(--text-2)}.mem-frame{margin-bottom:8px;padding:8px;border:1px solid var(--border);border-radius:12px;background:var(--surface)}.mem-fn{font-weight:700}.mem-cell,.mem-fn{font-family:var(--font-code)}.mem-cell{display:grid;grid-template-columns:auto auto 1fr;grid-gap:2px 10px;gap:2px 10px;margin-top:6px;padding:4px 8px;border:1px solid var(--border);border-radius:8px}.mem-cell.pointer{border-color:var(--viz-pointer)}.mem-name{font-weight:700}.mem-addr{color:var(--text-2);font-size:.85em}.mem-to{grid-column:1/-1;color:var(--viz-pointer);font-size:.9em}.mem-block{margin-bottom:8px;padding:8px;border:2px solid var(--viz-new-fg);border-radius:12px}.mem-block.freed{border-style:dashed;border-color:var(--text-2)}.mem-block.leaked{border-color:var(--viz-error-fg);background:var(--viz-error-bg);color:var(--viz-error-fg)}.mem-block .mem-addr{display:block;color:inherit}.mem-cells{display:flex;gap:4px;margin-top:4px}.mem-cells span{display:grid;place-items:center;min-width:36px;height:32px;border:1px solid;border-radius:6px;font-family:var(--font-code)}.sim-say.warn{background:var(--viz-error-bg);color:var(--viz-error-fg)}@media (max-width:860px){.mem-grid{grid-template-columns:minmax(0,1fr)}.hs-msg{width:85%}}.hash-table{display:grid;grid-gap:4px;gap:4px}.hash-bucket{display:grid;grid-template-columns:2.5em minmax(0,1fr);align-items:center;grid-gap:10px;gap:10px;min-height:44px;padding:4px 10px;border:1px solid var(--border);border-radius:10px;background:var(--surface)}.hash-bucket .lab-index{font-family:var(--font-code);text-align:right}.hash-bucket.home{border-color:var(--brand-ink);box-shadow:inset 4px 0 0 var(--brand-ink)}.hash-bucket.probed{background:var(--viz-current-bg);color:var(--viz-current-fg)}.hash-bucket.added,.hash-bucket.found{background:var(--viz-changed-bg);color:var(--viz-changed-fg)}.hash-chain{display:flex;flex-wrap:wrap;gap:6px}.hash-chain .lab-box{min-width:44px;height:34px}.hash-slot{font-family:var(--font-code);font-weight:700}.bsearch .lab-cell{position:relative;padding-bottom:20px}.bsearch .lab-cell.out{background:transparent;border-style:dashed;color:var(--text-2)}.bs-mark{position:absolute;bottom:2px;left:0;right:0;text-align:center;font-size:12px;font-weight:700;color:var(--brand-ink)}.lab-cell.added .bs-mark,.lab-cell.focus .bs-mark{color:inherit}.lab-node.word circle{stroke-width:4;stroke:var(--brand-ink)}.dp-table{border-collapse:collapse;font-family:var(--font-code);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.dp-table td,.dp-table th{min-width:2.6em;padding:6px 8px;border:1px solid var(--border);text-align:center}.dp-table tbody th{text-align:left;white-space:nowrap;font-family:var(--font-ui)}.dp-table td.from{background:var(--viz-new-bg);color:var(--viz-new-fg)}.dp-table td.now{background:var(--viz-current-bg);color:var(--viz-current-fg);outline:2px solid var(--viz-current-edge);outline-offset:-2px;font-weight:700}.dp-table td.path{background:var(--viz-changed-bg);color:var(--viz-changed-fg);font-weight:700}.paths{grid-template-columns:repeat(3,minmax(0,1fr))}.path-card.lab{background:var(--surface)}.path-card.lab .path-icon,.path-card.lab:before{background:var(--grad-lab)}.button.primary.warm{background:var(--grad-lab)}.lab-showcase .section-head .lead{margin:8px 0 0;max-width:60ch}.feature-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:16px;gap:16px;margin-bottom:28px}.feature-card{display:flex;align-items:center;gap:20px;padding:20px 22px;border:1px solid var(--border);border-radius:20px;color:var(--text);text-decoration:none;transition:transform .2s,box-shadow .2s,border-color .2s}.feature-card,.feature-card.concept{background:var(--surface)}.feature-card:focus-visible,.feature-card:hover{transform:translateY(-3px);box-shadow:var(--lift);border-color:var(--brand-ink)}.feature-card>span:last-child{display:grid;grid-gap:6px;gap:6px}.feature-card strong{font-size:1.3rem}.feature-card>span:last-child>span{color:var(--text-2)}.feature-card .feature-go{color:var(--brand-ink);font-weight:700}.sort-picture{flex:none;display:flex;align-items:flex-end;gap:4px;width:120px;height:92px;padding:8px;border-radius:14px;background:var(--bg);border:1px solid var(--border)}.sort-picture span{flex:1 1;border-radius:3px 3px 0 0;background:color-mix(in srgb,var(--brand-ink) 62%,var(--bg))}.sort-picture span.hot{background:var(--viz-current-edge)}.sort-picture span.done{background:var(--viz-changed-fg)}.feature-tiles{flex:none;display:grid;grid-template-columns:repeat(2,52px);grid-gap:6px;gap:6px}.feature-tiles span{display:grid;place-items:center;height:42px;border-radius:10px;background:var(--grad);color:var(--on-brand);font-family:var(--font-code);font-weight:800;font-size:.85rem}.tool-groups{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:24px 28px;gap:24px 28px}.tool-groups h3{margin:0 0 10px;font-size:.85rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--text-2)}.tool-links{list-style:none;display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));grid-gap:8px;gap:8px;margin:0;padding:0}.tool-links a{display:flex;align-items:center;gap:10px;min-height:56px;padding:8px 10px;border:1px solid var(--border);border-radius:12px;background:var(--surface);color:var(--text);text-decoration:none;transition:border-color .15s,transform .15s}.tool-links a:focus-visible,.tool-links a:hover{border-color:var(--brand-ink);transform:translateY(-2px)}.tool-links .course-tile{flex:none;width:38px;height:38px;font-size:.8rem}.tool-links small{display:block;color:var(--text-2);font-size:.8rem}.lab-group{margin-bottom:4px}.lab-group-title{margin:14px 0 0;font-size:.85rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--text-2)}.lab-groups .lab-picker{margin:8px 0 6px}.lab-tool-anchor{min-height:calc(100vh - 72px);margin-top:16px;scroll-margin-top:72px}@media (max-width:1060px){.paths{grid-template-columns:repeat(2,minmax(0,1fr))}.path-card.lab{grid-column:1/-1}}@media (max-width:860px){.feature-cards,.paths,.tool-groups{grid-template-columns:minmax(0,1fr)}}@media (max-width:480px){.feature-card{flex-direction:column;align-items:flex-start}.nav{flex-wrap:nowrap;justify-content:flex-start;gap:4px;overflow-x:auto;scrollbar-width:none;padding:4px 0}.nav::-webkit-scrollbar{display:none}.nav a{flex:none;padding:8px 12px}}@media (prefers-reduced-motion:reduce){.feature-card,.feature-card:hover,.tool-links a,.tool-links a:hover{transition:none;transform:none}}.tp-array .lab-cell{position:relative;padding-bottom:20px}.lab-cell.in-window{background:color-mix(in srgb,var(--brand-ink) 14%,var(--surface));box-shadow:inset 0 -4px var(--brand-ink)}.lab-cell.best{outline:2px dashed var(--viz-changed-fg);outline-offset:2px}.ss-stage{overflow-x:auto;justify-content:flex-start}.ss-grid{display:grid;grid-gap:3px;gap:3px;align-items:center;width:max-content}.ss-label{padding-right:8px;font-size:.8rem}.ss-index,.ss-label{font-family:var(--font-code);color:var(--text-2)}.ss-index{text-align:center;font-size:12px}.ss-grid .ss-cell{min-width:0;padding:4px 0}.lab-cell.ss-found{box-shadow:inset 0 -4px var(--viz-changed-fg)}.lab-cell.ss-matched{background:var(--viz-changed-bg);color:var(--viz-changed-fg)}.ss-table caption{padding-bottom:4px;text-align:left;font-weight:700}.nq-wrap{display:flex;flex-wrap:wrap;align-items:flex-start;gap:20px}.nq-board{display:grid;width:min(100%,360px);aspect-ratio:1;border:2px solid var(--border);border-radius:8px;overflow:hidden}.nq-cell{display:grid;place-items:center;font-size:clamp(1.1rem,4vw,1.9rem);line-height:1}.nq-cell.light{background:var(--surface)}.nq-cell.dark{background:var(--surface-2)}.nq-cell.safe{background:var(--viz-current-bg);color:var(--viz-current-fg);box-shadow:inset 0 0 0 3px var(--viz-current-edge)}.nq-cell.attacked,.nq-cell.attacker{background:var(--viz-error-bg);color:var(--viz-error-fg)}.nq-cell.attacked{box-shadow:inset 0 0 0 3px var(--viz-error-fg)}.nq-cell.removed{color:var(--text-2)}.nq-cell.solved{background:var(--viz-changed-bg);color:var(--viz-changed-fg)}.nq-counts{flex-direction:column}.seg-cell rect,.seg-node rect{fill:var(--surface);stroke:var(--border);stroke-width:2}.lab-stage .seg-cell text,.lab-stage .seg-node text{font-family:var(--font-code);font-weight:700;fill:var(--text)}.lab-stage .seg-range{font-size:12px;font-weight:500;fill:var(--text-2)}.seg-node.empty rect,.seg-node.none rect{fill:transparent;stroke-dasharray:4 3}.lab-stage .seg-node.none text{fill:var(--text-2)}.seg-node.full rect{fill:var(--viz-changed-bg);stroke:var(--viz-changed-fg)}.lab-stage .seg-node.full text{fill:var(--viz-changed-fg)}.seg-node.partial rect{fill:var(--viz-current-bg);stroke:var(--viz-current-edge)}.lab-stage .seg-node.partial text{fill:var(--viz-current-fg)}.seg-node.on-path rect{stroke:var(--brand-ink);stroke-width:3}.seg-node.focus rect{stroke:var(--viz-current-edge);stroke-width:4}.seg-cell.in-query rect{fill:color-mix(in srgb,var(--brand-ink) 16%,var(--surface));stroke:var(--brand-ink)}.sv-swatch.seg-full{background:var(--viz-changed-bg);border:2px solid var(--viz-changed-fg)}.sv-swatch.seg-partial{background:var(--viz-current-bg);border:2px solid var(--viz-current-edge)}.sv-swatch.seg-none{border:2px dashed var(--border)}.pf-stage{overflow-x:auto;justify-content:flex-start}.pf-grid{display:grid;grid-gap:2px;gap:2px;width:100%;min-width:520px;max-width:780px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.pf-cell{display:grid;place-items:center;aspect-ratio:1;border-radius:3px;background:var(--surface-2);font-family:var(--font-code);font-size:11px;font-weight:700;cursor:pointer}.pf-cell.wall,.sv-swatch.pf-wall{background:var(--text)}.pf-cell.visited,.sv-swatch.pf-visited{background:color-mix(in srgb,var(--brand-ink) 30%,var(--bg))}.pf-cell.frontier,.sv-swatch.pf-frontier{background:var(--viz-current-bg);box-shadow:inset 0 0 0 2px var(--viz-current-edge)}.pf-cell.path,.sv-swatch.pf-path{background:var(--viz-changed-fg);color:var(--bg)}.pf-cell.current{box-shadow:inset 0 0 0 3px var(--viz-error-fg);color:var(--viz-error-fg)}.pf-cell.goal,.pf-cell.start{color:var(--on-brand);background:var(--grad);font-size:12px}.pf-cell.goal{background:var(--grad-lab)}.badge.level-intermediate{border-color:#0b6178;color:#0b6178;margin-bottom:0;vertical-align:middle}.badge.level-advanced{border-color:#be123c;color:#be123c;margin-bottom:0;vertical-align:middle}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .badge.level-intermediate{border-color:#67e8f9;color:#67e8f9}:root:not([data-theme=light]) .badge.level-advanced{border-color:#fda4af;color:#fda4af}}:root[data-theme=dark] .badge.level-intermediate{border-color:#67e8f9;color:#67e8f9}:root[data-theme=dark] .badge.level-advanced{border-color:#fda4af;color:#fda4af}.lesson-level{margin:4px 0 0}.see-it-move{margin:0 0 24px;padding:14px 16px;border:1px solid var(--border);border-left:5px solid #b45309;border-radius:var(--radius);background:var(--surface)}.see-it-move h2{margin:0;font-size:1.1rem}.see-it-move p{margin:4px 0 10px;color:var(--text-2)}.see-it-move ul{list-style:none;display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));grid-gap:8px;gap:8px;margin:0;padding:0}.see-it-move a{display:flex;align-items:center;gap:10px;min-height:52px;padding:6px 10px;border:1px solid var(--border);border-radius:12px;background:var(--bg);color:var(--text);text-decoration:none}.see-it-move a:focus-visible,.see-it-move a:hover{border-color:var(--brand-ink)}.see-it-move .course-tile{flex:none;width:36px;height:36px;font-size:.75rem}.see-it-move small{display:block;color:var(--text-2)}.notes{margin:24px 0 12px;padding:12px 16px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface)}.notes summary{min-height:32px;font-weight:700;cursor:pointer}.notes-hint{margin:6px 0 8px;color:var(--text-2)}.notes textarea{width:100%;padding:10px;border:1px solid var(--border);border-radius:8px;background:var(--bg);color:var(--text);font:inherit;resize:vertical}.notes .status-line{min-height:1.4em;margin:4px 0 0}.notes-list{list-style:none;margin:0;padding:0;display:grid;grid-gap:12px;gap:12px}.notes-list p{margin:2px 0 0;color:var(--text-2);white-space:pre-line}.test-card{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px 20px;margin:16px 0 24px;padding:16px 20px;border:1px solid var(--border);border-left:5px solid var(--brand-ink);border-radius:var(--radius);background:var(--surface)}.test-card h2{margin:0;font-size:1.2rem}.test-card p{margin:4px 0 0;color:var(--text-2)}.test-best{font-weight:700}.test-card .test-best{color:var(--viz-changed-fg)}.test-page .course-test{max-width:48rem}.course-test h2{margin:0 0 12px;font-size:1.3rem;line-height:1.4}.course-test h2:focus{outline:none}.course-test h3{margin:24px 0 8px}.test-sizes{display:flex;flex-wrap:wrap;gap:8px 20px;margin:0 0 16px;padding:0;border:none}.test-sizes legend{margin-bottom:6px;font-weight:600}.test-sizes label{display:flex;align-items:center;gap:6px;min-height:44px;cursor:pointer}.test-sizes input{width:24px;height:24px;accent-color:var(--accent)}.test-progress{display:flex;align-items:center;gap:12px;margin:0 0 10px;color:var(--text-2);font-weight:600}.test-meter{flex:1 1;display:block;height:8px;max-width:320px;border-radius:999px;background:var(--surface-2);overflow:hidden}.test-meter span{display:block;height:100%;border-radius:inherit;background:var(--grad)}.course-test>.test-meter{margin:0 0 12px}.course-test .quiz.test-options,.course-test .test-options{margin:0 0 12px;padding:0;border:none}.test-options label{border:1px solid var(--border);margin-bottom:6px;background:var(--bg)}.test-options label.is-right{border-color:var(--viz-changed-fg);background:var(--viz-changed-bg);color:var(--viz-changed-fg)}.test-options label.is-wrong{border-color:var(--viz-error-fg);background:var(--viz-error-bg);color:var(--viz-error-fg)}.course-test .quiz-feedback p{margin:0 0 6px}.test-missed{display:grid;grid-gap:14px;gap:14px;padding-left:1.4em}.test-missed p{margin:2px 0}.test-missed .test-q{font-weight:600}.wrong-answer{color:var(--viz-error-fg)}.right-answer{color:var(--viz-changed-fg);font-weight:600}.lab-form input[type=range]{min-height:24px;padding:0}.subnet-bits-box{display:grid;grid-gap:6px;gap:6px;padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);overflow-x:auto}.subnet-row{display:grid;grid-template-columns:6.5rem max-content max-content;align-items:center;grid-gap:4px 14px;gap:4px 14px}.subnet-label{color:var(--text-2);font-size:.9rem}.subnet-bits{font-family:var(--font-code);font-size:.95rem;letter-spacing:.04em;white-space:nowrap}.subnet-bits .net,.subnet-key .net{background:var(--viz-new-bg);color:var(--viz-new-fg);font-weight:700}.subnet-bits .host,.subnet-key .host{background:var(--viz-current-bg);color:var(--viz-current-fg)}.subnet-key .host,.subnet-key .net{padding:0 6px;border-radius:4px}.subnet-dot{color:var(--text-2)}.subnet-dec{font-family:var(--font-code);font-weight:700}.subnet-key{margin:0;color:var(--text-2);font-size:.9rem}.arq{display:grid;grid-gap:10px;gap:10px;padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);overflow-x:auto}.arq-row{display:grid;grid-template-columns:5.5rem minmax(0,1fr);align-items:center;grid-gap:8px;gap:8px}.arq-label{color:var(--text-2);font-weight:600}.arq-cells{display:flex;gap:4px;margin:0;padding:0;list-style:none}.arq-cell{display:grid;place-items:center;min-width:36px;padding:2px 4px 4px;border:2px solid var(--border);border-radius:8px;background:var(--surface);font-family:var(--font-code);font-weight:700}.arq-cell .arq-seq{font-size:12px;color:var(--text-2);font-weight:500}.arq-cell.in-window{border-color:var(--brand-ink);box-shadow:inset 0 0 0 1px var(--brand-ink)}.arq-cell.sent{background:var(--viz-current-bg);color:var(--viz-current-fg)}.arq-cell.acked,.arq-cell.delivered{background:var(--viz-changed-bg);color:var(--viz-changed-fg)}.arq-cell.buffered{background:var(--viz-new-bg);color:var(--viz-new-fg)}.arq-cell.now{outline:3px solid var(--viz-current-edge);outline-offset:1px}.arq-legend{margin:0;color:var(--text-2);font-size:.9rem}.sim svg .cc-grid{stroke-dasharray:2 4}.sim svg .cc-thresh{fill:none;stroke:var(--text-2);stroke-width:2;stroke-dasharray:6 4}.sim svg .cc-point{fill:var(--accent)}.sim svg .cc-now{fill:var(--viz-current-edge)}.sim svg .cc-loss{fill:var(--viz-error-fg)}.sim table.subnet-facts td{white-space:normal;text-align:left;min-width:16rem}.sim table.kmap td{padding:3px}.sim table.kmap th{font-family:var(--font-code)}.kmap-cell{display:grid;grid-template-columns:1fr 1fr;grid-template-rows:auto auto;width:64px;height:56px;padding:3px 5px;border:1px solid var(--border);border-radius:8px;background:var(--bg);color:var(--text);font:inherit;cursor:pointer}.kmap-cell .kmap-m{grid-column:1;justify-self:start;font-size:12px;color:var(--text-2)}.kmap-cell .kmap-g{grid-column:2;grid-row:1;justify-self:end;font-size:12px;font-weight:700;color:var(--brand-ink)}.kmap-cell .kmap-v{grid-column:1/-1;justify-self:center;font-family:var(--font-code);font-size:1.25rem;font-weight:800}.kmap-cell.v1{background:var(--viz-changed-bg);color:var(--viz-changed-fg)}.kmap-cell.v1 .kmap-m,.kmap-cell.vx .kmap-m{color:inherit}.kmap-cell.vx{background:var(--viz-current-bg);color:var(--viz-current-fg)}.kmap-groups{display:grid;grid-gap:6px;gap:6px;margin:0;padding-left:0;list-style:none}.kmap-groups .button{border-width:3px}.sim svg .ff-wave{fill:none;stroke:var(--accent);stroke-width:2.5}.sim svg .ff-wave.clk{stroke:var(--text-2);stroke-width:2}.sim svg .ff-wave.q{stroke:var(--viz-changed-fg);stroke-width:3}.sim svg .ff-now{fill:var(--viz-current-bg)}.adder{display:flex;gap:6px;margin:0;padding:4px 0;list-style:none}.adder-fa{display:grid;grid-gap:2px;gap:2px;min-width:112px;padding:8px 10px;border:2px solid var(--border);border-radius:10px;background:var(--surface);font-family:var(--font-code);font-size:.9rem}.adder-fa.done{background:var(--viz-changed-bg);color:var(--viz-changed-fg)}.adder-fa.now{background:var(--viz-current-bg);color:var(--viz-current-fg);border-color:var(--viz-current-edge)}.adder-bit,.adder-carry{font-size:12px}.adder-out strong{font-size:1.15rem}.cache-field{display:inline-block;margin:2px 4px 0 0;padding:0 8px;border-radius:6px;font-family:var(--font-code);font-weight:700}.cache-field.tag{background:var(--viz-new-bg);color:var(--viz-new-fg)}.cache-field.set{background:var(--viz-current-bg);color:var(--viz-current-fg)}.cache-field.off{background:var(--viz-output-bg);color:var(--viz-output-fg)}.sim table.pipe th[scope=row]{text-align:left}.sim table.pipe td{min-width:3.2rem;font-family:var(--font-code);font-weight:700}.sim table.pipe th.now{background:var(--viz-current-bg);color:var(--viz-current-fg)}.pipe-if{background:var(--viz-next-bg);color:var(--viz-next-fg)}.pipe-id{background:var(--viz-new-bg);color:var(--viz-new-fg)}.pipe-ex{background:var(--viz-output-bg);color:var(--viz-output-fg)}.pipe-mem{background:var(--viz-return-bg);color:var(--text)}.pipe-wb{background:var(--viz-changed-bg);color:var(--viz-changed-fg)}.pipe-stall{background:var(--viz-error-bg);color:var(--viz-error-fg);font-weight:500}.sim table.pipe td.current{outline:3px solid var(--viz-current-edge);outline-offset:-3px}.lab-learn{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);grid-gap:20px 24px;gap:20px 24px;align-items:start;margin-top:8px;padding-top:16px;border-top:1px solid var(--border)}.lab-learn.single{grid-template-columns:minmax(0,1fr)}.lab-code h3,.lab-understand h3{margin:0 0 8px;font-size:1.05rem}.lab-code .sv-code{position:relative;max-height:30rem;margin-bottom:6px;overflow:auto}.lab-code-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:6px 12px;margin-bottom:8px}.lab-code-head h3{margin:0}.lab-langs{display:flex;flex-wrap:wrap;gap:4px}.sv-side .lab-code{margin-bottom:16px}.lab-calc{margin:12px 0 4px;padding:10px 14px;border:1px solid var(--border);border-left:5px solid var(--accent);border-radius:var(--radius);background:var(--surface)}.lab-calc h3{margin:0 0 6px;font-size:.95rem}.lab-calc ul{margin:0;padding:0;list-style:none;font-family:var(--font-code);font-size:.9rem;line-height:1.6}.lab-calc li{overflow-wrap:anywhere}.lab-calc li+li{margin-top:2px}.lab-calc-none{margin:0;color:var(--text-2);font-size:.9rem}.lab-understand{padding:14px 16px;border:1px solid var(--border);border-left:5px solid var(--brand-ink);border-radius:var(--radius);background:var(--bg)}.lab-understand h4{margin:14px 0 4px;font-size:.95rem;color:var(--brand-ink)}.lab-understand ol,.lab-understand p,.lab-understand ul{margin:0}.lab-understand ol,.lab-understand ul:not(.lab-fundamentals){padding-left:1.3em}.lab-understand li+li{margin-top:3px}.lab-idea{font-weight:600}.lab-understand ul.lab-fundamentals{list-style:none;display:flex;flex-wrap:wrap;gap:6px;padding:0}.lab-fundamentals li{margin:0;padding:2px 10px;border:1px solid var(--border);border-radius:999px;background:var(--surface);font-size:.9rem}.lab-fundamentals li+li,.lab-understand li+li.lab-fundamentals{margin-top:0}.sim table.lab-cost{width:100%}.sim table.lab-cost td,.sim table.lab-cost th{white-space:normal;text-align:left}.sim table.lab-cost th{font-weight:500}.sim table.lab-cost td{font-family:var(--font-code);font-weight:700}@media (max-width:960px){.lab-learn{grid-template-columns:minmax(0,1fr)}}.compiler-page{padding-top:12px}.compiler-title{margin:4px 0 2px;font-size:clamp(1.4rem,3vw,1.9rem)}.compiler-lead{margin:0 0 12px;color:var(--text-2);max-width:70ch}.compiler-skeleton{display:grid;place-items:center;min-height:min(78vh,760px);border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text-2)}.compiler{--compiler-height:min(78vh,760px);display:flex;flex-direction:column;gap:8px}.compiler .icon-button{min-width:36px;min-height:36px;padding:0 8px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text);font:inherit;font-weight:600;cursor:pointer}.compiler .icon-button:hover:not(:disabled){border-color:var(--accent)}.compiler button:disabled{opacity:.55;cursor:not-allowed}.compiler .link-button{padding:0;border:0;background:none;color:var(--accent);font:inherit;font-weight:600;text-decoration:underline;cursor:pointer}.compiler .table-scroll{overflow-x:auto;max-width:100%}.compiler-bar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;justify-content:space-between}.compiler-langs{display:flex;flex-wrap:wrap;gap:4px}.compiler-lang{padding:6px 12px;border:1px solid var(--border);border-radius:999px;color:var(--text);font-weight:600;font-size:.9em;text-decoration:none}button.compiler-lang{background:none;font-family:inherit;cursor:pointer}.compiler-lang:hover{border-color:var(--accent)}.compiler-lang.active,button.compiler-lang.active{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.compiler-actions{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.compiler-run{width:9.5em;white-space:nowrap;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.compiler-font{display:inline-flex;gap:2px}.compiler-note,.compiler-notice{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:0;padding:8px 12px;border:1px solid var(--border);border-radius:var(--radius);background:var(--viz-next-bg);color:var(--text)}.compiler-share-link{flex:1 1 260px;min-width:0;padding:6px 8px;border:1px solid var(--border);border-radius:6px;background:var(--bg);color:var(--text);font:inherit}.compiler-tabs{display:none}.compiler-main{display:grid;grid-template-columns:minmax(0,var(--split,55%)) 10px minmax(0,1fr);height:var(--compiler-height);min-height:460px}.compiler-code,.compiler-side{display:flex;flex-direction:column;min-width:0;min-height:0;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);overflow:hidden}.compiler-file{display:flex;justify-content:space-between;gap:8px;padding:6px 12px;border-bottom:1px solid var(--border);background:var(--surface);font-family:var(--font-code);font-size:.85em}.compiler-editor{flex:1 1 auto;min-height:0;overflow:hidden}.compiler-editor .cm-editor,.compiler-editor>div{height:100%}.compiler-editor .cm-editor{font-size:var(--cfont,15px)}.compiler-editor .cm-scroller{font-family:var(--font-code);line-height:1.55}.compiler-divider{cursor:col-resize;border-radius:4px;background:transparent;touch-action:none}.compiler-divider:focus-visible,.compiler-divider:hover{background:var(--surface-2)}.compiler-divider:after{content:"";display:block;width:2px;height:40px;margin:calc(var(--compiler-height) / 2 - 20px) auto 0;border-radius:2px;background:var(--border)}.compiler-side{overflow-y:auto}.compiler-side-tabs{display:flex;gap:4px;padding:6px;border-bottom:1px solid var(--border);background:var(--surface)}.compiler-side-tabs button,.compiler-tabs button{flex:1 1;min-height:36px;border:1px solid transparent;border-radius:8px;background:none;color:var(--text-2);font:inherit;font-weight:600;cursor:pointer}.compiler-side-tabs button.active,.compiler-tabs button.active{border-color:var(--border);background:var(--bg);color:var(--text)}.compiler[data-side=run] .compiler-tests,.compiler[data-side=tests] .compiler-input,.compiler[data-side=tests] .compiler-output{display:none}.compiler-input{display:flex;flex-direction:column;gap:4px;padding:10px 12px;border-bottom:1px solid var(--border)}.compiler-input label{font-weight:600;font-size:.9em}.compiler textarea{width:100%;min-height:70px;padding:8px 10px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text);font-family:var(--font-code);font-size:.9em;resize:vertical}.compiler-output{display:flex;flex-direction:column;gap:8px;padding:10px 12px 14px}.compiler-output-head{display:flex;justify-content:space-between;align-items:center;gap:8px}.compiler-output-head h2{margin:0;font-size:1rem}.compiler-chip{padding:3px 10px;border-radius:999px;border:1px solid var(--border);background:var(--surface);font-size:.82em;font-weight:700;white-space:nowrap}.compiler-chip.running{background:var(--viz-next-bg);color:var(--viz-next-fg)}.compiler-chip.success{background:var(--viz-changed-bg);color:var(--viz-changed-fg)}.compiler-chip.compile,.compiler-chip.runtime{background:var(--viz-error-bg);color:var(--viz-error-fg)}.compiler-chip.limit,.compiler-chip.stopped,.compiler-chip.time{background:var(--viz-current-bg);color:var(--viz-current-fg)}.compiler-meta{margin:0;color:var(--text-2);font-size:.85em}.compiler-console{min-height:140px;max-height:46vh;margin:0;padding:10px 12px;overflow:auto;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text);font-family:var(--font-code);font-size:.9em;line-height:1.5;white-space:pre-wrap;overflow-wrap:anywhere}.compiler-console .stderr{color:#b42318}.compiler-console .empty{color:var(--text-2)}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .compiler-console{background:#0f1914}:root:not([data-theme=light]) .compiler-console .stderr{color:#fca5a5}}:root[data-theme=dark] .compiler-console{background:#0f1914}:root[data-theme=dark] .compiler-console .stderr{color:#fca5a5}.compiler-warn{margin:0;padding:8px 12px;border-left:4px solid var(--viz-current-edge);border-radius:6px;background:var(--viz-current-bg);color:var(--text)}.compiler-error{padding:12px 14px;border:1px solid var(--viz-error-fg);border-left-width:4px;border-radius:8px;background:var(--viz-error-bg);color:var(--text)}.compiler-error h3{margin:6px 0 4px;font-size:1rem}.compiler-error p{margin:4px 0}.compiler-error-where{display:flex;flex-wrap:wrap;gap:4px 12px;align-items:baseline}.compiler-error-raw{font-family:var(--font-code);font-size:.85em;overflow-wrap:anywhere}.compiler-fix-label{font-weight:600}.compiler-fix{margin:4px 0 0;padding:8px 10px;overflow-x:auto;border-radius:6px;background:var(--bg);font-family:var(--font-code);font-size:.88em}.compiler-viz{display:flex;flex-wrap:wrap;gap:8px 14px;align-items:center}.compiler-viz .compiler-warn{flex-basis:100%}.compiler-viz-link{font-size:.9em}.compiler-empty{margin:0;color:var(--text-2)}.compiler-sql{display:flex;flex-direction:column;gap:10px}.compiler-sql-table{margin:0}.compiler-sql-change,.compiler-sql-table figcaption{margin:0 0 4px;color:var(--text-2);font-size:.88em}.compiler-sql .line,.compiler-sql-change .line{display:inline-block;margin-right:6px;padding:0 6px;border-radius:4px;background:var(--surface-2);color:var(--text);font-weight:600}.compiler-diff table,.compiler-sql table{border-collapse:collapse;font-family:var(--font-code);font-size:.86em}.compiler-diff td,.compiler-diff th,.compiler-sql td,.compiler-sql th{padding:4px 10px;border:1px solid var(--border);text-align:left;white-space:pre}.compiler-diff th,.compiler-sql th{background:var(--surface)}.compiler-sql td.num{text-align:right}.compiler-sql td.null{color:var(--text-2);font-style:italic}.compiler-tests-panel{display:flex;flex-direction:column;gap:8px;padding:10px 12px 14px}.compiler-tests-bar{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.compiler-tests-score{font-weight:700;color:var(--viz-error-fg)}.compiler-tests-score.all{color:var(--viz-changed-fg)}.compiler-check{display:flex;gap:8px;align-items:center;font-size:.92em}.compiler-check input{width:18px;height:18px}.compiler-test-list{display:flex;flex-direction:column;gap:10px;margin:0;padding:0;list-style:none}.compiler-test{padding:10px;border:1px solid var(--border);border-left-width:4px;border-radius:8px}.compiler-test.pass{border-left-color:var(--viz-changed-fg)}.compiler-test.fail{border-left-color:var(--viz-error-fg)}.compiler-test-head{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:6px}.compiler-test-verdict{font-size:.88em;font-weight:600}.compiler-test.pass .compiler-test-verdict{color:var(--viz-changed-fg)}.compiler-test.fail .compiler-test-verdict{color:var(--viz-error-fg)}.compiler-test-tools{display:inline-flex;gap:4px;margin-left:auto}.compiler-test-fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));grid-gap:8px;gap:8px}.compiler-test-fields label{display:flex;flex-direction:column;gap:4px;font-size:.88em;font-weight:600}.compiler-diff{margin-top:8px}.compiler-diff-note{margin:0 0 6px;color:var(--viz-error-fg);font-size:.9em}.compiler-diff tr.differs td{background:var(--viz-error-bg)}.compiler-diff td.n{color:var(--text-2)}.compiler-diff .missing{color:var(--text-2);font-style:italic}.compiler-menu{position:relative}.compiler-menu-list{position:absolute;top:calc(100% + 4px);left:0;z-index:20;min-width:240px;max-height:60vh;margin:0;padding:4px;overflow:auto;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);box-shadow:var(--lift);list-style:none}.compiler-menu-list button{width:100%;min-height:40px;padding:6px 10px;border:0;border-radius:6px;background:none;color:var(--text);font:inherit;text-align:left;cursor:pointer}.compiler-menu-list button:focus-visible,.compiler-menu-list button:hover{background:var(--surface-2)}.compiler-keybar{position:fixed;left:0;right:0;z-index:40;display:flex;gap:4px;padding:6px;overflow-x:auto;border-top:1px solid var(--border);background:var(--surface)}.compiler-keybar button{flex:0 0 auto;min-width:40px;min-height:40px;border:1px solid var(--border);border-radius:8px;background:var(--bg);color:var(--text);font-family:var(--font-code);font-size:16px;font-weight:600}.compiler-help section+section{margin-top:8px}.compiler-faq{margin:0}.compiler-faq div+div{margin-top:10px}.compiler-faq dt{font-weight:700}.compiler-faq dd{margin:2px 0 0}.home-hero .hero-actions{justify-content:center;margin-top:22px}.home-compiler-code{display:block;width:100%;height:100%;padding:10px 14px;border:0;background:var(--bg);color:var(--text);font-family:var(--font-code);font-size:15px;line-height:1.5;text-align:left;overflow:hidden;cursor:text}.home-compiler-code code{display:block;height:100%;white-space:pre;font:inherit;background:none}.home-compiler-empty{margin:0}@media (min-width:768px){.home-compiler .compiler{--compiler-height:460px}}@media (max-width:767px){.compiler{--compiler-height:auto}.compiler-tabs{display:flex;gap:4px;padding:4px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface)}.compiler-main{display:block;height:auto;min-height:0}.compiler-divider,.compiler-side-tabs,.compiler:not([data-tab=code]) .compiler-code,.compiler[data-tab=code] .compiler-side,.compiler[data-tab=input] .compiler-output,.compiler[data-tab=input] .compiler-tests,.compiler[data-tab=output] .compiler-input,.compiler[data-tab=output] .compiler-tests,.compiler[data-tab=tests] .compiler-input,.compiler[data-tab=tests] .compiler-output{display:none}.compiler[data-tab=input] .compiler-input,.compiler[data-tab=output] .compiler-output{display:flex}.compiler[data-tab=tests] .compiler-tests{display:block}.compiler-editor{height:62vh;min-height:320px}.home-compiler .compiler-editor{height:340px;min-height:0}.compiler.keybar-on .compiler-editor{padding-bottom:54px}.compiler-editor .cm-editor{font-size:max(16px,var(--cfont,16px))}.compiler input,.compiler textarea{font-size:16px}.compiler-console{max-height:60vh}.compiler-lang{padding:6px 10px}}.course-facts{display:flex;flex-wrap:wrap;gap:12px;margin:16px 0}.course-facts div{padding:10px 16px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface)}.course-facts dt{color:var(--text-2);font-size:.85em}.course-facts dd{margin:0;font-weight:700}.course-columns{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));grid-gap:8px 24px;gap:8px 24px}.course-module{margin:20px 0;padding:16px;border:1px solid var(--border);border-radius:var(--radius)}.course-module h3{margin-top:0}.course-links li{margin:8px 0}.key-takeaways,.lesson-guide{margin:16px 0;padding:14px 18px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface)}.key-takeaways h2,.lesson-guide h2{margin:0 0 8px;font-size:1.05rem}.key-takeaways ul,.lesson-guide ul{margin:0}.lesson-guide-module{margin:0 0 10px;color:var(--text-2)}.lesson-guide details{margin-top:10px}.lesson-guide dl div{margin:8px 0}.lesson-guide dt{font-weight:700}.lesson-guide dd{margin:0}.web-exercise{display:flex;flex-direction:column;gap:10px}.web-exercise-editor{min-height:280px;max-height:420px;overflow:auto}.web-exercise-editor,.web-exercise-frame{border:1px solid var(--border);border-radius:var(--radius)}.web-exercise-frame{width:100%;height:260px;background:#fff}.web-exercise-results h2{margin:0 0 8px;font-size:1.05rem}.web-exercise-results ul{margin:0;padding:0;list-style:none}.web-exercise-results li{padding:3px 0}.web-exercise-results .pass span[aria-hidden]{color:var(--viz-ok,#15803d)}.web-exercise-results .fail span[aria-hidden]{color:var(--viz-error,#b91c1c)}.home-hero{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);grid-gap:48px;gap:48px;align-items:center;text-align:left;padding-top:48px;padding-bottom:36px}.home-hero h1{font-size:clamp(2rem,3.6vw,3.1rem);line-height:1.12;margin:10px 0 16px}.home-hero .lead{margin:0}.home-hero .hero-actions{justify-content:flex-start}.demo-caption{margin:0 0 8px;color:var(--text-2);font-size:.95rem}.paths{gap:16px}.path-card{padding:22px 22px 20px;border-radius:calc(var(--radius) * 2);gap:8px}.path-card:before{height:4px}.path-card:focus-within,.path-card:hover{transform:none;box-shadow:none;border-color:var(--text);background:var(--surface-2)}.path-card.lab .path-icon,.path-card.visualize .path-icon,.path-icon{width:auto;height:auto;place-items:start;border-radius:0;background:none;color:var(--text)}.path-kicker{margin:0;font-size:.9rem;font-weight:600;letter-spacing:0;text-transform:none}.path-card h3{font-size:1.35rem}.path-chips li{border-radius:4px}.path-card .button{min-height:44px;padding:8px 18px;font-size:1rem}.path-card:before{background:var(--steel)}.stats{justify-content:flex-start;gap:6px 32px;margin-top:8px;padding:14px 0;border:0;border-top:1px solid var(--border);border-bottom:1px solid var(--border);border-radius:0;background:none}.stats strong{color:var(--text);font-family:var(--font-head)}.how-section h2{font-size:1.6rem}.how-section .how{grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;margin-top:8px}.how li:before{border-radius:50%;background:var(--brand);color:var(--on-brand)}.cta-band h2,.demo-section h2,.section-head h2{font-size:1.6rem}.feature-card{border-radius:calc(var(--radius) * 2)}.feature-card:focus-visible,.feature-card:hover{transform:none;box-shadow:none;border-color:var(--text)}.feature-card .feature-go{justify-self:start;margin-top:4px;padding:6px 14px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-2);color:var(--text);font-weight:600;text-decoration:none}.feature-card:hover .feature-go{background:var(--brand);border-color:var(--brand);color:var(--on-brand)}.feature-tiles span{border-radius:4px}.cta-band{text-align:left;padding:28px;border-radius:calc(var(--radius) * 2)}.cta-band .hero-actions{justify-content:flex-start}.home .faq-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));grid-gap:4px 40px;gap:4px 40px}.home .faq-list h3{margin:12px 0 4px;font-size:1.05rem}.home .faq-list p{margin:0;color:var(--text-2)}@media (max-width:860px){.home-hero{gap:28px;padding-top:28px}.home-hero,.how-section .how{grid-template-columns:minmax(0,1fr)}.how-section .how{gap:14px}}.controls button.play,.controls button.step-word{padding:0 12px;font-size:15px;font-weight:600;white-space:nowrap}.controls button.play{min-width:96px}.explain-where{display:block;margin-top:2px;font-weight:500}.explain-where,.viz-key{font-size:.85rem;color:var(--text-2)}.viz-key{display:flex;flex-wrap:wrap;gap:4px 16px;margin:0}.viz-key>span{display:inline-flex;align-items:center;gap:6px}.viz-key .tag{margin-left:0;background:var(--viz-new-bg);color:var(--viz-new-fg)}.key-mark{display:inline-grid;place-items:center;min-width:1.6em;height:1.35em;border-radius:3px;font-size:.8rem}.key-mark.current{background:var(--viz-current-bg);color:var(--viz-current-fg);box-shadow:inset 3px 0 var(--viz-current-edge)}.key-mark.next{background:var(--viz-next-bg);color:var(--viz-next-fg);outline:1px dashed var(--viz-next-fg);outline-offset:-1px}.key-mark.changed{background:var(--viz-changed-bg);color:var(--viz-changed-fg)}.key-arrow{position:relative;display:inline-block;width:26px;height:2px;background:var(--viz-pointer)}.key-arrow:after{content:"";position:absolute;right:-1px;top:-4px;border:5px solid transparent;border-left:7px solid var(--viz-pointer);border-right:0}@media (max-width:1023px){.viz{display:flex;flex-direction:column;gap:12px}.viz-left,.viz-right{display:contents}.viz .toolbar{order:1}.viz .editor-panel{order:2}.viz-left>label{order:3}.viz-right>.error-box,.viz-right>.notice{order:4}.viz .explain-panel{order:5}.viz .memory-panel{order:6}.viz .viz-key{order:7}.viz .output-panel{order:8}.viz .controls{order:9}.viz .controls .shortcuts{display:none}.viz .controls{position:-webkit-sticky;position:sticky;bottom:0;z-index:5;box-shadow:0 -6px 16px rgb(0 0 0/.12)}.viz .memory-panel{overflow:visible}}@media (max-width:480px){.controls button.play,.controls button.step-word{padding:0 9px;font-size:14px}.controls button.play{min-width:84px}}.problem-row:hover,a.card:hover,a.course-card:focus-visible,a.course-card:hover{transform:none;box-shadow:none;border-color:var(--text)}.site-footer .footer-links .button{min-height:24px;padding:4px 2px;border:0;background:none;color:var(--text-2);font-weight:500;text-decoration:underline;text-underline-offset:3px}.site-footer .footer-links .button:hover{color:var(--text)}.cpu h3,.lab-group-title,.mem-title,.sim>h3,.sql-view h2,.tool-groups h3{text-transform:none;letter-spacing:0}.sim>h3,.sql-view h2{font-family:var(--font-ui);font-size:.95rem;font-weight:700;color:var(--text)}.lab-group-title,.tool-groups h3{font-family:var(--font-head);color:var(--text)}.out-step{display:inline-grid;place-items:center;min-width:24px;min-height:24px;font-size:12px}.viz .controls{gap:4px;padding:6px}.viz .controls button{min-width:34px;min-height:34px;font-size:14px}.viz .controls button.play,.viz .controls button.step-word{padding:0 10px;font-size:14px}.viz .controls button.play{min-width:78px}.viz .controls input[type=range]{flex:1 1 60px;min-width:60px;height:28px}.viz .controls .step-label{min-width:0;padding:0 4px;font-weight:600;white-space:nowrap}.viz .controls select{min-height:34px;padding:2px 6px}@media (max-width:480px){.viz .controls .step-end{display:none}.viz .controls button.play,.viz .controls button.step-word{flex:1 1;min-width:0;min-height:44px}.viz .controls:after{content:"";order:2;flex-basis:100%;height:0}.viz .controls .step-label{order:3}.viz .controls input[type=range]{order:4;min-width:80px}.viz .controls>label{order:5}}.compiler-lang{border-radius:var(--radius)}.compiler-lang.active,button.compiler-lang.active{background:var(--marker);border-color:var(--marker);color:var(--on-marker)}.lesson-list .lesson-card h2{margin:0 0 4px;font-size:1.05rem}.course-logo{display:grid;place-items:center;border:1px solid var(--border);border-radius:14px;background:#f8f6f0;color:#1c3028}.course-logo svg{width:32px;height:32px}.course-logo-js{font-family:var(--font-head);font-size:11px;font-weight:800}.course-logo-letters{font-family:var(--font-code);font-size:.95rem;font-weight:800}.course-card.soon .course-logo{width:44px;height:44px}.course-card.soon .course-logo svg{width:26px;height:26px}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .course-logo{border-color:transparent;background:#ede9df}}:root[data-theme=dark] .course-logo{border-color:transparent}.button{border-radius:999px}.button.outline{border-color:var(--text);background:transparent;color:var(--text)}.button.outline:hover{background:var(--surface);border-color:var(--text)}.button.light{border-color:#f8f6f0;background:#f8f6f0;color:#1c3028}.button.light:hover{border-color:#ffffff;background:#ffffff}h1,h2,h3{font-weight:700;letter-spacing:-.005em}.site-header .container{max-width:1320px;min-height:72px;gap:12px}.logo{font-family:var(--font-inter),system-ui,sans-serif;font-size:1.3rem;font-weight:800;letter-spacing:-.02em;white-space:nowrap}.nav{gap:2px;margin-left:12px}.nav-button{position:relative;padding:8px 10px;border-radius:8px;font-weight:500;white-space:nowrap}.nav-button:hover{background:none;color:var(--brand-ink)}.nav-button.active{background:none;color:var(--text);font-weight:700}.nav-button.active:after{content:"";position:absolute;left:10px;right:10px;bottom:4px;height:2px;border-radius:2px;background:var(--orange)}.header-button{width:42px;min-height:42px;justify-content:center;padding:0;border-radius:50%;background:var(--surface)}.header-cta{min-height:42px;padding:6px 16px;font-size:.92rem;white-space:nowrap}.site-search{position:relative}.search-toggle{display:none}.search-form{position:relative;display:flex;align-items:center;gap:8px;width:210px;min-height:42px;padding:0 14px;border:1px solid var(--border);border-radius:999px;background:var(--surface);color:var(--text-2)}.search-form:focus-within{border-color:var(--brand-ink);box-shadow:0 0 0 3px color-mix(in srgb,var(--orange) 28%,transparent)}.search-form input{flex:1 1;min-width:0;padding:8px 0;border:0;outline:none;background:transparent;color:var(--text);font:inherit;font-size:.92rem}.search-form input::placeholder{color:var(--text-2);opacity:1}.search-note,.search-results{position:absolute;top:calc(100% + 8px);right:0;z-index:30;margin:0;border:1px solid var(--border);border-radius:14px;background:var(--surface);box-shadow:0 14px 34px rgb(0 0 0/.16);color:var(--text)}.search-results{width:min(420px,calc(100vw - 32px));max-height:70vh;overflow:auto;padding:6px;list-style:none}.search-results li{display:grid;grid-gap:2px;gap:2px;padding:8px 10px;border-radius:10px;cursor:pointer}.search-results li.active{background:var(--marker);color:var(--on-marker)}.search-title{font-weight:600;line-height:1.3}.search-kind{color:var(--text-2);font-size:.82rem}.search-results li.active .search-kind{color:var(--on-marker)}.search-note{width:min(320px,calc(100vw - 32px));padding:10px 14px;font-size:.9rem}.search-note[hidden],.search-results[hidden]{display:none}@media (max-width:1279px){.search-toggle{display:inline-flex}.search-form{display:none}.site-header .container{position:relative}.site-search{position:static}.site-search.open .search-form{display:flex;position:absolute;top:calc(100% + 8px);right:16px;z-index:31;width:min(400px,calc(100% - 32px));box-shadow:0 14px 34px rgb(0 0 0/.16)}.site-search.open .search-note,.site-search.open .search-results{left:0;right:0;width:auto}}@media (max-width:1023px){.site-header .container{flex-wrap:wrap;row-gap:0;min-height:60px}.logo{margin-right:auto}.nav{order:3;flex-basis:100%;margin:0;overflow-x:auto;border-top:1px solid var(--border);scrollbar-width:none}.nav::-webkit-scrollbar{display:none}.nav-button{flex:none}}@media (max-width:1150px){.header-cta{display:none}}.hero2{overflow:hidden;padding:48px 0 40px}.hero2-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.08fr);align-items:center;grid-gap:40px;gap:40px}.hero2 h1{margin:0}.hero2-big{display:block;font-size:clamp(2.5rem,5.4vw,4.3rem);line-height:1.04;letter-spacing:-.02em}.hero2-big .accent{color:var(--orange)}.hero2-sub{display:block;margin-top:14px;color:var(--text-2);font-family:var(--font-ui);font-size:1.05rem;font-weight:600;letter-spacing:0}.hero2-lead{max-width:34em;margin:18px 0 26px;font-size:1.12rem;line-height:1.55}.hero2 .hero-actions .button{min-height:50px;padding:10px 24px}.hero2-stats{display:flex;flex-wrap:wrap;margin:32px 0 0;padding:0;list-style:none}.hero2-stats li{display:flex;align-items:center;gap:12px;padding:0 22px;border-left:1px solid var(--border)}.hero2-stats li:first-child{padding-left:0;border-left:0}.band-stats li>span,.hero2-stats li>span{display:grid;color:var(--text-2);font-size:.9rem;line-height:1.25}.hero2-stats strong{color:var(--text);font-family:var(--font-head);font-size:1.6rem;line-height:1.1}.hero2-art{position:relative;padding:12px 0 0}.blob{position:absolute;z-index:0;border-radius:46% 54% 52% 48%/55% 45% 55% 45%}.blob.sage{top:-10px;left:-6%;width:46%;height:78%;background:#c9d6c6}.blob.peach{right:-4%;bottom:6%;width:40%;height:62%;background:#f1d2bb}.laptop{position:relative;z-index:1;margin:0 4%}.laptop-screen{--bg:#0f1914;--surface:#14211b;--surface-2:#1d2f27;--border:#2c4137;--text:#ede9df;--text-2:#bdb6a6;--accent:#eba982;--focus:#eba982;--brand:#ede9df;--on-brand:#1c3028;--code-keyword:#d8b4fe;--code-string:#86efac;--code-number:#fbbf24;--code-comment:#a3a39a;--code-function:#93c5fd;--viz-current-bg:#3d3200;--viz-current-fg:#fcd34d;--viz-current-edge:#fbbf24;--viz-next-bg:#172554;--viz-next-fg:#93c5fd;--viz-changed-bg:#14532d;--viz-changed-fg:#bbf7d0;--viz-new-bg:#0c4a6e;--viz-new-fg:#bae6fd;--viz-output-bg:#312e81;--viz-output-fg:#c7d2fe;overflow:hidden;border:solid #222b27;border-width:10px 10px 14px;border-radius:16px 16px 6px 6px;background:var(--surface);color:var(--text);box-shadow:0 24px 50px rgb(28 48 40/.28)}.laptop-bar{display:flex;align-items:center;gap:10px;padding:8px 12px;border-bottom:1px solid var(--border);background:#101b16;font-size:.85rem}.laptop-dots{display:inline-flex;gap:6px}.laptop-dots i{width:10px;height:10px;border-radius:50%;background:#c16b3c}.laptop-dots i:nth-child(2){background:#e3b04b}.laptop-dots i:nth-child(3){background:#7fb38f}.laptop-file{color:var(--text-2);font-family:var(--font-code)}.laptop-lang{margin-left:auto;padding:2px 10px;border-radius:999px;background:#237a4b;color:#ffffff;font-weight:600}.laptop .demo{border:0;border-radius:0}.laptop .demo .button{background:var(--surface-2)}.laptop-base{position:relative;height:16px;margin:0 -7%;border-radius:2px 2px 16px 16px;background:#c9ccc6;box-shadow:0 10px 18px rgb(28 48 40/.2)}.laptop-base:before{content:"";position:absolute;top:0;left:50%;width:18%;height:6px;border-radius:0 0 8px 8px;background:#aeb2ab;transform:translateX(-50%)}.hero2-art .demo-caption{position:relative;z-index:1;margin:18px 4% 0;text-align:center}@media (max-width:1023px){.hero2{padding-top:28px}.hero2-grid{grid-template-columns:minmax(0,1fr);gap:28px}}@media (max-width:640px){.hero2-stats li{padding:0 14px}.hero2-stats strong{font-size:1.35rem}.hero2-stats{flex-wrap:nowrap}.hero2-stats svg{display:none}.laptop{margin:0}.laptop-base{margin:0 -3%}}.rule{display:block;width:40px;height:3px;border-radius:2px;background:var(--orange)}.popular-panel{display:grid;grid-template-columns:250px minmax(0,1fr);align-items:center;grid-gap:28px;gap:28px;margin-top:16px;padding:32px;border-radius:24px;background:color-mix(in srgb,var(--orange) 12%,var(--surface))}.popular-intro h2{margin:16px 0 10px;font-size:clamp(1.7rem,3vw,2.2rem);line-height:1.15}.popular-intro p{margin:0 0 22px;color:var(--text)}.popular-cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-gap:16px;gap:16px}@media (max-width:1180px){.popular-panel{grid-template-columns:minmax(0,1fr)}}@media (max-width:900px){.popular-cards{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:560px){.popular-panel{padding:22px 16px;border-radius:18px}.popular-cards{grid-template-columns:minmax(0,1fr)}}.course-card{gap:10px;padding:20px;border-radius:16px;box-shadow:0 1px 2px rgb(28 48 40/.06),0 8px 22px rgb(28 48 40/.06)}.course-card.soon{box-shadow:none}.course-card-top{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}.course-logo{width:52px;height:52px;border-color:transparent;background:transparent}.course-logo svg{width:44px;height:44px}.course-card.soon .course-logo svg{width:32px;height:32px}.course-card h3{margin:4px 0 0;font-size:1.15rem;line-height:1.25}.popular-cards .course-card h3{font-size:1.05rem}.level-pill{flex:none;padding:3px 10px;border-radius:999px;font-size:.75rem;font-weight:600;line-height:1.4}.level-pill.beginner{background:#e1eddc;color:#24502c}.level-pill.intermediate{background:#f3e6c4;color:#5f4208}.level-pill.advanced{background:#f6dccb;color:#803d1b}.course-card-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:auto;padding-top:6px}.course-card-foot .course-meta{display:flex;align-items:flex-start;gap:6px;min-width:0;margin:0;padding:0}.course-card-foot .course-meta svg{flex:none;margin-top:3px}.course-go{display:grid;flex:none;place-items:center;width:34px;height:34px;border:1px solid var(--border);border-radius:50%;color:var(--text);font-weight:700;transition:background .15s,color .15s,border-color .15s}a.course-card:focus-visible .course-go,a.course-card:hover .course-go{border-color:var(--brand);background:var(--brand);color:var(--on-brand)}.kicker2{display:inline-flex;align-items:center;gap:10px;margin:0 0 6px;color:var(--text);font-weight:600}.kicker2 .rule{width:28px}.section-head h2{font-size:clamp(1.7rem,3.2vw,2.3rem);line-height:1.15}.tool-cards2{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-gap:16px;gap:16px}.tool-card2{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-gap:12px 8px;gap:12px 8px;padding:20px;border:1px solid var(--border);border-radius:16px;background:var(--surface);box-shadow:0 1px 2px rgb(28 48 40/.06),0 8px 22px rgb(28 48 40/.06);color:var(--text);text-decoration:none}.tool-card2:focus-visible,.tool-card2:hover{border-color:var(--text)}.tool-icon{display:grid;place-items:center;width:46px;height:46px;border-radius:50%;color:#ffffff}.tool-icon.forest{background:#1c3028}.tool-icon.orange{background:#a1532a}.tool-text{display:grid;grid-column:1;grid-gap:4px;gap:4px;align-content:start}.tool-text strong{font-family:var(--font-head);font-size:1.05rem;line-height:1.25}.tool-text>span{color:var(--text-2);font-size:.92rem}.tool-text .tool-go{margin-top:6px;color:var(--brand-ink);font-weight:600}.tool-art{grid-column:2;grid-row:1/span 2;align-self:center;width:84px;height:auto;padding:8px;border-radius:14px;background:#f3efe6}@media (max-width:1180px){.tool-cards2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:560px){.tool-cards2{grid-template-columns:minmax(0,1fr)}.tool-art{width:84px}}.community-band{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;grid-gap:24px 32px;gap:24px 32px;padding:28px 32px;border-radius:20px;background:#1c3028;color:#ede9df;--focus:#eba982}.section .community-band h2{margin:0;color:#ffffff;font-size:1.45rem;line-height:1.25}.band-stats{display:flex;flex-wrap:wrap;margin:0;padding:0;list-style:none}.band-stats li{display:flex;align-items:center;gap:12px;padding:4px 24px;border-left:1px solid rgb(237 233 223/.25)}.band-stats li>span{color:#c4bcaa}.band-stats strong{color:#ffffff;font-family:var(--font-head);font-size:1.35rem;line-height:1.15}@media (max-width:1023px){.community-band{grid-template-columns:minmax(0,1fr);padding:24px 20px}.band-stats{gap:14px 0}.band-stats li:first-child{padding-left:0;border-left:0}}@media (max-width:560px){.band-stats{display:grid}.band-stats li{padding:0;border-left:0}}.site-footer{--focus:#eba982;margin-top:56px;padding:48px 0 0;border-top:0;background:#1c3028;color:#c4bcaa;font-size:.95rem}.footer-grid{display:grid;grid-template-columns:minmax(0,1.5fr) repeat(3,minmax(0,1fr));grid-gap:32px;gap:32px}.site-footer .logo{color:#ffffff}.site-footer .logo:before{width:36px;height:34px;border-radius:8px;background-color:#f8f6f0;background-size:82%;vertical-align:-10px}.footer-brand p{margin:10px 0 0}.footer-tagline{color:#ffffff;font-size:1.05rem}.footer-social{display:inline-grid;place-items:center;width:42px;height:42px;margin-top:16px;border-radius:50%;background:rgb(255 255 255/.1);color:#ffffff}.footer-col h2{margin:0 0 12px;color:#ffffff;font-size:1.05rem}.footer-col ul{display:grid;grid-gap:6px;gap:6px;margin:0;padding:0;list-style:none}.footer-col a{display:inline-block;padding:2px 0;color:#ede9df;text-decoration:none}.footer-col a:hover{color:#ffffff;text-decoration:underline;text-underline-offset:3px}.footer-bottom{display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px 24px;margin-top:40px;padding-top:20px;padding-bottom:24px;border-top:1px solid rgb(237 233 223/.15);font-size:.875rem}.footer-bottom p{margin:0}@media (max-width:900px){.footer-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.footer-brand{grid-column:1/-1}}@media (max-width:480px){.footer-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .blob.sage{background:#22382e}:root:not([data-theme=light]) .blob.peach{background:#4a2e20}:root:not([data-theme=light]) .laptop-base{background:#59605b}:root:not([data-theme=light]) .laptop-base:before{background:#474d48}:root:not([data-theme=light]) .course-logo{background:#ede9df}:root:not([data-theme=light]) .course-logo svg{width:36px;height:36px}:root:not([data-theme=light]) .level-pill.beginner{background:#23402c;color:#bfe5c5}:root:not([data-theme=light]) .level-pill.intermediate{background:#4a3a14;color:#f3d58a}:root:not([data-theme=light]) .level-pill.advanced{background:#5a3523;color:#f6c9ad}:root:not([data-theme=light]) .tool-icon.forest{background:#3a5246}:root:not([data-theme=light]) .community-band{border:1px solid #3a5246;background:#25392f}:root:not([data-theme=light]) .site-footer{border-top:1px solid #2a3d33;background:#0e1813}}:root[data-theme=dark] .blob.sage{background:#22382e}:root[data-theme=dark] .blob.peach{background:#4a2e20}:root[data-theme=dark] .laptop-base{background:#59605b}:root[data-theme=dark] .laptop-base:before{background:#474d48}:root[data-theme=dark] .course-logo{background:#ede9df}:root[data-theme=dark] .course-logo svg{width:36px;height:36px}:root[data-theme=dark] .level-pill.beginner{background:#23402c;color:#bfe5c5}:root[data-theme=dark] .level-pill.intermediate{background:#4a3a14;color:#f3d58a}:root[data-theme=dark] .level-pill.advanced{background:#5a3523;color:#f6c9ad}:root[data-theme=dark] .tool-icon.forest{background:#3a5246}:root[data-theme=dark] .community-band{border:1px solid #3a5246;background:#25392f}:root[data-theme=dark] .site-footer{border-top:1px solid #2a3d33;background:#0e1813}.quiz-covers h2{margin:0 0 12px;font-size:1.4rem}.quiz-covers ol{margin:0;padding-left:1.4em;columns:22rem 2;column-gap:40px}.quiz-covers li{page-break-inside:avoid;break-inside:avoid;padding:3px 0}.quiz-covers .muted{color:var(--text-2)}.tool-about .lesson-summary{display:block;color:var(--text-2);font-size:.93rem}