:root{--bg:#0d1117;--bg-card:#161b22;--bg-surface:#1c2128;--border:#30363d;--text:#e6edf3;--text-dim:#8b949e;--accent:#58a6ff;--pass:#3fb950;--fail:#f85149;--elim:#6e7681;--skip:#d29922;--cell-on:#2f5496;--cell-off:#21262d;--radius:8px}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);color:var(--text);min-height:100vh;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,sans-serif;line-height:1.5}.loading-screen{height:100vh;color:var(--text-dim);flex-direction:column;justify-content:center;align-items:center;gap:16px;display:flex}.loading-spinner{border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;width:40px;height:40px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.header{background:var(--bg-surface);border-bottom:1px solid var(--border);z-index:100;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;padding:12px 20px;display:flex;position:sticky;top:0}.header-left{align-items:baseline;gap:12px;display:flex}.header-title{white-space:nowrap;font-size:18px;font-weight:700}.header-sub{color:var(--text-dim);white-space:nowrap;font-size:12px}.header-right{align-items:center;gap:8px;display:flex}.username-area{align-items:center;display:flex}.username-edit{gap:4px;display:flex}.username-edit input{background:var(--bg);border:1px solid var(--border);color:var(--text);border-radius:4px;width:130px;padding:4px 8px;font-size:13px}.username-display{background:var(--bg);border:1px solid var(--border);color:var(--accent);cursor:pointer;border-radius:4px;padding:4px 10px;font-size:13px}.username-display:hover{border-color:var(--accent)}.btn{border:1px solid var(--border);background:var(--bg-surface);color:var(--text);cursor:pointer;white-space:nowrap;border-radius:6px;padding:6px 14px;font-size:13px;font-weight:600;transition:all .15s}.btn:hover{border-color:var(--text-dim)}.btn-sm{padding:4px 10px;font-size:12px}.btn-primary{background:var(--accent);color:#fff;border-color:var(--accent)}.btn-ghost{color:var(--text-dim);background:0 0;border-color:#0000}.btn-ghost:hover{color:var(--text);background:var(--bg)}.btn-pass{color:var(--pass);background:#1a3a1a;border-color:#2d5a2d}.btn-pass:hover{border-color:var(--pass);background:#1f4a1f}.btn-fail{color:var(--fail);background:#3a1a1a;border-color:#5a2d2d}.btn-fail:hover{border-color:var(--fail);background:#4a1f1f}.btn-fail-confirm{background:var(--fail);color:#fff;border-color:var(--fail)}.btn-skip{color:var(--skip);background:#3a3a1a;border-color:#5a5a2d}.btn-skip:hover{border-color:var(--skip);background:#4a4a1f}.btn-reset,.btn-cancel{background:var(--bg);color:var(--text-dim)}.btn-danger{color:var(--fail);background:#5a1a1a;border-color:#7a2d2d}.btn-danger:hover{border-color:var(--fail);background:#6a1f1f}.stats-bar{background:var(--bg-surface);border-bottom:1px solid var(--border);padding:12px 20px}.stats-progress{align-items:center;gap:12px;margin-bottom:10px;display:flex}.progress-bar{background:var(--bg);border-radius:4px;flex:1;height:8px;position:relative;overflow:hidden}.progress-fill{height:100%;transition:width .5s;position:absolute;top:0}.progress-tested{background:var(--accent);border-radius:4px 0 0 4px;left:0}.progress-eliminated{background:var(--elim)}.progress-label{color:var(--text-dim);white-space:nowrap;font-size:12px;font-weight:600}.stats-chips{flex-wrap:wrap;gap:16px;display:flex}.chip{align-items:baseline;gap:4px;display:flex}.chip-num{font-variant-numeric:tabular-nums;font-size:18px;font-weight:700}.chip-label{color:var(--text-dim);text-transform:uppercase;letter-spacing:.5px;font-size:11px}.chip-remaining .chip-num{color:var(--text)}.chip-pass .chip-num{color:var(--pass)}.chip-fail .chip-num{color:var(--fail)}.chip-elim .chip-num{color:var(--elim)}.chip-skip .chip-num{color:var(--skip)}.chip-pairs .chip-num{color:var(--accent)}.filter-bar{background:var(--bg-card);border-bottom:1px solid var(--border);z-index:99;flex-wrap:wrap;align-items:center;gap:16px;padding:10px 20px;display:flex;position:sticky;top:53px}.filter-group{align-items:center;gap:6px;display:flex}.filter-group label{color:var(--text-dim);text-transform:uppercase;letter-spacing:.5px;font-size:11px;font-weight:600}.toggle-group{border:1px solid var(--border);border-radius:6px;display:flex;overflow:hidden}.toggle-btn{background:var(--bg);color:var(--text-dim);border:none;border-right:1px solid var(--border);cursor:pointer;white-space:nowrap;padding:4px 10px;font-size:12px;transition:all .15s}.toggle-btn:last-child{border-right:none}.toggle-btn:hover{color:var(--text);background:var(--bg-surface)}.toggle-btn.active{background:var(--accent);color:#fff}.search-input{background:var(--bg);border:1px solid var(--border);color:var(--text);border-radius:6px;width:200px;padding:5px 10px;font-size:12px}.search-input::placeholder{color:var(--text-dim)}.result-count{color:var(--text-dim);white-space:nowrap;margin-left:auto;font-size:12px}.pattern-list{flex-direction:column;gap:8px;max-width:1200px;margin:0 auto;padding:16px 20px;display:flex}.pattern-card{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-card);padding:12px 16px;transition:border-color .2s;position:relative}.pattern-card:hover{border-color:var(--text-dim)}.card-eliminated{opacity:.5}.card-eliminated:hover{opacity:.7}.status-badge{text-transform:uppercase;letter-spacing:1px;border-radius:4px;padding:2px 8px;font-size:10px;font-weight:700;position:absolute;top:8px;right:12px}.status-pass{color:var(--pass);background:#1a3a1a}.status-fail{color:var(--fail);background:#3a1a1a}.status-eliminated{color:var(--elim);background:#1a1a1a}.status-skip{color:var(--skip);background:#3a3a1a}.card-top{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.card-meta{align-items:center;gap:10px;display:flex}.rank{color:var(--text-dim);font-size:15px;font-weight:700}.sn{letter-spacing:.5px;border-radius:4px;padding:1px 8px;font-size:13px;font-weight:700}.sn-b9i{color:#6cb6ff;background:#1a2744}.sn-ci20{color:#c49bff;background:#2a1a44}.sn-ao7{color:#56d364;background:#1a4428}.channel{color:var(--text-dim);font-size:12px}.kills{color:var(--fail);background:#3a1a1a;border-radius:4px;padding:1px 6px;font-size:12px;font-weight:700}.tested-by{color:var(--text-dim);font-size:11px}.card-body{align-items:flex-start;gap:16px;display:flex}.grid-container{flex-shrink:0}.grid-visual{flex-direction:column;gap:2px;display:flex}.grid-row{align-items:center;gap:2px;display:flex}.row-num{width:14px;color:var(--text-dim);text-align:right;font-variant-numeric:tabular-nums;margin-right:2px;font-size:10px}.grid-cell{border-radius:3px;width:28px;height:22px;transition:all .15s}.cell-on{background:var(--cell-on)}.cell-off{background:var(--cell-off)}.cell-dim.cell-on{background:#1a2a40}.cell-dim.cell-off{background:#161b20}.card-info{flex-direction:column;flex:1;gap:6px;min-width:0;display:flex}.info-label{color:var(--text-dim);text-transform:uppercase;letter-spacing:.5px;margin-right:4px;font-size:10px;font-weight:600}.click-list{font-size:12px}.click-coords{color:var(--accent);word-break:break-all;font-family:SF Mono,SFMono-Regular,Consolas,Liberation Mono,monospace;font-size:12px}.pair-info{font-size:12px}.pair-ids{color:var(--text-dim);word-break:break-all;font-family:SF Mono,SFMono-Regular,Consolas,Liberation Mono,monospace;font-size:11px}.card-actions{border-top:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:8px;margin-top:10px;padding-top:10px;display:flex}.confirm-group{align-items:center;gap:6px;display:flex}.confirm-text{color:var(--fail);font-size:12px;font-weight:600}.error-banner{border:1px solid var(--fail);color:var(--fail);cursor:pointer;text-align:center;background:#3a1a1a;padding:8px 20px;font-size:13px}.error-dismiss{color:var(--text-dim);font-size:11px}.empty-state{text-align:center;color:var(--text-dim);padding:60px 20px;font-size:14px}@media (width<=600px){.header,.stats-bar{padding:10px 12px}.filter-bar{gap:8px;padding:8px 12px;top:45px}.pattern-list{padding:12px}.card-body{flex-direction:column}.grid-cell{width:24px;height:18px}.stats-chips{gap:10px}.search-input{width:140px}}
