:root{--surface:#fff;--surface-muted:#f7f7f7;--surface-warm:#fffaf0;--border:#ebebeb;--border-strong:#ddd;--ink:#222;--ink-dim:#717171;--ink-faint:#b0b0b0;--pink:#ff385c;--pink-hover:#e31c5f;--pink-dim:#fff0f2;--yellow:#f7b500;--yellow-dim:#fff8e1;--green:#008a05;--green-dim:#eaf7eb;--blue:#1769ff;--blue-dim:#edf3ff;--purple:#7b61ff;--purple-dim:#f1efff;--red:#c13515;--red-dim:#fff1ed;--font-sans:"Inter", system-ui, -apple-system, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, monospace;--radius-xs:6px;--radius-sm:10px;--radius-md:16px;--radius-pill:999px;--shadow-sm:0 1px 2px #0000000f;--shadow-md:0 6px 16px #00000014;--shadow-lg:0 12px 40px #00000029;--state-default:#e4e4e4;--state-comparing:var(--blue);--state-swapping:var(--pink);--state-pivot:var(--yellow);--state-settled:var(--green);--bg-color:var(--surface);--text-color:var(--ink);--text-muted:var(--ink-dim);--border-color:var(--border);--accent-yellow:var(--yellow);--accent-pink:var(--pink);--accent-purple:var(--purple);--accent-green:var(--green);--accent-blue:var(--blue);--accent-orange:var(--pink);--bar-default:var(--state-default);--bar-comparing:var(--state-comparing);--bar-swapping:var(--state-swapping);--bar-settled:var(--state-settled);--bar-pivot:var(--state-pivot);--ink-shadow:var(--shadow-sm);--ink-shadow-sm:var(--shadow-sm);--ink-shadow-lg:var(--shadow-lg)}.quiz{gap:1rem;padding-bottom:.25rem;display:grid}.quiz__intro{color:var(--ink-dim)}.quiz__topics{gap:.6rem;display:grid}.quiz-topic{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);cursor:pointer;text-align:left;justify-content:space-between;align-items:center;gap:1rem;padding:.95rem 1.1rem;transition:border-color .15s,box-shadow .15s;display:flex}.quiz-topic:hover{border-color:var(--ink);box-shadow:var(--shadow-sm)}.quiz-topic__name{font-size:.98rem;font-weight:600}.quiz__meta{justify-content:space-between;gap:1rem;display:flex}.quiz__progress{background:var(--surface-muted);border-radius:4px;height:4px;overflow:hidden}.quiz__progress span{background:var(--ink);height:100%;transition:width .25s;display:block}.quiz__question{font-size:1.1rem;font-weight:700;line-height:1.45}.quiz__options{gap:.5rem;display:grid}.quiz-option{border:1.5px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);text-align:left;cursor:pointer;justify-content:space-between;align-items:center;gap:.75rem;padding:.8rem 1rem;font-size:.95rem;transition:border-color .15s,background .15s;display:flex}.quiz-option:hover:not(:disabled){border-color:var(--ink);background:var(--surface-muted)}.quiz-option:disabled{cursor:default}.quiz-option svg{flex-shrink:0}.quiz-option.is-correct{border-color:var(--green);background:var(--green-dim)}.quiz-option.is-correct svg{color:var(--green)}.quiz-option.is-wrong{border-color:var(--red);background:var(--red-dim)}.quiz-option.is-wrong svg{color:var(--red)}.quiz-option.is-faded{color:var(--ink-faint)}.quiz__explain{border-radius:var(--radius-sm);gap:.3rem;padding:.85rem 1rem;font-size:.92rem;animation:.2s ease-out fadeIn;display:grid}.quiz__explain.is-correct{background:var(--green-dim)}.quiz__explain.is-correct strong{color:var(--green)}.quiz__explain.is-wrong{background:var(--red-dim)}.quiz__explain.is-wrong strong{color:var(--red)}.quiz--results{text-align:center;justify-items:center;padding:1rem 0}.quiz--results h4{font-size:1.2rem}.quiz--results p{color:var(--ink-dim);max-width:42ch}.quiz__score{background:conic-gradient(var(--green) var(--pct), var(--surface-muted) 0);border-radius:50%;place-items:center;width:128px;height:128px;display:grid}.quiz__score>span{background:var(--surface);width:104px;height:104px;font-family:var(--font-mono);border-radius:50%;justify-content:center;align-items:center;gap:.1rem;font-size:1.9rem;font-weight:700;display:flex}.quiz__score small{color:var(--ink-dim);font-size:.9rem}.cx-modal{gap:1rem;display:grid}.cx-chart{gap:.6rem;margin:0;display:grid}.cx-chart svg{background:var(--surface-muted);border-radius:var(--radius-sm);width:100%;height:auto}.cx-chart figcaption{color:var(--ink-dim);font-size:.9rem}.cx-chart figcaption strong{color:var(--ink);font-family:var(--font-mono)}.cx-axis{stroke:var(--border-strong);stroke-width:2px}.cx-axis-label{fill:var(--ink-dim);font-size:12px}.cx-curve{fill:none;stroke:var(--ink-faint);stroke-width:2px;opacity:.45}.cx-curve-label{fill:var(--ink-faint);font-size:12px;font-family:var(--font-mono)}.is-active .cx-curve{stroke:var(--pink);stroke-width:4px;opacity:1;stroke-dasharray:1500;animation:1.2s ease-out both drawCurve}.is-active .cx-curve-label{fill:var(--pink);font-weight:700}@keyframes drawCurve{0%{stroke-dashoffset:1500px}to{stroke-dashoffset:0}}.cx-modal__desc{border-radius:var(--radius-sm);background:var(--surface-muted);padding:.85rem 1rem;font-size:.93rem;line-height:1.6}.about{gap:.9rem;font-size:.95rem;line-height:1.6;display:grid}.about__team{border-top:1px solid var(--border);gap:.6rem;padding-top:.9rem;display:grid}.about__team ul{flex-wrap:wrap;gap:.5rem 1.25rem;list-style:none;display:flex}.about__team li{font-weight:600}.about__note{color:var(--ink-dim);font-size:.85rem}.code-tracer{flex-direction:column;gap:.75rem;min-width:250px;padding:1.1rem 1rem 1.5rem;display:flex}.code-tracer__header h3{margin-top:.15rem;font-size:1rem;font-weight:700}.code-tracer__step{color:var(--ink-dim);border-radius:var(--radius-xs);background:var(--surface-muted);padding:.55rem .7rem;font-size:.82rem}.code-tracer__lines{font-family:var(--font-mono);font-size:.8rem;line-height:1.55;list-style:none;overflow-x:auto}.code-tracer__lines li{white-space:pre;border-left:3px solid #0000;border-radius:0 4px 4px 0;gap:.75rem;padding:.1rem .5rem;display:flex}.code-tracer__lines li.is-active{background:var(--yellow-dim);border-left-color:var(--yellow);font-weight:600}.code-tracer__num{color:var(--ink-faint);-webkit-user-select:none;user-select:none;text-align:right;min-width:1.4em}.code-tracer__note{color:var(--ink-faint);font-size:.75rem}.live-dot{background:var(--green);width:8px;height:8px;box-shadow:0 0 0 3px var(--green-dim);border-radius:50%;display:inline-block}.chat-fab{z-index:100;background:var(--pink);color:#fff;width:56px;height:56px;box-shadow:var(--shadow-lg);cursor:grab;touch-action:none;border:0;border-radius:50%;place-items:center;display:grid;position:fixed}.chat-fab:hover{background:var(--pink-hover)}.chat-window{z-index:100;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);box-shadow:var(--shadow-lg);display:flex;position:fixed}.chat-window__inner{border-radius:var(--radius-md);flex-direction:column;flex:1;min-width:0;display:flex;overflow:hidden}.chat-window__header{border-bottom:1px solid var(--border);cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;align-items:center;gap:.6rem;padding:.7rem .75rem .7rem 1rem;display:flex}.chat-window__title{align-items:center;gap:.5rem;font-size:.92rem;font-weight:700;display:inline-flex}.chat-window__context{color:var(--ink-dim);white-space:nowrap;text-overflow:ellipsis;margin-right:auto;font-size:.78rem;overflow:hidden}.chat-window__messages{flex-direction:column;flex:1;gap:1rem;padding:1rem;display:flex;overflow-y:auto}.chat-msg{flex-direction:column;align-items:flex-start;gap:.25rem;max-width:92%;display:flex}.chat-msg--user{align-self:flex-end;align-items:flex-end}.chat-msg__who{color:var(--ink-faint);font-size:.72rem;font-weight:600}.chat-msg__bubble{background:var(--surface-muted);border-radius:14px 14px 14px 4px;max-width:100%;padding:.65rem .9rem;font-size:.9rem;line-height:1.55;overflow-x:auto}.chat-msg--user .chat-msg__bubble{background:var(--ink);color:#fff;border-radius:14px 14px 4px}.chat-msg.is-error .chat-msg__bubble{background:var(--red-dim);color:var(--red)}.chat-msg__about{max-width:100%;color:var(--ink-faint);white-space:nowrap;text-overflow:ellipsis;font-size:.7rem;overflow:hidden}.chat-msg__bubble p+p{margin-top:.5rem}.chat-msg__bubble ul,.chat-msg__bubble ol{margin:.4rem 0;padding-left:1.2rem}.chat-msg__bubble code{font-family:var(--font-mono);background:#0000000f;border-radius:4px;padding:.05rem .3rem;font-size:.82em}.chat-msg__bubble pre{margin:.4rem 0;overflow-x:auto}.chat-typing{gap:4px;padding:.85rem 1rem;display:flex}.chat-typing span{background:var(--ink-faint);border-radius:50%;width:6px;height:6px;animation:1s ease-in-out infinite typingDot}.chat-typing span:nth-child(2){animation-delay:.15s}.chat-typing span:nth-child(3){animation-delay:.3s}@keyframes typingDot{0%,80%,to{opacity:.3;transform:none}40%{opacity:1;transform:translateY(-3px)}}.chat-window__input{border-top:1px solid var(--border);gap:.5rem;padding:.75rem .75rem .35rem;display:flex}.chat-window__input .text-input{flex:1;min-width:0}.chat-window__note{color:var(--ink-faint);padding:0 .9rem .6rem;font-size:.7rem}.chat-resize{z-index:2;touch-action:none;position:absolute}.chat-resize--top,.chat-resize--bottom{cursor:ns-resize;height:10px;left:12px;right:12px}.chat-resize--left,.chat-resize--right{cursor:ew-resize;width:10px;top:12px;bottom:12px}.chat-resize--top{top:-5px}.chat-resize--bottom{bottom:-5px}.chat-resize--left{left:-5px}.chat-resize--right{right:-5px}.chat-resize--top-left,.chat-resize--top-right,.chat-resize--bottom-left,.chat-resize--bottom-right{width:16px;height:16px}.chat-resize--top-left{cursor:nwse-resize;top:-6px;left:-6px}.chat-resize--bottom-right{cursor:nwse-resize;bottom:-6px;right:-6px}.chat-resize--top-right{cursor:nesw-resize;top:-6px;right:-6px}.chat-resize--bottom-left{cursor:nesw-resize;bottom:-6px;left:-6px}@media (width<=768px){.chat-window{border-radius:20px 20px 0 0;height:80vh;bottom:0;left:0;right:0}.chat-window__inner{border-radius:20px 20px 0 0}.chat-window__header{cursor:default}.quiz-option,.quiz-topic{padding:.75rem .85rem}}@media (prefers-reduced-motion:reduce){.is-active .cx-curve,.chat-typing span{animation:none}}*{box-sizing:border-box;margin:0;padding:0}:root{font-family:var(--font-sans);background-color:var(--surface);color:var(--ink);-webkit-font-smoothing:antialiased}body{background-color:var(--surface);min-height:100vh;font-size:14px}button,input,select,textarea{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--blue);outline-offset:2px}.graph-node:focus-visible,.graph-edge:focus-visible{outline:none}.graph-node:focus-visible circle,.graph-edge:focus-visible .graph-edge__line{stroke:var(--blue);stroke-width:4px}.path-cell:focus-visible{outline-offset:-2px;z-index:1}.mono-text{font-family:var(--font-mono);letter-spacing:.06em;text-transform:uppercase;font-size:.72rem}.mono-text.bold{font-weight:700}.eyebrow{font-family:var(--font-mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-dim);font-size:.7rem}.app-container{height:100vh;display:flex;overflow:hidden}.main-content{flex:1;min-width:0;overflow-y:auto}.page{flex-direction:column;gap:1.25rem;max-width:1280px;margin:0 auto;padding:2rem clamp(1rem,3vw,3rem) 6rem;display:flex}.sidebar{background:var(--surface);border-right:1px solid var(--border);z-index:10;flex-direction:column;flex-shrink:0;display:flex}.sidebar.open{width:264px;padding:1.5rem 1rem 1.25rem 1.25rem;transition:width .2s,padding .2s}.sidebar.closed{width:64px;padding:1.25rem .5rem;transition:width .2s,padding .2s}.sidebar-header{justify-content:space-between;align-items:flex-start;gap:.5rem;margin-bottom:1.25rem;display:flex}.sidebar.closed .sidebar-header{justify-content:center}.brand{cursor:pointer;text-align:left;background:0 0;border:none;align-items:center;gap:.75rem;display:flex}.brand img{-o-object-fit:contain;object-fit:contain;width:40px;height:40px}.brand__title{font-size:1.05rem;font-weight:700;line-height:1.2}.brand__subtitle{font-family:var(--font-mono);letter-spacing:.08em;color:var(--ink-dim);margin-top:2px;font-size:.6rem;display:block}.sidebar-body{flex-direction:column;flex:1;gap:1.5rem;padding-right:.25rem;display:flex;overflow-y:auto}.sidebar-section{flex-direction:column;gap:.5rem;display:flex}.sidebar-section+.sidebar-section{border-top:1px solid var(--border);padding-top:1.25rem}.sidebar-label{color:var(--ink-dim);margin-bottom:.25rem;font-size:.8rem;font-weight:600}.nav-item{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);text-align:left;cursor:pointer;width:100%;padding:.6rem .9rem;font-size:.9rem;font-weight:600;transition:border-color .15s,background .15s,box-shadow .15s}.nav-item:hover{border-color:var(--ink)}.nav-item.active{background:var(--yellow);border-color:var(--yellow);box-shadow:var(--shadow-sm)}.specimen-list{flex-direction:column;gap:2px;display:flex}.specimen-item{border-radius:var(--radius-sm);color:#444;text-align:left;cursor:pointer;background:0 0;border:1px solid #0000;align-items:center;gap:.7rem;width:100%;padding:.6rem .75rem;font-size:.9rem;font-weight:500;transition:background .15s,border-color .15s;display:flex}.specimen-item:hover{background:var(--surface-muted)}.specimen-item.active{border-color:var(--ink);background:var(--surface-muted);color:var(--ink);font-weight:600}.specimen-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px}.sidebar-footer{border-top:1px solid var(--border);flex-direction:column;gap:.5rem;padding-top:1rem;display:flex}.sidebar-link{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);cursor:pointer;justify-content:space-between;align-items:center;width:100%;padding:.65rem .9rem;font-size:.88rem;font-weight:600;transition:border-color .15s,background .15s;display:flex}.sidebar-link:hover{border-color:var(--ink)}.sidebar-link--warm{background:var(--surface-warm);border-color:#f1e3c2}.sidebar-link--warm:hover{border-color:var(--yellow)}.sidebar-rail{flex-direction:column;align-items:center;gap:.75rem;display:flex}.sidebar-rail button{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);cursor:pointer;width:40px;height:40px;font-weight:700}.sidebar-rail button.active{background:var(--yellow);border-color:var(--yellow)}.algo-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:flex-end;gap:1.5rem;padding-bottom:1.25rem;display:flex}.algo-header__text{max-width:640px}.algo-header h1{letter-spacing:-.02em;margin:.35rem 0 .5rem;font-size:clamp(1.75rem,3vw,2.4rem);font-weight:800;line-height:1.1}.algo-header__desc{color:var(--ink-dim);font-size:.95rem;line-height:1.55}.algo-header__side{flex-shrink:0;align-items:center;gap:.75rem;display:flex}.complexity-strip{background:var(--surface-warm);border-radius:var(--radius-md);border:1px solid #f1e3c2;gap:2px;padding:4px;display:flex}.complexity-group{flex-direction:column;display:flex}.complexity-group+.complexity-group{border-left:1px solid #f1e3c2;margin-left:2px;padding-left:2px}.complexity-group__title{font-family:var(--font-mono);letter-spacing:.1em;color:var(--ink);white-space:nowrap;align-items:center;gap:4px;padding:.3rem .7rem 0;font-size:.58rem;font-weight:700;display:flex}.complexity-group__title svg{color:var(--ink-dim);flex-shrink:0}.complexity-group__items{gap:2px;display:flex}.complexity-item{cursor:pointer;white-space:nowrap;background:0 0;border:1px solid #0000;border-radius:12px;flex-direction:column;align-items:flex-start;gap:2px;padding:.25rem .7rem .35rem;transition:background .15s,border-color .15s;display:flex}.complexity-item:hover{background:var(--surface);border-color:var(--yellow)}.complexity-item__label{font-family:var(--font-mono);letter-spacing:.1em;color:var(--ink-dim);font-size:.6rem}.complexity-item__value{font-family:var(--font-mono);font-size:1rem;font-weight:700}.card-box{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);padding:1.25rem}.btn{border:1px solid var(--border-strong);border-radius:var(--radius-pill);background:var(--surface);white-space:nowrap;cursor:pointer;justify-content:center;align-items:center;gap:.45rem;padding:.5rem 1rem;font-size:.85rem;font-weight:600;transition:border-color .15s,background .15s,transform .15s;display:inline-flex}.btn:hover{border-color:var(--ink)}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.4;cursor:not-allowed;transform:none}.btn--primary{background:var(--pink);border-color:var(--pink);color:#fff}.btn--primary:hover{background:var(--pink-hover);border-color:var(--pink-hover)}.btn--dark{background:var(--ink);border-color:var(--ink);color:#fff}.btn--ghost{background:0 0;border-color:#0000}.btn--ghost:hover{background:var(--surface-muted);border-color:#0000}.btn--sm{padding:.3rem .75rem;font-size:.78rem}.btn-icon{border:1px solid var(--border);background:var(--surface);cursor:pointer;border-radius:50%;justify-content:center;align-items:center;width:36px;height:36px;transition:border-color .15s,background .15s;display:inline-flex}.btn-icon:hover:not(:disabled){border-color:var(--ink)}.btn-icon:disabled{opacity:.35;cursor:not-allowed}.btn-play{background:var(--pink);border-color:var(--pink);color:#fff;width:44px;height:44px}.btn-play:hover:not(:disabled){background:var(--pink-hover);border-color:var(--pink-hover)}.segmented{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-pill);flex-wrap:wrap;gap:2px;max-width:100%;padding:4px;display:inline-flex}.segmented button{border-radius:var(--radius-pill);color:var(--ink-dim);cursor:pointer;background:0 0;border:none;padding:.4rem 1rem;font-size:.85rem;font-weight:600;transition:background .15s,color .15s}.segmented button:hover{color:var(--ink)}.segmented button.active{background:var(--yellow);color:var(--ink)}.segmented--mono button{font-family:var(--font-mono);padding:.3rem .65rem;font-size:.72rem}.segmented--mono button.active{background:var(--blue);color:#fff}.chip{border:1px solid var(--border);border-radius:var(--radius-pill);background:var(--surface);font-family:var(--font-mono);color:var(--ink-dim);align-items:center;gap:.4rem;padding:.25rem .65rem;font-size:.7rem;display:inline-flex}button.chip{cursor:pointer}button.chip.active{border-color:var(--ink);color:var(--ink);background:var(--surface-muted)}.slider{appearance:none;background:var(--border);border-radius:var(--radius-pill);cursor:pointer;outline:none;width:140px;height:6px}.slider::-webkit-slider-thumb{appearance:none;background:var(--ink);border:3px solid var(--surface);width:16px;height:16px;box-shadow:0 0 0 1px var(--ink);border-radius:50%}.slider::-moz-range-thumb{background:var(--ink);border:3px solid var(--surface);border-radius:50%;width:12px;height:12px}.text-input{border:1px solid var(--border-strong);border-radius:var(--radius-pill);background:var(--surface);font-family:var(--font-mono);outline:none;padding:.5rem .9rem;font-size:.82rem;transition:border-color .15s,box-shadow .15s}.text-input:focus{border-color:var(--ink);box-shadow:0 0 0 3px #22222214}.legend{flex-wrap:wrap;gap:.4rem;display:flex}.legend-item{border:1px solid var(--border);border-radius:var(--radius-pill);background:var(--surface);font-family:var(--font-mono);color:var(--ink-dim);align-items:center;gap:.45rem;padding:.2rem .6rem;font-size:.7rem;display:inline-flex}.dot{border-radius:50%;width:9px;height:9px;display:inline-block}.dot.comparing{background:var(--state-comparing)}.dot.swapping{background:var(--state-swapping)}.dot.pivot{background:var(--state-pivot)}.dot.settled{background:var(--state-settled)}.view-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;display:flex}.view-toolbar__group{flex-wrap:wrap;align-items:center;gap:.75rem;display:flex}.stage{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);flex-direction:column;gap:1rem;padding:1.25rem 1.25rem 1rem;display:flex;position:relative}.stage__header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;display:flex}.stage__footer{border-top:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;padding-top:.9rem;display:flex}.status-pill{font-family:var(--font-mono);color:var(--ink-dim);align-items:center;gap:.5rem;font-size:.72rem;display:inline-flex}.status-pill strong{color:var(--ink)}.status-pill .tag{border-radius:var(--radius-pill);background:var(--yellow-dim);color:var(--ink);padding:2px 8px}.status-pill .tag--done{background:var(--green-dim);color:var(--green)}.bar-chart{-webkit-user-select:none;user-select:none;justify-content:center;align-items:flex-end;gap:clamp(2px,.6vw,6px);height:340px;padding-top:1.5rem;display:flex}.bar-slot{flex:1;align-items:flex-end;min-width:0;height:100%;display:flex}.bar{border-radius:6px 6px 2px 2px;width:100%;transition:height .2s,background-color .2s,transform .15s;position:relative}.bar-value{font-family:var(--font-mono);color:var(--ink-dim);font-size:.68rem;position:absolute;top:-20px;left:50%;transform:translate(-50%)}.bar-chart.is-dense .bar-value{display:none}.bar-default{background-color:var(--state-default)}.bar-comparing{background-color:var(--state-comparing)}.bar-swapping{background-color:var(--state-swapping)}.bar-pivot{background-color:var(--state-pivot)}.bar-settled{background-color:var(--state-settled)}.bar-chart.is-practice .bar-slot{cursor:grab}.bar-chart.is-practice .bar-slot:hover .bar{transform:translateY(-3px)}.bar-slot.is-dragging{opacity:.45}.array-size-control{align-items:center;gap:.6rem;display:flex}.array-size-control__value{min-width:2ch;font-family:var(--font-mono);font-size:.8rem;font-weight:700}.custom-array-form{background:var(--pink-dim);border-radius:var(--radius-md);border:1px solid #ffd9df;align-items:center;gap:.75rem;padding:.6rem .6rem .6rem 1.1rem;display:flex}.custom-array-form__label{white-space:nowrap;font-size:.88rem;font-weight:600}.custom-array-input{flex:1;min-width:0}.custom-array-form__error{color:var(--red);font-size:.8rem}.btn-use-this{flex-shrink:0}.practice-feedback{border-radius:var(--radius-sm);align-items:flex-start;gap:.6rem;padding:.75rem 1rem;font-size:.88rem;line-height:1.45;display:flex}.practice-feedback--error{background:var(--pink-dim);color:#8a1030}.practice-feedback--success{background:var(--green-dim);color:#0a5c0d;align-items:center}.practice-feedback .btn{margin-left:auto}.stage-overlay{z-index:20;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);border-radius:var(--radius-md);cursor:pointer;background:#ffffffbf;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.stage-overlay__card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);text-align:center;padding:1.75rem 2.5rem}.stage-overlay__card p:first-of-type{margin-bottom:.35rem;font-weight:600}.stage-overlay__card p:last-of-type{color:var(--ink-dim);font-size:.85rem}.tutorial-bars{justify-content:center;align-items:flex-end;gap:8px;height:90px;margin-bottom:1rem;display:flex}.tutorial-bar-left,.tutorial-bar-right{border-radius:6px 6px 2px 2px;width:30px}.tutorial-bar-left{background:var(--pink);height:55px;animation:1.5s ease-in-out infinite alternate swapAnimLeft}.tutorial-bar-right{background:var(--blue);height:80px;animation:1.5s ease-in-out infinite alternate swapAnimRight}@keyframes swapAnimLeft{0%,30%{transform:translate(0)}70%,to{transform:translate(38px)}}@keyframes swapAnimRight{0%,30%{transform:translate(0)}70%,to{transform:translate(-38px)}}.playback{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);flex-wrap:wrap;align-items:center;gap:.75rem 1.25rem;padding:.75rem 1rem;display:flex;position:relative}.playback__transport{align-items:center;gap:.4rem;display:flex}.playback__scrubber{flex:1;align-items:center;gap:.75rem;min-width:180px;display:flex}.playback__scrubber .slider{flex:1;width:auto}.playback__counter{font-family:var(--font-mono);color:var(--ink-dim);white-space:nowrap;text-align:right;min-width:7ch;font-size:.72rem}.playback__speed{align-items:center;gap:.5rem;display:flex}.playback__hint{width:100%;font-family:var(--font-mono);letter-spacing:.08em;color:var(--ink-faint);font-size:.62rem}.btn-pseudocode{margin-left:auto}.pseudocode-modal{z-index:50;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);width:min(440px,90vw);max-height:60vh;box-shadow:var(--shadow-lg);padding:1rem;position:absolute;bottom:calc(100% + 8px);right:0;overflow:auto}.pseudocode-modal__header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;margin-bottom:.5rem;padding-bottom:.5rem;display:flex}.pseudocode-modal pre{font-family:var(--font-mono);white-space:pre-wrap;color:#444;font-size:.78rem;line-height:1.6}.operations-log{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);box-shadow:var(--shadow-sm);padding:0;overflow:hidden}.log-header{background:var(--surface-warm);border-bottom:1px solid #f1e3c2;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;padding:.7rem 1rem;display:flex}.log-header__title{font-size:.9rem;font-weight:700}.log-header__tools{flex-wrap:wrap;align-items:center;gap:1rem;display:flex}.log-stats{font-family:var(--font-mono);color:var(--blue);gap:.9rem;font-size:.72rem;display:flex}.log-stats .swaps{color:var(--pink)}.log-filters{gap:.3rem;display:flex}.log-list{max-height:220px;padding:.4rem 0;list-style:none;overflow-y:auto}.log-entry{color:var(--ink-dim);grid-template-columns:5ch 5.5rem 1fr;align-items:baseline;gap:.6rem;padding:.3rem 1rem;font-size:.84rem;display:grid}.log-entry.is-current{background:var(--yellow-dim);color:var(--ink)}.log-entry__step{font-family:var(--font-mono);color:var(--ink-faint);text-align:right;font-size:.68rem}.log-entry__type{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.06em;font-size:.66rem}.log-entry__type--compare{color:var(--blue)}.log-entry__type--swap{color:var(--pink)}.log-entry__type--pivot{color:#a87a00}.log-entry__type--settled,.log-entry__type--end{color:var(--green)}.log-message{color:var(--ink-dim);padding:1rem;font-size:.92rem;display:block}.algo-info{flex-direction:column;gap:.75rem;display:flex}.algo-info__grid{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:1rem;display:grid}.algo-info__card{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);padding:1.1rem 1.25rem}.algo-info__card h3{margin-bottom:.5rem;font-size:.95rem;font-weight:700}.algo-info__card p,.algo-info__card li{color:var(--ink-dim);font-size:.9rem;line-height:1.55}.algo-info__card ul{padding-left:1.1rem}.algo-info__card a{color:var(--pink);margin-top:.5rem;font-weight:600;text-decoration:none;display:inline-block}.algo-info__card a:hover{text-decoration:underline}.bar-chart.is-interactive .bar-slot{cursor:pointer}.bar-chart.is-interactive .bar-slot:hover .bar{transform:translateY(-3px)}.bar-chart.has-labels{padding-bottom:1.1rem}.bar-slot{position:relative}.bar-label{font-family:var(--font-mono);color:var(--ink-faint);font-size:.62rem;position:absolute;bottom:-1.15rem;left:50%;transform:translate(-50%)}.bar-slot.is-dim{opacity:.28}.bar-slot.is-dim .bar{cursor:default}.bar-slot.is-selected .bar{outline:3px solid var(--ink);outline-offset:2px}.bar-slot.is-target:hover .bar{box-shadow:0 0 0 3px var(--blue-dim)}.is-hint{animation:1.1s ease-in-out infinite hintPulse}.bar-slot.is-hint{animation:none}.bar-slot.is-hint .bar{outline:2px solid var(--yellow);outline-offset:2px;animation:1.1s ease-in-out infinite hintPulse}@keyframes hintPulse{0%,to{box-shadow:0 0 #f7b50000}50%{box-shadow:0 0 0 5px #f7b5008c}}.practice-score{font-family:var(--font-mono);color:var(--ink-dim);gap:.9rem;font-size:.75rem;display:inline-flex}.practice-score span{align-items:center;gap:.3rem;display:inline-flex}.practice-prompt{border-radius:var(--radius-sm);background:var(--surface-warm);border:1px solid #f1e3c2;flex-direction:column;gap:.35rem;padding:.85rem 1rem;display:flex}.practice-prompt__intro:empty{display:none}.practice-prompt__intro{color:var(--ink-dim);font-size:.8rem}.practice-prompt__question{font-size:.95rem;font-weight:600;line-height:1.45}.practice-prompt__nudge{color:#7a5400;align-items:flex-start;gap:.4rem;font-size:.86rem;line-height:1.45;display:flex}.practice-prompt__nudge svg{flex-shrink:0;margin-top:2px}.practice-actions{flex-wrap:wrap;gap:.5rem;display:flex}.practice-choices{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;display:flex}.practice-choices--start{justify-content:flex-start;gap:.5rem}.practice-choices__label{color:var(--ink-dim);font-size:.86rem}.value-chip{border:1px solid var(--border-strong);border-radius:var(--radius-xs);background:var(--surface);min-width:2.4rem;height:2.2rem;font-family:var(--font-mono);justify-content:center;align-items:center;padding:0 .6rem;font-size:.85rem;font-weight:700;display:inline-flex}button.value-chip{cursor:pointer;transition:transform .12s,box-shadow .12s}button.value-chip:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.value-chip--blue{border-color:var(--blue);background:var(--blue-dim);color:var(--blue)}.value-chip--purple{border-color:var(--purple);background:var(--purple-dim);color:var(--purple)}.value-chip--green{background:var(--green-dim);color:var(--green);border-color:#bfe3c1}.value-chip--yellow{border-color:var(--yellow);background:var(--yellow-dim)}.value-chip--slot{color:var(--ink-faint);border-style:dashed}.merge-board{flex-direction:column;gap:.6rem;display:flex}.merge-board__row{grid-template-columns:6.5rem 1fr;align-items:center;gap:.75rem;display:grid}.merge-board__chips{flex-wrap:wrap;gap:.4rem;display:flex}.merge-board__empty{color:var(--ink-faint);align-self:center;font-size:.8rem}.bucket-queue{grid-template-columns:6.5rem 1fr;align-items:center;gap:.75rem;display:grid}.bucket-grid{grid-template-columns:repeat(10,minmax(0,1fr));gap:.4rem;display:grid}.bucket{border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface-muted);cursor:pointer;flex-direction:column;justify-content:space-between;min-height:150px;padding:.4rem .25rem;transition:border-color .12s,background .12s;display:flex}.bucket:hover{border-color:var(--ink);background:var(--surface)}.bucket__items{flex-direction:column-reverse;align-items:center;gap:3px;display:flex}.bucket__item{background:var(--surface);border:1px solid var(--border);width:100%;font-family:var(--font-mono);text-align:center;border-radius:4px;padding:2px 0;font-size:.72rem}.bucket__digit{font-family:var(--font-mono);text-align:center;border-top:1px solid var(--border);padding-top:.3rem;font-size:.95rem;font-weight:700}.practice-summary{text-align:center;color:var(--ink);flex-direction:column;align-items:center;gap:.75rem;padding:1rem 0 .5rem;display:flex}.practice-summary>svg{color:var(--yellow)}.practice-summary h3{font-size:1.3rem;font-weight:800}.practice-summary p{color:var(--ink-dim);max-width:520px;line-height:1.5}.practice-summary .bar-chart{width:100%;max-width:520px}.practice-summary__actions{gap:.5rem;display:flex}.log-entry__type--write{color:#c2185b}.path-grid{touch-action:none;-webkit-user-select:none;user-select:none;gap:2px;width:100%;display:grid}.path-grid--lg{gap:3px;max-width:600px;margin:0 auto}.path-cell{aspect-ratio:1;cursor:crosshair;background:#f1ede0;border-radius:3px;flex-direction:column;justify-content:center;align-items:center;line-height:1;transition:background-color .15s,transform .15s;display:flex;position:relative}.path-grid--lg .path-cell{border-radius:6px}.path-cell.is-wall{background:#2c2c2c}.path-cell.is-mud{background:#a0785a}.path-cell.visited{background:#cfe3f5}.path-cell.is-mud.visited{background:#8fa9bf}.path-cell.on-stack{background:#6f9cf5}.path-cell.current{background:var(--yellow)}.path-cell.path{background:var(--green)}.path-cell.is-start{background:var(--pink)}.path-cell.is-target{background:var(--purple)}.path-cell__icon{font-family:var(--font-mono);color:#fff;font-size:.6rem;font-weight:700}.path-grid--lg .path-cell__icon{font-size:.85rem}.path-cell__label{font-family:var(--font-mono);color:var(--ink);pointer-events:none;flex-direction:column;align-items:center;gap:1px;font-size:.72rem;font-weight:700;display:flex}.path-cell__label small{color:var(--ink-dim);font-size:.55rem;font-weight:500}.path-cell.path .path-cell__label,.path-cell.path .path-cell__label small{color:#fff}.path-grid.is-clickable .path-cell{cursor:default}.path-cell.frontier{background:var(--surface);box-shadow:inset 0 0 0 2px var(--blue)}.path-cell.is-mud.frontier{background:#e8d6c6}.path-cell.choosable{cursor:pointer}.path-cell.choosable:hover{z-index:1;transform:scale(1.06)}.path-cell.head{box-shadow:inset 0 0 0 3px var(--ink)}.path-cell.hint{box-shadow:inset 0 0 0 3px var(--yellow);animation:1.1s ease-in-out infinite hintPulse}.practice-split{grid-template-columns:minmax(0,1fr) 220px;align-items:start;gap:1rem;display:grid}.practice-split>:only-child{grid-column:1/-1}.practice-panel{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-muted);flex-direction:column;gap:.5rem;max-height:560px;padding:.75rem;display:flex;overflow-y:auto}.practice-panel__items{flex-wrap:wrap;gap:.35rem;display:flex}.practice-panel__help{color:var(--ink-dim);font-size:.78rem;line-height:1.45}.grid-key{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface)}.grid-key summary{cursor:pointer;align-items:center;gap:.5rem;padding:.7rem 1rem;font-size:.9rem;font-weight:700;list-style:none;display:flex}.grid-key summary::-webkit-details-marker{display:none}.grid-key summary:after{content:"▾";color:var(--ink-dim);margin-left:auto;transition:transform .15s}.grid-key:not([open]) summary:after{transform:rotate(-90deg)}.grid-key__body{grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:1.25rem;padding:.25rem 1rem 1rem;display:grid}.grid-key__terms{flex-direction:column;gap:.6rem;display:flex}.grid-key__terms>div{grid-template-columns:4.5rem 1fr;align-items:center;gap:.75rem;display:grid}.grid-key__terms dt{gap:4px;display:flex}.grid-key__terms dd{color:var(--ink-dim);font-size:.85rem;line-height:1.45}.grid-key__terms dd strong{color:var(--ink)}.grid-key__verb{font-family:var(--font-mono);font-size:.8rem;font-weight:700}.key-sample{aspect-ratio:auto;cursor:default;border-radius:6px;flex-shrink:0;width:2rem;height:2rem}.key-sample--lg{width:4.2rem;height:4.2rem}.key-sample--lg .path-cell__label{font-size:1rem}.key-sample--lg .path-cell__label small{font-size:.68rem}.grid-key__numbers{border-radius:var(--radius-sm);background:var(--surface-warm);flex-direction:column;gap:.6rem;padding:.85rem;display:flex}.grid-key__number-row{align-items:flex-start;gap:.9rem;display:flex}.grid-key__number-title{margin-bottom:.3rem;font-size:.9rem;font-weight:700}.grid-key__text{color:var(--ink-dim);font-size:.85rem;line-height:1.5}.grid-key__text--muted{margin-top:.5rem;font-size:.8rem}.grid-key__list{color:var(--ink-dim);flex-direction:column;gap:.3rem;padding-left:1rem;font-size:.85rem;line-height:1.45;display:flex}.grid-key__list strong{color:var(--ink)}@media (width<=900px){.grid-key__body{grid-template-columns:1fr}}.value-chip--mono{height:1.8rem;font-size:.7rem;font-weight:600}.practice-summary__grid{width:100%;max-width:560px}@media (width<=900px){.practice-split{grid-template-columns:1fr}.practice-panel{max-height:none}}@media (width<=768px){.merge-board__row,.bucket-queue{grid-template-columns:1fr;gap:.35rem}.bucket-grid{grid-template-columns:repeat(5,minmax(0,1fr))}.bucket{min-height:100px}}.segmented button{align-items:center;gap:.35rem;display:inline-flex}.graph-tools{flex-wrap:wrap;align-items:center;gap:1rem;display:flex}.graph-canvas{border-radius:var(--radius-sm);background:radial-gradient(circle, #e9e9e9 1px, transparent 1px) 0 0 / 22px 22px, var(--surface);border:1px solid var(--border);overflow:hidden}.graph-canvas svg{touch-action:none;-webkit-user-select:none;user-select:none;width:100%;height:auto;max-height:520px;display:block}.graph-canvas.tool-node svg{cursor:copy}.graph-canvas.tool-edge svg{cursor:crosshair}.graph-canvas.tool-delete .graph-node,.graph-canvas.tool-delete .graph-edge{cursor:not-allowed}.graph-node{cursor:grab}.graph-canvas.tool-none .graph-node{cursor:pointer}.graph-canvas.tool-edge .graph-node{cursor:crosshair}.graph-node circle{fill:var(--surface);stroke:#c9c9c9;stroke-width:2.5px;transition:fill .2s,stroke .2s}.graph-node:hover circle{stroke:var(--ink)}.graph-node__label{font-family:var(--font-sans);fill:var(--ink);pointer-events:none;font-size:14px;font-weight:700}.graph-node__tag{font-family:var(--font-mono);letter-spacing:.1em;fill:var(--pink);pointer-events:none;font-size:9px}.graph-node.is-visited circle{fill:var(--blue-dim);stroke:var(--blue)}.graph-node.is-active circle{fill:var(--yellow-dim);stroke:var(--yellow);stroke-width:3.5px}.graph-node.is-start circle{stroke:var(--pink);stroke-width:3.5px}.graph-node.is-selected circle{stroke:var(--ink);stroke-dasharray:4 3;stroke-width:3px}.graph-node.is-pending circle{stroke:var(--blue);stroke-width:4px;fill:var(--blue-dim)}.graph-edge{cursor:pointer}.graph-edge__hit{stroke:#0000;stroke-width:16px}.graph-edge__line{stroke:#d6d6d6;stroke-width:2.5px;transition:stroke .2s}.graph-edge:hover .graph-edge__line{stroke:#9a9a9a}.graph-edge.is-visited .graph-edge__line{stroke:var(--ink);stroke-width:3px}.graph-edge.is-active .graph-edge__line{stroke:var(--pink);stroke-width:3.5px}.graph-edge.is-selected .graph-edge__line{stroke:var(--ink);stroke-dasharray:6 4;stroke-width:3px}.graph-edge__weight rect{fill:var(--surface);stroke:var(--border-strong)}.graph-edge__weight text{font-family:var(--font-mono);fill:#555;font-size:11px;font-weight:700}.graph-edge.is-active .graph-edge__weight rect{stroke:var(--pink)}.graph-arrow--default{fill:#bdbdbd}.graph-arrow--visited,.graph-arrow--selected{fill:var(--ink)}.graph-arrow--active{fill:var(--pink)}.graph-rubber-band{stroke:var(--blue);stroke-width:2px;stroke-dasharray:5 4;pointer-events:none}.graph-empty{font-family:var(--font-sans);fill:var(--ink-faint);font-size:15px}.board-frame{justify-content:center;display:flex}.stage-placeholder{min-height:320px;color:var(--ink-faint);font-family:var(--font-mono);justify-content:center;align-items:center;font-size:.8rem;display:flex}.queens-board{aspect-ratio:1;border-radius:var(--radius-sm);width:100%;max-width:440px;box-shadow:0 0 0 1px var(--border);grid-auto-rows:1fr;margin:0 auto;display:grid;overflow:hidden}.queens-cell{cursor:default;background:#fcf8ed;border:none;justify-content:center;align-items:center;min-width:0;min-height:0;padding:0;font-size:clamp(1.1rem,4vw,2rem);display:flex;position:relative;overflow:hidden}.queens-cell.is-dark{background:#e3d6a8}.queens-cell__queen{color:var(--ink);line-height:1}.queens-cell.is-column{box-shadow:inset 0 0 0 2px var(--blue)}.queens-cell.is-choosable{cursor:pointer}.queens-cell.is-choosable:hover{filter:brightness(.93)}.queens-cell.is-attacked{background-image:repeating-linear-gradient(45deg,#ff385c40 0 6px,#0000 6px 12px)}.queens-cell.is-tried:after{content:"✗";color:var(--red);font-size:.8rem;position:absolute;top:3px;right:6px}.queens-cell.is-hint{box-shadow:inset 0 0 0 4px var(--yellow);background:#ffe38a;animation:none}.queens-cell.is-step-try,.sudoku-cell.is-step-try{background:var(--yellow)}.queens-cell.is-step-place,.sudoku-cell.is-step-place{background:#a7e0ad}.queens-cell.is-step-remove,.sudoku-cell.is-step-remove{background:#ffb3c1}.sudoku-board{aspect-ratio:1;border:2px solid var(--ink);border-radius:6px;grid-template-columns:repeat(9,minmax(0,1fr));grid-auto-rows:1fr;width:100%;max-width:430px;margin:0 auto;display:grid;overflow:hidden}.sudoku-cell{background:var(--surface);font-family:var(--font-mono);color:var(--blue);border-bottom:1px solid #d4d4d4;border-right:1px solid #d4d4d4;justify-content:center;align-items:center;font-size:clamp(.8rem,2.4vw,1.15rem);display:flex}.sudoku-cell.box-right{border-right:2px solid var(--ink)}.sudoku-cell.box-bottom{border-bottom:2px solid var(--ink)}.sudoku-cell.is-given{color:var(--ink);font-weight:700}.sudoku-cell.is-placed{background:var(--blue-dim)}.sudoku-cell.is-current{background:var(--yellow-dim);box-shadow:inset 0 0 0 3px var(--yellow)}.digit-pad{flex-wrap:wrap;align-items:center;gap:.4rem;display:flex}.digit-pad__key{border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);width:2.6rem;height:2.6rem;font-family:var(--font-mono);cursor:pointer;font-size:1rem;font-weight:700}.digit-pad__key:hover{border-color:var(--ink)}.digit-pad__key.is-tried,.colour-choice.is-tried{opacity:.4;text-decoration:line-through}.colour-choice__dot{border:1px solid #00000026;border-radius:50%;width:.9rem;height:.9rem;display:inline-block}.key-board-sample{border:1px solid var(--border);border-radius:4px;width:2.2rem;height:2.2rem;font-size:1rem}.key-board-sample.queens-cell:after{top:0;right:3px}.key-dot{width:1.4rem;height:1.4rem}.log-entry__type--place{color:var(--green)}.log-entry__type--remove{color:var(--pink)}.graph-node.is-frontier circle{stroke:var(--blue);stroke-dasharray:5 3;stroke-width:3px}.graph-node.is-onstack circle{fill:#b9d0ff;stroke:var(--blue)}.graph-node.is-tree circle{fill:var(--green-dim);stroke:var(--green);stroke-width:3px}.graph-node.is-choosable{cursor:pointer}.graph-node.is-choosable:hover circle{stroke-width:4.5px}.graph-node.is-hint circle{stroke:var(--yellow);stroke-width:5px;stroke-dasharray:none;animation:1.1s ease-in-out infinite svgHintPulse}@keyframes svgHintPulse{0%,to{stroke-width:4px}50%{stroke-width:7px}}.graph-node__badge rect{fill:var(--ink)}.graph-node__badge text{font-family:var(--font-mono);fill:#fff;font-size:10px;font-weight:700}.graph-edge.is-candidate .graph-edge__line{stroke:var(--blue);stroke-dasharray:7 5;stroke-width:3px}.graph-edge.is-candidate:hover .graph-edge__line{stroke-width:5px}.graph-edge.is-rejected .graph-edge__line{stroke:#f0b4bf;stroke-dasharray:3 5}.graph-edge.is-hint .graph-edge__line{stroke:var(--yellow);stroke-width:6px;stroke-dasharray:none}.practice-split__main{flex-direction:column;gap:.75rem;min-width:0;display:flex}.practice-summary__graph{width:100%;max-width:640px}.dist-table{border-collapse:collapse;width:100%;font-family:var(--font-mono);font-size:.75rem}.dist-table th{text-align:left;color:var(--ink-dim);border-bottom:1px solid var(--border);padding:.25rem .35rem;font-weight:600}.dist-table td{border-bottom:1px solid var(--border);padding:.3rem .35rem}.dist-table tr.is-done td{color:var(--ink-faint)}.dist-table tr.is-updated td{background:var(--pink-dim)}.dist-table tr.is-hint td{background:var(--yellow-dim)}.text-input--cell{border-radius:var(--radius-xs);width:4.2rem;padding:.2rem .45rem;font-size:.75rem}.edge-list{font-family:var(--font-mono);flex-direction:column;gap:2px;font-size:.74rem;list-style:none;display:flex}.edge-list__item{border-radius:var(--radius-xs);grid-template-columns:1fr 2rem 4.5rem;gap:.4rem;padding:.25rem .45rem;display:grid}.edge-list__item.is-current{background:var(--pink-dim);font-weight:700}.edge-list__item.is-added{color:var(--green)}.edge-list__item.is-rejected{color:var(--ink-faint);text-decoration:line-through}.edge-list__status{text-align:right}.palette{flex-wrap:wrap;gap:.4rem;display:flex}.palette__swatch{border:2px solid var(--border-strong);cursor:pointer;border-radius:50%;width:2rem;height:2rem}.palette__swatch.is-active{border-color:var(--ink);box-shadow:0 0 0 3px var(--surface), 0 0 0 5px var(--ink)}.grid-key__body--single{grid-template-columns:1fr}.grid-key__terms--graph>div{grid-template-columns:5.5rem 1fr}.key-graph-sample{width:3rem;height:3.2rem;overflow:visible}.key-graph-sample--edge{width:3.25rem;height:1.25rem}.key-graph-sample .graph-node,.key-graph-sample .graph-edge{cursor:default}.key-word{font-family:var(--font-mono);font-size:.78rem;font-weight:700}.switch{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:.5rem;font-size:.82rem;font-weight:600;display:inline-flex}.switch input{opacity:0;pointer-events:none;position:absolute}.switch__track{border-radius:var(--radius-pill);background:var(--border-strong);width:34px;height:20px;transition:background .15s;position:relative}.switch__track:after{content:"";background:var(--surface);width:14px;height:14px;box-shadow:var(--shadow-sm);border-radius:50%;transition:transform .15s;position:absolute;top:3px;left:3px}.switch input:checked+.switch__track{background:var(--ink)}.switch input:checked+.switch__track:after{transform:translate(14px)}.switch input:focus-visible+.switch__track{outline:2px solid var(--blue);outline-offset:2px}.switch.is-locked{cursor:not-allowed;opacity:.6}.inspector{border:1px solid var(--border);border-radius:var(--radius-pill);background:var(--surface-muted);align-items:center;gap:.5rem;padding:.3rem .35rem .3rem .85rem;display:flex}.inspector__title{margin-right:.25rem;font-size:.85rem;font-weight:700}.inspector__field{font-family:var(--font-mono);color:var(--ink-dim);align-items:center;gap:.4rem;font-size:.72rem;display:inline-flex}.graph-issues{flex-direction:column;gap:.4rem;list-style:none;display:flex}.graph-issue{border-radius:var(--radius-sm);align-items:center;gap:.5rem;padding:.5rem .8rem;font-size:.84rem;display:flex}.graph-issue--warn{background:var(--yellow-dim);color:#7a5400}.graph-issue--info{background:var(--blue-dim);color:#1d4ba8}.stage__hint{color:var(--ink-dim);font-size:.8rem}.text-input--sm{width:5.5rem;padding:.3rem .6rem}.text-input--area{border-radius:var(--radius-sm);resize:vertical;width:100%;line-height:1.6}.text-input--select{font-family:var(--font-sans);cursor:pointer;padding:.35rem .8rem;font-size:.8rem;font-weight:600}.field{flex-direction:column;gap:.35rem;margin-bottom:1rem;display:flex}.field__label{font-size:.88rem;font-weight:600}.field__hint{color:var(--ink-dim);font-size:.8rem}.field__errors{border-radius:var(--radius-sm);background:var(--pink-dim);color:#8a1030;flex-direction:column;gap:.25rem;padding:.7rem .9rem;font-size:.82rem;list-style:none;display:flex}.modal-scrim{z-index:200;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#00000059;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.modal{background:var(--surface);border-radius:var(--radius-md);width:100%;max-height:calc(100vh - 2rem);box-shadow:var(--shadow-lg);flex-direction:column;animation:.15s ease-out fadeIn;display:flex}.modal__header{justify-content:space-between;align-items:center;padding:1.1rem 1.25rem .5rem;display:flex}.modal__header h3{font-size:1.05rem;font-weight:700}.modal__body{padding:.5rem 1.25rem 1rem;overflow-y:auto}.modal__footer{justify-content:flex-end;gap:.5rem;padding:.75rem 1.25rem 1.25rem;display:flex}.btn-use-this:not(.btn){border:1px solid var(--border-strong);border-radius:var(--radius-pill);background:var(--surface);cursor:pointer;padding:.4rem 1rem;font-size:.85rem;font-weight:600}.btn-use-this:not(.btn):hover{border-color:var(--ink)}.sorting-controls{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;display:flex}.grid-container{justify-content:center;margin:1rem 0;display:flex}.pathfinding-grid{flex-direction:column;gap:2px;display:flex}.grid-row{gap:2px;display:flex}.node{-webkit-user-select:none;user-select:none;background-color:#f3eed8;border-radius:4px;width:22px;height:22px;border:none!important}.node-wall{background-color:#2c2c2c;animation:.3s ease-out wallPulse}.node-mud{background-color:#a0785a;animation:.3s ease-out wallPulse}.node-start{background-color:var(--pink);z-index:2;justify-content:center;align-items:center;display:flex}.node-end{z-index:2;background-color:#8b7dff;justify-content:center;align-items:center;display:flex}.node-visited{background-color:#90c1e380;animation:1.5s ease-out forwards visitedAnim}.node-current{background-color:var(--yellow)}.node-path{background-color:var(--yellow);animation:.5s ease-out forwards pathPulse}@keyframes wallPulse{0%{border-radius:100%;transform:scale(.3)}50%{transform:scale(1.2)}to{border-radius:0;transform:scale(1)}}@keyframes visitedAnim{0%{background-color:#000c;border-radius:100%;transform:scale(.3)}50%{background-color:#e2acedb3}to{background-color:#90c1e380;transform:scale(1)}}@keyframes pathPulse{0%{transform:scale(.6)}50%{transform:scale(1.2)}to{transform:scale(1)}}.right-sidebar{background-color:var(--surface);border-left:1px solid var(--border);flex-direction:column;flex-shrink:0;display:flex;overflow-y:auto}.code-toggle-btn.active{background:var(--ink);border-color:var(--ink);color:#fff}.mobile-header,.sidebar-backdrop,.right-sidebar-backdrop{display:none}@keyframes fadeIn{0%{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}@media (width<=1100px){.algo-header{flex-direction:column;align-items:flex-start}}@media (width<=768px){.app-container{flex-direction:column;height:auto;min-height:100vh;overflow:visible}.main-content{overflow:visible}.page{padding:1rem 1rem 6rem}.mobile-header{z-index:50;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--border);background:#fffffff2;align-items:center;gap:.75rem;padding:.85rem 1rem;display:flex;position:sticky;top:0}.mobile-menu-btn{cursor:pointer;background:0 0;border:none;align-items:center;display:flex}.algo-header__side{flex-wrap:wrap;width:100%}.complexity-strip,.complexity-group__items{flex-wrap:wrap}.sidebar{z-index:110;height:100vh;transition:transform .3s;position:fixed;top:0;left:0;box-shadow:4px 0 20px #00000026}.sidebar.closed{width:264px;transform:translate(-100%)}.sidebar.open{transform:translate(0)}.sidebar-backdrop,.right-sidebar-backdrop{z-index:105;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#0006;display:block;position:fixed;inset:0}.right-sidebar{z-index:110;border-top-left-radius:20px;border-top-right-radius:20px;height:65vh;bottom:0;left:0;box-shadow:0 -10px 40px #00000040;width:100%!important;position:fixed!important}.bar-chart{height:240px}.segmented button{padding-left:.6rem;padding-right:.6rem}.chat-fab{width:48px;height:48px}.custom-array-form{flex-direction:column;align-items:stretch}.playback__scrubber{order:3;width:100%}.btn-pseudocode{margin-left:0}.log-entry{grid-template-columns:4ch 1fr}.log-entry__type{display:none}}.landing{--lp-width:1180px;background:var(--surface);color:var(--ink);min-height:100vh;font-size:16px;line-height:1.55}.landing h1,.landing h2,.landing h3{letter-spacing:-.02em;line-height:1.15}.landing a{text-decoration:none}.landing a:not(.btn){color:inherit}.landing a.btn{color:var(--ink)}.landing a.btn--primary,.landing a.btn--dark{color:#fff}.landing img{max-width:100%;display:block}.landing ul,.landing ol{list-style:none}.lp-container{max-width:var(--lp-width);margin:0 auto;padding:0 24px}.landing .btn{gap:.4rem;text-decoration:none}.landing .btn--lg{border-radius:var(--radius-sm);padding:.75rem 1.25rem;font-size:.95rem}.landing a.text-link{color:var(--pink);align-items:center;gap:.3rem;font-weight:600;display:inline-flex}.landing a.text-link:hover{color:var(--pink-hover);text-decoration:underline}.landing :focus-visible{outline:2px solid var(--blue);outline-offset:2px;border-radius:4px}.lp-eyebrow{letter-spacing:.06em;text-transform:uppercase;color:var(--pink);font-size:.78rem;font-weight:600;display:inline-block}.lp-accent{color:var(--pink)}.lp-header{z-index:20;-webkit-backdrop-filter:saturate(180%)blur(8px);backdrop-filter:saturate(180%)blur(8px);border-bottom:1px solid var(--border);background:#ffffffeb;position:sticky;top:0}.lp-header__inner{align-items:center;gap:2rem;height:64px;display:flex}.lp-brand{white-space:nowrap;align-items:center;gap:.6rem;font-size:1rem;font-weight:700;display:inline-flex}.lp-brand img{-o-object-fit:contain;object-fit:contain;width:32px;height:32px}.lp-nav{color:var(--ink-dim);gap:1.5rem;margin-right:auto;font-size:.9rem;display:flex}.lp-nav a:hover{color:var(--ink)}.lp-hero{background:linear-gradient(180deg, var(--pink-dim) 0%, var(--surface) 70%);padding:64px 0 72px}.lp-hero__inner{grid-template-columns:1.1fr 1fr;align-items:center;gap:48px;display:grid}.lp-hero h1{margin:.75rem 0 1.1rem;font-size:clamp(2rem,3.6vw,2.85rem);font-weight:800}.lp-lead{color:var(--ink-dim);max-width:34rem;font-size:1.1rem}.lp-cta{flex-wrap:wrap;gap:.75rem;margin-top:1.75rem;display:flex}.lp-cta--center{justify-content:center}.lp-facts{color:var(--ink-dim);flex-wrap:wrap;gap:.5rem 1.25rem;margin-top:2rem;font-size:.88rem;display:flex}.lp-facts li{align-items:center;gap:.35rem;display:flex}.lp-facts li:before{content:"";background:var(--green);border-radius:50%;width:6px;height:6px}.lp-facts strong{color:var(--ink)}.hero-demo{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);padding:1.1rem 1.25rem 1.25rem}.hero-demo__top{justify-content:space-between;align-items:center;gap:1rem;display:flex}.hero-demo__title{align-items:center;gap:.5rem;font-size:.92rem;font-weight:600;display:inline-flex}.hero-demo__controls{gap:.4rem;display:flex}.hero-demo__message{font-family:var(--font-mono);color:var(--ink-dim);min-height:1.3em;margin:.75rem 0 .5rem;font-size:.8rem}.hero-demo .bar-chart{margin-top:.25rem}.hero-demo__caption{border-top:1px solid var(--border);color:var(--ink-dim);gap:.6rem;margin-top:.9rem;padding-top:.9rem;font-size:.85rem;display:grid}.lp-section{padding:72px 0}.lp-section--muted{background:var(--surface-muted)}.lp-section__head{max-width:640px;margin-bottom:36px}.lp-section__head h2{margin:.5rem 0 .75rem;font-size:clamp(1.7rem,3vw,2.3rem);font-weight:800}.lp-section__head p{color:var(--ink-dim);font-size:1.05rem}.shot{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-md);border-radius:12px;overflow:hidden}.shot__bar{border-bottom:1px solid var(--border);background:var(--surface-muted);gap:6px;padding:9px 12px;display:flex}.shot__bar span{background:var(--border-strong);border-radius:50%;width:9px;height:9px}.shot img{width:100%;height:auto}.lp-steps{counter-reset:step;grid-template-columns:repeat(3,1fr);gap:32px;display:grid}.lp-step .shot{aspect-ratio:4/3}.lp-step .shot img{-o-object-fit:cover;object-fit:cover;-o-object-position:top left;object-position:top left;height:calc(100% - 28px)}.lp-step__label{align-items:center;gap:.5rem;margin:1.25rem 0 .4rem;font-size:1.1rem;font-weight:700;display:flex}.lp-step__num{background:var(--ink);color:#fff;border-radius:50%;place-items:center;width:26px;height:26px;font-size:.8rem;display:grid}.lp-step p{color:var(--ink-dim);font-size:.95rem}.lp-topics{grid-template-columns:repeat(2,1fr);gap:24px;display:grid}.lp-topic{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);flex-direction:column;transition:box-shadow .15s,transform .15s;display:flex;overflow:hidden}.lp-topic:hover{box-shadow:var(--shadow-md)}.lp-topic__image{aspect-ratio:16/6;background:var(--surface-muted);border-bottom:1px solid var(--border);display:block;overflow:hidden}.lp-topic__image img{-o-object-fit:cover;object-fit:cover;-o-object-position:center;object-position:center;width:100%;height:100%;transition:transform .3s}.lp-topic:hover .lp-topic__image img{transform:scale(1.02)}.lp-topic__body{padding:1.4rem 1.5rem 1.6rem}.lp-topic h3{align-items:center;gap:.5rem;font-size:1.25rem;font-weight:700;display:flex}.lp-count{border-radius:var(--radius-pill);background:var(--surface-muted);color:var(--ink-dim);padding:.1rem .5rem;font-size:.75rem;font-weight:600}.lp-topic p{color:var(--ink-dim);margin:.4rem 0 1rem;font-size:.95rem}.lp-chips{flex-wrap:wrap;gap:.45rem;display:flex}.lp-chip{border:1px solid var(--border-strong);border-radius:var(--radius-pill);background:var(--surface);padding:.3rem .7rem;font-size:.82rem;font-weight:500;transition:border-color .15s,background .15s;display:inline-block}.lp-chip:hover{border-color:var(--ink);background:var(--surface-muted)}.lp-chip--sm{padding:.2rem .6rem;font-size:.78rem}.lp-spotlight{gap:64px;display:grid}.lp-feature-row{grid-template-columns:1.25fr 1fr;align-items:center;gap:56px;display:grid}.lp-feature-row.is-flipped .shot{order:2}.lp-feature-row__text h3{margin:.5rem 0 .75rem;font-size:1.5rem;font-weight:800}.lp-feature-row__text p{color:var(--ink-dim);margin-bottom:1.1rem}.lp-points{gap:.5rem;margin-bottom:1.25rem;font-size:.92rem;display:grid}.lp-points li{align-items:center;gap:.55rem;display:flex}.lp-points svg{color:var(--pink);flex-shrink:0}.lp-features{grid-template-columns:repeat(3,1fr);gap:20px;display:grid}.lp-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:1.4rem}.lp-card__icon{border-radius:var(--radius-sm);background:var(--pink-dim);width:38px;height:38px;color:var(--pink);place-items:center;margin-bottom:.9rem;display:grid}.lp-card h3{margin-bottom:.35rem;font-size:1.02rem;font-weight:700}.lp-card p{color:var(--ink-dim);font-size:.9rem}.lp-path{grid-template-columns:repeat(6,1fr);gap:16px;display:grid;position:relative}.lp-path:before{content:"";background:var(--border);height:2px;position:absolute;top:17px;left:18px;right:18px}.lp-path__stage{position:relative}.lp-path__num{background:var(--surface);border:2px solid var(--pink);width:36px;height:36px;color:var(--pink);border-radius:50%;place-items:center;margin-bottom:.9rem;font-weight:700;display:grid;position:relative}.lp-path__stage h3{font-size:.98rem;font-weight:700}.lp-path__stage p{color:var(--ink-dim);margin:.15rem 0 .6rem;font-size:.85rem}.lp-path__links{flex-wrap:wrap;gap:.35rem;display:flex}.lp-team{flex-wrap:wrap;gap:16px;display:flex}.lp-member{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow-sm);border-radius:12px;padding:.85rem 1.4rem;font-weight:600}.lp-final{text-align:center}.lp-final__inner h2{font-size:clamp(1.7rem,3vw,2.3rem);font-weight:800}.lp-final__inner p{color:var(--ink-dim);margin-top:.6rem}.lp-footer{border-top:1px solid var(--border);padding:32px 0;font-size:.88rem}.lp-footer__inner{flex-wrap:wrap;align-items:center;gap:1rem 2rem;display:flex}.lp-brand--static{font-size:.95rem}.lp-footer__links{color:var(--ink-dim);flex-wrap:wrap;gap:1.25rem;margin-right:auto;display:flex}.lp-footer__links a{align-items:center;gap:.25rem;display:inline-flex}.lp-footer__links a:hover{color:var(--ink)}.lp-footer__note{color:var(--ink-faint)}@media (width<=1000px){.lp-hero__inner,.lp-feature-row{grid-template-columns:1fr;gap:40px}.lp-feature-row.is-flipped .shot{order:0}.lp-features{grid-template-columns:repeat(2,1fr)}.lp-path{grid-template-columns:repeat(3,1fr);row-gap:32px}.lp-path:before{display:none}}@media (width<=760px){.lp-container{padding:0 16px}.lp-nav{display:none}.lp-header__inner{justify-content:space-between}.lp-hero{padding:40px 0 56px}.lp-section{padding:64px 0}.lp-section__head{margin-bottom:32px}.lp-steps,.lp-topics,.lp-features{grid-template-columns:1fr}.lp-path{grid-template-columns:repeat(2,1fr)}.lp-spotlight{gap:56px}.lp-cta .btn{flex:100%;justify-content:center}.lp-team{justify-content:center;gap:28px}}@media (prefers-reduced-motion:reduce){.lp-topic,.lp-topic__image img{transition:none}}
