:root{--bg: #0a0e14;--bg-2: #0f1420;--panel: #121a29;--panel-2: #162136;--border: #223048;--text: #c8d6ef;--text-dim: #7a8bb0;--accent: #22d3a6;--accent-dim: #0f8f6f;--blue: #4a9eff;--violet: #a78bfa;--danger: #ff5c7a;--warn: #f5c542;--cmp: #f5c542;--swp: #4a9eff;--piv: #ff8f3f;--solved: #22d3a6;--mono: "JetBrains Mono", "Fira Code", "SFMono-Regular", Menlo, monospace}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{min-height:100%}body{background:radial-gradient(1200px 600px at 70% -10%,#12253c 0%,var(--bg) 55%);color:var(--text);font-family:var(--mono);-webkit-font-smoothing:antialiased}.app{min-height:100vh;max-width:1400px;margin:0 auto;padding:26px 24px 60px;display:flex;flex-direction:column;gap:16px}.hero{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}.title{font-size:24px;letter-spacing:6px;color:var(--accent);text-transform:uppercase}.subtitle{margin-top:6px;color:var(--text-dim);font-size:12px;letter-spacing:2px}.prof-header{display:flex;align-items:center;justify-content:space-between}.tabs{display:flex;gap:6px;flex-wrap:wrap;border-bottom:1px solid var(--border);padding-bottom:8px}.tab{background:transparent;border:1px solid transparent;color:var(--text-dim);font-family:var(--mono);font-size:12.5px;letter-spacing:.5px;padding:9px 14px;border-radius:8px;cursor:pointer;transition:all .15s ease}.tab:hover{color:var(--text);background:var(--panel)}.tab.on{color:var(--accent);border-color:var(--accent-dim);background:#22d3a614}.lab-layout,.tab-body{display:flex;flex-direction:column;gap:16px;width:100%}.card,.editor-card,.data-card,.console-card,.player-card,.metrics-card,.viz-card,.ctx-card,.op-card,.result-card,.history-card,.cmp-card,.exp-card,.chal-card,.debug-card,.docs-card,.feed-card{background:linear-gradient(180deg,var(--panel) 0%,var(--bg-2) 100%);border:1px solid var(--border);border-radius:12px;padding:16px 18px;box-shadow:0 8px 30px #00000047}.panel-title{font-size:11.5px;letter-spacing:2px;color:var(--accent);text-transform:uppercase;display:flex;align-items:center;gap:10px;margin-bottom:12px}.panel-title .btn.mini{margin-left:auto}.ctx-sub{color:var(--text-dim);font-size:11px;letter-spacing:1px;text-transform:none;margin-left:auto}.btn{background:var(--accent-dim);color:#04130e;border:1px solid transparent;border-radius:8px;padding:10px 18px;font-family:var(--mono);font-size:13px;font-weight:700;cursor:pointer;letter-spacing:.5px;transition:all .15s ease;white-space:nowrap}.btn:hover:not(:disabled){background:var(--accent);transform:translateY(-1px)}.btn:disabled{opacity:.42;cursor:not-allowed;transform:none}.btn.secondary{background:transparent;color:var(--text-dim);border:1px solid var(--border);font-weight:500}.btn.secondary:hover:not(:disabled){color:var(--text);border-color:var(--text-dim)}.btn.secondary.on{color:var(--accent);border-color:var(--accent)}.btn.primary{background:var(--blue);color:#041221}.btn.primary:hover:not(:disabled){background:#6cb2ff}.btn.accent{background:var(--accent-dim);color:#04130e}.btn.accent.big{padding:13px 26px;font-size:14px;letter-spacing:1.5px}.btn.danger{background:transparent;color:var(--danger);border:1px solid var(--danger);font-weight:500}.btn.mini{padding:6px 11px;font-size:11.5px}.actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.algo-strip{display:flex;align-items:center;gap:12px;flex-wrap:wrap;background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:10px 14px}.lbl{font-size:11px;letter-spacing:1.5px;color:var(--text-dim);text-transform:uppercase}.algo-blurb{color:var(--text-dim);font-size:12px;font-style:italic}.seg{display:flex;gap:4px;flex-wrap:wrap}.seg-btn{background:var(--bg);border:1px solid var(--border);color:var(--text-dim);font-family:var(--mono);font-size:12px;padding:8px 12px;border-radius:7px;cursor:pointer;transition:all .12s ease}.seg-btn:hover{color:var(--text);border-color:var(--text-dim)}.seg-btn.on{background:#22d3a61f;border-color:var(--accent);color:var(--accent)}.data-card{display:flex;flex-direction:column;gap:10px}.data-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.code-input{background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:9px 12px;color:var(--text);font-family:var(--mono);font-size:13px;outline:none}.code-input:focus{border-color:var(--accent)}.flex1{flex:1;min-width:180px}.err-inline{color:var(--danger);font-size:12px}.count-chip{margin-left:auto;background:var(--bg);border:1px solid var(--border);border-radius:20px;padding:5px 12px;font-size:11px;color:var(--text-dim);letter-spacing:1px}.editor-toolbar{display:flex;align-items:center;gap:8px;margin-bottom:8px}.ed-tab{color:var(--text-dim);font-size:12px;letter-spacing:1px}.ed-spacer{flex:1}.editor-wrap{border:1px solid var(--border);border-radius:8px;overflow:hidden}.editor-wrap .cm-editor{font-size:12.5px}.editor-wrap .cm-scroller{font-family:var(--mono)!important}.console-card{margin-top:0}.console-body{background:#060a10;border:1px solid var(--border);border-radius:8px;padding:12px;max-height:180px;overflow:auto;font-size:12px;line-height:1.55}.console-line{color:var(--text-dim);white-space:pre-wrap;word-break:break-word}.console-line.err{color:var(--danger)}.console-line.info{color:var(--accent)}.console-empty{color:var(--text-dim);opacity:.7}.player-card{display:flex;flex-direction:column;gap:10px}.player-top{display:flex;gap:8px;flex-wrap:wrap}.player-progress{height:6px;background:var(--bg);border-radius:4px;overflow:hidden;border:1px solid var(--border)}.player-progress-fill{height:100%;background:linear-gradient(90deg,var(--accent-dim),var(--accent));transition:width .12s linear}.player-meta{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;font-size:12px;color:var(--text-dim)}.speed-ctl{display:flex;align-items:center;gap:6px}.speed-tag{color:var(--text-dim);font-size:11.5px}.speed-btn{background:var(--bg);border:1px solid var(--border);color:var(--text-dim);font-family:var(--mono);font-size:11.5px;padding:5px 10px;border-radius:6px;cursor:pointer}.speed-btn.on{color:var(--accent);border-color:var(--accent)}.speed-hint{color:var(--text-dim);opacity:.7;font-size:11px;margin-left:6px}.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:10px}.stat{background:var(--panel-2);border:1px solid var(--border);border-radius:10px;padding:12px 8px;text-align:center}.stat-num{font-size:22px;color:var(--accent);font-weight:700}.stat-label{font-size:10px;letter-spacing:1px;color:var(--text-dim);margin-top:5px;text-transform:uppercase}.metrics-row{display:grid;grid-template-columns:1fr 1fr;gap:16px}.viz-card{padding-bottom:12px}.viz-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px}.viz-mode{color:var(--text-dim);font-size:11px;text-transform:none;letter-spacing:1px}.viz-stamp{font-size:12px;letter-spacing:2px;padding:5px 12px;border-radius:20px;border:1px solid var(--border);color:var(--text);background:var(--bg);animation:stampIn .2s ease}.viz-stamp.cmp{color:var(--cmp);border-color:var(--cmp);background:#f5c5421a}.viz-stamp.swp{color:var(--swp);border-color:var(--swp);background:#4a9eff1a}.viz-stamp.mov,.viz-stamp.set{color:var(--violet);border-color:var(--violet);background:#a78bfa1a}.viz-stamp.piv{color:var(--piv);border-color:var(--piv);background:#ff8f3f1f}.viz-stamp.partzone{color:var(--violet);border-color:var(--violet)}.viz-stamp.solved-now{color:var(--solved);border-color:var(--solved)}@keyframes stampIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.viz-body{display:flex;flex-direction:column;gap:12px}.bars{display:flex;align-items:flex-end;gap:2px;height:260px;padding:10px 6px 0;background:#070b12;border:1px solid var(--border);border-radius:10px;overflow:hidden}.bar{flex:1 1 0;min-width:2px;background:linear-gradient(180deg,#2b6f8f,#1c4a63);border:1px solid rgba(120,170,210,.25);border-radius:3px 3px 0 0;position:relative;transition:height .16s ease,background .16s ease,transform .18s ease,border-color .16s ease;display:flex;justify-content:center}.bar-val{position:absolute;top:-16px;font-size:10px;color:var(--text);white-space:nowrap}.bar.cmp{background:linear-gradient(180deg,#f5c542,#a97f14);border-color:var(--cmp)}.bar.swp{background:linear-gradient(180deg,#4a9eff,#1d5aa8);border-color:var(--swp)}.bar.mov,.bar.set{background:linear-gradient(180deg,#a78bfa,#6d4fd0);border-color:var(--violet)}.bar.piv,.bar.part-piv{background:linear-gradient(180deg,#ff8f3f,#b85a16);border-color:var(--piv);box-shadow:0 0 0 2px #ff8f3f59}.bar.solved{background:linear-gradient(180deg,#22d3a6,#0f7a5e);border-color:var(--solved)}.bar.rng{outline:1px dashed rgba(120,170,210,.5);outline-offset:-1px}.bar.part-men{opacity:.95;border-color:var(--accent)}.bar.part-may{opacity:.95;border-color:var(--cmp)}.bar.solved-now{animation:solvedPulse .6s ease}.animate-bounce{animation:swapBounce .34s ease}.animate-from{animation:slideFrom .3s ease}.animate-solved{animation:solvedPulse .6s ease}@keyframes swapBounce{0%{transform:translateY(0)}40%{transform:translateY(-12px)}70%{transform:translateY(4px)}to{transform:translateY(0)}}@keyframes slideFrom{0%{transform:translate(-40%);opacity:.4}to{transform:translate(0);opacity:1}}@keyframes solvedPulse{0%{box-shadow:0 0 #22d3a6cc}to{box-shadow:0 0 0 12px #22d3a600}}.anim-fast{--dummy: 0}.elements{display:flex;gap:6px;flex-wrap:wrap;padding:10px;background:#070b12;border:1px solid var(--border);border-radius:10px}.elements.dragging{cursor:grabbing}.elem{min-width:46px;padding:8px 6px 4px;background:var(--panel-2);border:1.5px solid var(--border);border-radius:8px;text-align:center;-webkit-user-select:none;user-select:none;transition:transform .15s ease,border-color .15s ease,background .15s ease;touch-action:none}.elem.cmp{border-color:var(--cmp);background:#f5c5421f}.elem.swp{border-color:var(--swp);background:#4a9eff1f}.elem.mov,.elem.set{border-color:var(--violet);background:#a78bfa1f}.elem.piv,.elem.part-piv{border-color:var(--piv);background:#ff8f3f24}.elem.solved{border-color:var(--solved);background:#22d3a61f}.elem.grabbed{transform:scale(1.08);border-color:var(--accent);cursor:grabbing}.elem-val{font-size:15px;font-weight:700;color:var(--text)}.elem-input{width:42px;background:var(--bg);border:1px solid var(--border);border-radius:5px;color:var(--text);font-family:var(--mono);font-size:13px;text-align:center;padding:3px;outline:none}.elem-input:focus{border-color:var(--accent)}.elem-idx{font-size:9px;color:var(--text-dim);margin-top:2px}.elem-move{display:flex;justify-content:center;gap:2px;margin-top:2px}.mini-btn{background:var(--bg);border:1px solid var(--border);color:var(--text-dim);border-radius:4px;font-size:8px;line-height:1;padding:2px 3px;cursor:pointer}.mini-btn:hover{color:var(--accent)}.viz-hint{color:var(--text-dim);font-size:11px}.legend-row{display:flex;gap:14px;flex-wrap:wrap;margin-top:10px;font-size:11px;color:var(--text-dim)}.dot{display:inline-block;width:9px;height:9px;border-radius:3px;margin-right:5px;vertical-align:middle}.dot.cmp{background:var(--cmp)}.dot.swp{background:var(--swp)}.dot.piv{background:var(--piv)}.dot.solved{background:var(--solved)}.dot.men{background:var(--accent)}.dot.may{background:var(--cmp)}.ctx-line{font-size:13px;color:var(--text);margin-bottom:4px}.ctx-line.dim{color:var(--text-dim);font-size:12px}.ctx-empty{color:var(--text-dim);font-size:12.5px}.ctx-special{margin-top:12px;background:var(--bg);border:1px solid var(--border);border-radius:10px;padding:12px}.ctx-special-title{font-size:12px;letter-spacing:1px;color:var(--accent);margin-bottom:10px}.ctx-special-foot{margin-top:10px;font-size:11px;color:var(--text-dim)}.merge-halves{display:flex;gap:16px;flex-wrap:wrap}.chips-col{display:flex;flex-direction:column;gap:5px}.chips-label{font-size:10px;color:var(--text-dim)}.chips{display:flex;gap:4px;flex-wrap:wrap}.chip{background:var(--panel-2);border:1px solid var(--border);border-radius:6px;padding:3px 8px;font-size:12px;color:var(--text)}.chip.ok{border-color:var(--solved);color:var(--accent)}.quick-line{display:flex;gap:4px;flex-wrap:wrap}.qcell{min-width:30px;padding:6px 8px;text-align:center;border-radius:6px;border:1.5px solid var(--border);font-size:12px;background:var(--panel-2)}.qcell.men{border-color:var(--accent);color:var(--accent)}.qcell.may{border-color:var(--cmp);color:var(--cmp)}.qcell.piv{border-color:var(--piv);background:#ff8f3f29;color:var(--piv);font-weight:700}.pivot-badge{display:inline-block;background:var(--piv);color:#2a1200;border-radius:6px;padding:1px 8px;font-weight:700}.legend.men{color:var(--accent)}.legend.piv{color:var(--piv)}.legend.may{color:var(--cmp)}.op-body{background:var(--bg);border:1px solid var(--border);border-radius:10px;padding:14px}.op-title{display:flex;align-items:center;gap:10px;margin-bottom:8px}.tag{display:inline-block;font-size:12px;letter-spacing:1.5px;padding:4px 12px;border-radius:20px;background:var(--panel-2);border:1px solid var(--border)}.tag-now{color:var(--accent);border-color:var(--accent-dim)}.op-question{font-size:15px;color:var(--warn);font-weight:700}.op-detail{font-size:12.5px;color:var(--text-dim);line-height:1.6}.op-actions{margin-top:12px}.quiz-card{margin-top:14px;border-top:1px dashed var(--border);padding-top:12px}.quiz-head{font-size:11px;letter-spacing:2px;color:var(--blue);margin-bottom:4px}.quiz-q{font-size:13px;margin-bottom:8px}.quiz-opts{display:flex;flex-direction:column;gap:6px}.quiz-opt{text-align:left;background:var(--bg);border:1px solid var(--border);color:var(--text-dim);font-family:var(--mono);font-size:12px;padding:9px 12px;border-radius:8px;cursor:pointer;transition:all .12s ease}.quiz-opt:hover{color:var(--text);border-color:var(--text-dim)}.quiz-opt.sel{border-color:var(--blue);color:var(--text)}.quiz-opt.right{border-color:var(--accent);color:var(--accent)}.quiz-opt.wrong{border-color:var(--danger);color:var(--danger)}.quiz-actions{margin-top:10px}.quiz-verdict{margin-top:8px;font-size:12.5px}.quiz-verdict.ok{color:var(--accent)}.quiz-verdict.bad{color:var(--danger)}.result-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:14px}.result-title{font-size:16px;letter-spacing:2px;color:var(--accent)}.verdict{padding:4px 10px;border-radius:6px;font-size:11px;letter-spacing:1px}.verdict.ok{background:#22d3a626;color:var(--accent);border:1px solid var(--accent-dim)}.verdict.warn{background:#f5c5421f;color:var(--warn);border:1px solid var(--warn)}.arr-row{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin-bottom:14px}.arr-label{font-size:10px;letter-spacing:1px;color:var(--text-dim);text-transform:uppercase;margin-bottom:6px}.arr-chips{display:flex;gap:4px;flex-wrap:wrap;max-width:520px}.arr-arrow{color:var(--accent);font-size:20px}.result-stats{margin-bottom:12px}.reflection-box{border-top:1px dashed var(--border);padding-top:10px}.reflection-box summary{cursor:pointer;color:var(--blue);font-size:12.5px}.reflection-hint{color:var(--text-dim);font-size:12px;margin:8px 0;line-height:1.5}.reflection-input{width:100%;background:var(--bg);border:1px solid var(--border);border-radius:8px;color:var(--text);font-family:var(--mono);font-size:12.5px;padding:10px;outline:none;resize:vertical}.reflection-input:focus{border-color:var(--accent)}.history-empty{color:var(--text-dim);font-size:12.5px}.history-item{display:flex;align-items:center;gap:10px;padding:7px 0;border-bottom:1px solid var(--border);font-size:12px;flex-wrap:wrap}.history-item:last-child{border-bottom:none}.h-num{color:var(--text-dim)}.h-algo{color:var(--accent);min-width:80px}.h-metrics{margin-left:auto;color:var(--text-dim)}.h-ok.yes{color:var(--accent)}.h-ok.no{color:var(--danger)}.cmp-table-wrap,.exp-table-wrap{margin-top:14px;overflow-x:auto}.cmp-table{width:100%;border-collapse:collapse;font-size:12px}.cmp-table th,.cmp-table td{border:1px solid var(--border);padding:8px 10px;text-align:left}.cmp-table th{background:var(--panel-2);color:var(--accent);font-size:11px;letter-spacing:1px;text-transform:uppercase}.cmp-table td{color:var(--text-dim)}.algo-cell{color:var(--text)!important}.api-table td:first-child{white-space:nowrap}.exp-cell{vertical-align:top}.exp-main{color:var(--text);font-size:12.5px}.exp-sub{color:var(--text-dim);font-size:10.5px}.chal-toast{display:flex;flex-direction:column;gap:6px;margin-bottom:12px}.chal-toast-item{display:flex;align-items:center;gap:10px;background:#22d3a61f;border:1px solid var(--accent-dim);color:var(--accent);border-radius:8px;padding:8px 12px;font-size:12.5px}.chal-list{display:flex;flex-direction:column;gap:10px}.chal-item{border:1px solid var(--border);border-radius:10px;padding:12px 14px;background:var(--panel-2)}.chal-item.done{border-color:var(--accent-dim);background:#22d3a60f}.chal-item.locked{opacity:.6}.chal-head{display:flex;align-items:center;gap:10px}.chal-badge{width:26px;height:26px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;background:var(--bg);border:1px solid var(--border);font-size:12px;flex-shrink:0}.chal-item.done .chal-badge{background:var(--accent);color:#04130e;border-color:var(--accent)}.chal-title{font-size:13.5px;color:var(--text)}.chal-head .btn.mini{margin-left:auto}.chal-desc{font-size:12px;color:var(--text-dim);margin-top:6px;line-height:1.5}.chal-desc.dim{opacity:.7}.chal-hint{font-size:12px;color:var(--warn);margin-top:6px}.hint-box{margin-top:12px}.hint-text{margin-top:10px;font-size:12.5px;color:var(--warn);line-height:1.6;background:#f5c54214;border:1px solid rgba(245,197,66,.35);border-radius:8px;padding:10px 12px}.docs-card details{margin-top:12px;border-top:1px dashed var(--border);padding-top:10px}.docs-card summary{cursor:pointer;color:var(--blue);font-size:12.5px;margin-bottom:8px}.doc-note{color:var(--text-dim);font-size:12px;line-height:1.6;margin-top:10px}.doc-note code,.docs-card code{background:var(--bg);border:1px solid var(--border);border-radius:4px;padding:1px 5px;color:var(--warn)}.doc-pre{background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:12px;font-size:11.5px;color:var(--text-dim);overflow:auto;line-height:1.6}.download-grid{display:flex;gap:8px;flex-wrap:wrap}.warn-banner{background:#f5c5421a;border:1px solid rgba(245,197,66,.45);color:var(--warn);border-radius:8px;padding:10px 12px;font-size:12.5px;line-height:1.5}.success-banner{color:var(--accent);font-size:12.5px}.error-msg{background:#ff5c7a14;border:1px solid var(--danger);color:var(--danger);border-radius:10px;padding:12px 14px;font-size:13px;line-height:1.55;white-space:pre-wrap}.prof-app{max-width:1300px}.card{background:linear-gradient(180deg,var(--panel) 0%,var(--bg-2) 100%);border:1px solid var(--border);border-radius:12px;padding:22px;width:100%;margin:0 auto}.prof-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.pin-input{background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:10px 12px;color:var(--text);font-family:var(--mono);font-size:14px;letter-spacing:4px;outline:none;width:130px;text-align:center}.pin-input:focus{border-color:var(--accent)}.feed-body{max-height:220px;overflow:auto;background:#060a10;border:1px solid var(--border);border-radius:8px;padding:10px;font-size:12px}.feed-line{color:var(--text-dim);padding:2px 0;white-space:pre-wrap}.feed-line.now{color:var(--accent)}.feed-line.dim{opacity:.6}.foot{margin-top:24px;color:var(--text-dim);font-size:11.5px;text-align:center;letter-spacing:.5px}@media (max-width: 900px){.workspace{grid-template-columns:1fr!important}.metrics-row{grid-template-columns:1fr}.app{padding:18px 14px 50px}.bars{height:200px}.title{font-size:19px;letter-spacing:4px}}@media (prefers-reduced-motion: reduce){*{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}}
