:root{--bg: #080c14;--panel: #101726;--panel-alt: #161f33;--border: rgba(255, 255, 255, .1);--text: #f1f5f9;--muted: #94a3b8;--accent: #38bdf8;--font-sans: "Inter", system-ui, -apple-system, sans-serif;--font-mono: "JetBrains Mono", monospace}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:var(--font-sans);min-height:100vh;-webkit-font-smoothing:antialiased}.app{max-width:1220px;margin:0 auto;padding:20px 24px 36px;display:flex;flex-direction:column;gap:14px}.header{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;padding-bottom:12px;border-bottom:1px solid var(--border)}.title-group h1{font-size:1.35rem;font-weight:700;letter-spacing:-.02em;display:flex;align-items:center;gap:8px}.badge{font-family:var(--font-mono);font-size:.72rem;font-weight:500;padding:2px 8px;border-radius:999px;background:#38bdf81f;color:var(--accent);border:1px solid rgba(56,189,248,.3)}.subtitle{font-size:.83rem;color:var(--muted);margin-top:3px}.toolbar-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.select-control{background:var(--panel);color:var(--text);border:1px solid var(--border);padding:7px 11px;border-radius:8px;font-size:.8rem;font-family:var(--font-sans);cursor:pointer}.action-btn{display:inline-flex;align-items:center;gap:6px;background:var(--panel);color:var(--text);border:1px solid var(--border);padding:7px 12px;border-radius:8px;font-size:.8rem;font-weight:500;cursor:pointer;transition:all .15s ease}.action-btn:hover{border-color:#ffffff47;background:var(--panel-alt)}.action-btn.primary{background:#38bdf829;border-color:#38bdf873;color:#e0f2fe}.action-btn.primary:hover{background:#38bdf842}.catalog-panel{background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:12px 14px;display:flex;flex-direction:column;gap:10px}.catalog-header{display:flex;align-items:center;justify-content:space-between;padding-bottom:6px;border-bottom:1px solid rgba(255,255,255,.06)}.catalog-title{font-family:var(--font-mono);font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}.bulk-actions{display:flex;align-items:center;gap:6px}.bulk-btn{background:#ffffff0a;color:var(--text);border:1px solid var(--border);padding:3px 9px;border-radius:5px;font-family:var(--font-mono);font-size:.72rem;cursor:pointer;transition:all .14s ease}.bulk-btn:hover:not(:disabled){border-color:var(--accent);color:#e0f2fe}.bulk-btn:disabled{opacity:.4;cursor:default}.category-row{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.category-label{font-family:var(--font-mono);font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);min-width:128px}.preset-btn{background:#ffffff08;color:var(--muted);border:1px solid var(--border);padding:5px 10px;border-radius:6px;font-size:.78rem;font-weight:500;cursor:pointer;transition:all .14s ease}.preset-btn:hover{color:var(--text);border-color:#ffffff40}.preset-btn.active{background:#38bdf829;color:#e0f2fe;border-color:var(--accent)}.status-bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;font-size:.79rem;color:var(--muted);font-family:var(--font-mono)}.zoom-controls{display:flex;align-items:center;gap:6px}.zoom-btn{background:var(--panel);color:var(--text);border:1px solid var(--border);padding:3px 9px;border-radius:6px;font-family:var(--font-mono);font-size:.75rem;cursor:pointer}.zoom-btn:hover{border-color:var(--accent)}.plot-card{position:relative;background:var(--panel);border:1px solid var(--border);border-radius:12px;overflow:hidden;-webkit-user-select:none;user-select:none}.canvas{display:block;width:100%;height:620px;cursor:grab;transition:opacity .25s ease,filter .25s ease}.canvas.loading{opacity:.42;filter:saturate(.75)}.canvas:active{cursor:grabbing}.canvas-loader{position:absolute;top:16px;right:18px;display:inline-flex;align-items:center;gap:8px;background:#0a0f1ce0;border:1px solid rgba(56,189,248,.35);border-radius:999px;padding:6px 13px;font-family:var(--font-mono);font-size:.74rem;color:#e0f2fe;pointer-events:none;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);box-shadow:0 4px 16px #00000073;z-index:8}.spinner-dot{width:8px;height:8px;border-radius:50%;background:var(--accent);box-shadow:0 0 8px var(--accent);animation:pulse-dot 1s infinite ease-in-out}@keyframes pulse-dot{0%,to{opacity:.35;transform:scale(.85)}50%{opacity:1;transform:scale(1.2)}}.empty-overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;pointer-events:none;font-family:var(--font-mono);font-size:.85rem;color:var(--muted)}.tooltip{position:absolute;pointer-events:auto;width:332px;background:#0a0f1cf5;border:1px solid rgba(56,189,248,.45);border-radius:10px;padding:11px 13px;font-size:.76rem;line-height:1.45;color:var(--text);box-shadow:0 12px 30px #000000a6;z-index:10;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.tooltip.pinned{border-color:#fde047;box-shadow:0 12px 32px #000000bf,0 0 0 1px #fde04740}.tooltip-links{display:flex;align-items:center;justify-content:space-between;gap:6px;margin-top:9px;padding-top:8px;border-top:1px solid rgba(255,255,255,.1)}.ext-link{flex:1;display:inline-flex;align-items:center;justify-content:center;gap:4px;white-space:nowrap;text-decoration:none;font-family:var(--font-mono);font-size:.68rem;font-weight:500;line-height:1;color:#bae6fd;background:#38bdf81f;border:1px solid rgba(56,189,248,.3);padding:6px;border-radius:6px;transition:all .14s ease}.ext-link:hover{background:#38bdf840;color:#fff;border-color:var(--accent)}.ext-icon{width:13px;height:13px;flex-shrink:0;color:#38bdf8}.ext-arrow{width:10px;height:10px;flex-shrink:0;opacity:.75}.ext-link:hover .ext-icon,.ext-link:hover .ext-arrow{color:#fff;opacity:1}.tooltip-hint{margin-top:5px;font-size:.65rem;color:var(--muted);text-align:center;font-family:var(--font-mono)}.tooltip-header{display:flex;align-items:center;justify-content:space-between;gap:8px;padding-bottom:7px;margin-bottom:7px;border-bottom:1px solid rgba(255,255,255,.1)}.star-swatch-row{display:flex;align-items:center;gap:8px}.star-swatch{width:12px;height:12px;border-radius:50%;flex-shrink:0}.tooltip-id{font-family:var(--font-mono);font-weight:600;font-size:.77rem;color:#f8fafc}.tooltip-stage{font-size:.7rem;color:#38bdf8;font-weight:500}.spectral-pill{font-family:var(--font-mono);font-size:.7rem;font-weight:700;padding:2px 7px;border-radius:4px;background:#ffffff14;white-space:nowrap;flex-shrink:0}.tooltip-grid{display:grid;grid-template-columns:1fr 1fr;gap:5px 10px;font-family:var(--font-mono);font-size:.72rem}.tooltip-metric span{display:block;font-size:.65rem;color:var(--muted);text-transform:uppercase}.tooltip-metric strong{color:#f1f5f9;font-weight:500}.error-banner{background:#ef44441f;border:1px solid rgba(239,68,68,.35);color:#fca5a5;padding:10px 14px;border-radius:8px;font-size:.85rem}
