@font-face{font-family:Archivo Variable;font-style:normal;font-display:swap;font-weight:100 900;font-stretch:62% 125%;src:url(/assets/archivo-vietnamese-standard-normal-rJmnGBSt.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Archivo Variable;font-style:normal;font-display:swap;font-weight:100 900;font-stretch:62% 125%;src:url(/assets/archivo-latin-ext-standard-normal-7khWdh9v.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Archivo Variable;font-style:normal;font-display:swap;font-weight:100 900;font-stretch:62% 125%;src:url(/assets/archivo-latin-standard-normal-DY7AcnAa.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-cyrillic-ext-400-normal-xuaO2J-f.woff2) format("woff2"),url(/assets/ibm-plex-mono-cyrillic-ext-400-normal-DMdlQ8Kv.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-cyrillic-400-normal-BSMlKf0J.woff2) format("woff2"),url(/assets/ibm-plex-mono-cyrillic-400-normal-CEL4l2ZJ.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-vietnamese-400-normal-BulugwFq.woff2) format("woff2"),url(/assets/ibm-plex-mono-vietnamese-400-normal-DDuiU_S-.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-latin-ext-400-normal-BmRBH3aV.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-ext-400-normal-D3D2R8hC.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-400-normal-CvHOgSBP.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-cyrillic-ext-500-normal-BqneJy0T.woff2) format("woff2"),url(/assets/ibm-plex-mono-cyrillic-ext-500-normal-BIfNGwUT.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-cyrillic-500-normal-Bq9vWWag.woff2) format("woff2"),url(/assets/ibm-plex-mono-cyrillic-500-normal-Ael50iVv.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-vietnamese-500-normal-DZ4AoWbu.woff2) format("woff2"),url(/assets/ibm-plex-mono-vietnamese-500-normal-C8zxqsMH.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-latin-ext-500-normal-CAhNIIs5.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-ext-500-normal-CZ70TYgx.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-latin-500-normal-DSY6xOcd.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-500-normal-CB9ihrfo.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-mono-cyrillic-ext-600-normal-V-xxqcpd.woff2) format("woff2"),url(/assets/ibm-plex-mono-cyrillic-ext-600-normal-9HEixskS.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-mono-cyrillic-600-normal-CTOM6hUh.woff2) format("woff2"),url(/assets/ibm-plex-mono-cyrillic-600-normal-fLZuRloM.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-mono-vietnamese-600-normal-D2EvbN8M.woff2) format("woff2"),url(/assets/ibm-plex-mono-vietnamese-600-normal-iLQfcSjf.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-mono-latin-ext-600-normal-D38SheWl.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-ext-600-normal-DmB0ttJJ.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-mono-latin-600-normal-BgSNZQsw.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-600-normal-DWFSQ4vo.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:"Instrument Serif";font-style:normal;font-display:swap;font-weight:400;src:url(/assets/instrument-serif-latin-ext-400-normal-C2je3j2s.woff2) format("woff2"),url(/assets/instrument-serif-latin-ext-400-normal-CFCUzsTy.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:"Instrument Serif";font-style:normal;font-display:swap;font-weight:400;src:url(/assets/instrument-serif-latin-400-normal-DnYpCC2O.woff2) format("woff2"),url(/assets/instrument-serif-latin-400-normal-BVbkICAY.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:"Instrument Serif";font-style:italic;font-display:swap;font-weight:400;src:url(/assets/instrument-serif-latin-ext-400-italic-C9HzH3YL.woff2) format("woff2"),url(/assets/instrument-serif-latin-ext-400-italic-D7-lnxEk.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:"Instrument Serif";font-style:italic;font-display:swap;font-weight:400;src:url(/assets/instrument-serif-latin-400-italic-DKMiL14s.woff2) format("woff2"),url(/assets/instrument-serif-latin-400-italic-u__WvvIK.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{color-scheme:light;--paper: #f6f5ef;--ink: #171b1a;--blue: #234bef;--lime: #d5eb7a;--bg: var(--paper);--panel: #ffffff;--panel-2: #eef1ec;--line: #d4d7cd;--text: var(--ink);--muted: #676d68;--current: #995a00;--current-dim: #ffe1a0;--found: #08734c;--found-dim: #c8efdc;--mismatch: #c43b43;--mismatch-dim: #f3d4d6;--visited: #e2e7df;--visited-text: #6b786b;--current-text: #8a5100;--current-text-strong: #874f00;--current-text-deep: #7a4600;--mismatch-text: #a82f37;--mismatch-text-strong: #9d2f36;--cell-visited-text: #58655a;--visited-strong: #b8bfb3;--island-0-text: #006b66;--edge: #8a908a;--pointer-a: #2459d6;--pointer-b: #b52c79;--pointer-c: #8141b8;--island-0: #008780;--island-1: #7850b5;--island-2: #c53e65;--island-3: #607f09;--growth-o1: #087f65;--growth-log: #a17400;--growth-n: var(--blue);--growth-nlogn: #d05236;--growth-n2: #8b4bba;--growth-2n: #007f93;--growth-grid: #e4e8e3;--growth-rule: #e2e5df;--growth-tick: #737c75;--code-kw: #783caf;--code-str: #267647;--code-num: #b24a23;--code-comment: #70806e;--code-plain: #263c2e;--code-comment-strong: #58665a;--code-str-on-lime: #1f653c;--code-num-on-lime: #9a3d1a;--map-canvas: #eff0e7;--map-dot: #bdc4b6;--map-node-line: #9da592;--map-node-shade: #dce1d2;--map-selected-shade: #1738b6;--map-node-track: #d8dfd0;--map-complete-fill: #087b55;--map-edge: #68775e;--map-done: #168367;--map-controls-shadow: #0001;--map-controls-hover: #e0e4d7;--map-topic-track: #dce2d6;--map-diff: #e5e9dd;--map-problem-done: #eaf0e4;--map-problem-done-text: #748072;--display: "Archivo Variable", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--body: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--mono: "IBM Plex Mono", ui-monospace, "SF Mono", "Cascadia Code", Menlo, Consolas, "Liberation Mono", monospace;--serif: "Instrument Serif", Georgia, serif;--cell-w: 44px;--cell-gap: 6px;--t-fast: .16s;--t-med: .32s;--na-intervals-fill: #c8b5ff;--na-intervals-edge: #7046bd;--na-greedy-fill: #ffce80;--na-greedy-edge: #a96608;--na-topological-sort-fill: #9bd7ff;--na-topological-sort-edge: #236d9d;--na-trie-fill: #e2b5f4;--na-trie-edge: #8e43a9;--na-dp-2d-fill: #9ce3d6;--na-dp-2d-edge: #187e6c;--na-bits-fill: #ffd297;--na-bits-edge: #a16a16;--na-merge-sort-fill: #b7c6ff;--na-merge-sort-edge: #4c5ca9;--na-monotonic-stack-fill: #ffb9b0;--na-monotonic-stack-edge: #ad5045;--na-done-fill: #71dbc0;--na-done-edge: #137d62;--na-active-fill: #f2dd74;--na-active-edge: #8e6712;--na-rejected-fill: #f2b1b4;--na-rejected-edge: #ad4653;--na-text: #18324c;--na-mini-bg: #fff;--na-mini-line: #aebed0;--na-on-blue-text: #f5f8ff;--na-on-blue-edge: #a8beff;--na-on-blue-fill: #4265ed;--na-on-blue-done: #8be8d5;--na-on-blue-active: #e3f28b;--na-on-blue-rejected-fill: #6d80c4;--na-on-blue-rejected-edge: #b6c4ed;--na-on-blue-lit-text: #142744;--lesson-ink: #19334e;--lesson-ink-soft: #455b73;--lesson-tint: #e3eaf3;--lesson-badge-bg: #dce8fc;--lesson-badge-line: #5077af;--lesson-badge-text: #163f7b;--lesson-node-line: #526d8e;--lesson-node-bg: #e0eafa;--lesson-node-text: #123251;--lesson-edge: #536b87;--bfs-axis: #3d536b;--bfs-swatch-line: #536a80;--bfs-queue-empty: #546c83;--stk-input-line: #7d91aa;--stk-index: #526881;--stk-match-bg: #c5ebd7;--stk-match-line: #27825b;--stk-match-text: #155c3c;--stk-banner-bg: #e1ebfc;--stk-well-line: #6b8099;--stk-well-fill: #edf2f9;--stk-well-label: #3d536a;--stk-well-empty: #53677e;--stk-frame-bg: #d9e4f4;--stk-frame-line: #59769c;--stk-top-line: #153f9f;--stk-exit-bg: #178455;--stk-exit-line: #08623e;--stk-pair-text: #075635;--stk-note: #4d6279;--stk-outcome-bg: #edf3f8;--stk-outcome-dot: #8293a6;--heap-input-line: #637b99;--heap-input-bg: #e2eaf5;--heap-input-active-bg: #ffdda0;--heap-readout-bg: #edf2fa;--heap-readout-line: #7c91ad;--heap-empty-line: #8a9bb0;--heap-empty-bg: #f3f6fb;--heap-edge-hot: #a16100;--heap-compare-bg: #ffe0a0;--heap-compare-line: #955600;--heap-swap-bg: #c0ebd4;--heap-swap-line: #006b45;--heap-swap-text: #064a34;--heap-chip-bg: #ffdf9a;--heap-chip-text: #704000;--uf-root-bg: #d5e8b3;--uf-root-line: #466407;--uf-root-text: #263c00;--uf-edge-merged: #006c50;--uf-edge-check: #a75c00;--uf-pair-line: #63758b;--uf-pair-current-bg: #ffdb8d;--uf-pair-current-line: #945500;--uf-pair-current-text: #674000;--uf-pair-merged-bg: #b6e6cc;--uf-pair-merged-text: #084e35;--uf-pair-absent-bg: #f2f4f7;--uf-pair-absent-text: #52647b;--uf-pair-redundant-bg: #d7deea;--uf-pair-redundant-text: #354b64}.stage-canvas{--bg: var(--panel);--panel-2: #e3eaf3;--line: #71859c;--muted: #40536a;--visited: #cbd5e0;--visited-text: #52647b;--island-3: #506e04}.on-blue{--panel: #234bef;--panel-2: #3b5bea;--line: #93a8f0;--text: #ffffff;--muted: #d7def9;--current: #d5eb7a;--current-dim: #4d6cf0;--found: #a6dccf;--found-dim: #3b5bea;--mismatch: #ffb4a8;--mismatch-dim: #5468d8;--visited: #7189de;--visited-text: #e4e9ff;--pointer-a: #d5eb7a;--pointer-b: #abd9d4;--pointer-c: #becbee;--island-0: #abd9d4;--island-1: #becbee;--island-2: #a8ccef;--island-3: #d5eb7a}.review-glyph{--bg: #ffffff;--panel-2: #e3eaf3;--line: #71859c;--text: #19251e;--muted: #40536a;--mismatch-dim: #d6455020;--visited: #cbd5e0;--visited-text: #52647b;--island-3: #506e04}.feature .motion-root{--bg: #ffffff;--panel: #ffffff;--muted: #d7dffa;--current-dim: #d5eb7a;--found-dim: #a6dccf;--visited-text: #ffffff}:where(.on-blue) .new-svg text{fill:var(--na-on-blue-text)}:where(.on-blue) .new-svg line{stroke:var(--na-on-blue-edge)}:where(.on-blue) .new-svg rect,:where(.on-blue) .new-svg circle{fill:var(--na-on-blue-fill);stroke:var(--na-on-blue-edge)}:where(.on-blue) .new-svg [fill=none]{fill:none}:where(.on-blue) .new-svg [fill="#d2eee2"],:where(.on-blue) .new-svg [fill="#ccebdd"]{fill:var(--na-on-blue-done);stroke:var(--na-on-blue-done)}:where(.on-blue) .new-svg [fill="#e5edff"]{fill:var(--na-on-blue-active);stroke:var(--na-on-blue-active)}:where(.on-blue) .new-svg [fill="#f0e3e5"]{fill:var(--na-on-blue-rejected-fill);stroke:var(--na-on-blue-rejected-edge)}:where(.on-blue) .new-svg [fill="#d2eee2"]+text,:where(.on-blue) .new-svg [fill="#ccebdd"]+text,:where(.on-blue) .new-svg [fill="#e5edff"]+text{fill:var(--na-on-blue-lit-text)}:where(.on-blue) .new-svg [stroke="#2459d6"]{stroke:var(--na-on-blue-active)}:where(.on-blue) .new-svg [stroke="#087f62"]{stroke:var(--na-on-blue-done)}:where(.on-blue) .new-svg [stroke="#a26000"]{stroke:var(--na-on-blue-active)}:where(.on-blue) .new-svg [fill="#087f62"]{fill:var(--na-on-blue-done)}:where(.on-blue) .motion-root .new-svg[data-algorithm] [stroke="#2459d6"]{stroke:var(--na-on-blue-active);stroke-width:3.5}:where(.on-blue) .motion-root .new-svg[data-algorithm] [fill="#e5edff"]{fill:var(--na-on-blue-active);stroke:var(--na-on-blue-active)}:where(.on-blue) .motion-root .new-svg[data-algorithm] [fill="#d2eee2"],:where(.on-blue) .motion-root .new-svg[data-algorithm] [fill="#ccebdd"]{fill:var(--na-on-blue-done);stroke:var(--na-on-blue-done)}:where(.on-blue) .motion-root .new-svg line{stroke:var(--line);stroke-width:1.5}:where(.on-blue) .motion-root .new-svg[data-algorithm] rect,:where(.on-blue) .motion-root .new-svg[data-algorithm] circle{stroke-width:1.5}:where(.on-blue) .motion-root .new-svg[data-algorithm] [stroke="#2459d6"]{stroke:var(--current);stroke-width:2.5}:where(.on-blue) .motion-root .new-svg[data-algorithm] [fill="#e5edff"]{fill:var(--current);stroke:var(--current)}:where(.on-blue) .motion-root .new-svg[data-algorithm] [fill="#d2eee2"],:where(.on-blue) .motion-root .new-svg[data-algorithm] [fill="#ccebdd"]{fill:var(--found);stroke:var(--found)}*{box-sizing:border-box;margin:0}body{background:var(--bg);color:var(--text);font-family:var(--body);font-size:16px;line-height:1.55}.app{max-width:1240px;margin:0 auto;padding:20px 24px 64px}.app-wide{max-width:1440px;padding:20px 64px 64px}@media(max-width:900px){.app-wide{padding:20px 28px 64px}}@media(max-width:620px){.app-wide{padding:20px 20px 64px}}h1 em{font-family:var(--serif);font-style:italic;font-weight:400;letter-spacing:0}button:focus-visible,a:focus-visible,input:focus-visible,summary:focus-visible{outline:3px solid var(--blue);outline-offset:4px}.header{display:flex;align-items:center;flex-wrap:wrap;gap:20px;padding:18px 0;border-bottom:1px solid var(--ink)}.wordmark{font-family:var(--display);font-weight:800;font-stretch:100%;font-size:1.3rem;letter-spacing:-.02em;white-space:nowrap}a.wordmark{color:inherit;text-decoration:none;display:inline-flex;align-items:center}.brandmark{flex-shrink:0;margin-right:9px}.wordmark-dot{color:var(--blue)}.nav-pills{display:flex;flex-wrap:wrap;gap:8px}.nav-pill{display:inline-block;padding:7px 4px;border-radius:0;border:0;border-bottom:3px solid transparent;background:transparent;color:var(--ink);font-size:.8rem;text-decoration:none;transition:border-color var(--t-fast),color var(--t-fast),background var(--t-fast)}.nav-pill:hover{color:var(--ink);border-bottom-color:var(--ink)}.nav-pill-active{color:var(--blue);border-bottom-color:var(--blue)}.nav-menu-summary{border:1px solid var(--ink);background:var(--ink);color:var(--paper);padding:7px 12px}.nav-menu-summary:hover{color:var(--paper)}.nav-menu{position:relative}.nav-menu-summary{list-style:none;cursor:pointer;-webkit-user-select:none;user-select:none}.nav-menu-summary::-webkit-details-marker{display:none}.nav-panel{position:absolute;top:calc(100% + 8px);left:0;z-index:40;display:flex;gap:22px;padding:16px 18px;border-radius:0;border:1px solid var(--ink);background:var(--panel);box-shadow:0 16px 40px color-mix(in srgb,var(--ink) 12%,transparent);min-width:460px;flex-wrap:wrap;max-width:min(860px,calc(100vw - 48px))}.nav-panel-group{display:flex;flex-direction:column;gap:2px;min-width:190px}.nav-panel-label{font-family:var(--mono);font-size:.62rem;letter-spacing:.1em;text-transform:uppercase;color:var(--visited-text);padding:2px 8px 6px}.nav-panel-link{color:var(--muted);text-decoration:none;font-size:.85rem;padding:4px 8px;border-radius:0}.nav-panel-link:hover{color:var(--text);background:var(--panel-2)}.nav-panel-link-active{color:var(--blue);background:var(--panel-2)}@media(max-width:700px){.nav-panel{min-width:0}}@media(max-width:560px){.nav-panel{min-width:0;flex-direction:column}}.home{line-height:normal}.home dialog{margin:auto}.home .note,.home .empty,.home .compare-item p,.home .compare-item h3{margin:1em 0}.home .compare-item h4{margin-bottom:1.33em}.home h1,.home h2,.home h3{font-family:var(--display)}.home button,.home input,.home a{font:inherit}.home button,.home a,.home input{touch-action:manipulation}.home button,.home a{color:inherit}.home a{text-decoration:none}.home button{cursor:pointer}.home button:focus-visible,.home a:focus-visible,.home input:focus-visible,.home summary:focus-visible{outline:3px solid var(--blue);outline-offset:4px}.home .eyebrow{font:11px var(--mono);letter-spacing:1.5px;text-transform:uppercase;display:flex;align-items:center;gap:12px}.home .eyebrow:before{content:"";width:24px;height:2px;background:currentColor}.home .hero{display:grid;grid-template-columns:1.15fr 1fr;gap:60px;padding:56px 0 48px;align-items:center}.home h1{font-size:clamp(45px,5.5vw,78px);letter-spacing:-4px;line-height:1.01;font-weight:500;margin:25px 0}.home h1 em{font-family:var(--serif);font-weight:400}.home p{line-height:1.6}.home .lede{color:var(--muted);max-width:450px;font-size:16px;line-height:1.7}.home .hero-links{display:flex;gap:26px;align-items:center;margin-top:28px}.home .primary{background:var(--ink);color:var(--panel);border:1px solid var(--ink);padding:14px 20px;font-size:13px;display:inline-block}.home .textlink{font-size:13px;border-bottom:1px solid;padding-bottom:4px}.home .feature{background:var(--blue);color:var(--text);min-height:318px;padding:26px 28px;position:relative;overflow:hidden}.home .feature-top{display:flex;justify-content:space-between;font:10px var(--mono);letter-spacing:1px}.home .feature .chip{border:1px solid color-mix(in srgb,var(--text) 31%,transparent);padding:4px 7px}.home .feature-bottom{display:flex;justify-content:space-between;align-items:end;border-top:1px solid color-mix(in srgb,var(--text) 31%,transparent);padding-top:18px}.home .feature h3{font-size:21px;font-weight:400;margin:0 0 7px}.home .feature p{font-size:12px;margin:0;opacity:.75}.home .demo-next{border:1px solid color-mix(in srgb,var(--text) 44%,transparent);background:transparent;color:var(--text);width:40px;height:40px;font-size:22px}.home .strip{display:flex;border-top:1px solid var(--line);border-bottom:1px solid var(--ink);padding:18px 0;gap:45px;font:11px var(--mono);color:var(--muted)}.home .strip strong{font:22px var(--body);color:var(--ink);margin-right:10px}.home .strip .end{margin-left:auto;display:flex;align-items:center}.home .catalog{padding:42px 0}.home .section-head{display:flex;align-items:end;justify-content:space-between;margin-bottom:25px}.home h2{font-size:31px;letter-spacing:-1px;font-weight:500;margin:0}.home .section-head p{font:12px var(--mono);color:var(--muted);margin:0}.home .tools{display:flex;justify-content:space-between;gap:20px;align-items:center;padding-bottom:22px;border-bottom:1px solid var(--ink)}.home .filters{display:flex;gap:7px;flex-wrap:wrap}.home .filter{padding:9px 13px;background:transparent;border:1px solid var(--line);font-size:12px}.home .filter.active{background:var(--ink);color:var(--panel);border-color:var(--ink)}.home .search{position:relative}.home .search input{width:220px;padding:10px 12px;background:transparent;border:1px solid var(--line);font-size:12px}.home .grid{display:grid;grid-template-columns:repeat(3,1fr);gap:0}.home .card{padding:24px;border-bottom:1px solid var(--line);border-right:1px solid var(--line);position:relative;display:flex;flex-direction:column;min-height:300px}.home .card:nth-child(3n){border-right:0}.home .card:nth-child(3n+1){padding-left:0}.home .card:nth-child(3n){padding-right:0}.home .card-top{display:flex;justify-content:space-between;align-items:center}.home .num{font:10px var(--mono);color:var(--muted)}.home .compare{font:10px var(--mono);border:0;background:transparent;padding:8px}.home .compare[aria-pressed=true]{background:var(--blue);color:var(--panel)}.home .glyph{height:78px;display:flex;align-items:center}.home .card h3{font-size:23px;font-weight:500;letter-spacing:-.8px;margin:5px 0 10px}.home .card p{font-size:13px;color:var(--muted);margin:0 0 20px;max-width:320px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.home .card-foot{margin-top:auto;display:flex;align-items:center;justify-content:space-between}.home .complexity{font:11px var(--mono);border:1px solid var(--line);padding:5px 7px}.home .open-link{font-size:12px;color:var(--blue)}.home .empty{padding:50px 0;color:var(--muted)}.home-footer{border-top:1px solid var(--ink);display:flex;justify-content:space-between;padding:25px 0 95px;font:10px var(--mono);color:var(--muted);line-height:1.8}.home .tray{position:fixed;bottom:24px;left:50%;transform:translate(-50%);background:var(--ink);color:var(--panel);box-shadow:0 8px 40px color-mix(in srgb,var(--ink) 20%,transparent);padding:13px 16px;display:flex;align-items:center;gap:24px;z-index:10;font-size:13px}.home .tray button{background:var(--lime);color:var(--ink);border:0;padding:11px 16px;font-size:12px}.home .tray button.clear{background:none;color:var(--panel);padding:6px}.home .tray[hidden]{display:none}.home dialog{max-width:1050px;width:90%;border:1px solid var(--ink);padding:30px;background:var(--paper)}.home dialog::backdrop{background:color-mix(in srgb,var(--ink) 67%,transparent)}.home .dialog-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:28px}.home .close{background:none;border:1px solid var(--line);padding:8px 12px}.home .compare-grid{display:grid;gap:24px}.home .compare-item{border-top:3px solid var(--blue);padding-top:20px}.home .compare-item h3{font-size:25px;font-weight:500}.home .compare-item h4{font:10px var(--mono);color:var(--muted);letter-spacing:1px;margin-top:25px}.home .compare-item p{font-size:14px}.home .note{font:11px/1.7 var(--mono);color:var(--muted)}@media(min-width:1500px){.home .hero{gap:100px}}@media(max-width:900px){.home .hero{gap:30px}.home h1{letter-spacing:-2.5px}.home .hero{grid-template-columns:1fr 1fr}.home .feature{padding:20px;min-height:300px}.home .grid{grid-template-columns:repeat(2,1fr)}.home .card:nth-child(n){padding:22px;border-right:1px solid var(--line)}.home .card:nth-child(2n){border-right:0}.home .tools{align-items:start;flex-direction:column}.home .search,.home .search input{width:100%}}@media(max-width:620px){.home .hero{grid-template-columns:1fr;padding:35px 0 25px;gap:30px}.home h1{font-size:53px}.home .hero .lede{font-size:14px}.home .hero-links{margin-top:22px}.home .feature{min-height:285px}.home .strip{gap:17px}.home .strip strong{font-size:18px}.home .strip .end{display:none}.home .strip{font-size:9px}.home .catalog{padding-top:30px}.home .section-head h2{font-size:26px}.home .section-head p{font-size:10px}.home .filter{padding:8px 10px;font-size:11px}.home .grid{grid-template-columns:1fr}.home .card:nth-child(n){border-right:0;padding:22px 0;min-height:260px}.home .card p{max-width:none}.home .glyph{height:70px}.home .tray{bottom:12px;width:calc(100% - 24px);gap:10px;justify-content:space-between;font-size:11px}.home .tray button{padding:10px}.home .compare-grid{grid-template-columns:1fr!important}.home-footer{gap:25px}.home .feature h3{font-size:20px}}.home .motion-host{width:100%;height:100%;min-width:0}.home .glyph{height:125px;margin:12px 0;max-width:230px}.home .feature{border:1px solid var(--blue);min-height:360px}.home .feature-animation{display:block;height:195px;margin:16px 0}.home .feature-animation .motion-host{max-width:420px;margin:auto}.home .feature-bottom{align-items:center;gap:15px}.home .feature .demo-next{flex-shrink:0}.home .feature p{opacity:1}.home .feature-lesson{display:inline-block;font-size:12px;margin-top:12px}.home .feature{background:var(--blue);color:var(--text);border-color:var(--blue)}.home .feature-top,.home .feature .chip,.home .feature-lesson{color:var(--text)}.home .feature .chip{border-color:color-mix(in srgb,var(--text) 44%,transparent)}.home .feature-bottom{border-color:color-mix(in srgb,var(--text) 33%,transparent)}.home .feature p{color:color-mix(in srgb,var(--text) 88%,var(--blue))}.home .feature .demo-next{color:var(--text);border-color:color-mix(in srgb,var(--text) 50%,transparent)}.home .feature .demo-next:hover{background:color-mix(in srgb,var(--text) 13%,transparent)}.home .feature a:focus-visible,.home .feature button:focus-visible{outline-color:var(--lime)}.home .motion-host{display:block}.home .motion-root{margin:0;padding:0;border:0;background:transparent;width:100%;height:100%;min-height:0;display:flex;align-items:center;justify-content:flex-start;overflow:hidden}.home .motion-root .dash-glyph{width:100%;height:100%;max-width:100%;justify-content:center}.home .motion-root .dash-glyph svg{width:100%;height:100%;max-width:none}.home .motion-root>.new-svg{height:100%;width:100%;max-height:none}.home .motion-root.offscreen *{animation-play-state:paused!important}.home .feature .fixed-preview-window rect{fill:none;stroke-width:1}.dash-prog{display:flex;align-items:center;gap:10px;max-width:320px;margin:0 0 20px}.dash-prog-bar{flex:1;height:4px;background:var(--line);overflow:hidden}.dash-prog-bar i{display:block;height:100%;background:var(--found)}.dash-prog-frac{font:10px var(--mono);color:var(--muted)}.dash-label{display:flex;align-items:center;gap:12px;font-family:var(--mono);font-size:.7rem;letter-spacing:.12em;text-transform:uppercase;color:var(--visited-text);margin:38px 0 16px}.dash-label:after{content:"";flex:1;height:1px;background:var(--line)}.dash-roadmap-only{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px}.dash-ro{display:flex;align-items:center;gap:10px;border:1px dashed var(--line);border-radius:0;padding:10px 14px;color:var(--muted);text-decoration:none;transition:border-color var(--t-fast),color var(--t-fast)}.dash-ro:hover{border-color:var(--current);color:var(--text)}.dash-ro-name{font-family:var(--display);font-weight:620;font-size:.85rem}.dash-ro-frac{margin-left:auto}.dash-ro-frac,.dash-ro-go{font-family:var(--mono);font-size:.68rem;color:var(--visited-text)}.dash-study details{border:1px solid var(--line);border-radius:0;background:var(--panel);margin-bottom:10px;overflow:hidden}.dash-study summary{cursor:pointer;list-style:none;padding:13px 18px;font-family:var(--display);font-weight:650;font-size:.92rem;display:flex;align-items:center;gap:10px;color:var(--text)}.dash-study summary::-webkit-details-marker{display:none}.dash-study summary:before{content:"+";font-family:var(--mono);color:var(--current);width:1em}.dash-study details[open] summary:before{content:"–"}.dash-study-hint{margin-left:auto;font-family:var(--mono);font-size:.65rem;color:var(--visited-text);font-weight:400}.dash-study-body{padding:4px 18px 16px;border-top:1px solid var(--line)}.dash-study-body .strategy-section{padding-top:12px}.dash-study-body .strategy-card{border:none;padding:12px 0 0;background:transparent}.dash-glyph{height:46px;display:flex;align-items:center}.dash-glyph svg{overflow:visible}.dash-glyph .gm-slide{animation:gm-slide 4s ease-in-out infinite}.dash-glyph .gm-ptr-l{animation:gm-ptr-l 4s ease-in-out infinite}.dash-glyph .gm-ptr-r{animation:gm-ptr-r 4s ease-in-out infinite}.dash-glyph .gm-pop{animation:gm-pop 4s ease-in-out infinite}.dash-glyph .gm-sink{animation:gm-sink 4s ease-in-out infinite}.dash-glyph .gm-flood-0{animation:gm-appear 4s steps(1,end) infinite}.dash-glyph .gm-flood-1{animation:gm-appear-2 4s steps(1,end) infinite}.dash-glyph .gm-flood-2{animation:gm-appear-3 4s steps(1,end) infinite}.dash-glyph .gm-fill-0{animation:gm-fill-0 4s ease-in-out infinite}.dash-glyph .gm-fill-1{animation:gm-fill-1 4s ease-in-out infinite}.dash-glyph .gm-fill-2{animation:gm-fill-2 4s ease-in-out infinite}.dash-glyph .gm-trip-0{animation:gm-trip-0 4s ease-in-out infinite}.dash-glyph .gm-trip-1{animation:gm-trip-1 4s ease-in-out infinite}.dash-glyph .gm-trip-2{animation:gm-trip-2 4s ease-in-out infinite}.dash-glyph .gm-set-in{animation:gm-set-in 4s ease-in-out infinite}.dash-glyph .gm-set-in-dot{animation:gm-set-in-fill 4s ease-in-out infinite}.dash-glyph .gm-set-in-label{animation:gm-set-in-label 4s ease-in-out infinite}.dash-glyph .gm-set-dup{animation:gm-set-dup 4s ease-in-out infinite}.dash-glyph .gm-set-dup-dot{animation:gm-set-dup-fill 4s ease-in-out infinite}.dash-glyph .gm-set-dup-label{animation:gm-set-dup-label 4s ease-in-out infinite}.dash-glyph .gm-set-link{animation:gm-set-link 4s ease-in-out infinite}.dash-glyph .gm-set-reject{transform-box:fill-box;transform-origin:center;animation:gm-set-reject 4s ease-in-out infinite}.dash-glyph .gm-bs-dim-0{animation:gm-bs-dim-0 4s ease-in-out infinite}.dash-glyph .gm-bs-dim-1{animation:gm-bs-dim-1 4s ease-in-out infinite}.dash-glyph .gm-bs-hit{animation:gm-bs-hit 4s ease-in-out infinite}.dash-glyph .gm-bs-probe{transform-box:fill-box;transform-origin:center;animation:gm-bs-probe 4s ease-in-out infinite}.dash-glyph .gm-bar,.dash-glyph .gm-tally{transform-box:fill-box;transform-origin:bottom}.dash-glyph rect.gm-bar-0{animation:gm-grow-0 4s ease-out infinite}.dash-glyph rect.gm-bar-1{animation:gm-grow-1 4s ease-out infinite}.dash-glyph rect.gm-bar-2{animation:gm-grow-2 4s ease-out infinite}.dash-glyph rect.gm-bar-3{animation:gm-grow-3 4s ease-out infinite}.dash-glyph text.gm-bar-0{animation:gm-fade-0 4s ease-out infinite}.dash-glyph text.gm-bar-1{animation:gm-fade-1 4s ease-out infinite}.dash-glyph text.gm-bar-2{animation:gm-fade-2 4s ease-out infinite}.dash-glyph text.gm-bar-3{animation:gm-fade-3 4s ease-out infinite}.dash-glyph .gm-gr-0{animation:gm-gr-0 4s cubic-bezier(.4,0,.6,1) infinite}.dash-glyph .gm-gr-1{animation:gm-gr-1 4s cubic-bezier(.4,0,.6,1) infinite}.dash-glyph .gm-gr-2{animation:gm-gr-2 4s cubic-bezier(.4,0,.6,1) infinite}.dash-glyph .gm-gr-3{animation:gm-gr-3 4s cubic-bezier(.4,0,.6,1) infinite}.dash-glyph .gm-lit-0{animation:gm-lit-0 4s steps(1,end) infinite}.dash-glyph .gm-lit-1{animation:gm-lit-1 4s steps(1,end) infinite}.dash-glyph .gm-lit-2{animation:gm-lit-2 4s steps(1,end) infinite}.dash-glyph .gm-lit-3{animation:gm-lit-3 4s steps(1,end) infinite}.dash-glyph .gm-lit-4{animation:gm-lit-4 4s steps(1,end) infinite}.dash-glyph .gm-lit-5{animation:gm-lit-5 4s steps(1,end) infinite}.dash-glyph .gm-stair{stroke-dasharray:140;animation:gm-stair 4s ease-in-out infinite}@keyframes gm-slide{0%,15%{transform:none}45%,65%{transform:translate(26px)}95%,to{transform:none}}@keyframes gm-ptr-l{0%,15%{transform:none}45%,65%{transform:translate(26px)}95%,to{transform:none}}@keyframes gm-ptr-r{0%,15%{transform:none}45%,65%{transform:translate(-26px)}95%,to{transform:none}}@keyframes gm-pop{0%,20%{transform:none}50%,70%{transform:translateY(-5px)}to{transform:none}}@keyframes gm-sink{0%,20%{transform:none}50%,70%{transform:translateY(4px)}to{transform:none}}@keyframes gm-appear{0%{opacity:0}20%,90%{opacity:1}to{opacity:0}}@keyframes gm-appear-2{0%,35%{opacity:0}36%,90%{opacity:1}to{opacity:0}}@keyframes gm-appear-3{0%,55%{opacity:0}56%,90%{opacity:1}to{opacity:0}}@keyframes gm-trip-0{0%{transform:none;opacity:0}3%{transform:none;opacity:1}12%{transform:translate(46px,-13px);opacity:1}15%,to{transform:translate(46px,-13px);opacity:0}}@keyframes gm-trip-1{0%,32%{transform:none;opacity:0}35%{transform:none;opacity:1}44%{transform:translate(46px);opacity:1}47%,to{transform:translate(46px);opacity:0}}@keyframes gm-trip-2{0%,64%{transform:none;opacity:0}67%{transform:none;opacity:1}76%{transform:translate(46px,13px);opacity:1}79%,to{transform:translate(46px,13px);opacity:0}}@keyframes gm-fill-0{0%,11%{opacity:0}15%,90%{opacity:1}97%,to{opacity:0}}@keyframes gm-fill-1{0%,43%{opacity:0}47%,90%{opacity:1}97%,to{opacity:0}}@keyframes gm-fill-2{0%,75%{opacity:0}79%,90%{opacity:1}97%,to{opacity:0}}@keyframes gm-set-in{0%,6%{transform:translate(48px);opacity:0}10%{transform:translate(40px);opacity:1}22%,92%{transform:none;opacity:1}98%,to{transform:none;opacity:0}}@keyframes gm-set-in-fill{0%,22%{fill:var(--pointer-a)}30%,to{fill:var(--panel-2)}}@keyframes gm-set-in-label{0%,24%{opacity:0}30%,to{opacity:1}}@keyframes gm-set-dup{0%,34%{transform:translate(16px);opacity:0}46%,78%{transform:none;opacity:1}90%,to{transform:translate(16px);opacity:0}}@keyframes gm-set-dup-fill{0%,48%{fill:var(--pointer-a)}54%,to{fill:var(--panel-2)}}@keyframes gm-set-dup-label{0%,50%{opacity:0}54%,to{opacity:1}}@keyframes gm-set-link{0%,46%{opacity:0}52%,80%{opacity:1}86%,to{opacity:0}}@keyframes gm-set-reject{0%,54%{opacity:0;transform:scale(.7)}60%,78%{opacity:1;transform:none}90%,to{opacity:0;transform:translate(16px)}}@keyframes gm-bs-probe{0%{transform:none;opacity:0}5%{transform:none;opacity:1}9%{transform:scale(1.18);opacity:1}13%{transform:none;opacity:1}26%{transform:none;opacity:1}32%{transform:translate(26px);opacity:1}36%{transform:translate(26px) scale(1.18);opacity:1}40%{transform:translate(26px);opacity:1}56%{transform:translate(26px);opacity:1}62%{transform:translate(13px);opacity:1}67%{transform:translate(13px) scale(1.22);opacity:1}72%{transform:translate(13px);opacity:1}90%{transform:translate(13px);opacity:1}97%,to{transform:translate(13px);opacity:0}}@keyframes gm-bs-dim-0{0%,15%{opacity:0}24%,90%{opacity:.62}97%,to{opacity:0}}@keyframes gm-bs-dim-1{0%,44%{opacity:0}52%,90%{opacity:.62}97%,to{opacity:0}}@keyframes gm-bs-hit{0%,63%{opacity:0}70%,90%{opacity:1}97%,to{opacity:0}}.dash-glyph .gm-ll-flip-0,.dash-glyph .gm-ll-flip-1,.dash-glyph .gm-ll-flip-2{transform-box:fill-box;transform-origin:center}.dash-glyph .gm-ll-curr{animation:gm-ll-curr 4s ease-in-out infinite}.dash-glyph .gm-ll-flip-0{animation:gm-ll-flip-0 4s ease-in-out infinite}.dash-glyph .gm-ll-flip-1{animation:gm-ll-flip-1 4s ease-in-out infinite}.dash-glyph .gm-ll-flip-2{animation:gm-ll-flip-2 4s ease-in-out infinite}@keyframes gm-ll-curr{0%,15%{transform:none}25%,40%{transform:translate(30px)}50%,65%{transform:translate(60px)}75%,88%{transform:translate(90px)}to{transform:none}}@keyframes gm-ll-flip-0{0%,28%{transform:none}34%,90%{transform:rotate(180deg)}to{transform:none}}@keyframes gm-ll-flip-1{0%,53%{transform:none}59%,90%{transform:rotate(180deg)}to{transform:none}}@keyframes gm-ll-flip-2{0%,78%{transform:none}84%,90%{transform:rotate(180deg)}to{transform:none}}.dash-glyph .gm-tree-bfs-cur{animation:gm-tree-bfs-cur 4s ease-in-out infinite}.dash-glyph .gm-tree-bfs-band{animation:gm-tree-bfs-band 4s ease-in-out infinite}.dash-glyph .gm-tree-bfs-v0{animation:gm-tree-bfs-v0 4s steps(1,end) infinite}.dash-glyph .gm-tree-bfs-v1{animation:gm-tree-bfs-v1 4s steps(1,end) infinite}.dash-glyph .gm-tree-bfs-v2{animation:gm-tree-bfs-v2 4s steps(1,end) infinite}.dash-glyph .gm-tree-bfs-v3{animation:gm-tree-bfs-v3 4s steps(1,end) infinite}.dash-glyph .gm-tree-bfs-v4{animation:gm-tree-bfs-v4 4s steps(1,end) infinite}.dash-glyph .gm-tree-bfs-v5{animation:gm-tree-bfs-v5 4s steps(1,end) infinite}.dash-glyph .gm-tree-bfs-v6{animation:gm-tree-bfs-v6 4s steps(1,end) infinite}@keyframes gm-tree-bfs-cur{0%,11%{transform:none;opacity:1}16%,23%{transform:translate(-20px,14px);opacity:1}28%,35%{transform:translate(20px,14px);opacity:1}40%,47%{transform:translate(-30px,28px);opacity:1}52%,59%{transform:translate(-10px,28px);opacity:1}64%,71%{transform:translate(10px,28px);opacity:1}76%,83%{transform:translate(30px,28px);opacity:1}88%,to{transform:translate(30px,28px);opacity:0}}@keyframes gm-tree-bfs-band{0%,11%{transform:none;opacity:0}12%,33%{transform:none;opacity:.3}36%,81%{transform:translateY(14px);opacity:.3}84%,92%{transform:translateY(28px);opacity:.3}to{transform:translateY(28px);opacity:0}}@keyframes gm-tree-bfs-v0{0%,11%{opacity:0}12%,90%{opacity:1}to{opacity:0}}@keyframes gm-tree-bfs-v1{0%,23%{opacity:0}24%,90%{opacity:1}to{opacity:0}}@keyframes gm-tree-bfs-v2{0%,35%{opacity:0}36%,90%{opacity:1}to{opacity:0}}@keyframes gm-tree-bfs-v3{0%,47%{opacity:0}48%,90%{opacity:1}to{opacity:0}}@keyframes gm-tree-bfs-v4{0%,59%{opacity:0}60%,90%{opacity:1}to{opacity:0}}@keyframes gm-tree-bfs-v5{0%,71%{opacity:0}72%,90%{opacity:1}to{opacity:0}}@keyframes gm-tree-bfs-v6{0%,83%{opacity:0}84%,90%{opacity:1}to{opacity:0}}.dash-glyph .gm-backtracking-dot{animation:gm-backtracking-dot 4s ease-in-out infinite}.dash-glyph .gm-backtracking-trail-0{animation:gm-backtracking-trail-0 4s ease-in-out infinite}.dash-glyph .gm-backtracking-trail-1{animation:gm-backtracking-trail-1 4s ease-in-out infinite}.dash-glyph .gm-backtracking-leaf-0{animation:gm-backtracking-leaf-0 4s ease-in-out infinite}.dash-glyph .gm-backtracking-leaf-1{animation:gm-backtracking-leaf-1 4s ease-in-out infinite}.dash-glyph .gm-backtracking-leaf-2{animation:gm-backtracking-leaf-2 4s ease-in-out infinite}.dash-glyph .gm-backtracking-out-0{animation:gm-backtracking-out-0 4s ease-in-out infinite}.dash-glyph .gm-backtracking-out-1{animation:gm-backtracking-out-1 4s ease-in-out infinite}.dash-glyph .gm-backtracking-out-2{animation:gm-backtracking-out-2 4s ease-in-out infinite}@keyframes gm-backtracking-dot{0%{transform:none;opacity:0}5%{transform:none;opacity:1}12%{transform:translate(-20px,14px);opacity:1}18%{transform:translate(-30px,29px);opacity:1}24%{transform:translate(-30px,29px);opacity:1}30%{transform:translate(-20px,14px);opacity:1}36%{transform:translate(-10px,29px);opacity:1}42%{transform:translate(-10px,29px);opacity:1}49%{transform:translate(-20px,14px);opacity:1}55%{transform:none;opacity:1}63%{transform:translate(20px,14px);opacity:1}69%{transform:translate(10px,29px);opacity:1}75%{transform:translate(10px,29px);opacity:1}82%{transform:translate(20px,14px);opacity:1}88%{transform:none;opacity:1}95%,to{transform:none;opacity:0}}@keyframes gm-backtracking-trail-0{0%,11%{opacity:0}13%,54%{opacity:.9}56%,90%{opacity:.3}96%,to{opacity:0}}@keyframes gm-backtracking-trail-1{0%,62%{opacity:0}64%,87%{opacity:.9}89%,90%{opacity:.3}96%,to{opacity:0}}@keyframes gm-backtracking-leaf-0{0%,17%{opacity:0}19%,29%{opacity:1}31%,90%{opacity:.3}96%,to{opacity:0}}@keyframes gm-backtracking-leaf-1{0%,35%{opacity:0}37%,48%{opacity:1}50%,90%{opacity:.3}96%,to{opacity:0}}@keyframes gm-backtracking-leaf-2{0%,68%{opacity:0}70%,81%{opacity:1}83%,90%{opacity:.3}96%,to{opacity:0}}@keyframes gm-backtracking-out-0{0%,20%{opacity:0}25%,92%{opacity:1}98%,to{opacity:0}}@keyframes gm-backtracking-out-1{0%,38%{opacity:0}43%,92%{opacity:1}98%,to{opacity:0}}@keyframes gm-backtracking-out-2{0%,71%{opacity:0}76%,92%{opacity:1}98%,to{opacity:0}}.dash-glyph .gm-dp-fill,.dash-glyph .gm-dp-cur,.dash-glyph .gm-dp-take,.dash-glyph .gm-dp-skip{transform-box:fill-box;transform-origin:center}.dash-glyph .gm-dp-fill-0{animation:gm-dp-fill-0 4s ease-out infinite}.dash-glyph .gm-dp-fill-1{animation:gm-dp-fill-1 4s ease-out infinite}.dash-glyph .gm-dp-fill-2{animation:gm-dp-fill-2 4s ease-out infinite}.dash-glyph .gm-dp-fill-3{animation:gm-dp-fill-3 4s ease-out infinite}.dash-glyph .gm-dp-fill-4{animation:gm-dp-fill-4 4s ease-out infinite}.dash-glyph .gm-dp-fill-5{animation:gm-dp-fill-5 4s ease-out infinite}.dash-glyph .gm-dp-cur{animation:gm-dp-cur 4s ease-in-out infinite}.dash-glyph .gm-dp-take,.dash-glyph .gm-dp-skip{animation:gm-dp-probe 4s ease-in-out infinite}@keyframes gm-dp-fill-0{0%,3%{opacity:0;transform:scale(0)}7%,92%{opacity:1;transform:none}to{opacity:0;transform:none}}@keyframes gm-dp-fill-1{0%,7%{opacity:0;transform:scale(0)}11%,92%{opacity:1;transform:none}to{opacity:0;transform:none}}@keyframes gm-dp-fill-2{0%,24%{opacity:0;transform:scale(0)}28%,92%{opacity:1;transform:none}to{opacity:0;transform:none}}@keyframes gm-dp-fill-3{0%,44%{opacity:0;transform:scale(0)}48%,92%{opacity:1;transform:none}to{opacity:0;transform:none}}@keyframes gm-dp-fill-4{0%,64%{opacity:0;transform:scale(0)}68%,92%{opacity:1;transform:none}to{opacity:0;transform:none}}@keyframes gm-dp-fill-5{0%,84%{opacity:0;transform:scale(0)}88%,92%{opacity:1;transform:none}to{opacity:0;transform:none}}@keyframes gm-dp-cur{0%,11%{transform:none;opacity:0}12%,30%{transform:none;opacity:1}34%,50%{transform:translate(17px);opacity:1}54%,70%{transform:translate(34px);opacity:1}74%,91%{transform:translate(51px);opacity:1}96%,to{transform:translate(51px);opacity:0}}@keyframes gm-dp-probe{0%,11%{transform:none;opacity:0}12%{transform:none;opacity:1}22%{transform:scale(1.18);opacity:1}26%,30%{transform:none;opacity:1}34%{transform:translate(17px);opacity:1}42%{transform:translate(17px) scale(1.18);opacity:1}46%,50%{transform:translate(17px);opacity:1}54%{transform:translate(34px);opacity:1}62%{transform:translate(34px) scale(1.18);opacity:1}66%,70%{transform:translate(34px);opacity:1}74%{transform:translate(51px);opacity:1}82%{transform:translate(51px) scale(1.18);opacity:1}86%,91%{transform:translate(51px);opacity:1}96%,to{transform:translate(51px);opacity:0}}@keyframes gm-grow-0{0%{transform:scaleY(0)}14%,92%{transform:none}to{transform:scaleY(0)}}@keyframes gm-grow-1{0%,16%{transform:scaleY(0)}30%,92%{transform:none}to{transform:scaleY(0)}}@keyframes gm-grow-2{0%,32%{transform:scaleY(0)}46%,92%{transform:none}to{transform:scaleY(0)}}@keyframes gm-grow-3{0%,48%{transform:scaleY(0)}62%,92%{transform:none}to{transform:scaleY(0)}}@keyframes gm-fade-0{0%,12%{opacity:0}18%,92%{opacity:1}to{opacity:0}}@keyframes gm-fade-1{0%,28%{opacity:0}34%,92%{opacity:1}to{opacity:0}}@keyframes gm-fade-2{0%,44%{opacity:0}50%,92%{opacity:1}to{opacity:0}}@keyframes gm-fade-3{0%,60%{opacity:0}66%,92%{opacity:1}to{opacity:0}}@keyframes gm-gr-0{0%,4%{transform:none;opacity:0}8%{transform:none;opacity:1}14%{transform:translateY(27px);opacity:1}17%,90%{transform:translateY(25px);opacity:1}96%,to{transform:translateY(25px);opacity:0}}@keyframes gm-gr-1{0%,24%{transform:none;opacity:0}28%{transform:none;opacity:1}34%{transform:translateY(27px);opacity:1}37%,90%{transform:translateY(25px);opacity:1}96%,to{transform:translateY(25px);opacity:0}}@keyframes gm-gr-2{0%,44%{transform:none;opacity:0}48%{transform:none;opacity:1}54%{transform:translateY(27px);opacity:1}57%,90%{transform:translateY(25px);opacity:1}96%,to{transform:translateY(25px);opacity:0}}@keyframes gm-gr-3{0%,64%{transform:none;opacity:0}68%{transform:none;opacity:1}74%{transform:translateY(27px);opacity:1}77%,90%{transform:translateY(25px);opacity:1}96%,to{transform:translateY(25px);opacity:0}}@keyframes gm-lit-0{0%{opacity:0}10%,90%{opacity:1}to{opacity:0}}@keyframes gm-lit-1{0%,14%{opacity:0}24%,90%{opacity:1}to{opacity:0}}@keyframes gm-lit-2{0%,28%{opacity:0}38%,90%{opacity:1}to{opacity:0}}@keyframes gm-lit-3{0%,42%{opacity:0}52%,90%{opacity:1}to{opacity:0}}@keyframes gm-lit-4{0%,56%{opacity:0}66%,90%{opacity:1}to{opacity:0}}@keyframes gm-lit-5{0%,70%{opacity:0}80%,90%{opacity:1}to{opacity:0}}@keyframes gm-stair{0%{stroke-dashoffset:140}80%,92%{stroke-dashoffset:0}to{stroke-dashoffset:140}}.dash-glyph .gm-sorting-b0,.dash-glyph .gm-sorting-b1,.dash-glyph .gm-sorting-b2,.dash-glyph .gm-sorting-b3,.dash-glyph .gm-sorting-b5,.dash-glyph .gm-sorting-b6{transform-box:fill-box;transform-origin:bottom}.dash-glyph .gm-sorting-b0{animation:gm-sorting-b0 4s ease-in-out infinite}.dash-glyph .gm-sorting-b1{animation:gm-sorting-b1 4s ease-in-out infinite}.dash-glyph .gm-sorting-b2{animation:gm-sorting-b2 4s ease-in-out infinite}.dash-glyph .gm-sorting-b3{animation:gm-sorting-b3 4s ease-in-out infinite}.dash-glyph .gm-sorting-b5{animation:gm-sorting-b5 4s ease-in-out infinite}.dash-glyph .gm-sorting-b6{animation:gm-sorting-b6 4s ease-in-out infinite}.dash-glyph .gm-sorting-cur{animation:gm-sorting-cur 4s ease-in-out infinite}.dash-glyph .gm-sorting-place{animation:gm-sorting-place 4s ease-in-out infinite}@keyframes gm-sorting-cur{0%,4%{transform:none;opacity:0}6%,14%{transform:none;opacity:1}16%,24%{transform:translate(14px);opacity:1}26%,32%{transform:translate(28px);opacity:1}34%,42%{transform:translate(42px);opacity:1}44%,50%{transform:translate(56px);opacity:1}52%,60%{transform:translate(70px);opacity:1}66%,to{transform:translate(70px);opacity:0}}@keyframes gm-sorting-b0{0%,16%{transform:none}22%,90%{transform:scaleY(.385)}97%,to{transform:none}}@keyframes gm-sorting-b1{0%,16%{transform:none}22%,34%{transform:scaleY(2.6)}40%,90%{transform:scaleY(1.4)}97%,to{transform:none}}@keyframes gm-sorting-b2{0%,52%{transform:none}58%,90%{transform:scaleY(.176)}97%,to{transform:none}}@keyframes gm-sorting-b3{0%,34%{transform:none}40%,66%{transform:scaleY(1.857)}72%,90%{transform:scaleY(1.571)}97%,to{transform:none}}@keyframes gm-sorting-b5{0%,52%{transform:none}58%,90%{transform:scaleY(5.667)}97%,to{transform:none}}@keyframes gm-sorting-b6{0%,66%{transform:none;fill:var(--current);stroke:none}72%,90%{transform:scaleY(1.182);fill:var(--panel-2);stroke:var(--line)}97%,to{transform:none;fill:var(--current);stroke:none}}@keyframes gm-sorting-place{0%,68%{opacity:0}74%,90%{opacity:1}96%,to{opacity:0}}.dash-glyph .gm-bst-ring,.dash-glyph .gm-bst-new{transform-box:fill-box;transform-origin:center}.dash-glyph .gm-bst-dot{animation:gm-bst-dot 4s ease-in-out infinite}.dash-glyph .gm-bst-ring{animation:gm-bst-ring 4s ease-in-out infinite}.dash-glyph .gm-bst-edge-0{animation:gm-bst-edge-0 4s ease-in-out infinite}.dash-glyph .gm-bst-edge-1{animation:gm-bst-edge-1 4s ease-in-out infinite}.dash-glyph .gm-bst-new{animation:gm-bst-new 4s ease-in-out infinite}@keyframes gm-bst-dot{0%{transform:none;opacity:0}6%,22%{transform:none;opacity:1}30%,44%{transform:translate(-20px,14px);opacity:1}52%,58%{transform:translate(-10px,28px);opacity:1}64%,to{transform:translate(-10px,28px);opacity:0}}@keyframes gm-bst-ring{0%{transform:none;opacity:0}6%,10%{transform:none;opacity:1}14%{transform:scale(1.3);opacity:1}18%,22%{transform:none;opacity:1}30%,34%{transform:translate(-20px,14px);opacity:1}38%{transform:translate(-20px,14px) scale(1.3);opacity:1}42%,48%{transform:translate(-20px,14px);opacity:1}56%,to{transform:translate(-20px,14px);opacity:0}}@keyframes gm-bst-edge-0{0%,24%{opacity:0}30%,88%{opacity:1}96%,to{opacity:0}}@keyframes gm-bst-edge-1{0%,46%{opacity:0}52%,88%{opacity:1}96%,to{opacity:0}}@keyframes gm-bst-new{0%,58%{transform:scale(.6);opacity:0}64%{transform:scale(1.35);opacity:1}70%,88%{transform:none;opacity:1}96%,to{transform:scale(.6);opacity:0}}.dash-glyph .gm-tree-dfs-cur{animation:gm-tree-dfs-cur 4s ease-in-out infinite}.dash-glyph .gm-tree-dfs-s0{animation:gm-tree-dfs-s0 4s steps(1,end) infinite}.dash-glyph .gm-tree-dfs-s1{animation:gm-tree-dfs-s1 4s steps(1,end) infinite}.dash-glyph .gm-tree-dfs-s2{animation:gm-tree-dfs-s2 4s steps(1,end) infinite}.dash-glyph .gm-tree-dfs-v0{animation:gm-tree-dfs-v0 4s steps(1,end) infinite}.dash-glyph .gm-tree-dfs-v1{animation:gm-tree-dfs-v1 4s steps(1,end) infinite}.dash-glyph .gm-tree-dfs-v2{animation:gm-tree-dfs-v2 4s steps(1,end) infinite}.dash-glyph .gm-tree-dfs-v3{animation:gm-tree-dfs-v3 4s steps(1,end) infinite}.dash-glyph .gm-tree-dfs-v4{animation:gm-tree-dfs-v4 4s steps(1,end) infinite}.dash-glyph .gm-tree-dfs-v5{animation:gm-tree-dfs-v5 4s steps(1,end) infinite}.dash-glyph .gm-tree-dfs-v6{animation:gm-tree-dfs-v6 4s steps(1,end) infinite}@keyframes gm-tree-dfs-cur{0%,5%{transform:none;opacity:1}10%,14%{transform:translate(-20px,14px);opacity:1}16%,26%{transform:translate(-30px,28px);opacity:1}30%,34%{transform:translate(-20px,14px);opacity:1}36%,46%{transform:translate(-10px,28px);opacity:1}50%,54%{transform:none;opacity:1}56%,60%{transform:translate(20px,14px);opacity:1}62%,72%{transform:translate(10px,28px);opacity:1}76%,80%{transform:translate(20px,14px);opacity:1}82%,90%{transform:translate(30px,28px);opacity:1}96%,to{transform:translate(30px,28px);opacity:0}}@keyframes gm-tree-dfs-s0{0%,3%{opacity:0}4%,49%{opacity:1}50%,55%{opacity:0}56%,75%{opacity:1}76%,81%{opacity:0}82%,87%{opacity:1}88%,to{opacity:0}}@keyframes gm-tree-dfs-s1{0%,9%{opacity:0}10%,29%{opacity:1}30%,35%{opacity:0}36%,41%{opacity:1}42%,61%{opacity:0}62%,67%{opacity:1}68%,to{opacity:0}}@keyframes gm-tree-dfs-s2{0%,15%{opacity:0}16%,21%{opacity:1}22%,to{opacity:0}}@keyframes gm-tree-dfs-v0{0%,49%{opacity:0}50%,92%{opacity:1}to{opacity:0}}@keyframes gm-tree-dfs-v1{0%,29%{opacity:0}30%,92%{opacity:1}to{opacity:0}}@keyframes gm-tree-dfs-v2{0%,75%{opacity:0}76%,92%{opacity:1}to{opacity:0}}@keyframes gm-tree-dfs-v3{0%,21%{opacity:0}22%,92%{opacity:1}to{opacity:0}}@keyframes gm-tree-dfs-v4{0%,41%{opacity:0}42%,92%{opacity:1}to{opacity:0}}@keyframes gm-tree-dfs-v5{0%,67%{opacity:0}68%,92%{opacity:1}to{opacity:0}}@keyframes gm-tree-dfs-v6{0%,87%{opacity:0}88%,92%{opacity:1}to{opacity:0}}.dash-glyph .gm-union-find-cur{animation:gm-union-find-cur 4s ease-in-out infinite}.dash-glyph .gm-union-find-n1{animation:gm-union-find-n1 4s ease-in-out infinite}.dash-glyph .gm-union-find-n2{animation:gm-union-find-n2 4s ease-in-out infinite}.dash-glyph .gm-union-find-n3{animation:gm-union-find-n3 4s ease-in-out infinite}.dash-glyph .gm-union-find-e1{animation:gm-union-find-e1 4s ease-in-out infinite}.dash-glyph .gm-union-find-e2{animation:gm-union-find-e2 4s ease-in-out infinite}.dash-glyph .gm-union-find-e3{animation:gm-union-find-e3 4s ease-in-out infinite}.dash-glyph .gm-union-find-r1{animation:gm-union-find-r1 4s steps(1,end) infinite}.dash-glyph .gm-union-find-r2{animation:gm-union-find-r2 4s steps(1,end) infinite}.dash-glyph .gm-union-find-r3{animation:gm-union-find-r3 4s steps(1,end) infinite}.dash-glyph .gm-union-find-c4{animation:gm-union-find-c4 4s steps(1,end) infinite}.dash-glyph .gm-union-find-c3{animation:gm-union-find-c3 4s steps(1,end) infinite}.dash-glyph .gm-union-find-c2{animation:gm-union-find-c2 4s steps(1,end) infinite}.dash-glyph .gm-union-find-c1{animation:gm-union-find-c1 4s steps(1,end) infinite}@keyframes gm-union-find-cur{0%,4%{transform:translate(30px);opacity:0}6%,10%{transform:translate(30px);opacity:1}12%,30%{transform:none;opacity:1}32%,36%{transform:translate(60px);opacity:1}38%,56%{transform:none;opacity:1}58%,62%{transform:translate(90px);opacity:1}64%,78%{transform:none;opacity:1}86%,to{transform:none;opacity:0}}@keyframes gm-union-find-n1{0%,14%{transform:none}22%,to{transform:translate(-42px,20px)}}@keyframes gm-union-find-n2{0%,40%{transform:none}48%,to{transform:translate(-60px,20px)}}@keyframes gm-union-find-n3{0%,66%{transform:none}74%,to{transform:translate(-78px,20px)}}@keyframes gm-union-find-e1{0%,20%{opacity:0}24%,96%{opacity:1}to{opacity:0}}@keyframes gm-union-find-e2{0%,46%{opacity:0}50%,96%{opacity:1}to{opacity:0}}@keyframes gm-union-find-e3{0%,72%{opacity:0}76%,96%{opacity:1}to{opacity:0}}@keyframes gm-union-find-r1{0%,21%{opacity:1}22%,to{opacity:0}}@keyframes gm-union-find-r2{0%,47%{opacity:1}48%,to{opacity:0}}@keyframes gm-union-find-r3{0%,73%{opacity:1}74%,to{opacity:0}}@keyframes gm-union-find-c4{0%,21%{opacity:1}22%,to{opacity:0}}@keyframes gm-union-find-c3{0%,21%{opacity:0}22%,47%{opacity:1}48%,to{opacity:0}}@keyframes gm-union-find-c2{0%,47%{opacity:0}48%,73%{opacity:1}74%,to{opacity:0}}@keyframes gm-union-find-c1{0%,73%{opacity:0}74%,to{opacity:1}}.dash-glyph .gm-dijkstra-e0{animation:gm-dijkstra-e0 4s ease-in-out infinite}.dash-glyph .gm-dijkstra-e1{animation:gm-dijkstra-e1 4s ease-in-out infinite}.dash-glyph .gm-dijkstra-e2{animation:gm-dijkstra-e2 4s ease-in-out infinite}.dash-glyph .gm-dijkstra-e3{animation:gm-dijkstra-e3 4s ease-in-out infinite}.dash-glyph .gm-dijkstra-e4{animation:gm-dijkstra-e4 4s ease-in-out infinite}.dash-glyph .gm-dijkstra-n0{animation:gm-dijkstra-n0 4s steps(1,end) infinite}.dash-glyph .gm-dijkstra-n1{animation:gm-dijkstra-n1 4s steps(1,end) infinite}.dash-glyph .gm-dijkstra-n2{animation:gm-dijkstra-n2 4s steps(1,end) infinite}.dash-glyph .gm-dijkstra-n3{animation:gm-dijkstra-n3 4s steps(1,end) infinite}.dash-glyph .gm-dijkstra-n4{animation:gm-dijkstra-n4 4s steps(1,end) infinite}.dash-glyph .gm-dijkstra-ring{transform-box:fill-box;transform-origin:center;animation:gm-dijkstra-ring 4s ease-in-out infinite}@keyframes gm-dijkstra-e0{0%,6%{stroke-dashoffset:100;opacity:0}7%{stroke-dashoffset:100;opacity:1}15%{stroke-dashoffset:0;opacity:1}22%,90%{stroke-dashoffset:0;opacity:.45}to{stroke-dashoffset:0;opacity:0}}@keyframes gm-dijkstra-e1{0%,10%{stroke-dashoffset:100;opacity:0}11%{stroke-dashoffset:100;opacity:1}19%{stroke-dashoffset:0;opacity:1}26%,90%{stroke-dashoffset:0;opacity:.45}to{stroke-dashoffset:0;opacity:0}}@keyframes gm-dijkstra-e2{0%,27%{stroke-dashoffset:100;opacity:0}28%{stroke-dashoffset:100;opacity:1}36%{stroke-dashoffset:0;opacity:1}43%,90%{stroke-dashoffset:0;opacity:.45}to{stroke-dashoffset:0;opacity:0}}@keyframes gm-dijkstra-e3{0%,44%{stroke-dashoffset:100;opacity:0}45%{stroke-dashoffset:100;opacity:1}53%{stroke-dashoffset:0;opacity:1}57%,to{stroke-dashoffset:0;opacity:0}}@keyframes gm-dijkstra-e4{0%,60%{stroke-dashoffset:100;opacity:0}61%{stroke-dashoffset:100;opacity:1}69%{stroke-dashoffset:0;opacity:1}75%,90%{stroke-dashoffset:0;opacity:.45}to{stroke-dashoffset:0;opacity:0}}@keyframes gm-dijkstra-n0{0%,2%{opacity:0}3%,90%{opacity:1}to{opacity:0}}@keyframes gm-dijkstra-n1{0%,41%{opacity:0}42%,90%{opacity:1}to{opacity:0}}@keyframes gm-dijkstra-n2{0%,23%{opacity:0}24%,90%{opacity:1}to{opacity:0}}@keyframes gm-dijkstra-n3{0%,57%{opacity:0}58%,90%{opacity:1}to{opacity:0}}@keyframes gm-dijkstra-n4{0%,73%{opacity:0}74%,90%{opacity:1}to{opacity:0}}@keyframes gm-dijkstra-ring{0%,75%{opacity:0;transform:scale(.6)}79%{opacity:1;transform:scale(1)}88%,to{opacity:0;transform:scale(1.4)}}.fixed-preview-window{animation:fixed-window-slide 5s ease-in-out infinite}.fixed-preview-window rect{fill:color-mix(in srgb,var(--pointer-a) 11%,transparent)}@keyframes fixed-window-slide{0%,15%{transform:translate(0)}30%,40%{transform:translate(26px)}55%,65%{transform:translate(52px)}80%,90%{transform:translate(78px)}to{transform:translate(0)}}.page-notice{padding:48px 0;color:var(--muted)}.page-notice h1{color:var(--text);margin-bottom:8px}.pattern-grid{display:flex;flex-direction:column;gap:14px;padding-top:16px}.page-header-row{display:flex;align-items:baseline;gap:14px;flex-wrap:wrap}.page-title{font-family:var(--display);font-weight:700;font-stretch:100%;font-size:2rem;letter-spacing:-.03em}.page-what{color:var(--muted);font-size:.85rem;flex:1;min-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.page-chips{display:flex;gap:6px}.page-chip-cx{color:var(--pointer-a)}.page-brief-toggle{font-family:var(--mono);font-size:.68rem;color:var(--blue);background:none;border:1px solid transparent;border-radius:0;padding:3px 8px;cursor:pointer}.page-brief-toggle:hover{border-color:var(--blue)}.page-header .briefing-strip{margin-top:12px}.player-cols{display:grid;gap:16px}.player-cols>*{min-width:0}.grid-code{display:flex;flex-direction:column}@media(min-width:880px){.player-cols{grid-template-columns:minmax(0,1.3fr) minmax(420px,1fr)}}.stage-panel{display:flex;flex-direction:column;border:1px solid var(--line);border-radius:0;background:var(--panel);overflow:hidden}.stage-panel .grid-canvas{border:none;border-radius:0;background:transparent;overflow-x:auto;justify-content:safe center}.stage-caption{border-top:1px solid var(--line);background:var(--panel)}.stage-caption .narration{margin:0;border:none;border-left:3px solid var(--blue);border-radius:0;background:transparent}.stage-transport{display:flex;align-items:center;flex-wrap:wrap;gap:12px;padding:10px 14px;border-top:1px solid var(--line);background:var(--panel)}.stage-transport .controls{margin:0;padding:0;border:none;background:transparent}.timeline{flex:1;min-width:220px;display:flex;flex-direction:column;gap:4px}.timeline-ticks{display:flex;gap:2px;align-items:flex-end;height:16px}.timeline-tick{flex:1;min-width:3px;height:8px;padding:0;border:none;border-radius:2px;cursor:pointer;opacity:.35;transition:height var(--t-fast),opacity var(--t-fast)}.timeline-tick-done{opacity:.9;height:10px}.timeline-tick:hover{height:14px;opacity:1}.timeline-tick-current{height:16px;opacity:1;background:var(--current)!important}.timeline-tone-0{background:var(--pointer-a)}.timeline-tone-1{background:var(--found)}.timeline-tone-2{background:var(--pointer-b)}.timeline-tone-3{background:var(--pointer-c)}.timeline-tone-4{background:var(--island-3)}.timeline-tone-5{background:var(--island-0)}.timeline-lab{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;font-family:var(--mono);font-size:.6rem;color:var(--muted)}.timeline-step{white-space:nowrap}.timeline-legend{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:4px 10px}.timeline-key{display:inline-flex;align-items:center;gap:4px;white-space:nowrap}.timeline-key code{color:var(--muted)}.timeline-dot{width:7px;height:7px;border-radius:2px;display:inline-block}.timeline-dot-cursor{background:var(--current)}.timeline-key-cursor,.timeline-key-more{color:var(--muted)}.watch{width:100%;border-collapse:collapse;font-family:var(--mono);font-size:.74rem;border:1px solid var(--line);border-radius:0;background:var(--panel);overflow:hidden;margin-top:10px}.watch th{text-align:left;color:var(--muted);font-weight:400;font-size:.6rem;text-transform:uppercase;letter-spacing:.06em;padding:7px 14px;border-bottom:1px solid var(--line)}.watch td{padding:5px 14px}.watch-name{width:30%;color:var(--muted)}.watch-value{color:var(--text)}.watch-chg .watch-value{color:var(--current);animation:flash var(--t-med)}.watch-delta{color:var(--found);font-size:.66rem;text-align:right;max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.notice{margin-top:20px;padding:20px 22px;border-radius:0;border:1px solid var(--line);background:var(--panel)}.notice p{color:var(--text)}.notice-error{border-color:var(--mismatch)}.notice-error p{color:var(--mismatch);margin-bottom:14px}.btn{padding:8px 16px;border-radius:0;border:1px solid var(--line);background:var(--panel);color:var(--text);font:inherit;cursor:pointer;transition:border-color var(--t-fast),background var(--t-fast),color var(--t-fast)}.btn:hover{border-color:var(--ink);color:var(--ink)}.briefing-strip{display:flex;flex-wrap:wrap;align-items:center;gap:8px 24px;padding:10px 16px;border-radius:0;border:1px solid var(--line);background:var(--panel)}.briefing-row{display:flex;align-items:center;gap:8px;font-size:.85rem}.briefing-label{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:.7rem;white-space:nowrap}.briefing-value{color:var(--text)}.briefing-mono{font-family:var(--mono)}.briefing-row-remember{align-items:flex-start}.briefing-remember{display:flex;flex-direction:column;gap:4px;min-width:0}.remember-item{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}.remember-code{font-family:var(--mono);font-size:.8rem;background:var(--panel-2);border-radius:0;padding:1px 6px;white-space:nowrap}.remember-note{color:var(--muted)}.vars-strip{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}.vars-item{display:inline-flex;align-items:baseline;gap:6px;font-family:var(--mono);font-size:.78rem;background:var(--panel-2);border-radius:0;padding:2px 8px}.vars-name{color:var(--muted)}.vars-value{animation:vars-flash .6s ease-out}@keyframes vars-flash{0%{color:var(--current)}to{color:inherit}}@media(prefers-reduced-motion:reduce){.vars-value,.window-bracket-match{animation:none}.fixed-preview-window,.bfs-arrive,.bfs-queue span,.better-frame,.stack-exit,.matched-pair b{animation:none!important}.stack-exit{display:none!important}.bfs-tile{transition:none!important}.map-value,.map-bump-delta,.map-row-inserted{animation:none}}.briefing-chips{display:flex;flex-wrap:wrap;gap:6px}.tag-chip{padding:3px 9px;border-radius:0;background:var(--panel-2);border:1px solid var(--line);color:var(--muted);font-size:.75rem}.grid-canvas{min-height:clamp(380px,50vh,460px);padding:24px;display:flex;align-items:center;justify-content:center;border-radius:0;border:1px solid var(--line);background:var(--panel)}.stage-canvas>.stack{width:100%;min-width:0;max-width:100%}.stage-canvas p{white-space:normal;overflow-wrap:anywhere;max-width:100%}.stage-canvas{align-items:flex-start}@media(max-width:450px){.stage-canvas{padding:22px 10px}}.track{position:relative;display:inline-flex;flex-direction:column;gap:20px;padding-top:28px}.cell-row{display:flex;gap:var(--cell-gap)}.cell{width:var(--cell-w);height:var(--cell-w);display:flex;align-items:center;justify-content:center;border-radius:8px;border:1px solid var(--line);background:var(--panel-2);color:var(--text);font-family:var(--mono);font-size:.95rem;transition:background-color var(--t-med),border-color var(--t-med),color var(--t-med),opacity var(--t-med),transform var(--t-fast)}.cell-current{border-color:var(--current);background:var(--current-dim);color:var(--current-text-strong)}.cell-visited{border-color:var(--visited-strong);background:var(--visited);color:var(--cell-visited-text)}.cell-found{border-color:var(--found);background:var(--found-dim);color:var(--found);animation:flash var(--t-med)}.cell-mismatch{border-color:var(--mismatch);background:var(--mismatch-dim);color:var(--mismatch-text-strong);animation:flash var(--t-med)}.cell-index-label{display:inline-flex;width:var(--cell-w);justify-content:center;color:var(--muted);font-family:var(--mono);font-size:.75rem}.chip,.window-bracket{transition:left var(--t-med) ease,width var(--t-med) ease}.window-bracket{position:absolute;top:-6px;height:calc(var(--cell-w) + 12px);border:2px solid var(--current);border-radius:10px;background:var(--current-dim);pointer-events:none}.window-bracket-match{border-color:var(--found);background:var(--found-dim);animation:bracket-sweep var(--t-med) ease-out}@keyframes bracket-sweep{0%{transform:scaleX(.04);opacity:.35}to{transform:scaleX(1);opacity:1}}.window-bracket-match{transform-origin:left center}.spotlight.spotlight{animation:spotlight-pulse 1.6s ease-in-out infinite}@keyframes spotlight-pulse{0%,to{box-shadow:0 0 0 2px var(--current),0 0 8px 2px var(--current-dim)}50%{box-shadow:0 0 0 2px var(--current),0 0 18px 6px var(--current-dim)}}.pointer-chip{position:absolute;top:0;transform:translate(0);padding:2px 7px;border-radius:999px;border:1px solid var(--pointer-color);background:color-mix(in srgb,var(--pointer-color) 8%,transparent);color:var(--pointer-color);font-family:var(--mono);font-size:.7rem;white-space:nowrap}.badge{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;border:1px solid var(--line);color:var(--text);font-family:var(--mono);font-size:.8rem}.badge[data-tone=current]{border-color:var(--current);color:var(--current)}.badge[data-tone=found]{border-color:var(--found);color:var(--found)}.badge[data-tone=mismatch]{border-color:var(--mismatch);color:var(--mismatch)}.badge[data-tone=a]{border-color:var(--pointer-a);color:var(--pointer-a)}.badge[data-tone=b]{border-color:var(--pointer-b);color:var(--pointer-b)}.badge[data-tone=c]{border-color:var(--pointer-c);color:var(--pointer-c)}.stack{display:flex;flex-direction:column;gap:8px}.better-bfs,.better-stack,.better-heap{width:100%;min-width:0;max-width:100%;color:var(--lesson-ink)}.better-status{display:flex;justify-content:space-between;gap:15px;flex-wrap:wrap;font:12px/1.5 var(--body);margin-bottom:20px}.better-status b{padding:6px 10px;background:var(--lesson-badge-bg);border:1px solid var(--lesson-badge-line);color:var(--lesson-badge-text)}.better-status span{font-size:11px;align-self:center;color:var(--lesson-ink-soft)}.better-help{font:11px/1.6 var(--body);color:var(--lesson-ink-soft);margin-top:15px}.stage-canvas .cell{border-width:2px}.stage-canvas .window-bracket{top:22px;background:transparent;border-width:2px;box-shadow:0 0 0 1px var(--panel)}.stage-canvas .window-bracket-match{background:transparent}.hashmap-target{color:var(--muted);font-family:var(--mono);font-size:.85rem}.hashmap-target-value{color:var(--text)}.map-list{display:flex;flex-direction:column;gap:6px;min-width:180px}.map-row{display:flex;align-items:center;gap:10px;padding:6px 12px;border-radius:8px;border:1px solid var(--line);background:var(--panel-2);color:var(--text);font-family:var(--mono);font-size:.9rem;animation:rise-in var(--t-med) ease-out}.map-row-hit{border-color:var(--found);box-shadow:0 0 0 2px var(--found-dim)}.map-row-miss{border-color:var(--mismatch);border-style:dashed;color:var(--muted);animation:pulse-muted .7s ease-in-out}.map-key{min-width:1.5em;text-align:right;color:var(--current)}.map-arrow{color:var(--muted)}.map-value{color:var(--text);animation:value-roll var(--t-fast) ease-out;display:inline-block}@keyframes value-roll{0%{transform:translateY(.45em);opacity:0}to{transform:translateY(0);opacity:1}}.map-bump-delta{margin-left:auto;color:var(--current);font-family:var(--mono);font-size:.75rem;animation:delta-rise .7s ease-out}@keyframes delta-rise{0%{transform:translateY(4px);opacity:0}35%{transform:translateY(0);opacity:1}to{transform:translateY(-3px);opacity:.55}}.map-row-inserted{border-color:var(--found);animation:row-insert var(--t-med) ease-out}@keyframes row-insert{0%{transform:translate(-10px) scale(.96);opacity:0;border-color:var(--current)}to{transform:translate(0) scale(1);opacity:1}}.map-miss-label{color:var(--mismatch);font-style:italic}.map-empty{color:var(--muted);font-size:.85rem;font-style:italic}.stage-canvas>.stack.hashmap-view,.stage-canvas>.stack.hash-set-view,.stage-canvas>.stack.hash-count-view,.stage-canvas>.stack.hash-group-view{align-items:safe center}.queue-strip{display:flex;flex-wrap:wrap;align-items:center;gap:6px;min-height:28px}.queue-strip-label{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:.7rem;margin-right:4px}.queue-chip{padding:3px 9px;border-radius:999px;border:1px solid var(--current);background:var(--current-dim);color:var(--current-text-strong);font-family:var(--mono);font-size:.75rem;animation:rise-in var(--t-fast) ease-out}.queue-empty{color:var(--muted);font-size:.85rem;font-style:italic}.bfs-grid-labeled{display:grid;gap:6px;justify-content:center;margin:20px auto;max-width:100%}.bfs-grid-labeled>small{display:grid;place-items:center;font:11px var(--mono);color:var(--bfs-axis)}.bfs-tile{height:46px;border:2px solid var(--line);border-radius:5px;display:grid;place-items:center;font:700 17px var(--mono);position:relative;transition:background-color .35s,border-color .35s,color .35s}.bfs-water{background:var(--panel-2);border-color:var(--line);color:var(--muted)}.bfs-unvisited{background:var(--panel);border-color:var(--line);color:var(--text)}.bfs-queued{background:var(--panel);border:3px solid var(--island,var(--island-0));color:var(--text)}.bfs-queued i{position:absolute;right:2px;top:2px;width:5px;height:5px;background:var(--island,var(--island-0));border-radius:50%}.bfs-current{background:var(--island,var(--island-0));border:3px solid var(--text);color:var(--panel);box-shadow:0 0 0 3px color-mix(in srgb,var(--text) 15%,transparent)}.bfs-visited{background:var(--island);border-color:var(--island);color:var(--panel)}.bfs-arrive{animation:bfs-frontier-in .55s ease-out}@keyframes bfs-frontier-in{0%{transform:translate(var(--dx),var(--dy)) scale(.65);opacity:.3}to{transform:none;opacity:1}}.bfs-key{display:flex;flex-wrap:wrap;justify-content:center;gap:8px 14px;margin:18px 0;font:10px var(--body)}.bfs-key span{display:flex;align-items:center;gap:5px}.bfs-key i{width:12px;height:12px;border:1px solid var(--bfs-swatch-line);display:inline-block}.key-water{background:var(--panel-2);border-color:var(--line)}.key-land{background:var(--panel);border-color:var(--line)}.key-queued{background:var(--panel);border:2px solid var(--island-0)}.key-current{background:var(--island-0);border:2px solid var(--text)}.key-visited{background:linear-gradient(90deg,var(--island-0) 50%,var(--island-3) 50%)}.bfs-queue{min-height:48px;padding:10px;border:1px solid var(--line);background:var(--panel-2);display:flex;flex-wrap:wrap;gap:7px;align-items:center;font:12px var(--mono)}.bfs-queue b{font-size:10px}.bfs-queue span{background:var(--panel);border:1px solid var(--island-0);color:var(--text);padding:5px 8px;animation:queue-land .35s ease-out}.bfs-queue em{color:var(--bfs-queue-empty);font-size:11px}@keyframes queue-land{0%{transform:translate(18px);opacity:0}to{transform:none;opacity:1}}.better-bfs .better-status b{background:var(--panel);border-color:var(--island-0);color:var(--island-0)}@media(max-width:450px){.bfs-tile{height:39px}}.stack-input{display:flex;gap:5px;justify-content:center;margin-bottom:18px}.stack-input>div{flex:1;max-width:44px;min-width:0;text-align:center}.stack-input b{display:block;background:var(--lesson-tint);border:2px solid var(--stk-input-line);border-radius:4px;padding:6px 0;font:700 20px var(--mono)}.stack-input small{font:10px var(--mono);color:var(--stk-index)}.stack-input .input-matched b{background:var(--stk-match-bg);border-color:var(--stk-match-line);color:var(--stk-match-text)}.stack-input .input-active b{border-color:var(--pointer-a);box-shadow:0 0 0 2px color-mix(in srgb,var(--pointer-a) 16%,transparent)}.stack-action-banner{background:var(--stk-banner-bg);padding:10px;border-left:3px solid var(--pointer-a);font:12px/1.6 var(--mono);min-height:40px}.stack-motion-scene{display:flex;align-items:center;justify-content:center;gap:50px;padding:24px 8px;min-height:270px;overflow:hidden}.stack-well{position:relative;width:112px;height:225px;border:3px solid var(--stk-well-line);border-top:0;background:linear-gradient(to top,var(--stk-well-fill),var(--panel));flex-shrink:0}.well-label{position:absolute;top:-18px;left:4px;font:9px var(--mono);color:var(--stk-well-label)}.well-empty{position:absolute;bottom:20px;width:100%;text-align:center;font:12px var(--mono);color:var(--stk-well-empty)}.better-frame{position:absolute;left:10px;width:86px;height:36px;background:var(--stk-frame-bg);border:2px solid var(--stk-frame-line);display:grid;place-items:center;font:700 21px var(--mono);animation:stack-push-in .55s cubic-bezier(.18,.65,.3,1);transition:bottom .35s}.better-frame.frame-top{background:var(--pointer-a);color:var(--panel);border-color:var(--stk-top-line)}.better-frame>span{position:absolute;left:-55px;white-space:nowrap;font:9px var(--body);color:var(--blue)}.stack-exit{position:absolute;left:10px;width:86px;height:36px;background:var(--stk-exit-bg);color:var(--panel);display:grid;place-items:center;font:700 21px var(--mono);border:2px solid var(--stk-exit-line);animation:stack-pop-out .85s ease-in forwards;pointer-events:none}.stack-match-zone{width:125px;align-self:center}.stack-match-zone>span{font:9px var(--mono);letter-spacing:.4px}.stack-match-zone>div{display:flex;gap:5px;margin:12px 0;align-items:center}.stack-match-zone b{display:grid;place-items:center;width:40px;height:44px;background:var(--stk-banner-bg);border:2px solid var(--stk-frame-line);font:700 25px var(--mono)}.stack-match-zone .matched-pair b{background:var(--stk-match-bg);border-color:var(--stk-exit-bg);color:var(--stk-pair-text);animation:pair-confirm .85s ease-out}.matched-pair small{color:var(--found);font-size:21px}.stack-match-zone p{font:11px/1.6 var(--body);color:var(--stk-note)}.stack-outcome{font:12px var(--mono);text-align:center;padding:10px;background:var(--stk-outcome-bg)}.stack-outcome span{margin:0 8px;color:var(--stk-outcome-dot)}@keyframes stack-push-in{0%{transform:translateY(-75px);opacity:.15}to{transform:none;opacity:1}}@keyframes stack-pop-out{0%{transform:none;opacity:1}45%{transform:translateY(-25px);opacity:1}to{transform:translate(120px,-25px);opacity:0}}@keyframes pair-confirm{0%,55%{opacity:.3;transform:scale(.9)}to{opacity:1;transform:none}}@media(max-width:450px){.stack-motion-scene{gap:30px}.better-frame>span{left:-36px;font-size:8px}}.sw-view{align-items:safe center}.sw-window-readout{display:flex;align-items:center;gap:10px;font-family:var(--mono);font-size:.9rem}.sw-window-label{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:.7rem}.sw-window-value{color:var(--text)}.sw-window-empty{color:var(--muted);font-style:italic}.sw-duplicate-note{color:var(--mismatch);font-size:.8rem}.sw-best-strip{display:flex;align-items:center;gap:10px}.sw-best-label{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:.7rem}.sw-best-word{min-width:1.5em;padding-bottom:2px;border-bottom:2px solid var(--found);color:var(--found);font-family:var(--mono)}.sw-best-badge{font-weight:600}.sw-best-flash{animation:flash var(--t-med)}.sw-legend{color:var(--muted);font-size:.75rem}.tp-view{align-items:center}.tp-target{color:var(--muted);font-family:var(--mono);font-size:.85rem}.tp-target-value{color:var(--text)}.tp-sum-badge{font-family:var(--mono);font-weight:600}.tp-sum-flash{animation:flash var(--t-med)}.tp-verdict{padding:10px 16px;border-radius:10px;border:1px solid var(--found);background:var(--found-dim);color:var(--found);text-align:center;font-weight:600;font-size:1.05rem;animation:rise-in var(--t-med) ease-out}.tp-legend{color:var(--muted);font-size:.75rem}.bs-view{align-items:safe center}.bs-target{color:var(--muted);font-family:var(--mono);font-size:.85rem}.bs-target-value{color:var(--text)}.bs-view .track{margin-top:22px}.bs-mid-chip-wrap{position:absolute;right:0;bottom:0;left:0;top:-22px;pointer-events:none}.bs-compare-badge{font-family:var(--mono);font-weight:600}.bs-compare-flash{animation:flash var(--t-med)}.bs-verdict{padding:10px 16px;border-radius:10px;text-align:center;font-weight:600;font-size:1.05rem;animation:rise-in var(--t-med) ease-out}.bs-verdict-found{border:1px solid var(--found);background:var(--found-dim);color:var(--found)}.bs-verdict-exhausted{border:1px solid var(--mismatch);background:var(--mismatch-dim);color:var(--mismatch-text-strong)}.bs-legend{color:var(--muted);font-size:.75rem}.heap-view{align-items:center}.heap-view .cell-current{color:var(--current-text-deep)}.heap-view .track{--line: color-mix(in srgb, var(--muted) 75%, var(--panel))}.heap-header{display:flex;align-items:center;gap:12px}.heap-k{color:var(--muted);font-family:var(--mono);font-size:.85rem}.heap-tree-wrap{display:flex;align-items:flex-start;min-height:40px}.heap-chip-slot{flex:none}.heap-chip{margin-top:6px;padding:4px 10px;border-radius:999px;border-style:solid;border-color:var(--current);font-family:var(--mono);font-size:.8rem;white-space:nowrap;transition:transform var(--t-med) ease,opacity var(--t-med) ease,border-color var(--t-med),background var(--t-med),color var(--t-med);animation:rise-in var(--t-med) ease-out}.heap-chip-rejected{transform:translate(-10px,16px);opacity:.6;border-color:var(--visited);border-style:dashed}.heap-tree{position:relative;--line: color-mix(in srgb, var(--muted) 75%, var(--panel))}.heap-edges{position:absolute;top:0;right:0;bottom:0;left:0}.heap-edge{transition:stroke var(--t-med),stroke-width var(--t-med)}.heap-node{position:absolute;width:44px;height:44px;display:flex;align-items:center;justify-content:center;border-radius:999px;font-family:var(--mono);font-size:.95rem;animation:rise-in var(--t-med) ease-out;transition:border-color var(--t-med),background-color var(--t-med),color var(--t-med),box-shadow var(--t-med)}.heap-node-compare{box-shadow:0 0 0 2px var(--current-dim)}.heap-node-swap{animation:flash var(--t-med)}.heap-node-answer{box-shadow:0 0 0 3px var(--found-dim)}.heap-answer-banner{padding:10px 16px;border-radius:10px;border:1px solid var(--found);background:var(--found-dim);color:var(--found);text-align:center;font-weight:600;font-size:1.05rem;animation:rise-in var(--t-med) ease-out}.heap-legend{color:var(--muted)}.heap-input-stream{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:15px}.heap-input-stream small{font:10px var(--mono);margin-right:8px}.heap-input-stream>span{padding:5px 9px;border:1px solid var(--heap-input-line);background:var(--heap-input-bg);font:13px var(--mono)}.heap-input-stream>.heap-input-active{background:var(--heap-input-active-bg);border:2px solid var(--current)}.heap-readout{display:flex;gap:12px;padding:12px;background:var(--heap-readout-bg);border:1px solid var(--heap-readout-line);margin-bottom:18px;font:11px var(--body);justify-content:space-between}.heap-readout b{font:700 18px var(--mono);display:block;margin-top:5px}.heap-empty-guide{border:2px dashed var(--heap-empty-line);padding:15px;text-align:center;background:var(--heap-empty-bg);font:12px/1.6 var(--body)}.better-heap .heap-view{width:100%;min-width:0}.better-heap .heap-legend{font-size:11px}.stage-canvas .heap-node{border:2px solid var(--lesson-node-line);background:var(--lesson-node-bg);color:var(--lesson-node-text);font-weight:700}.stage-canvas .heap-edge{stroke:var(--lesson-edge);stroke-width:3}.stage-canvas .heap-edge-highlight{stroke:var(--heap-edge-hot);stroke-width:4}.stage-canvas .heap-node-compare{background:var(--heap-compare-bg);border-color:var(--heap-compare-line)}.stage-canvas .heap-node-swap,.stage-canvas .heap-node-answer{background:var(--heap-swap-bg);border-color:var(--heap-swap-line);color:var(--heap-swap-text)}.stage-canvas .heap-tree-wrap{max-width:100%;gap:8px;justify-content:center}.stage-canvas .heap-chip-slot{width:85px}.stage-canvas .heap-chip{border-width:2px;background:var(--heap-chip-bg);color:var(--heap-chip-text);font-weight:700}.linked-list-view{align-items:safe center}.linked-list-view .track{--cell-gap: 30px;--line: color-mix(in srgb, var(--muted) 75%, var(--panel))}.linked-list-view .cell-current{color:var(--current-text-deep)}.linked-list-rail-pad{padding:0 30px}.linked-list-arrows{position:absolute;top:28px;left:0;right:0;height:var(--cell-w);pointer-events:none}.linked-list-arrow{position:absolute;top:0;height:100%;display:flex;align-items:center;transform:translate(-50%);font-family:var(--mono);font-size:1.05rem}.linked-list-arrow-fwd{color:var(--muted)}.linked-list-arrow-back{color:var(--found)}.linked-list-arrow-back .linked-list-arrow-glyph,.linked-list-rail-glyph{display:inline-block;animation:linked-list-flip var(--t-med) ease-out}@keyframes linked-list-flip{0%{transform:rotateY(180deg);color:var(--muted)}to{transform:rotateY(0)}}.linked-list-rail{position:absolute;top:28px;height:var(--cell-w);display:flex;align-items:center;font-family:var(--mono);font-size:1.05rem}.linked-list-rail-left{left:-24px;color:var(--found)}.linked-list-rail-right{right:-24px;color:var(--muted)}.linked-list-op-badge{font-family:var(--mono);font-weight:600}.linked-list-op-flash{animation:flash var(--t-med)}.linked-list-verdict{padding:10px 16px;border-radius:10px;border:1px solid var(--found);background:var(--found-dim);color:var(--found);text-align:center;font-weight:600;font-size:1.05rem;animation:rise-in var(--t-med) ease-out}.linked-list-legend{color:var(--muted);font-size:.75rem}.tree-bfs-view{align-items:safe center}.tree-bfs-view .queue-chip{color:var(--current-text-deep)}.tree-bfs-tree{position:relative;--line: color-mix(in srgb, var(--muted) 75%, var(--panel))}.tree-bfs-band{position:absolute;left:0;right:0;height:54px;border-radius:12px;transition:background-color var(--t-med),box-shadow var(--t-med)}.tree-bfs-band-done{background:color-mix(in srgb,var(--island-0) 8%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--island-0) 22%,transparent)}.tree-bfs-band-flash{animation:tree-bfs-band-glow var(--t-med) ease-out}@keyframes tree-bfs-band-glow{0%{background:color-mix(in srgb,var(--island-0) 28%,transparent)}}.tree-bfs-edges{position:absolute;top:0;right:0;bottom:0;left:0}.tree-bfs-edge{stroke:var(--line);stroke-width:2;transition:stroke var(--t-med),stroke-width var(--t-med)}.tree-bfs-edge-enqueue{stroke:var(--current);stroke-width:3}.tree-bfs-node{position:absolute;width:44px;height:44px;display:flex;align-items:center;justify-content:center;border-radius:999px;border:1px solid var(--line);background:var(--panel-2);color:var(--text);font-family:var(--mono);font-size:.95rem;transition:border-color var(--t-med),background-color var(--t-med),color var(--t-med),box-shadow var(--t-med)}.tree-bfs-node-queued{border:2px solid var(--current);background:var(--current-dim);color:var(--current-text-deep)}.tree-bfs-node-current{border:2px solid var(--current);background:var(--current);color:var(--bg);font-weight:600}.tree-bfs-node-visited{border:2px solid var(--island-0);background:color-mix(in srgb,var(--island-0) 30%,transparent);opacity:.9}.tree-bfs-node-enqueued{animation:tree-bfs-enqueue-pop var(--t-med) ease-out}@keyframes tree-bfs-enqueue-pop{0%{transform:scale(.72)}60%{transform:scale(1.1)}to{transform:none}}.tree-bfs-level-chip{padding:3px 9px;border-radius:999px;border:1px solid var(--island-0);background:color-mix(in srgb,var(--island-0) 12%,transparent);color:var(--island-0-text);font-family:var(--mono);font-size:.75rem;animation:rise-in var(--t-fast) ease-out}.tree-bfs-legend{color:var(--muted);font-size:.75rem}.backtracking-view{align-items:safe center}.backtracking-header{display:flex;justify-content:flex-end;width:100%}.backtracking-count-badge{font-weight:600}.backtracking-count-flash{animation:flash var(--t-med)}.backtracking-tree{position:relative;--line: color-mix(in srgb, var(--muted) 75%, var(--panel))}.backtracking-edges{position:absolute;top:0;right:0;bottom:0;left:0}.backtracking-edge{stroke:var(--line);stroke-width:2;transition:stroke var(--t-med),opacity var(--t-med)}.backtracking-edge-active{stroke:var(--current);stroke-width:3}.backtracking-edge-visited{stroke:var(--muted);opacity:.55}.backtracking-edge-label{fill:var(--muted);font-family:var(--mono);font-size:9px}.backtracking-node{position:absolute;width:28px;height:28px;display:flex;align-items:center;justify-content:center;border-radius:999px;border:1px solid var(--line);background:var(--panel-2);color:var(--muted);font-family:var(--mono);font-size:.75rem;transition:border-color var(--t-med),background-color var(--t-med),color var(--t-med),opacity var(--t-med),box-shadow var(--t-med)}.backtracking-node-leaf{border-style:dashed}.backtracking-node-active{border:2px solid var(--current);border-style:solid;background:var(--current-dim);color:var(--current-text-deep)}.backtracking-node-current{background:var(--current);color:var(--bg)}.backtracking-node-emitted{border-color:var(--found);background:var(--found-dim);color:var(--found);animation:flash var(--t-med)}.backtracking-node-visited{border-color:var(--muted);color:var(--text);background:var(--panel-2);opacity:.55}.backtracking-node-backtracked{animation:backtracking-dim var(--t-med) ease-out}@keyframes backtracking-dim{0%{opacity:1;box-shadow:0 0 0 2px var(--mismatch)}to{opacity:.55;box-shadow:none}}.backtracking-output{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:6px;min-height:28px;max-width:500px}.backtracking-output-label{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:.7rem;margin-right:4px}.backtracking-out-chip{padding:3px 9px;border-radius:999px;border:1px solid var(--pointer-c);background:color-mix(in srgb,var(--pointer-c) 14%,transparent);color:var(--pointer-c);font-family:var(--mono);font-size:.75rem}.backtracking-out-new{animation:rise-in var(--t-fast) ease-out,flash var(--t-med)}.backtracking-output-empty{color:var(--muted);font-size:.85rem;font-style:italic}.backtracking-legend{color:var(--muted);font-size:.75rem;max-width:520px;text-align:center}.dp-view{align-items:safe center}.dp-rows{display:flex;flex-direction:column;gap:12px}.dp-row{display:flex;align-items:flex-start;gap:10px}.dp-row-label{width:46px;padding-top:13px;text-align:right;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:.7rem}.dp-row .track{padding-top:0}.dp-row .cell-current{color:color-mix(in srgb,var(--current) 80%,var(--ink))}.dp-cell-empty{border-style:dashed;border-color:var(--muted);background:var(--bg);color:var(--muted)}.dp-cell-solved{border-color:var(--found);color:var(--found)}.dp-cell-take{border-color:var(--pointer-a);color:var(--pointer-a)}.dp-cell-skip{border-color:var(--pointer-b);color:var(--pointer-b)}.dp-cell-chosen{animation:flash var(--t-med)}.dp-cell-fill{border-color:var(--found);background:var(--found-dim);color:var(--found);animation:dp-fill-pop var(--t-med) ease-out .18s backwards}@keyframes dp-fill-pop{0%{transform:scale(.55);opacity:.25}to{transform:none;opacity:1}}.dp-cell-answer{border-color:var(--found);background:var(--found-dim);color:var(--found);animation:flash var(--t-med)}.dp-compare-readout{display:flex;align-items:center;flex-wrap:wrap;gap:10px;font-family:var(--mono);font-size:.9rem}.dp-compare-label{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:.7rem}.dp-compare-take{color:var(--pointer-a)}.dp-compare-skip{color:var(--pointer-b)}.dp-compare-empty{color:var(--muted);font-style:italic}.dp-compare-verdict{color:var(--found);font-size:.8rem}.dp-best-strip{display:flex;align-items:center;gap:10px}.dp-best-label{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:.7rem}.dp-best-badge{font-weight:600}.dp-best-flash{animation:flash var(--t-med)}.dp-legend{color:var(--muted);font-size:.75rem}@media(prefers-reduced-motion:reduce){.dp-cell-chosen,.dp-cell-fill,.dp-cell-answer,.dp-best-flash{animation:none}}.sorting-view{align-items:safe center;--sorting-unit: 11px}.sorting-bar-row{display:flex;align-items:flex-end;gap:var(--cell-gap)}.sorting-bar{width:var(--cell-w);display:flex;align-items:flex-start;justify-content:center;padding-top:3px;border-radius:8px 8px 4px 4px;border:1px solid var(--line);background:var(--panel-2);color:var(--text);font-family:var(--mono);font-size:.85rem;transition:height var(--t-med) ease,background-color var(--t-med),border-color var(--t-med),color var(--t-med),opacity var(--t-med)}.sorting-bar:not([class*=sorting-bar-]){border-color:color-mix(in srgb,var(--muted) 70%,var(--line))}.sorting-bar-pivot{border-color:var(--current);background:var(--current-dim);color:color-mix(in srgb,var(--current) 80%,var(--ink))}.sorting-bar-scan{border-color:var(--pointer-b);color:var(--pointer-b)}.sorting-bar-swap{border-color:var(--pointer-c);background:color-mix(in srgb,var(--pointer-c) 16%,transparent);color:var(--pointer-c);animation:flash var(--t-med)}.sorting-bar-placed{border-color:var(--found);background:var(--found-dim);color:var(--found)}.sorting-bar-landed{border-color:var(--found);background:var(--found-dim);color:var(--found);animation:flash var(--t-med)}.sorting-bar-out{border-color:var(--muted);color:var(--text);opacity:.65}.sorting-badge{font-family:var(--mono);font-weight:600}.sorting-badge-flash{animation:flash var(--t-med)}.sorting-verdict{padding:10px 16px;border-radius:10px;border:1px solid var(--found);background:var(--found-dim);color:var(--found);text-align:center;font-weight:600;font-size:1.05rem;animation:rise-in var(--t-med) ease-out}.sorting-legend{color:var(--muted);font-size:.75rem}.bst-view{align-items:safe center}.bst-incoming{color:var(--muted);font-family:var(--mono);font-size:.85rem}.bst-incoming-value{color:var(--pointer-a);font-weight:600}.bst-tree{position:relative}.bst-edges{position:absolute;top:0;right:0;bottom:0;left:0}.bst-edge{stroke:var(--line);stroke-width:2;transition:stroke var(--t-med),stroke-width var(--t-med)}.bst-edge:not([class*=bst-edge-]){stroke:color-mix(in srgb,var(--muted) 70%,var(--line))}.bst-edge-path{stroke:color-mix(in srgb,var(--pointer-a) 80%,var(--line));stroke-width:2.5}.bst-edge-taken{stroke:var(--pointer-a);stroke-width:3}.bst-node{position:absolute;width:44px;height:44px;display:flex;align-items:center;justify-content:center;border-radius:999px;border:1px solid var(--line);background:var(--panel-2);color:var(--text);font-family:var(--mono);font-size:.95rem;transition:border-color var(--t-med),background-color var(--t-med),color var(--t-med),box-shadow var(--t-med)}.bst-node:not([class*=bst-node-]){border-color:color-mix(in srgb,var(--muted) 70%,var(--line))}.bst-node-path{border:2px solid color-mix(in srgb,var(--pointer-a) 80%,var(--line));background:color-mix(in srgb,var(--pointer-a) 14%,transparent)}.bst-node-current{border:2px solid var(--current);background:var(--current);color:var(--bg);font-weight:600}.bst-node-next{border:2px solid var(--pointer-a);color:var(--pointer-a);animation:bst-next-pop var(--t-med) ease-out}.bst-node-empty{border-style:dashed;background:transparent}.bst-node-new{border:2px solid var(--found);background:var(--found);color:var(--bg);font-weight:600;animation:bst-attach-pop var(--t-med) ease-out}@keyframes bst-next-pop{0%{transform:scale(.8)}60%{transform:scale(1.08)}to{transform:none}}@keyframes bst-attach-pop{0%{transform:scale(.6)}60%{transform:scale(1.12)}to{transform:none}}.bst-verdict-badge{font-family:var(--mono);font-weight:600;animation:rise-in var(--t-fast) ease-out}.bst-attached{padding:10px 16px;border-radius:10px;border:1px solid var(--found);background:var(--found-dim);color:var(--found);text-align:center;font-weight:600;animation:rise-in var(--t-med) ease-out}.bst-legend{color:var(--muted);font-size:.75rem}.tree-dfs-view{align-items:safe center}.tree-dfs-tree{position:relative}.tree-dfs-edges{position:absolute;top:0;right:0;bottom:0;left:0}.tree-dfs-edge{stroke:var(--line);stroke-width:2;transition:stroke var(--t-med),stroke-width var(--t-med)}.tree-dfs-edge:not([class*=tree-dfs-edge-]){stroke:color-mix(in srgb,var(--muted) 70%,var(--line))}.tree-dfs-edge-dive{stroke:var(--island-1);stroke-width:3}.tree-dfs-edge-cross{stroke:var(--current);stroke-width:3}.tree-dfs-node{position:absolute;width:44px;height:44px;display:flex;align-items:center;justify-content:center;border-radius:999px;border:1px solid var(--line);background:var(--panel-2);color:var(--text);font-family:var(--mono);font-size:.95rem;transition:border-color var(--t-med),background-color var(--t-med),color var(--t-med),box-shadow var(--t-med)}.tree-dfs-node:not([class*=tree-dfs-node-]){border-color:color-mix(in srgb,var(--muted) 70%,var(--line))}.tree-dfs-node-stacked{border:2px solid var(--island-1);background:color-mix(in srgb,var(--island-1) 14%,transparent);color:var(--island-1)}.tree-dfs-node-current{border:2px solid var(--current);background:var(--current);color:var(--bg);font-weight:600}.tree-dfs-node-visited{border:2px solid var(--island-1);background:color-mix(in srgb,var(--island-1) 45%,transparent);opacity:.9}.tree-dfs-node-pushed{animation:tree-dfs-push-pop var(--t-med) ease-out}@keyframes tree-dfs-push-pop{0%{transform:scale(.72)}60%{transform:scale(1.1)}to{transform:none}}.tree-dfs-stack-chip{padding:3px 9px;border-radius:999px;border:1px solid var(--island-1);background:color-mix(in srgb,var(--island-1) 12%,transparent);color:var(--island-1);font-family:var(--mono);font-size:.75rem;animation:rise-in var(--t-fast) ease-out}.tree-dfs-stack-top{border-width:2px;background:color-mix(in srgb,var(--island-1) 24%,transparent);color:color-mix(in srgb,var(--island-1) 80%,var(--ink))}.tree-dfs-out-chip{padding:3px 9px;border-radius:999px;border:1px solid var(--island-1);background:color-mix(in srgb,var(--island-1) 12%,transparent);color:var(--island-1);font-family:var(--mono);font-size:.75rem;animation:rise-in var(--t-fast) ease-out}.tree-dfs-legend{color:var(--muted);font-size:.75rem}.union-find-view{align-items:safe center}.union-find-header{display:flex;justify-content:flex-end;width:100%}.union-find-count-badge{font-weight:600}.union-find-count-flash{animation:flash var(--t-med)}.union-find-forest{position:relative}.union-find-edges{position:absolute;top:0;right:0;bottom:0;left:0}.union-find-edge-merged{animation:union-find-edge-pop var(--t-med) ease-out}@keyframes union-find-edge-pop{0%{stroke-width:6;opacity:.4}}.union-find-edge-check{stroke-dasharray:5 4;fill:none}.union-find-node{position:absolute;width:44px;height:44px;display:flex;align-items:center;justify-content:center;border-radius:999px;font-family:var(--mono);font-size:.95rem;transition:left var(--t-med),top var(--t-med),border-color var(--t-med),background-color var(--t-med),color var(--t-med),box-shadow var(--t-med)}.union-find-root-badge{position:absolute;top:-7px;right:-7px;width:16px;height:16px;border-radius:999px;border-width:1px;border-style:solid;font-size:10px;line-height:14px;text-align:center}.union-find-node-finder-a{box-shadow:0 0 0 2px var(--pointer-a)}.union-find-node-finder-b{box-shadow:0 0 0 2px var(--pointer-b)}.union-find-node-finder-a.union-find-node-finder-b{box-shadow:0 0 0 2px var(--pointer-a),0 0 0 5px var(--pointer-b)}.union-find-node-hopped{animation:union-find-hop var(--t-med) ease-out}@keyframes union-find-hop{0%{transform:scale(.8)}60%{transform:scale(1.12)}to{transform:none}}.union-find-node-rehung{animation:union-find-rehang var(--t-med) ease-out}@keyframes union-find-rehang{0%{transform:translateY(-14px)}}.union-find-node-sameroot{animation:union-find-sameroot var(--t-med) ease-out}@keyframes union-find-sameroot{0%{box-shadow:0 0 0 8px var(--found-dim)}}.union-find-scan{display:flex;flex-direction:column;gap:4px;font-family:var(--mono)}.union-find-scan-head,.union-find-scan-row{display:flex;gap:4px;align-items:center}.union-find-scan-corner,.union-find-scan-rowlabel,.union-find-scan-col{width:26px;text-align:center;font-size:.62rem;color:var(--visited-text)}.union-find-pair,.union-find-pair-gap{width:26px;height:22px;display:inline-flex;align-items:center;justify-content:center;border-radius:6px;font-size:.7rem}.union-find-pair{color:var(--muted);transition:border-color var(--t-fast),background var(--t-fast),color var(--t-fast)}.union-find-pair-current{box-shadow:0 0 10px var(--current-dim)}.union-find-legend{color:var(--muted);font-size:.75rem}.stage-canvas .union-find-node{border:2px solid var(--lesson-node-line);background:var(--lesson-node-bg);color:var(--lesson-node-text);font-weight:700}.stage-canvas .union-find-edge{stroke:var(--lesson-edge);stroke-width:3}.stage-canvas .union-find-node-root{background:var(--uf-root-bg);border:3px solid var(--uf-root-line);color:var(--uf-root-text)}.stage-canvas .union-find-edge-merged{stroke:var(--uf-edge-merged);stroke-width:4}.stage-canvas .union-find-edge-check{stroke:var(--uf-edge-check);stroke-width:3;opacity:1}.stage-canvas .union-find-root-badge{background:var(--uf-root-line);color:var(--panel);border-color:var(--uf-root-line);font-weight:700}.stage-canvas .union-find-pair{border:1.5px solid var(--uf-pair-line);background:var(--lesson-tint)}.stage-canvas .union-find-pair-current{background:var(--uf-pair-current-bg);border-color:var(--uf-pair-current-line);color:var(--uf-pair-current-text)}.stage-canvas .union-find-pair-merged{background:var(--uf-pair-merged-bg);border-color:var(--found);color:var(--uf-pair-merged-text)}.stage-canvas .union-find-pair-absent{opacity:1;background:var(--uf-pair-absent-bg);color:var(--uf-pair-absent-text)}.stage-canvas .union-find-pair-redundant{background:var(--uf-pair-redundant-bg);color:var(--uf-pair-redundant-text)}.stage-canvas .union-find-forest{flex-shrink:0}@media(max-width:450px){.stage-canvas .union-find-forest{transform:scale(.83);transform-origin:left top;margin-right:-72px;margin-bottom:-35px}}.dijkstra-view{align-items:safe center}.dijkstra-graph{position:relative}.dijkstra-edges{position:absolute;top:0;right:0;bottom:0;left:0}.dijkstra-edge line{stroke:var(--line);stroke-width:2;transition:stroke var(--t-med),stroke-width var(--t-med)}.dijkstra-edge polygon{fill:var(--line);transition:fill var(--t-med)}.dijkstra-edge:not(.dijkstra-edge-improve):not(.dijkstra-edge-reject) line{stroke:var(--edge)}.dijkstra-edge:not(.dijkstra-edge-improve):not(.dijkstra-edge-reject) polygon{fill:var(--edge)}.dijkstra-weight{fill:var(--muted);font-family:var(--mono);font-size:11px;transition:fill var(--t-med)}.dijkstra-edge-improve line{stroke:var(--current);stroke-width:3}.dijkstra-edge-improve polygon{fill:var(--current)}.dijkstra-edge-improve .dijkstra-weight{fill:var(--current)}.dijkstra-edge-reject line{stroke:var(--mismatch);stroke-width:2.5;stroke-dasharray:6 5}.dijkstra-edge-reject polygon{fill:var(--mismatch)}.dijkstra-edge-reject .dijkstra-weight{fill:var(--mismatch)}.dijkstra-node{position:absolute;width:44px;height:44px;display:flex;align-items:center;justify-content:center;border-radius:999px;border:1px solid var(--line);background:var(--panel-2);color:var(--text);font-family:var(--mono);font-size:.95rem;transition:border-color var(--t-med),background-color var(--t-med),color var(--t-med),box-shadow var(--t-med)}.dijkstra-node-labeled{border:2px solid var(--current);background:var(--current-dim);color:var(--current-text)}.dijkstra-node-settled{border:2px solid var(--found);background:color-mix(in srgb,var(--found) 30%,transparent);color:var(--text)}.dijkstra-node-current{box-shadow:0 0 0 2px var(--panel),0 0 0 4px var(--found);font-weight:600}.dijkstra-dist{position:absolute;width:40px;text-align:center;font-family:var(--mono);font-size:.72rem;line-height:1.4;border-radius:999px;border:1px solid transparent;transition:color var(--t-med),border-color var(--t-med),background-color var(--t-med)}.dijkstra-dist-unreached{color:var(--muted)}.dijkstra-dist-set{color:var(--pointer-b);border-color:color-mix(in srgb,var(--pointer-b) 45%,transparent);background:color-mix(in srgb,var(--pointer-b) 12%,transparent)}.dijkstra-dist-flash{animation:dijkstra-label-rewrite var(--t-med) ease-out}@keyframes dijkstra-label-rewrite{0%{transform:scale(.7);background:color-mix(in srgb,var(--current) 35%,transparent)}60%{transform:scale(1.15)}to{transform:none}}.dijkstra-pq-chip{padding:3px 9px;border-radius:999px;border:1px solid color-mix(in srgb,var(--pointer-b) 55%,transparent);background:color-mix(in srgb,var(--pointer-b) 10%,transparent);color:var(--pointer-b);font-family:var(--mono);font-size:.75rem;animation:rise-in var(--t-fast) ease-out;transition:border-color var(--t-med),background-color var(--t-med),color var(--t-med)}.dijkstra-pq-pop{border-color:var(--current);background:var(--current-dim);color:var(--current-text);font-weight:600}.dijkstra-pq-stale{border-style:dashed;border-color:var(--muted);background:var(--panel);color:var(--muted);text-decoration:line-through}.dijkstra-answer-banner{padding:10px 16px;border-radius:10px;border:1px solid var(--found);background:var(--found-dim);color:var(--found);text-align:center;font-weight:600;font-size:1.05rem;animation:rise-in var(--t-med) ease-out}.dijkstra-legend{color:var(--muted);font-size:.75rem}.map-row-bump{border-color:var(--current);box-shadow:0 0 0 2px var(--current-dim)}.new-svg{width:100%;height:auto;max-height:380px;display:block;font-family:ui-monospace,SFMono-Regular,monospace;overflow:visible}.new-svg text{-webkit-user-select:none;user-select:none}.new-svg rect,.new-svg circle,.new-svg line{transition:fill .4s,stroke .4s,stroke-width .4s}.new-tile{transition:transform .55s cubic-bezier(.2,.7,.2,1)}.new-svg .new-width{transition:width .6s}.new-svg .new-range{transition:x .5s,width .5s}.new-enter{animation:new-arrival .5s ease-out}.new-pop{animation:new-pop .6s ease-out}.new-mini{padding:10px 3px;background:var(--na-mini-bg);border:1px solid var(--na-mini-line);min-width:0;overflow:hidden}.new-mini-svg{min-height:120px}.new-mini-svg text{font-weight:700}@keyframes new-arrival{0%{opacity:.2;translate:0 -12px}to{opacity:1;translate:0 0}}@keyframes new-pop{0%{opacity:0;translate:0 -16px}to{opacity:1;translate:0 0}}@media(prefers-reduced-motion:reduce){.new-svg *{animation:none!important;transition:none!important}}.new-svg[data-algorithm=intervals]{--algo-fill:var(--na-intervals-fill);--algo-edge:var(--na-intervals-edge)}.new-svg[data-algorithm=greedy]{--algo-fill:var(--na-greedy-fill);--algo-edge:var(--na-greedy-edge)}.new-svg[data-algorithm=topological-sort]{--algo-fill:var(--na-topological-sort-fill);--algo-edge:var(--na-topological-sort-edge)}.new-svg[data-algorithm=trie]{--algo-fill:var(--na-trie-fill);--algo-edge:var(--na-trie-edge)}.new-svg[data-algorithm=dp-2d]{--algo-fill:var(--na-dp-2d-fill);--algo-edge:var(--na-dp-2d-edge)}.new-svg[data-algorithm=bits]{--algo-fill:var(--na-bits-fill);--algo-edge:var(--na-bits-edge)}.new-svg[data-algorithm=merge-sort]{--algo-fill:var(--na-merge-sort-fill);--algo-edge:var(--na-merge-sort-edge)}.new-svg[data-algorithm=monotonic-stack]{--algo-fill:var(--na-monotonic-stack-fill);--algo-edge:var(--na-monotonic-stack-edge)}.new-svg[data-algorithm] [fill="#e5edf6"],.new-svg[data-algorithm] [fill="#dfe8f5"],.new-svg[data-algorithm] circle[fill="#fff"],.new-svg[data-algorithm] circle[fill=white]{fill:var(--algo-fill);stroke:var(--algo-edge)}.new-svg[data-algorithm] [fill="#d2eee2"],.new-svg[data-algorithm] [fill="#ccebdd"]{fill:var(--na-done-fill);stroke:var(--na-done-edge)}.new-svg[data-algorithm] [fill="#e5edff"]{fill:var(--na-active-fill);stroke:var(--na-active-edge)}.new-svg[data-algorithm] [fill="#f0e3e5"]{fill:var(--na-rejected-fill);stroke:var(--na-rejected-edge)}.new-svg[data-algorithm] .new-tile rect+text,.new-svg[data-algorithm] circle+text,.new-svg[data-algorithm] .new-width+text{fill:var(--na-text)}.new-svg[data-algorithm=merge-sort] [y="143"]{stroke-width:2}.code-panel{margin:0;flex:0 0 auto;min-height:0;max-height:560px;overflow-y:auto;overflow-x:auto;padding:12px 0;border-radius:0;border:1px solid var(--line);background:var(--panel);font-family:var(--mono);font-size:.85rem;line-height:1.6}.code-line{display:flex;gap:14px;padding:1px 16px;border-left:3px solid transparent;white-space:pre;width:max-content;min-width:100%}.code-line-active{border-left-color:var(--ink);background:var(--lime)}.code-gutter{flex:none;width:2ch;text-align:right;color:var(--code-comment-strong);-webkit-user-select:none;user-select:none}.code-content{color:var(--code-plain);white-space:pre;flex:1;min-width:0;padding-left:2ch;text-indent:-2ch}.tok-kw{color:var(--code-kw)}.tok-str{color:var(--code-str)}.code-line-active .tok-str{color:var(--code-str-on-lime)}.tok-num{color:var(--code-num)}.code-line-active .tok-num{color:var(--code-num-on-lime)}.tok-comment{color:var(--code-comment-strong);font-style:italic}.tok-plain{color:var(--code-plain)}.narration{padding:14px 18px;border-radius:0;border-left:3px solid var(--blue);background:var(--paper);color:var(--text);font-family:var(--serif);font-style:italic;font-size:1.15rem;animation:rise-in .16s ease-out}.controls{display:flex;align-items:center;flex-wrap:wrap;gap:10px;padding:10px 4px}.btn-icon{width:38px;height:38px;display:inline-flex;align-items:center;justify-content:center;border-radius:0;border:1px solid var(--line);background:var(--panel);color:var(--text);font-size:1rem;cursor:pointer;transition:border-color var(--t-fast),color var(--t-fast),opacity var(--t-fast)}.btn-icon:hover:not(:disabled){border-color:var(--ink);color:var(--ink)}.btn-icon:disabled{opacity:.35;cursor:not-allowed}.btn-icon-active{border-color:var(--ink);color:var(--paper);background:var(--ink)}.btn-icon-active:hover:not(:disabled){color:var(--paper)}.voice-cluster{display:flex;flex-wrap:wrap;align-items:center;gap:12px}.voice-field{display:flex;flex-direction:column;gap:3px;font-size:.75rem;color:var(--muted)}.voice-field select{padding:6px 8px;border-radius:0;border:1px solid var(--line);background:var(--panel);color:var(--text);font:inherit;font-size:.8rem;max-width:220px}.voice-field input[type=range]{width:110px;accent-color:var(--blue)}.voice-cluster .voice-google-key{flex-basis:100%;padding-top:10px;border-top:1px solid var(--line)}.btn-play{min-width:108px;padding:9px 20px;border-radius:0;border:1px solid var(--ink);background:var(--ink);color:var(--paper);font-weight:600;font-size:.95rem;cursor:pointer;transition:opacity var(--t-fast),background var(--t-fast)}.btn-play:hover:not(:disabled){background:var(--blue);border-color:var(--blue);color:var(--paper)}.btn-play:disabled{opacity:.35;cursor:not-allowed}.speed-group{display:inline-flex;border-radius:0;border:1px solid var(--line);overflow:hidden}.speed-btn{padding:8px 12px;border:none;border-right:1px solid var(--line);background:var(--panel);color:var(--muted);font-family:var(--mono);font-size:.8rem;cursor:pointer;transition:background var(--t-fast),color var(--t-fast)}.speed-btn:last-child{border-right:none}.speed-btn:hover{color:var(--text)}.speed-btn-active{background:var(--ink);color:var(--paper)}.speed-btn-active:hover{color:var(--paper)}.step-counter{margin-left:auto;color:var(--muted);font-family:var(--mono);font-size:.8rem}.study-panel{margin-top:16px;border-radius:0;border:1px solid var(--line);background:var(--panel)}.study-toggle{width:100%;display:flex;align-items:center;gap:10px;padding:14px 18px;border:none;background:none;color:var(--text);font:inherit;text-align:left;cursor:pointer}.study-toggle-caret{color:var(--muted);width:1em}.study-toggle-label{font-weight:600}.study-toggle-count{margin-left:auto;color:var(--muted);font-family:var(--mono);font-size:.8rem}.study-list{list-style:none;display:flex;flex-direction:column;gap:2px;padding:0 18px 16px}.study-row{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:8px 0;border-top:1px solid var(--line);font-size:.9rem}.study-row-note-only{color:var(--muted);font-size:.85rem}.study-tag{display:inline-flex;align-items:center;gap:4px;padding:3px 9px;border-radius:0;border:1px solid var(--line);font-family:var(--mono);font-size:.72rem;white-space:nowrap}.study-tag-must-know{border-color:var(--mismatch);background:var(--mismatch-dim);color:var(--mismatch-text)}.study-tag-likely{border-color:var(--current);background:var(--current-dim);color:var(--current-text)}.study-tag-gap{border-color:var(--found);background:var(--found-dim);color:var(--found)}.study-tag-practice{border-color:var(--pointer-a);background:color-mix(in srgb,var(--pointer-a) 18%,transparent);color:var(--pointer-a)}.study-subheader{padding:10px 0 4px;border-top:1px solid var(--line);color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:.7rem}.study-title{color:var(--text);text-decoration:none;border-bottom:1px dotted var(--muted)}.study-title:hover{color:var(--blue);border-bottom-color:var(--blue)}.study-diff{padding:2px 8px;border-radius:0;font-family:var(--mono);font-size:.68rem;border:1px solid}.study-diff-e{color:var(--found);border-color:var(--found);background:var(--found-dim)}.study-diff-m{color:var(--current-text);border-color:var(--current);background:var(--current-dim)}.study-diff-h{color:var(--mismatch-text);border-color:var(--mismatch);background:var(--mismatch-dim)}.study-tier{display:flex;align-items:center;gap:8px;padding:12px 0 2px;font-family:var(--mono);font-size:.66rem;letter-spacing:.1em;text-transform:uppercase}.study-tier-count{color:var(--visited-text)}.study-tier-rule{flex:1;height:1px;background:var(--line)}.study-tier-e .study-tier-label{color:var(--found)}.study-tier-m .study-tier-label{color:var(--current)}.study-tier-h .study-tier-label{color:var(--mismatch)}.study-tier-e .study-tier-rule{background:color-mix(in srgb,var(--found) 30%,transparent)}.study-tier-m .study-tier-rule{background:color-mix(in srgb,var(--current) 30%,transparent)}.study-tier-h .study-tier-rule{background:color-mix(in srgb,var(--mismatch) 30%,transparent)}.study-note{color:var(--muted);font-size:.82rem}.study-explain{margin-left:auto;padding:2px 9px;border-radius:0;border:1px solid var(--line);background:none;color:var(--muted);font:inherit;font-size:.72rem;white-space:nowrap;cursor:pointer;transition:border-color var(--t-fast),color var(--t-fast)}.study-explain:hover{border-color:var(--ink);color:var(--ink)}.strategy-section{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:16px;padding-top:28px}.strategy-card,.study-card{display:flex;flex-direction:column;gap:12px;padding:18px;border-radius:0;border:1px solid var(--line);background:var(--panel)}.strategy-card h2,.study-card h2{font-size:1.05rem}.strategy-block h3{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:.7rem;margin-bottom:6px}.strategy-list{display:flex;flex-direction:column;gap:4px;padding-left:1.2em;font-size:.85rem;color:var(--text)}.study-card-what{color:var(--muted);font-size:.85rem}.study-card-triggers{display:flex;flex-wrap:wrap;gap:6px}.study-trigger-chip{padding:3px 9px;border-radius:0;background:var(--panel-2);border:1px solid var(--line);color:var(--muted);font-size:.75rem}.study-card .study-list{padding:0}.study-card .study-row{border-top:1px solid var(--line)}.study-card .study-row:first-child{border-top:none}:where(.bigo-page){line-height:normal}:where(.bigo-page) :where(p,h3){margin-block:1em}:where(.bigo-page) .page-title{font:inherit;letter-spacing:normal}:where(.bigo-page) :is(h1,h2,h3){font-family:var(--display)}:where(.bigo-page) button,:where(.bigo-page) input,:where(.bigo-page) a{font:inherit}:where(.bigo-page) button,:where(.bigo-page) a,:where(.bigo-page) input{touch-action:manipulation}:where(.bigo-page) button,:where(.bigo-page) a{color:inherit}:where(.bigo-page) a{text-decoration:none}:where(.bigo-page) button{cursor:pointer}:where(.bigo-page) button:focus-visible,:where(.bigo-page) a:focus-visible,:where(.bigo-page) input:focus-visible{outline:3px solid var(--blue);outline-offset:4px}:where(.bigo-page) .eyebrow{font:11px var(--mono);letter-spacing:1.5px;text-transform:uppercase;display:flex;align-items:center;gap:12px}:where(.bigo-page) .eyebrow:before{content:"";width:24px;height:2px;background:currentColor}:where(.bigo-page) h1{font-size:clamp(45px,5.5vw,78px);letter-spacing:-4px;line-height:1.01;font-weight:500;margin:25px 0}:where(.bigo-page) p{line-height:1.6}:where(.bigo-page) .lede{color:var(--muted);max-width:450px;font-size:16px;line-height:1.7}:where(.bigo-page) .section-head{display:flex;align-items:end;justify-content:space-between;margin-bottom:25px}:where(.bigo-page) h2{font-size:31px;letter-spacing:-1px;font-weight:500;margin:0}:where(.bigo-page) .open-link{font-size:12px;color:var(--blue)}:where(.bigo-page) .page-title{padding:50px 0 35px}:where(.bigo-page) .page-title h1{font-size:64px;margin:22px 0 18px}:where(.bigo-page) .page-title .lede{max-width:630px}:where(.bigo-page) input[type=range]{width:100%;accent-color:var(--blue)}:where(.bigo-page) .note{font:11px/1.7 var(--mono);color:var(--muted)}@media(max-width:900px){:where(.bigo-page) h1{letter-spacing:-2.5px}}@media(max-width:620px){:where(.bigo-page) h1{font-size:53px}:where(.bigo-page) .section-head h2{font-size:26px}:where(.bigo-page) .page-title h1{font-size:48px}:where(.bigo-page) .page-title{padding-top:35px}}:where(.bigo-page) .canvas-title h1{font-size:56px}:where(.bigo-page) .canvas-title{padding:35px 0 28px}:where(.bigo-page) .complexity-table-wrap{overflow:auto}:where(.bigo-page) .complexity-table{border-collapse:collapse;width:100%;text-align:left;margin-bottom:25px;min-width:580px}:where(.bigo-page) .complexity-table th{font:10px var(--mono);color:var(--muted);padding:14px;border-bottom:1px solid var(--ink)}:where(.bigo-page) .complexity-table td{padding:17px 14px;font:13px var(--mono);border-bottom:1px solid var(--line)}:where(.bigo-page) .complexity-table td:first-child{font:14px var(--body)}@media(max-width:620px){:where(.bigo-page) .canvas-title h1{font-size:46px}}:where(.bigo-page) .space-explainer{display:grid;grid-template-columns:1fr 1fr 1fr;gap:35px;margin:35px 0 45px}:where(.bigo-page) .space-explainer h2{margin-top:18px}:where(.bigo-page) .space-explainer h3{font-size:17px;font-weight:500}:where(.bigo-page) .space-explainer p{font-size:14px;color:var(--muted)}:where(.bigo-page) .cost-example{display:block;font:11px/1.6 var(--body);color:var(--muted);margin-top:7px}@media(max-width:700px){:where(.bigo-page) .space-explainer{grid-template-columns:1fr;gap:5px}:where(.bigo-page) .space-explainer h2 br{display:none}}:where(.bigo-page) .growth-studio{background:var(--panel);border:1px solid var(--line);padding:30px;margin-bottom:40px}:where(.bigo-page) .studio-heading{display:flex;justify-content:space-between;align-items:center;gap:20px}:where(.bigo-page) .studio-heading h2{font-size:31px;margin-top:14px}:where(.bigo-page) .studio-unit{font:9px var(--mono);letter-spacing:.5px;color:var(--muted)}:where(.bigo-page) .studio-legend{display:flex;gap:8px;flex-wrap:wrap;margin:25px 0 20px}:where(.bigo-page) .studio-legend button{display:flex;align-items:center;gap:7px;padding:9px 12px;background:var(--panel);border:1px solid var(--growth-rule);font:12px var(--mono)}:where(.bigo-page) .studio-legend button span{width:14px;height:3px;background:var(--curve)}:where(.bigo-page) .studio-legend button[aria-pressed=true]{border-color:var(--curve);color:var(--curve);box-shadow:inset 0 -2px var(--curve)}:where(.bigo-page) #studio-plot{width:100%;display:block}:where(.bigo-page) .studio-tick{font:11px var(--mono);fill:var(--growth-tick)}:where(.bigo-page) .studio-axis{font:9px var(--mono);fill:var(--growth-tick);letter-spacing:1px}:where(.bigo-page) .studio-marker{font:11px var(--mono);fill:var(--blue)}:where(.bigo-page) .studio-input{display:flex;align-items:center;gap:30px;border-top:1px solid var(--growth-rule);padding:20px 0}:where(.bigo-page) .studio-input label{display:flex;flex-direction:column;gap:8px;font:9px var(--mono);min-width:110px;color:var(--muted)}:where(.bigo-page) .studio-input strong{font:23px var(--mono);color:var(--blue)}:where(.bigo-page) .studio-input input{flex:1;min-width:0}:where(.bigo-page) .studio-readings{display:grid;grid-template-columns:repeat(6,1fr);border:1px solid var(--growth-rule)}:where(.bigo-page) .studio-reading{padding:15px 12px;border-right:1px solid var(--growth-rule);min-width:0;border-top:2px solid var(--curve)}:where(.bigo-page) .studio-reading:last-child{border-right:0}:where(.bigo-page) .studio-reading span{font:11px var(--mono);color:var(--curve)}:where(.bigo-page) .studio-reading strong{display:block;font:24px var(--mono);margin:12px 0 6px}:where(.bigo-page) .studio-reading small{font:9px/1.6 var(--mono);color:var(--muted);display:block}:where(.bigo-page) .studio-reading.dim{opacity:.35}:where(.bigo-page) .studio-caption{font:10px/1.7 var(--mono);color:var(--muted);margin:16px 0 0}@media(max-width:850px){:where(.bigo-page) .studio-readings{grid-template-columns:repeat(3,1fr)}:where(.bigo-page) .studio-reading:nth-child(3n){border-right:0}:where(.bigo-page) .studio-unit{display:none}}@media(max-width:620px){:where(.bigo-page) .growth-studio{padding:18px 12px}:where(.bigo-page) .studio-heading{padding:0 5px}:where(.bigo-page) .studio-heading h2{font-size:27px}:where(.bigo-page) .studio-legend{gap:5px}:where(.bigo-page) .studio-legend button{font-size:10px;padding:8px}:where(.bigo-page) .studio-input{gap:15px}:where(.bigo-page) .studio-reading strong{font-size:20px}:where(.bigo-page) .studio-reading{padding:12px 9px}}:where(.bigo-page) .bigo-ladder,:where(.bigo-page) .bigo-rules{margin-bottom:45px}:where(.bigo-page) :where(.bigo-ladder,.bigo-rules) :where(p,h3){margin-block:0}:where(.bigo-page) .bigo-ladder{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:12px}:where(.bigo-page) .bigo-step{border:1px solid var(--line);border-left:3px solid var(--cls);border-radius:0;background:var(--panel);padding:12px 14px;display:flex;flex-direction:column;gap:6px}:where(.bigo-page) .bigo-step-head{display:flex;align-items:baseline;gap:8px}:where(.bigo-page) .bigo-step-dot{width:8px;height:8px;border-radius:0;background:var(--cls);flex-shrink:0;align-self:center}:where(.bigo-page) .bigo-step-cls{font-family:var(--mono);font-weight:600;color:var(--text);font-size:.95rem;white-space:nowrap}:where(.bigo-page) .bigo-step-feel{color:var(--muted);font-size:.75rem}:where(.bigo-page) .bigo-step-row{display:flex;gap:8px;color:var(--muted);font-size:.78rem;line-height:1.4}:where(.bigo-page) .bigo-step-row span{font-family:var(--mono);font-size:.62rem;text-transform:uppercase;letter-spacing:.08em;color:var(--visited-text);flex-shrink:0;padding-top:2px;width:38px}:where(.bigo-page) .bigo-rules{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px}:where(.bigo-page) .bigo-rule{border:1px solid var(--line);border-radius:0;background:var(--panel);padding:14px 16px}:where(.bigo-page) .bigo-rule h3{font-size:.92rem;margin-bottom:6px}:where(.bigo-page) .bigo-rule p{color:var(--muted);font-size:.82rem;line-height:1.5}.roadmap{line-height:normal}.roadmap p{margin:1em 0}.roadmap input[type=checkbox]{margin:3px 3px 3px 4px}.roadmap .page-title{font:inherit;letter-spacing:inherit}.roadmap h1,.roadmap h2{font-family:var(--display)}.roadmap button,.roadmap input,.roadmap a{font:inherit}.roadmap button,.roadmap a,.roadmap input{touch-action:manipulation}.roadmap button,.roadmap a{color:inherit}.roadmap a{text-decoration:none}.roadmap button{cursor:pointer}.roadmap button:focus-visible,.roadmap a:focus-visible,.roadmap input:focus-visible,.roadmap summary:focus-visible{outline:3px solid var(--blue);outline-offset:4px}.roadmap .eyebrow{font:11px var(--mono);letter-spacing:1.5px;text-transform:uppercase;display:flex;align-items:center;gap:12px}.roadmap .eyebrow:before{content:"";width:24px;height:2px;background:currentColor}.roadmap h1{font-size:clamp(45px,5.5vw,78px);letter-spacing:-4px;line-height:1.01;font-weight:500;margin:25px 0}.roadmap p{line-height:1.6}.roadmap .lede{color:var(--muted);max-width:450px;font-size:16px;line-height:1.7}.roadmap h2{font-size:31px;letter-spacing:-1px;font-weight:500;margin:0}.roadmap .page-title{padding:50px 0 35px}.roadmap .page-title h1{font-size:64px;margin:22px 0 18px}.roadmap .page-title .lede{max-width:630px}.roadmap .note{font:11px/1.7 var(--mono);color:var(--muted)}.roadmap .problem{display:flex;align-items:center;gap:12px;border-top:1px solid var(--line);padding:13px 0;font-size:13px}.roadmap .problem input{width:17px;height:17px;accent-color:var(--blue)}.roadmap .problem label{flex:1;cursor:pointer}.roadmap .problem .diff{font:10px var(--mono);padding:5px 7px;background:var(--map-diff)}.roadmap .problem a{font-size:17px;color:var(--blue)}@media(max-width:900px){.roadmap h1{letter-spacing:-2.5px}}@media(max-width:620px){.roadmap h1{font-size:53px}.roadmap .page-title h1{font-size:48px}.roadmap .page-title{padding-top:35px}}.roadmap .canvas-title h1{font-size:56px}.roadmap .canvas-title{padding:35px 0 28px}.roadmap .map-top{display:flex;align-items:center;justify-content:space-between;padding:15px 0;border-top:1px solid var(--ink);font:12px var(--mono)}.roadmap .map-layout{display:grid;grid-template-columns:minmax(0,1fr) 310px;border:1px solid var(--line);margin-bottom:18px}.roadmap .map-viewport{height:650px;position:relative;overflow:hidden;overflow:clip;background-color:var(--map-canvas);background-image:radial-gradient(var(--map-dot) .8px,transparent .8px);background-size:18px 18px;cursor:grab;touch-action:none}.roadmap .map-viewport.dragging{cursor:grabbing}.roadmap .map-world{position:absolute;left:0;top:0;width:960px;height:800px;transform-origin:0 0}.roadmap .map-world>svg{position:absolute;pointer-events:none}.roadmap .map-node{position:absolute;width:208px;height:78px;background:var(--paper);border:1px solid var(--map-node-line);box-shadow:0 3px 0 var(--map-node-shade);padding:12px 15px;text-align:left;color:var(--ink)}.roadmap .map-node:hover{border-color:var(--blue)}.roadmap .map-node.selected{background:var(--blue);color:var(--panel);border-color:var(--blue);box-shadow:0 3px 0 var(--map-selected-shade)}.roadmap .map-node.complete:not(.selected){background:var(--lime)}.roadmap .map-node-top{font:10px var(--mono);display:flex;justify-content:space-between;opacity:.7;margin-bottom:8px}.roadmap .map-node strong{font-size:15px;font-weight:500;letter-spacing:-.3px}.roadmap .map-node-bar{display:block;position:absolute;bottom:0;left:0;height:3px;width:100%}.roadmap .map-node-bar i{display:block;height:100%;background:var(--lime)}.roadmap .map-controls{display:flex;gap:0;position:absolute;bottom:16px;left:16px;background:var(--paper);border:1px solid var(--line);align-items:center;box-shadow:0 3px 12px var(--map-controls-shadow)}.roadmap .map-controls button{border:0;background:none;padding:12px;font-size:13px}.roadmap .map-controls button:hover{background:var(--map-controls-hover)}.roadmap .map-controls span{font:10px var(--mono);min-width:36px;text-align:center}.roadmap .map-hint{position:absolute;top:15px;left:15px;font:10px var(--mono);color:var(--muted);background:color-mix(in srgb,var(--map-canvas) 85%,transparent);padding:7px}.roadmap .map-detail{padding:24px;border-left:1px solid var(--line);max-height:650px;overflow:auto}.roadmap .map-detail h2{font-size:28px;margin:20px 0}.roadmap .map-detail .problem{font-size:12px;gap:8px}.roadmap .map-detail .problem input{flex-shrink:0}.roadmap .map-detail .problem .diff{font-size:9px;padding:3px}@media(max-width:1050px){.roadmap .map-layout{grid-template-columns:1fr}.roadmap .map-detail{border-left:0;border-top:1px solid var(--line);max-height:none}.roadmap .map-viewport{height:570px}.roadmap .map-problems{display:grid;grid-template-columns:1fr 1fr;gap:0 25px}}@media(max-width:620px){.roadmap .canvas-title h1{font-size:46px}.roadmap .map-viewport{height:440px}.roadmap .map-hint{font-size:9px}.roadmap .map-problems{grid-template-columns:1fr}.roadmap .map-top .eyebrow{font-size:9px;letter-spacing:0}.roadmap .map-top{font-size:10px}.roadmap .map-node:focus-visible{outline:4px solid var(--ink)}}.roadmap .map-node{height:88px;padding-bottom:23px}.roadmap .map-node-bar{left:14px;bottom:9px;width:calc(100% - 28px);height:6px;background:var(--map-node-track);border-radius:1px;overflow:hidden}.roadmap .map-node-bar i{background:var(--map-done);transition:width .3s ease}.roadmap .map-node.selected .map-node-bar{background:color-mix(in srgb,var(--panel) 31.4%,transparent)}.roadmap .map-node.selected .map-node-bar i{background:var(--lime)}.roadmap .map-node.complete:not(.selected) .map-node-bar i{background:var(--map-complete-fill)}.roadmap .prerequisites{border-top:1px solid var(--line);padding-top:16px;margin-top:20px}.roadmap .prerequisites h3,.roadmap .next-topics h3{font:10px var(--mono);text-transform:uppercase;letter-spacing:1px;color:var(--muted);margin:0 0 14px}.roadmap .prerequisites p,.roadmap .prereq p{font-size:12px;line-height:1.6;color:var(--muted);margin:7px 0 17px}.roadmap .prereq button{background:none;padding:0;border:0;text-align:left;color:var(--blue);font-size:13px}.roadmap .topic-progress{padding:17px 0 20px}.roadmap .topic-progress>div:first-child{display:flex;justify-content:space-between;align-items:center;gap:10px}.roadmap .topic-progress strong{font:18px var(--mono)}.roadmap .topic-progress span{font:9px var(--mono);color:var(--muted)}.roadmap .topic-track{height:8px;background:var(--map-topic-track);margin-top:13px;overflow:hidden}.roadmap .topic-track i{display:block;height:100%;background:var(--map-done);transition:width .3s}.roadmap .problem-filters{display:flex;gap:5px;margin-bottom:15px}.roadmap .problem-filters button{font:10px var(--mono);padding:8px 10px;background:none;border:1px solid var(--line)}.roadmap .problem-filters button[aria-pressed=true]{background:var(--ink);border-color:var(--ink);color:var(--panel)}.roadmap .problem-complete label{text-decoration:line-through;color:var(--map-problem-done-text)}.roadmap .problem-complete{background:var(--map-problem-done)}.roadmap .next-topics{border-top:1px solid var(--line);margin-top:22px;padding-top:22px}.roadmap .map-detail{scroll-behavior:smooth}.roadmap .map-top{flex-wrap:wrap;gap:10px}.roadmap .map-actions{display:flex;align-items:center;flex-wrap:wrap;gap:10px}.roadmap .map-actions button{font:10px var(--mono);padding:8px 10px;background:none;border:1px solid var(--line)}.teacher-panel{margin-top:16px;border-radius:0;border:1px solid var(--line);background:var(--panel)}.teacher-toggle{width:100%;display:flex;align-items:center;gap:10px;padding:14px 18px;border:none;background:none;color:var(--text);font:inherit;text-align:left;cursor:pointer}.teacher-toggle-caret{color:var(--muted);width:1em}.teacher-toggle-label{font-weight:600}.teacher-toggle-count{margin-left:auto;color:var(--muted);font-family:var(--mono);font-size:.8rem}.teacher-body{display:flex;flex-direction:column;gap:12px;padding:0 18px 16px}.teacher-body>.btn{align-self:flex-start}.teacher-note{margin:0;color:var(--muted);font-size:.85rem;line-height:1.5}.teacher-note-warn{color:var(--mismatch)}.teacher-start{display:flex;flex-direction:column;align-items:flex-start;gap:10px}.teacher-transcript{list-style:none;display:flex;flex-direction:column;gap:10px;margin:0;padding:12px;max-height:340px;overflow-y:auto;border-radius:0;border:1px solid var(--line);background:var(--panel-2)}.teacher-line{display:grid;grid-template-columns:4.5rem 1fr;gap:10px;font-size:.9rem;line-height:1.55}.teacher-line-who{color:var(--muted);font-family:var(--mono);font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;padding-top:.22rem}.teacher-line-student .teacher-line-who{color:var(--current)}.teacher-line-student .teacher-line-text{color:var(--muted)}.teacher-thinking{margin:0;color:var(--current);font-family:var(--mono);font-size:.8rem;animation:teacher-pulse 1.4s ease-in-out infinite}@keyframes teacher-pulse{0%,to{opacity:.55}50%{opacity:1}}.teacher-error{display:flex;flex-wrap:wrap;align-items:center;gap:12px;padding:10px 12px;border-radius:0;border:1px solid var(--mismatch);background:var(--mismatch-dim)}.teacher-error p{margin:0;color:var(--text);font-size:.88rem}.teacher-check{display:flex;flex-direction:column;gap:10px}.teacher-check-question{margin:0;font-size:.92rem;font-weight:600}.teacher-options{display:flex;flex-wrap:wrap;gap:8px}.teacher-option{padding:8px 14px;border-radius:0;border:1px solid var(--line);background:var(--panel-2);color:var(--text);font:inherit;font-size:.88rem;text-align:left;cursor:pointer;transition:border-color var(--t-fast),color var(--t-fast)}.teacher-option:hover:not(:disabled){border-color:var(--current);color:var(--current)}.teacher-option:disabled{cursor:default;opacity:.72}.teacher-option-correct{border-color:var(--found);background:var(--found-dim);color:var(--found);opacity:1}.teacher-option-wrong{border-color:var(--mismatch);background:var(--mismatch-dim);color:var(--mismatch);opacity:1}.teacher-ask{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.teacher-ask-input{flex:1 1 240px;min-width:0;padding:8px 12px;border-radius:0;border:1px solid var(--line);background:var(--panel-2);color:var(--text);font:inherit;font-size:.9rem}.teacher-ask-input:focus-visible{outline:none;border-color:var(--current)}.teacher-btn-quiet{color:var(--muted)}.teacher-mic-live{border-color:var(--mismatch);color:var(--mismatch)}.teacher-key{display:flex;flex-direction:column;gap:10px;max-width:30rem}.teacher-key-field{display:flex;flex-direction:column;gap:6px;font-size:.85rem;color:var(--muted)}.teacher-key-field input{padding:8px 12px;border-radius:0;border:1px solid var(--line);background:var(--panel-2);color:var(--text);font:inherit;font-family:var(--mono);font-size:.85rem}.teacher-key-field input:focus-visible{outline:none;border-color:var(--current)}.teacher-key-actions{display:flex;gap:8px}@keyframes rise-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes flash{0%{transform:scale(1)}40%{transform:scale(1.08)}to{transform:scale(1)}}@keyframes pulse-muted{0%{opacity:.4}50%{opacity:1}to{opacity:.75}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important}}
