*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg:#090c10;--bg-panel:#0d1117;--bg-ctrl:#111620;--border:#1e2736;--border-hi:#2d3f55;--text:#89a;--text-hi:#ccdde8;--text-dim:#456;--cyan:#00d4ff;--cyan-dim:#00d4ff26;--green:#00ff9d;--amber:orange;--red:#f44;--bar-default:#4a90d9;--bar-compare:#f5c842;--bar-swap:#e05a2b;--bar-sorted:#3ec97a;--font-head:"Syne", sans-serif;--font-mono:"JetBrains Mono", monospace;--ctrl-width:220px;--hdr-h:52px;font-family:var(--font-mono);color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased}body{height:100vh;margin:0;overflow:hidden}#app{background:var(--bg);background-image:linear-gradient(#1e273666 1px,#0000 1px),linear-gradient(90deg,#1e273666 1px,#0000 1px);background-size:40px 40px;flex-direction:column;height:100vh;display:flex;overflow:hidden}.site-header{height:var(--hdr-h);border-bottom:1px solid var(--border);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:10;background:#090c10f2;flex-shrink:0;align-items:center;gap:0;padding:0 16px;display:flex;position:relative}.header-left{min-width:var(--ctrl-width);color:var(--cyan);align-items:center;gap:10px;display:flex}.logo-mark{color:var(--cyan);display:flex}.logo-text{font-family:var(--font-head);letter-spacing:.15em;color:var(--text-hi);font-size:15px;font-weight:800}.logo-slash{color:var(--cyan);margin:0 1px}.tab-nav{flex:1;align-items:stretch;gap:0;height:100%;padding-left:8px;display:flex}.tab-btn{color:var(--text-dim);font-family:var(--font-mono);letter-spacing:.12em;cursor:pointer;background:0 0;border:2px solid #0000;border-left:none;border-right:none;align-items:center;gap:7px;padding:0 20px;font-size:11px;font-weight:600;transition:color .15s,border-color .15s,background .15s;display:flex}.tab-btn:hover{color:var(--text);background:#00d4ff0a}.tab-btn.active{color:var(--cyan);border-bottom-color:var(--cyan);background:#00d4ff0f}.tab-icon{opacity:.7;font-size:10px}.header-right{justify-content:flex-end;min-width:140px;display:flex}.status-indicator{letter-spacing:.1em;color:var(--text-dim);align-items:center;gap:6px;font-size:10px;display:flex}.status-dot{background:var(--text-dim);border-radius:50%;width:7px;height:7px;transition:background .2s,box-shadow .2s}.status-dot.running{background:var(--cyan);box-shadow:0 0 8px var(--cyan);animation:1s ease-in-out infinite pulse}.status-dot.done{background:var(--green);box-shadow:0 0 8px var(--green)}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}.main-content{flex:1;position:relative;overflow:hidden}.tab-panel{height:100%;display:none}.tab-panel.active{display:flex}.panel-layout{width:100%;height:100%;display:flex}.control-panel{width:var(--ctrl-width);background:var(--bg-panel);border-right:1px solid var(--border);scrollbar-width:thin;scrollbar-color:var(--border) transparent;flex-shrink:0;padding:12px 0;overflow-y:auto}.control-section{border-bottom:1px solid var(--border);padding:10px 14px}.control-section:last-child{border-bottom:none}.control-label{letter-spacing:.15em;color:var(--text-dim);text-transform:uppercase;margin-bottom:8px;font-size:9px;font-weight:600}.control-value{color:var(--cyan);font-size:10px}.radio-group{flex-direction:column;gap:3px;display:flex}.radio-opt{cursor:pointer;color:var(--text);border-radius:3px;align-items:center;gap:7px;padding:4px 6px;font-size:11px;transition:background .1s,color .1s;display:flex}.radio-opt:hover{background:var(--cyan-dim);color:var(--text-hi)}.radio-opt input[type=radio]{appearance:none;border:1.5px solid var(--border-hi);cursor:pointer;border-radius:50%;flex-shrink:0;width:12px;height:12px;transition:border-color .15s;position:relative}.radio-opt input[type=radio]:checked{border-color:var(--cyan)}.radio-opt input[type=radio]:checked:after{content:"";background:var(--cyan);border-radius:50%;position:absolute;inset:2px}.slider{-webkit-appearance:none;background:var(--border-hi);cursor:pointer;border-radius:2px;outline:none;width:100%;height:3px}.slider::-webkit-slider-thumb{-webkit-appearance:none;background:var(--cyan);width:13px;height:13px;box-shadow:0 0 6px var(--cyan);cursor:pointer;border-radius:50%;transition:box-shadow .15s}.slider::-webkit-slider-thumb:hover{box-shadow:0 0 12px var(--cyan)}.slider::-moz-range-thumb{background:var(--cyan);cursor:pointer;border:none;border-radius:50%;width:13px;height:13px}.btn-group{flex-direction:column;gap:5px;display:flex}.btn{font-family:var(--font-mono);letter-spacing:.1em;cursor:pointer;border:1.5px solid;border-radius:3px;padding:6px 10px;font-size:10px;font-weight:600;transition:background .15s,color .15s,box-shadow .15s,opacity .15s}.btn-primary{background:var(--cyan);color:#000;border-color:var(--cyan);box-shadow:0 0 10px #00d4ff4d}.btn-primary:hover{box-shadow:0 0 18px #00d4ff80}.btn-secondary{color:var(--text);border-color:var(--border-hi);background:0 0}.btn-secondary:hover:not(:disabled){color:var(--text-hi);border-color:var(--text-dim);background:#ffffff0a}.btn:disabled{opacity:.3;cursor:not-allowed}.select-input{background:var(--bg-ctrl);border:1.5px solid var(--border-hi);width:100%;color:var(--text-hi);font-family:var(--font-mono);cursor:pointer;border-radius:3px;outline:none;padding:5px 8px;font-size:11px}.select-input:focus{border-color:var(--cyan)}.stats-section{background:var(--bg-ctrl)}.stat-row{justify-content:space-between;align-items:center;padding:3px 0;display:flex}.stat-label{letter-spacing:.1em;color:var(--text-dim);font-size:9px}.stat-value{color:var(--cyan);font-size:12px;font-weight:600}.legend-row{color:var(--text);align-items:center;gap:7px;padding:2px 0;font-size:10px;display:flex}.legend-dot{border-radius:2px;flex-shrink:0;width:10px;height:10px}.hint-text{color:var(--text-dim);font-size:9px;line-height:1.6}.canvas-container{background:var(--bg);flex:1;position:relative;overflow:hidden}canvas{width:100%;height:100%;display:block}.canvas-overlay-label{letter-spacing:.2em;color:var(--text-dim);pointer-events:none;font-size:9px;font-weight:600;position:absolute;top:10px;right:14px}.path-canvas-container canvas,.graph-canvas-container canvas{object-fit:contain;width:100%;height:100%}::-webkit-scrollbar{width:4px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px}
