:root{--bg:#f5f6f8;--surface:#fff;--border:#d9dce1;--text:#1c1f24;--text-muted:#6b7280;--accent:#2f6feb;--accent-contrast:#fff;--error-bg:#fdeceb;--error-border:#e5534b;--error-text:#8a1f16;--bar-default:#8fa6c9;--bar-comparing:#f5a623;--bar-swapping:#e5534b;--bar-sorted:#2f9e44;--bar-pivot:#aa3bff;--bar-found:#2f9e44;--bar-out-of-range:#d9dce1;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=dark]{--bg:#14161a;--surface:#1b1e24;--border:#2e333c;--text:#e6e8eb;--text-muted:#9aa1ac;--accent:#5b9dff;--accent-contrast:#0b1220;--error-bg:#3a1c1c;--error-border:#e5534b;--error-text:#ffb4ac;--bar-default:#4d6fa3;--bar-comparing:#d68b1f;--bar-swapping:#d9534f;--bar-sorted:#3fb95b;--bar-pivot:#c084fc;--bar-found:#3fb95b;--bar-out-of-range:#2e333c;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);margin:0;font-family:system-ui,Segoe UI,Roboto,sans-serif}.app{max-width:1200px;margin:0 auto;padding:16px 20px 40px}.site-header{align-items:center;gap:10px;margin-bottom:16px;display:flex}.site-header__brand{color:var(--accent);white-space:nowrap;font-size:15px;font-weight:700;text-decoration:none}.site-header__brand:hover{text-decoration:underline}.site-header__divider{color:var(--text-muted);font-weight:400}.site-header__title{color:var(--text-muted);white-space:nowrap;font-size:15px;font-weight:600}.toolbar-spacer{flex:1}.btn,.toggle-btn{border:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer;border-radius:6px;padding:6px 12px;font-size:13px}.btn:hover,.toggle-btn:hover{border-color:var(--accent)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn--primary{background:var(--accent);border-color:var(--accent);color:var(--accent-contrast);font-weight:600}.icon-btn{padding:6px 10px}.layout{grid-template-columns:220px 1fr;align-items:start;gap:20px;display:grid}@media (width<=800px){.layout{grid-template-columns:1fr}}.sidebar{flex-direction:column;gap:12px;display:flex;position:sticky;top:16px}.sidebar__tabs{flex-direction:column;gap:4px;display:flex}.sidebar__tab{border:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer;text-align:left;border-radius:6px;padding:8px 10px;font-size:13px;font-weight:600}.sidebar__tab--active{border-color:var(--accent);color:var(--accent)}.sidebar__list{flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}.sidebar__item{text-align:left;width:100%;color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:7px 10px;font-size:13px}.sidebar__item:hover{background:var(--surface);color:var(--text)}.sidebar__item--active{background:var(--surface);color:var(--accent);border:1px solid var(--border);font-weight:600}.main{flex-direction:column;gap:14px;min-width:0;display:flex}.algo-title{margin:4px 0 0;font-size:22px}.panel{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:14px 16px}.panel__title{text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin:0 0 10px;font-size:13px}.input-panel__row{flex-direction:column;gap:6px;display:flex}.input-panel__row+.input-panel__row{margin-top:12px}.input-panel__label{color:var(--text-muted);font-size:12px}.input-panel__controls{gap:8px;display:flex}.input-panel input[type=text],.input-panel input[type=number]{border:1px solid var(--border);background:var(--bg);color:var(--text);border-radius:6px;flex:1;min-width:0;padding:7px 10px;font-size:13px}.input-panel__error{color:var(--error-text);margin:0;font-size:12px}.input-panel__note{color:var(--text-muted);margin:0;font-size:13px}.visualization-panel{flex-direction:column;min-height:260px;display:flex}.array-bars{flex:1;align-items:flex-end;gap:6px;min-height:200px;padding-top:10px;display:flex}.array-bar-col{flex-direction:column;flex:1;justify-content:flex-end;align-items:center;gap:4px;height:200px;display:flex}.array-bar{background:var(--bar-default);border-radius:4px 4px 0 0;justify-content:center;align-items:flex-start;width:100%;min-height:18px;transition:height .2s,background-color .2s;display:flex}.array-bar__value{color:var(--accent-contrast);margin-top:3px;font-size:11px;font-weight:600}.array-bar__index{color:var(--text-muted);font-size:11px}.array-bar--comparing{background:var(--bar-comparing)}.array-bar--swapping{background:var(--bar-swapping)}.array-bar--sorted{background:var(--bar-sorted)}.array-bar--pivot{background:var(--bar-pivot)}.array-bar--found{background:var(--bar-found)}.array-bar--out-of-range{background:var(--bar-out-of-range);opacity:.5}.empty-hint{color:var(--text-muted);font-size:13px;font-style:italic}.stack-view{flex-direction:column;align-items:center;gap:6px;display:flex}.stack-view__label{color:var(--text-muted);font-size:12px}.stack-view__slots{flex-direction:column-reverse;gap:4px;min-width:120px;display:flex}.stack-slot,.queue-slot{border:1px solid var(--border);background:var(--bg);text-align:center;border-radius:6px;padding:10px 16px;font-weight:600}.stack-slot--active,.queue-slot--active{background:var(--error-bg);border-color:var(--bar-comparing)}.queue-view{align-items:center;gap:10px;display:flex}.queue-view__slots{flex:1;gap:4px;display:flex;overflow-x:auto}.queue-view__label{color:var(--text-muted);font-size:12px}.linked-list-view{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.linked-list-node-wrap{align-items:center;gap:6px;display:flex}.linked-list-node{border:2px solid var(--border);background:var(--bg);text-align:center;border-radius:8px;min-width:32px;padding:10px 14px;font-weight:600}.linked-list-node--pointer{border-color:var(--bar-comparing)}.linked-list-node--found{border-color:var(--bar-found);color:var(--bar-found)}.linked-list-arrow{color:var(--text-muted);font-size:16px}.linked-list-null{color:var(--text-muted);margin-left:4px;font-size:12px}.bst-view{margin:0 auto;display:block}.bst-edge{stroke:var(--border);stroke-width:1.5px}.bst-node{fill:var(--bg);stroke:var(--border);stroke-width:2px}.bst-node--visiting{stroke:var(--bar-comparing)}.bst-node--found{stroke:var(--bar-found);fill:var(--bar-found)}.bst-node-text{fill:var(--text);font-size:11px;font-weight:600}.bst-node--found+.bst-node-text,.bst-node--found~text{fill:var(--accent-contrast)}.graph-view{flex-direction:column;align-items:center;gap:10px;display:flex}.graph-view__svg{width:100%;max-width:360px;height:auto}.graph-edge{stroke:var(--border);stroke-width:.6px}.graph-node{fill:var(--bg);stroke:var(--border);stroke-width:1px}.graph-node--frontier{stroke:var(--bar-comparing);stroke-width:1.5px}.graph-node--current{fill:var(--bar-comparing)}.graph-node--visited{fill:var(--bar-sorted);stroke:var(--bar-sorted)}.graph-node-text{fill:var(--text);font-size:4px;font-weight:700}.graph-node--current~text,.graph-node--visited~text{fill:var(--accent-contrast)}.graph-view__legend{color:var(--text-muted);flex-wrap:wrap;justify-content:center;gap:16px;font-size:12px;display:flex}.controls{background:var(--surface);border:1px solid var(--border);border-radius:10px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:10px 14px;display:flex}.controls__buttons{gap:8px;display:flex}.controls__meta{color:var(--text-muted);align-items:center;gap:16px;font-size:12px;display:flex}.controls__speed{align-items:center;gap:6px;display:flex}.side-panels{grid-template-columns:1fr 1fr;gap:14px;display:grid}@media (width<=700px){.side-panels{grid-template-columns:1fr}}.pseudocode-panel__code{background:var(--bg);white-space:pre-wrap;border-radius:8px;margin:0;padding:10px 12px;font-family:ui-monospace,Consolas,monospace;font-size:12.5px;overflow-x:auto}.pseudocode-line{border-radius:4px;padding:2px 6px}.pseudocode-line--active{background:var(--accent);color:var(--accent-contrast)}.pseudocode-panel__description{color:var(--text-muted);margin:10px 0 0;font-size:13px}.complexity-panel__blurb{color:var(--text-muted);margin:0 0 10px;font-size:13px}.complexity-table{border-collapse:collapse;width:100%;font-size:13px}.complexity-table th{text-align:left;color:var(--text-muted);padding:4px 0;font-weight:500}.complexity-table td{text-align:right;padding:4px 0;font-weight:600}
