:root{--bg: #0a0c10;--surface: #141820;--border: #252b38;--text: #e8eaef;--muted: #8b93a7;--accent: #ffcb05;--accent-dim: rgba(255, 203, 5, .15);--warn: #f59e0b;--ok: #34d399;--error-bg: #3f1d1d;--error-text: #fca5a5;font-family:Segoe UI,system-ui,-apple-system,sans-serif;line-height:1.5;color:var(--text);background:var(--bg)}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:radial-gradient(ellipse 80% 50% at 50% -20%,rgba(255,203,5,.08),transparent),var(--bg)}#root{max-width:1280px;margin:0 auto;padding:1.5rem 1.25rem 3rem}body:has(.landing) #root,body:has(.masterball-viewer) #root{max-width:none;padding:0;margin:0}body:has(.catalog-vault) #root{max-width:none;padding:1.5rem 1.25rem 0;margin:0 auto}body:has(.catalog-vault){background:radial-gradient(ellipse 70% 45% at 50% -10%,rgba(201,169,98,.05),transparent),radial-gradient(circle at 80% 20%,rgba(255,255,255,.02),transparent 40%),#08090d}.app-nav__brand{display:inline-flex;align-items:center;gap:.85rem;text-decoration:none;color:var(--text);padding:.15rem .35rem .15rem 0;border-radius:10px;transition:opacity .15s ease}.app-nav__brand:hover{opacity:.92}.app-nav__brand-text{font-size:1.05rem;font-weight:700;letter-spacing:.02em;line-height:1.2;white-space:nowrap}.app-nav__links{display:flex;flex-wrap:wrap;gap:.5rem;justify-content:flex-end}@media (max-width: 640px){#root{padding:1rem .75rem 2rem}.app-nav{flex-direction:column;align-items:stretch}.app-nav__links{justify-content:flex-start}.app-nav__brand-text{font-size:.92rem;white-space:normal}}.app-nav{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1.25rem;padding-bottom:1rem;border-bottom:1px solid var(--border)}body:has(.catalog-vault) .app-nav{border-bottom-color:#ffffff14;margin-bottom:.5rem}.app-nav__link{border:1px solid var(--border);background:var(--surface);color:var(--muted);padding:.45rem .85rem;border-radius:8px;cursor:pointer;font-weight:600;font-size:.875rem;display:inline-flex;align-items:center;gap:.4rem;text-decoration:none}.app-nav__link:hover{color:var(--text);border-color:var(--muted)}.app-nav__link--active{color:var(--accent);border-color:#ffcb0573;background:var(--accent-dim)}.app-nav__badge{background:var(--warn);color:#0d1117;font-size:.7rem;font-weight:700;padding:.1rem .4rem;border-radius:999px;min-width:1.25rem;text-align:center}.page-header,.app-header{display:flex;justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:1.25rem}.app-eyebrow{margin:0 0 .25rem;font-size:.75rem;text-transform:uppercase;letter-spacing:.12em;color:var(--accent);font-weight:600}.page-header h1,.app-header h1{margin:0;font-size:clamp(1.5rem,4vw,2rem);font-weight:700}.app-subtitle{margin:.35rem 0 0;color:var(--muted);font-size:.9rem}.btn-refresh{border:1px solid var(--border);background:var(--surface);color:var(--text);padding:.5rem 1rem;border-radius:8px;cursor:pointer;font-weight:600;white-space:nowrap}.btn-refresh:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.btn-refresh:disabled{opacity:.6;cursor:wait}.status-bar{display:flex;flex-wrap:wrap;gap:.75rem;margin-bottom:1rem;font-size:.8rem}.status-bar span{padding:.25rem .6rem;border-radius:6px;background:var(--surface);border:1px solid var(--border)}.status-bar .ok{border-color:#34d39966;color:var(--ok)}.status-bar .warn{border-color:#f59e0b66;color:var(--warn)}.error-banner{background:var(--error-bg);color:var(--error-text);padding:.75rem 1rem;border-radius:8px;margin-bottom:1rem}.toolbar{display:flex;flex-wrap:wrap;gap:.75rem;align-items:center;margin-bottom:1.25rem}.toolbar input,.toolbar select{background:var(--surface);border:1px solid var(--border);color:var(--text);padding:.5rem .75rem;border-radius:8px;font-size:.9rem}.toolbar input{flex:1;min-width:200px}.toolbar-count{color:var(--muted);font-size:.85rem;margin:0 0 0 auto}.toolbar-missing{color:var(--warn)}.toolbar-review{color:#fbbf24}.toolbar-review a{color:var(--accent)}.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:1.25rem}.loading-msg,.empty-msg{text-align:center;color:var(--muted);padding:3rem 1rem}
