/* ═══════════════════════════════════════════════════════════
   VIDEOCCULT GAMES — Merged Styles
   1. Theme base  |  2. Core games  |  3. Expansion  |  4. Shell
   ═══════════════════════════════════════════════════════════ */

/* ─── 1. THEME BASE ──────────────────────────────────────── */
/*
 * ╔══════════════════════════════════════════════════════════════════════╗
 * ║           VIDEOCCULT — THEME & FX SYSTEM                            ║
 * ║           Extracted & cleaned from index_v47_2_.html                ║
 * ╠══════════════════════════════════════════════════════════════════════╣
 * ║  HOW TO PORT TO A NEW PROJECT                                       ║
 * ║                                                                      ║
 * ║  1. Drop this file in your project.                                  ║
 * ║  2. Add  data-vc-theme="<id>"  to your <html> or <body> element.    ║
 * ║  3. Optionally add FX body classes (see §FX TOGGLES).               ║
 * ║  4. To add a new theme, copy the THEME TEMPLATE at the bottom.      ║
 * ║                                                                      ║
 * ║  THEME IDs:  videoccult · netrunner · blackwall · witch              ║
 * ║              lovecraft · dark_academia · light_academia · hedgerow   ║
 * ║                                                                      ║
 * ║  FX CLASSES (on <body>):                                             ║
 * ║    vc-fx-noise-off   — disable film-grain noise overlay              ║
 * ║    vc-fx-scanlines-off — disable CRT scanline overlay                ║
 * ║    vc-fx-icegrid-on  — data-grid lines inside cards/panels           ║
 * ║    vc-fx-trace-on    — hover shimmer sweep on interactive elements   ║
 * ║    vc-fx-sigils-on   — daemon sigil glyphs on active badges/tags     ║
 * ║    vc-fx-glitch-on   — micro glitch pulse on modal open              ║
 * ║    vc-fx-breach-on   — reserved for breach/alert effects             ║
 * ╚══════════════════════════════════════════════════════════════════════╝
 */


/* ═══════════════════════════════════════════════════════════════════════
   §1  FONTS
   ═══════════════════════════════════════════════════════════════════════ */

/*
  Load these from Google Fonts (or self-host equivalents):
  https://fonts.googleapis.com/css2?
    family=UnifrakturMaguntia&
    family=Share+Tech+Mono&
    family=Cinzel:wght@400;600;700;900&
    family=Crimson+Text:ital,wght@0,400;0,600;1,400&
    display=swap
*/


/* ═══════════════════════════════════════════════════════════════════════
   §2  DEFAULT THEME TOKENS  (Videoccult — the original sanctum)
       These are the base values that every other theme overrides.
   ═══════════════════════════════════════════════════════════════════════ */

:root {
  /* ── Depth layers (dark → light) ── */
  --void:          #050407;
  --abyss:         #080610;
  --deep:          #0e0b18;
  --chamber:       #150f22;
  --altar:         #1e1530;
  --surface:       #251c3a;

  /* ── Aliases used across components ── */
  --bg:            var(--void);
  --bg2:           var(--abyss);
  --panel:         var(--chamber);
  --panel2:        var(--altar);

  /* ── Text ── */
  --text:          rgba(220,210,195,.92);
  --static:        #b8a898;
  --bone:          #d4c9b0;
  --fog:           #7a6e80;
  --dust:          #4a4255;
  --muted:         #6a6070;

  /* ── Primary accent (gold) ── */
  --gold:          #c9973a;
  --gold-bright:   #e8b84b;
  --gold-pale:     #f0d080;
  --gold-dim:      rgba(201,151,58,.55);
  --gold-glow:     rgba(201,151,58,.20);

  /* ── Secondary accent (blood / crimson) ── */
  --blood:         #8b1a1a;
  --blood-bright:  #c0392b;
  --blood-glow:    rgba(139,26,26,.30);

  /* ── Borders & rims ── */
  --border:        rgba(180,120,60,.20);
  --border-bright: rgba(180,120,60,.45);
  --rim:           rgba(180,120,60,.15);
  --line:          rgba(180,120,60,.10);

  /* ── Extra named colours ── */
  --green:         #4ecf8a;
  --violet:        #b9c7ff;
  --mist:          #a79db6;

  /* ── Typography ── */
  --font-occult:   'Cinzel', serif;
  --font-vhs:      'Share Tech Mono', monospace;
  --font-grimoire: 'Crimson Text', serif;
  --font-display:  'Cinzel', serif;

  /* ── Shape ── */
  --radius:        8px;
  --radius-lg:     14px;

  /* ── FX default colours (Videoccult gold sweep) ── */
  --fx-trace-color:     rgba(201,151,58,.20);
  --fx-icegrid-h:       rgba(201,151,58,.06);
  --fx-icegrid-v:       rgba(201,151,58,.04);
  --fx-icegrid-opacity: 0.14;
  --fx-icegrid-size:    28px;

  /* ── Codex control surfaces (theme-tunable) ── */
  --codex-control-bg:          rgba(12,9,22,.85);
  --codex-control-border:      var(--border);
  --codex-control-text:        var(--static);
  --codex-chip-bg:             rgba(255,255,255,.02);
  --codex-chip-border:         rgba(201,151,58,.20);
  --codex-chip-text:           var(--fog);
  --codex-chip-bg-active:      rgba(201,151,58,.12);
  --codex-chip-border-active:  rgba(201,151,58,.55);
  --codex-chip-text-active:    var(--gold);

  /* ── Ritual badge surfaces (theme-tunable) ── */
  --ritual-bg-a:           rgba(8,9,18,.92);
  --ritual-bg-b:           rgba(10,8,14,.92);
  --ritual-glow-a:         rgba(169,119,255,.10);
  --ritual-glow-b:         rgba(139,26,26,.16);
  --ritual-border:         rgba(201,151,58,.22);
  --ritual-recent-border:  rgba(232,184,75,.72);
  --ritual-subtext:        rgba(230,215,185,.82);
  --codex-stat-bg-a:       rgba(22,14,40,.70);
  --codex-stat-bg-b:       rgba(10,8,18,.85);

  /* ── Nav / sidebar chrome (overridden per-theme) ── */
  --nav-shell:          linear-gradient(180deg, rgba(10,6,18,.97), rgba(6,4,12,.97));
  --nav-border:         rgba(180,120,60,.16);
  --sidebar-shell:      linear-gradient(180deg, rgba(12,8,20,.98), rgba(8,5,15,.98));
  --sidebar-border:     rgba(180,120,60,.12);
  --nav-active-bg:      rgba(201,151,58,.08);
  --nav-active-border:  rgba(201,151,58,.20);
  --sidebar-active-bg:  rgba(201,151,58,.08);
  --sidebar-active-border: rgba(201,151,58,.20);
}


/* ═══════════════════════════════════════════════════════════════════════
   §3  GLOBAL SURFACE & OVERLAY
   ═══════════════════════════════════════════════════════════════════════ */

* { margin: 0; padding: 0; box-sizing: border-box; }
html { scroll-behavior: smooth; }

body {
  background: var(--void);
  color: var(--static);
  font-family: var(--font-grimoire);
  font-size: 16px;
  line-height: 1.7;
  overflow-x: hidden;
}

/* ── Film-grain noise overlay ── */
body::before {
  content: '';
  position: fixed;
  inset: 0;
  z-index: 999;
  pointer-events: none;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)' opacity='0.04'/%3E%3C/svg%3E");
  opacity: 0.35;
}

/* ── CRT scanline overlay ── */
body::after {
  content: '';
  position: fixed;
  inset: 0;
  z-index: 998;
  pointer-events: none;
  background: repeating-linear-gradient(
    0deg,
    transparent,
    transparent 2px,
    rgba(0,0,0,.08) 2px,
    rgba(0,0,0,.08) 4px
  );
}

/* Light theme bodies need explicit text colour */
:root[data-vc-theme="light_academia"] body,
:root[data-vc-theme="hedgerow"]       body { color: var(--text); }


/* ═══════════════════════════════════════════════════════════════════════
   §4  THEME VARIABLE OVERRIDES
       Each block only lists tokens that differ from the §2 defaults.
   ═══════════════════════════════════════════════════════════════════════ */

/* ── 4.0  Videoccult (default) — no overrides needed ── */
:root[data-vc-theme="videoccult"] { }


/* ── 4.1  Netrunner — clean cyan HUD, data-glass, trace lines ── */
:root[data-vc-theme="netrunner"] {
  --void:          #05070c;
  --abyss:         #080b14;
  --chamber:       #0b1120;
  --deep:          #080b14;
  --altar:         #0b1120;
  --surface:       #101a2c;

  --text:          rgba(236,248,255,.92);
  --static:        rgba(236,248,255,.90);
  --fog:           rgba(184,210,235,.55);
  --dust:          rgba(184,210,235,.38);

  /* Gold slot → cyan */
  --gold:          #00f0ff;
  --gold-pale:     rgba(220,252,255,.92);
  --gold-dim:      rgba(0,240,255,.55);
  --gold-glow:     rgba(0,240,255,.20);

  /* Blood slot → hot red alert */
  --blood:         #ff2a3d;
  --blood-bright:  #ff5a67;

  --border:        rgba(0,240,255,.16);
  --border-bright: rgba(0,240,255,.40);
  --rim:           rgba(0,240,255,.18);
  --line:          rgba(0,240,255,.10);

  /* Named Netrunner palette */
  --nr-cyan:    #00f0ff;
  --nr-blue:    #2c7bff;
  --nr-violet:  #7b2cff;
  --nr-red:     #ff2a3d;

  /* FX colours */
  --fx-trace-color:     rgba(0,240,255,.22);
  --fx-icegrid-h:       rgba(0,240,255,.07);
  --fx-icegrid-v:       rgba(0,240,255,.05);
  --fx-icegrid-opacity: 0.14;
}


/* ── 4.2  Blackwall — arterial red, corrupted void, daemon static ── */
:root[data-vc-theme="blackwall"] {
  --void:          #07040a;
  --abyss:         #0e0508;
  --chamber:       #160a0c;
  --deep:          #0e0508;
  --altar:         #160a0c;
  --surface:       #200b0e;
  --bg:            #07040a;
  --bg2:           #0e0508;
  --panel:         #160a0c;
  --panel2:        #1c0c0f;

  --text:          rgba(255,228,228,.92);
  --static:        rgba(255,220,220,.88);
  --fog:           rgba(255,160,160,.50);
  --dust:          rgba(255,130,130,.32);

  /* Gold slot → hot arterial red */
  --gold:          #ff1f35;
  --gold-pale:     rgba(255,200,200,.94);
  --gold-dim:      rgba(255,31,53,.55);
  --gold-glow:     rgba(255,31,53,.28);

  /* Blood slot → corrupted violet */
  --blood:         #9b30ff;
  --blood-bright:  #c466ff;

  --border:        rgba(255,31,53,.20);
  --border-bright: rgba(255,31,53,.55);
  --rim:           rgba(255,31,53,.22);
  --line:          rgba(255,31,53,.14);

  /* Named Blackwall palette */
  --bw-red:    #ff1f35;
  --bw-violet: #9b30ff;
  --bw-cyan:   #00f0ff;

  /* Convenience aliases */
  --accent:     var(--bw-red);
  --accent-dim: rgba(255,31,53,.18);

  /* FX colours */
  --fx-trace-color:     rgba(255,31,53,.24);
  --fx-icegrid-h:       rgba(255,31,53,.08);
  --fx-icegrid-v:       rgba(155,48,255,.06);
  --fx-icegrid-opacity: 0.12;
}


/* ── 4.3  Witch — velvet violets, moonlit spellcraft ── */
:root[data-vc-theme="witch"] {
  --void:          #0c0714;
  --abyss:         #100918;
  --chamber:       #1b1029;
  --deep:          #140b1f;
  --altar:         #1b1029;
  --surface:       #241535;

  --text:          #efe6f8;
  --bone:          #f2eaf9;

  --gold:          #b78cff;
  --gold-pale:     #f3eaff;
  --gold-dim:      rgba(183,140,255,.55);
  --gold-glow:     rgba(183,140,255,.20);

  --blood:         #5b246f;
  --blood-bright:  #8e44ad;

  --rim:           rgba(183,140,255,.28);
  --border:        rgba(172,134,255,.16);
  --border-bright: rgba(172,134,255,.40);

  --fx-trace-color:     rgba(172,134,255,.20);
  --fx-icegrid-h:       rgba(172,134,255,.06);
  --fx-icegrid-v:       rgba(127,74,182,.05);
  --fx-icegrid-opacity: 0.12;
}


/* ── 4.4  Lovecraft — briny ink, sea-glass sigils, eldritch archive ── */
:root[data-vc-theme="lovecraft"] {
  --void:          #071014;
  --abyss:         #0b1a20;
  --chamber:       #0f2228;
  --deep:          #0b1a20;
  --altar:         #0f2228;
  --surface:       #142e38;

  --text:          #d6e6de;
  --static:        #d6e6de;
  --bone:          #dbe8e2;

  --gold:          #8fb6a5;
  --gold-pale:     #d5efe5;
  --gold-dim:      rgba(143,182,165,.55);
  --gold-glow:     rgba(143,182,165,.20);

  --blood:         #153a38;
  --blood-bright:  #2c6b68;

  --rim:           rgba(143,182,165,.28);
  --border:        rgba(90,138,136,.20);
  --border-bright: rgba(90,138,136,.40);

  --fx-trace-color:     rgba(90,138,136,.22);
  --fx-icegrid-h:       rgba(90,138,136,.07);
  --fx-icegrid-v:       rgba(32,54,59,.05);
  --fx-icegrid-opacity: 0.13;
}


/* ── 4.5  Dark Academia — candlelit vellum, oak desks, annotations ── */
:root[data-vc-theme="dark_academia"] {
  --void:          #120d0a;
  --abyss:         #1a1410;
  --chamber:       #231b15;
  --deep:          #1a1410;
  --altar:         #231b15;
  --surface:       #2e2219;

  --text:          #efe3cf;
  --bone:          #f3e8d6;

  --gold:          #b98b55;
  --gold-pale:     #f0ddbf;
  --gold-dim:      rgba(185,139,85,.55);
  --gold-glow:     rgba(185,139,85,.20);

  --blood:         #5a2e21;
  --blood-bright:  #85412f;

  --rim:           rgba(185,139,85,.26);
  --border:        rgba(188,148,96,.20);
  --border-bright: rgba(188,148,96,.44);

  --nav-shell:         linear-gradient(180deg, rgba(27,22,18,.96), rgba(22,18,15,.95));
  --nav-border:        rgba(201,164,112,.18);
  --sidebar-shell:     linear-gradient(180deg, rgba(24,20,16,.98), rgba(18,15,12,.98));
  --sidebar-border:    rgba(201,164,112,.14);
  --nav-active-bg:     rgba(201,164,112,.08);
  --nav-active-border: rgba(201,164,112,.20);
  --sidebar-active-bg:     rgba(201,164,112,.08);
  --sidebar-active-border: rgba(201,164,112,.20);

  --fx-trace-color:     rgba(188,148,96,.18);
  --fx-icegrid-h:       rgba(188,148,96,.05);
  --fx-icegrid-v:       rgba(141,90,67,.04);
  --fx-icegrid-opacity: 0.11;
}


/* ── 4.6  Light Academia — sunlit papers, linen margins, scholastic calm ── */
:root[data-vc-theme="light_academia"] {
  --void:          #ede6da;
  --abyss:         #e8dfcf;
  --chamber:       #f4eee2;
  --deep:          #e8dfcf;
  --altar:         #f4eee2;
  --surface:       #f9f5ee;
  --bg:            #ede6da;
  --bg2:           #e8dfcf;
  --panel:         #f4eee2;
  --panel2:        #f9f5ee;

  --text:          #2b2218;
  --static:        #3a2e20;
  --bone:          #33291e;
  --fog:           rgba(80,60,40,.55);
  --dust:          rgba(80,60,40,.36);

  --gold:          #8e6a3d;
  --gold-pale:     #f6f0e3;
  --gold-dim:      rgba(142,106,61,.55);
  --gold-glow:     rgba(142,106,61,.18);

  --blood:         #8a4c3c;
  --blood-bright:  #a55c49;

  --rim:           rgba(142,106,61,.25);
  --border:        rgba(156,126,87,.20);
  --border-bright: rgba(156,126,87,.44);

  --nav-shell:         linear-gradient(180deg, rgba(243,239,228,.96), rgba(236,231,217,.94));
  --nav-border:        rgba(145,115,84,.20);
  --sidebar-shell:     linear-gradient(180deg, rgba(241,236,224,.98), rgba(232,226,212,.98));
  --sidebar-border:    rgba(145,115,84,.16);
  --nav-active-bg:     rgba(145,115,84,.08);
  --nav-active-border: rgba(145,115,84,.20);
  --sidebar-active-bg:     rgba(145,115,84,.08);
  --sidebar-active-border: rgba(145,115,84,.20);
}

/* Light Academia nav text overrides */
:root[data-vc-theme="light_academia"] .nav-logo                       { color: #6c5032 !important; text-shadow: none !important; }
:root[data-vc-theme="light_academia"] .nav-logo .sigil                { color: #9f6a47 !important; }
:root[data-vc-theme="light_academia"] .nav-links a,
:root[data-vc-theme="light_academia"] .nav-right span,
:root[data-vc-theme="light_academia"] .sidebar-item,
:root[data-vc-theme="light_academia"] .sidebar-section-label          { color: rgba(56,44,32,.78) !important; }
:root[data-vc-theme="light_academia"] .nav-links a:hover,
:root[data-vc-theme="light_academia"] .nav-links a.active,
:root[data-vc-theme="light_academia"] .sidebar-item:hover,
:root[data-vc-theme="light_academia"] .sidebar-item.active            { color: #5a4126 !important; }
:root[data-vc-theme="light_academia"] .sidebar-group-icon {
  background:   rgba(255,250,242,.75) !important;
  border-color: rgba(145,115,84,.20) !important;
  color:        #6c5032 !important;
}


/* ── 4.7  Hedgerow Witch — moss paths, dried herbs, soft hedge-magic ── */
:root[data-vc-theme="hedgerow"] {
  --void:          #f2eee5;
  --abyss:         #ebe5d8;
  --chamber:       #f6f2ea;
  --deep:          #ebe5d8;
  --altar:         #f6f2ea;
  --surface:       #faf8f3;
  --bg:            #f2eee5;
  --bg2:           #ebe5d8;
  --panel:         #f6f2ea;
  --panel2:        #faf8f3;

  --text:          #2e342d;
  --static:        #3a4038;
  --bone:          #3a4038;
  --fog:           rgba(46,52,45,.55);
  --dust:          rgba(46,52,45,.36);

  --gold:          #7e8f74;
  --gold-pale:     #f3eee6;
  --gold-dim:      rgba(126,143,116,.55);
  --gold-glow:     rgba(126,143,116,.18);

  --blood:         #a07a84;
  --blood-bright:  #b28c96;

  --rim:           rgba(126,143,116,.22);
  --border:        rgba(144,166,127,.20);
  --border-bright: rgba(144,166,127,.44);

  --nav-shell:         radial-gradient(90% 180% at 10% 0%, rgba(120,153,112,.10), transparent 60%), linear-gradient(180deg, rgba(21,27,21,.96), rgba(15,20,16,.95));
  --nav-border:        rgba(164,186,146,.18);
  --sidebar-shell:     radial-gradient(120% 140% at 10% 0%, rgba(120,153,112,.08), transparent 60%), linear-gradient(180deg, rgba(17,23,18,.98), rgba(12,16,13,.98));
  --sidebar-border:    rgba(164,186,146,.14);
  --nav-active-bg:     rgba(164,186,146,.07);
  --nav-active-border: rgba(164,186,146,.18);
  --sidebar-active-bg:     rgba(164,186,146,.07);
  --sidebar-active-border: rgba(164,186,146,.18);

  --settings-shell-bg:     radial-gradient(120% 120% at 12% 8%, rgba(138,167,120,.07), transparent 55%), linear-gradient(180deg, rgba(17,22,16,.94), rgba(11,15,13,.94));
  --settings-shell-border: rgba(164,186,146,.20);

  --fx-trace-color:     rgba(144,166,127,.20);
  --fx-icegrid-h:       rgba(144,166,127,.06);
  --fx-icegrid-v:       rgba(120,153,112,.04);
  --fx-icegrid-opacity: 0.12;
}


/* ═══════════════════════════════════════════════════════════════════════
   §5  THEME-PICKER CARD COMPONENT
       The grid of clickable theme swatches shown in Settings.
   ═══════════════════════════════════════════════════════════════════════ */

.vc-theme-picker-card {
  margin-top: 12px;
  border: 1px solid var(--line);
  border-radius: 14px;
  padding: 14px;
  background: linear-gradient(
    180deg,
    color-mix(in srgb, var(--panel) 94%, transparent),
    color-mix(in srgb, var(--bg2) 92%, transparent)
  );
  box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--gold) 8%, transparent);
}

.vc-theme-grimoire-help {
  color: color-mix(in srgb, var(--text) 88%, var(--muted));
  font-size: 12px;
  line-height: 1.45;
  margin-bottom: 10px;
}

/* ── Recent chips ── */
.vc-theme-recent-row   { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; margin-bottom: 10px; }
.vc-theme-recent-label { font-size: 10px; letter-spacing: .20em; text-transform: uppercase; color: var(--muted); }
.vc-theme-recent-chip {
  border: 1px solid color-mix(in srgb, var(--gold) 28%, var(--line));
  background: color-mix(in srgb, var(--panel) 96%, transparent);
  color: var(--gold-pale);
  border-radius: 999px;
  padding: 4px 10px;
  font-size: 11px;
  cursor: pointer;
}

/* ── Card grid ── */
.vc-theme-grid { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 10px; }
@media (max-width: 860px) { .vc-theme-grid { grid-template-columns: 1fr; } }

.vc-theme-card {
  position: relative;
  text-align: left;
  cursor: pointer;
  border-radius: 12px;
  border: 1px solid color-mix(in srgb, var(--gold) 18%, var(--line));
  background:
    linear-gradient(180deg,
      color-mix(in srgb, var(--panel) 96%, transparent),
      color-mix(in srgb, var(--bg2) 93%, transparent)
    ),
    repeating-linear-gradient(0deg,
      rgba(255,255,255,.015),
      rgba(255,255,255,.015) 1px,
      transparent 1px,
      transparent 3px
    );
  padding: 12px 12px 10px;
  overflow: hidden;
  transition: transform .12s ease, border-color .12s ease, box-shadow .12s ease;
}

/* Radial glow corner */
.vc-theme-card::before {
  content: "";
  position: absolute; inset: 0;
  pointer-events: none;
  opacity: .85;
  background:
    radial-gradient(140px 80px at 8% 10%, color-mix(in srgb, var(--gold) 10%, transparent), transparent 70%),
    linear-gradient(135deg, color-mix(in srgb, var(--gold) 7%, transparent), transparent 45%);
}

/* Inner inset border */
.vc-theme-card::after {
  content: "";
  position: absolute; inset: 8px;
  pointer-events: none;
  border-radius: 10px;
  border: 1px solid color-mix(in srgb, var(--gold) 10%, transparent);
}

.vc-theme-card:hover {
  transform: translateY(-1px);
  border-color: color-mix(in srgb, var(--gold) 38%, var(--line));
  box-shadow: 0 8px 20px rgba(0,0,0,.2);
}

.vc-theme-card.active {
  border-color: color-mix(in srgb, var(--gold) 70%, var(--line));
  box-shadow:
    0 0 0 1px color-mix(in srgb, var(--gold) 24%, transparent),
    0 10px 26px color-mix(in srgb, var(--gold) 12%, transparent);
}

.vc-theme-card.active .vc-theme-name { color: var(--gold); }

/* ── ACTIVE pill badge (top-right corner of card) ── */
.vc-theme-active {
  position: absolute; top: 10px; right: 10px; z-index: 10;
  border: 1px solid color-mix(in srgb, var(--gold) 70%, transparent);
  background: color-mix(in srgb, var(--gold) 16%, rgba(0,0,0,.6));
  color: var(--gold);
  border-radius: 6px;
  padding: 4px 10px 3px;
  font-family: var(--font-vhs, ui-monospace, monospace);
  font-size: 9px;
  font-weight: 700;
  letter-spacing: .22em;
  text-transform: uppercase;
  box-shadow:
    0 0 0 1px color-mix(in srgb, var(--gold) 22%, transparent) inset,
    0 0 10px color-mix(in srgb, var(--gold) 28%, transparent),
    0 2px 6px rgba(0,0,0,.5);
  text-shadow: 0 0 8px color-mix(in srgb, var(--gold) 70%, transparent);
  pointer-events: none;
}

/* Netrunner — active badge in cyan */
:root[data-vc-theme="netrunner"] .vc-theme-active {
  border-color: rgba(0,240,255,.70) !important;
  background:   rgba(0,240,255,.12) !important;
  color:        #00f0ff !important;
  box-shadow:
    0 0 12px rgba(0,240,255,.30),
    0 0 0 1px rgba(0,240,255,.18) inset,
    0 2px 6px rgba(0,0,0,.5) !important;
  text-shadow: 0 0 10px rgba(0,240,255,.70) !important;
}

/* Blackwall — active badge in arterial red */
:root[data-vc-theme="blackwall"] .vc-theme-active {
  border-color: rgba(255,31,53,.75) !important;
  background:   rgba(255,10,30,.13) !important;
  color:        #ff4d60 !important;
  box-shadow:
    0 0 14px rgba(255,31,53,.40),
    0 0 0 1px rgba(255,31,53,.22) inset,
    0 2px 8px rgba(0,0,0,.6) !important;
  text-shadow: 0 0 10px rgba(255,31,53,.75) !important;
}

/* ── Card text ── */
.vc-theme-name {
  position: relative; z-index: 1;
  margin: 0 0 4px;
  font-family: var(--font-display);
  font-size: 13px; line-height: 1.15;
  color: color-mix(in srgb, var(--text) 96%, white);
  text-shadow: 0 1px 0 rgba(0,0,0,.3);
}

.vc-theme-flavor {
  position: relative; z-index: 1;
  margin: 0;
  color: color-mix(in srgb, var(--bone) 92%, white 8%);
  font-size: 12px; line-height: 1.45; min-height: 32px;
  text-shadow: 0 1px 0 rgba(0,0,0,.35);
  opacity: 1;
}

/* ── Colour swatches ── */
.vc-theme-swatches { position: relative; z-index: 1; display: flex; gap: 6px; margin-top: 9px; }
.vc-theme-swatch   {
  width: 13px; height: 13px;
  border-radius: 999px;
  border: 1px solid rgba(255,255,255,.22);
  box-shadow: inset 0 0 0 1px rgba(0,0,0,.2);
}

/* ── Light-theme card overrides (legibility on bright backgrounds) ── */
:root[data-vc-theme="light_academia"] .vc-theme-card,
:root[data-vc-theme="hedgerow"]       .vc-theme-card {
  background:
    radial-gradient(120% 120% at 10% 0%, rgba(255,255,255,.16), rgba(255,255,255,0) 60%),
    rgba(255,255,255,.05) !important;
  border-color: rgba(156,126,87,.20) !important;
}
:root[data-vc-theme="light_academia"] .vc-theme-card .vc-theme-name,
:root[data-vc-theme="hedgerow"]       .vc-theme-card .vc-theme-name  { color: var(--bone) !important; text-shadow: none; }
:root[data-vc-theme="light_academia"] .vc-theme-card .vc-theme-flavor,
:root[data-vc-theme="hedgerow"]       .vc-theme-card .vc-theme-flavor { color: rgba(44,34,26,.86) !important; text-shadow: none !important; }


/* ── Theme-shell panel (wraps the whole picker in Settings) ── */
.vc-theme-shell, .vc-theme-shell * { color: inherit; }
.vc-theme-shell .vc-theme-head          { color: rgba(236,229,214,.95) !important; }
.vc-theme-shell .vc-theme-sub           { color: rgba(236,229,214,.80) !important; }
.vc-theme-shell .vc-theme-recent-label  { color: rgba(236,229,214,.78) !important; }
.vc-theme-shell .vc-theme-recent-chip {
  color:        rgba(248,238,212,.96) !important;
  background:   rgba(255,214,122,.06) !important;
  border-color: rgba(214,170,80,.28) !important;
}

/* Light themes override the shell text so it reads on bright backgrounds */
:root[data-vc-theme="light_academia"] .vc-theme-shell,
:root[data-vc-theme="hedgerow"]       .vc-theme-shell {
  background:
    radial-gradient(120% 120% at 12% 0%, rgba(210,169,111,.08), rgba(210,169,111,0) 55%),
    linear-gradient(180deg, rgba(255,252,246,.03), rgba(255,252,246,.01)),
    rgba(245,239,228,.08) !important;
  border-color: rgba(156,126,87,.20) !important;
}
:root[data-vc-theme="light_academia"] .vc-theme-shell .vc-theme-head,
:root[data-vc-theme="hedgerow"]       .vc-theme-shell .vc-theme-head  { color: var(--bone) !important; }
:root[data-vc-theme="light_academia"] .vc-theme-shell .vc-theme-sub,
:root[data-vc-theme="hedgerow"]       .vc-theme-shell .vc-theme-sub,
:root[data-vc-theme="light_academia"] .vc-theme-shell .vc-theme-recent-label,
:root[data-vc-theme="hedgerow"]       .vc-theme-shell .vc-theme-recent-label { color: color-mix(in srgb, var(--text) 78%, transparent) !important; }
:root[data-vc-theme="light_academia"] .vc-theme-shell .vc-theme-recent-chip,
:root[data-vc-theme="hedgerow"]       .vc-theme-shell .vc-theme-recent-chip {
  color:        var(--bone) !important;
  background:   rgba(255,255,255,.15) !important;
  border-color: rgba(156,126,87,.28) !important;
}


/* ═══════════════════════════════════════════════════════════════════════
   §6  SETTINGS PANEL SURFACE OVERRIDES
       Academia/Hedgerow themes need their own panel texture.
   ═══════════════════════════════════════════════════════════════════════ */

:root[data-vc-theme="dark_academia"] .settings-section {
  background:
    radial-gradient(120% 120% at 15% 0%, rgba(211,168,102,.08), rgba(211,168,102,0) 55%),
    rgba(29,23,18,.92) !important;
  border-color: rgba(197,154,94,.22) !important;
}

:root[data-vc-theme="light_academia"] .settings-section {
  background:
    radial-gradient(120% 120% at 15% 0%, rgba(209,169,112,.10), rgba(209,169,112,0) 55%),
    linear-gradient(180deg, rgba(255,252,244,.06), rgba(255,252,244,.02)),
    rgba(228,218,198,.22) !important;
  border-color: rgba(156,126,87,.28) !important;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.35);
}

:root[data-vc-theme="hedgerow"] .settings-section {
  background:
    radial-gradient(120% 120% at 10% 0%, rgba(134,164,120,.12), rgba(134,164,120,0) 55%),
    linear-gradient(180deg, rgba(250,247,236,.04), rgba(250,247,236,.01)),
    rgba(233,239,229,.22) !important;
  border-color: rgba(139,166,126,.26) !important;
}

/* Hedgerow settings shell (grimoire panel + tabs) */
:root[data-vc-theme="hedgerow"] .settings-section,
:root[data-vc-theme="hedgerow"] .theme-grimoire-panel,
:root[data-vc-theme="hedgerow"] .settings-tabs,
:root[data-vc-theme="hedgerow"] .settings-subtabs {
  background:   var(--settings-shell-bg) !important;
  border-color: var(--settings-shell-border) !important;
  box-shadow: inset 0 1px 0 rgba(241,236,220,.04), 0 10px 32px rgba(0,0,0,.22);
}

/* Surface cards (card, modal, panel, queue-item, rail-card) */
:root[data-vc-theme="dark_academia"] .card,
:root[data-vc-theme="dark_academia"] .modal-shell,
:root[data-vc-theme="dark_academia"] .panel,
:root[data-vc-theme="dark_academia"] .queue-item,
:root[data-vc-theme="dark_academia"] .rail-card {
  background:
    radial-gradient(120% 120% at 8% 0%, rgba(211,168,102,.08), rgba(211,168,102,0) 55%),
    rgba(25,20,16,.74) !important;
  border-color: rgba(197,154,94,.18) !important;
}

:root[data-vc-theme="light_academia"] .card,
:root[data-vc-theme="light_academia"] .modal-shell,
:root[data-vc-theme="light_academia"] .panel,
:root[data-vc-theme="light_academia"] .queue-item,
:root[data-vc-theme="light_academia"] .rail-card {
  background: rgba(255,252,244,.70) !important;
  border-color: rgba(156,126,87,.18) !important;
}

:root[data-vc-theme="hedgerow"] .card,
:root[data-vc-theme="hedgerow"] .modal-shell,
:root[data-vc-theme="hedgerow"] .panel,
:root[data-vc-theme="hedgerow"] .queue-item,
:root[data-vc-theme="hedgerow"] .rail-card {
  background: rgba(248,245,236,.70) !important;
  border-color: rgba(139,166,126,.18) !important;
}


/* ═══════════════════════════════════════════════════════════════════════
   §7  FX TOGGLE SYSTEM
       Body classes switch each effect on/off independently.
       All colours are driven by --fx-* vars so themes get them for free.
   ═══════════════════════════════════════════════════════════════════════ */

/* §7.1  Kill switches */
body.vc-fx-noise-off::before    { content: none !important; }
body.vc-fx-scanlines-off::after { content: none !important; }


/* §7.2  Ice-grid (data-grid lines inside surfaces) */
body.vc-fx-icegrid-on .modal,
body.vc-fx-icegrid-on .card,
body.vc-fx-icegrid-on .panel,
body.vc-fx-icegrid-on .settings-section { position: relative; }

body.vc-fx-icegrid-on .modal::before,
body.vc-fx-icegrid-on .card::before,
body.vc-fx-icegrid-on .panel::before,
body.vc-fx-icegrid-on .settings-section::before {
  content: "";
  position: absolute; inset: 0;
  border-radius: inherit;
  pointer-events: none;
  background-image:
    linear-gradient(to right,  var(--fx-icegrid-h) 1px, transparent 1px),
    linear-gradient(to bottom, var(--fx-icegrid-v) 1px, transparent 1px);
  background-size: var(--fx-icegrid-size, 28px) var(--fx-icegrid-size, 28px);
  opacity: var(--fx-icegrid-opacity, 0.12);
  mix-blend-mode: screen;
}


/* §7.3  Trace sweep (shimmer on hover for interactive elements) */
body.vc-fx-trace-on .btn:not(.vc-modal-close),
body.vc-fx-trace-on .vc-theme-card,
body.vc-fx-trace-on .watch-item,
body.vc-fx-trace-on .result-card,
body.vc-fx-trace-on .queue-item {
  position: relative;
  overflow: hidden;
}

body.vc-fx-trace-on .btn:not(.vc-modal-close)::after,
body.vc-fx-trace-on .vc-theme-card::after,
body.vc-fx-trace-on .watch-item::after,
body.vc-fx-trace-on .result-card::after,
body.vc-fx-trace-on .queue-item::after {
  content: "";
  position: absolute; top: -30%; left: -60%;
  width: 60%; height: 160%;
  transform: rotate(18deg);
  background: linear-gradient(90deg, transparent, var(--fx-trace-color), transparent);
  opacity: 0;
  pointer-events: none;
}

body.vc-fx-trace-on .btn:not(.vc-modal-close):hover::after,
body.vc-fx-trace-on .vc-theme-card:hover::after,
body.vc-fx-trace-on .watch-item:hover::after,
body.vc-fx-trace-on .result-card:hover::after,
body.vc-fx-trace-on .queue-item:hover::after {
  opacity: 1;
  animation: vcTraceSweep 0.65s ease-out 1;
}

@keyframes vcTraceSweep {
  from { left: -70%; }
  to   { left: 130%; }
}


/* §7.4  Daemon sigils (⛧ glyphs on active badges and tags) */
body.vc-fx-sigils-on .tag.gold,
body.vc-fx-sigils-on .queue-auto-badge,
body.vc-fx-sigils-on .watch-history-badge.first-watch-badge { position: relative; }

/* vc-theme-active is position:absolute — prepend sigil inline via ::before */
body.vc-fx-sigils-on .vc-theme-active::before {
  content: "⛧ ";
  font-size: 9px;
  opacity: .85;
  color: var(--gold);
  filter: drop-shadow(0 0 6px rgba(201,151,58,.5));
  vertical-align: middle;
}
body[data-vc-theme="blackwall"].vc-fx-sigils-on .vc-theme-active::before {
  color:  var(--bw-red, #ff1f35);
  filter: drop-shadow(0 0 6px rgba(255,31,53,.65));
}

/* Floating sigil above gold tags */
body.vc-fx-sigils-on .tag.gold::before {
  content: "⛧";
  position: absolute;
  left: -10px; top: -8px;
  font-size: 10px;
  opacity: .65;
  color:  var(--gold);
  filter: drop-shadow(0 0 10px rgba(0,240,255,.25));
}
body[data-vc-theme="blackwall"].vc-fx-sigils-on .tag.gold::before {
  color:  var(--bw-red, #ff1f35);
  filter: drop-shadow(0 0 10px rgba(255,31,53,.35));
}

/* Corner sigil tick-marks on theme cards */
body.vc-fx-sigils-on .vc-theme-card::before { content: "" !important; }
body.vc-fx-sigils-on .vc-theme-card.active  { --sigil-corner-color: rgba(201,151,58,.22); }

body.vc-fx-sigils-on .vc-theme-card {
  outline: 1px solid transparent;
  box-shadow:
    -1px -1px 0 0 var(--sigil-corner-color, rgba(201,151,58,.10)),
     1px -1px 0 0 var(--sigil-corner-color, rgba(201,151,58,.10)),
    -1px  1px 0 0 var(--sigil-corner-color, rgba(201,151,58,.10)),
     1px  1px 0 0 var(--sigil-corner-color, rgba(201,151,58,.10));
}
body.vc-fx-sigils-on .vc-theme-card.active {
  box-shadow:
    0 0 0 1px  color-mix(in srgb, var(--gold) 24%, transparent),
    0 10px 26px color-mix(in srgb, var(--gold) 12%, transparent),
    -2px -2px 0 0 rgba(201,151,58,.35),
     2px -2px 0 0 rgba(201,151,58,.35),
    -2px  2px 0 0 rgba(201,151,58,.35),
     2px  2px 0 0 rgba(201,151,58,.35);
}

/* Blackwall sigil corners override */
body[data-vc-theme="blackwall"].vc-fx-sigils-on .vc-theme-card {
  box-shadow:
    -1px -1px 0 0 rgba(255,31,53,.18),
     1px -1px 0 0 rgba(255,31,53,.18),
    -1px  1px 0 0 rgba(255,31,53,.18),
     1px  1px 0 0 rgba(255,31,53,.18);
}
body[data-vc-theme="blackwall"].vc-fx-sigils-on .vc-theme-card.active {
  box-shadow:
    0 0 0 1px  rgba(255,31,53,.32),
    0 10px 26px rgba(255,31,53,.18),
    -2px -2px 0 0 rgba(255,31,53,.50),
     2px -2px 0 0 rgba(255,31,53,.50),
    -2px  2px 0 0 rgba(255,31,53,.50),
     2px  2px 0 0 rgba(255,31,53,.50);
}


/* §7.5  Glitch pulse (micro-glitch on modal open) */
body.vc-fx-glitch-on    .modal { animation: none; }
body.vc-fx-glitch-pulse .modal { animation: vcGlitchPulse 180ms ease-out 1; }

@keyframes vcGlitchPulse {
  0%   { transform: translateY(0);   filter: none; }
  20%  { transform: translateY(-1px); filter: contrast(1.05) saturate(1.05); }
  55%  { transform: translateY(1px);  filter: contrast(1.10) saturate(1.10); }
  100% { transform: translateY(0);   filter: none; }
}


/* §7.6  Breach (reserved — class added by vcSetFX, style as needed) */
/*
  body.vc-fx-breach-on  { ... }
  Suggested use: red edge-vignette, pulsing border on key UI elements.
  Example:
    body.vc-fx-breach-on::before {
      background: radial-gradient(ellipse at center, transparent 60%, rgba(255,31,53,.12) 100%);
      animation: vcBreachPulse 2s ease-in-out infinite;
    }
*/


/* ═══════════════════════════════════════════════════════════════════════
   §8  JAVASCRIPT REFERENCE
       The canonical JS implementation lives in videoccult-games.js.
       For the theme/FX API see: vcApplyTheme, vcGetTheme, vcSetFX,
       vcGetFX, vcSnapPrePreset, and vcRegisterTheme in Section 1.

       localStorage keys:
         vc_theme_v1          — active theme id
         vc_theme_recent_v1   — recently used ids (JSON array)
         vc_preset_prev_snap  — pre-preset snapshot for revert
         vc_fx_noise          — VHS grain (1/0)
         vc_fx_scanlines      — CRT scanlines (1/0)
         vc_fx_icegrid        — ICE grid overlay (1/0)
         vc_fx_trace          — trace sweep on hover (1/0)
         vc_fx_sigils         — daemon sigils (1/0)
         vc_fx_glitch         — glitch pulse (1/0)
         vc_fx_breach         — breach alert (1/0)

       Runtime theme registration:
         vcRegisterTheme({
           id:'blade_runner', label:'Blade Runner',
           flavor:'Acid rain and neon kanji.',
           swatches:['#05040e','#120d20','#ff6a00','#8080ff'],
           cssVars:{
             '--void':'#05040e', '--gold':'#ff6a00',
             '--fx-trace-color':'rgba(255,106,0,.22)',
             '--fx-icegrid-h':'rgba(255,106,0,.07)',
             '--fx-icegrid-v':'rgba(128,128,255,.05)'
           }
         });
   ═══════════════════════════════════════════════════════════════════════ */


/* ═══════════════════════════════════════════════════════════════════════
   §9  NEW THEME TEMPLATE
       Copy this block, fill in values, done. All FX inherit automatically.
   ═══════════════════════════════════════════════════════════════════════

:root[data-vc-theme="my_theme"] {
  // ── Depth layers ──
  --void:          #0a0a0a;   // deepest background
  --abyss:         #101010;
  --chamber:       #181818;   // card/panel fill
  --deep:          #101010;
  --altar:         #181818;
  --surface:       #202020;   // raised element fill

  // ── Text ──
  --text:          rgba(255,245,220,.92);
  --static:        rgba(255,245,220,.88);
  --bone:          rgba(255,250,235,.95);
  --fog:           rgba(200,180,140,.55);
  --dust:          rgba(200,180,140,.35);

  // ── Primary accent ──
  --gold:          #e8b840;   // buttons, borders, highlights
  --gold-pale:     rgba(255,230,160,.94);
  --gold-dim:      rgba(232,184,64,.55);
  --gold-glow:     rgba(232,184,64,.28);

  // ── Secondary accent ──
  --blood:         #c05020;
  --blood-bright:  #e07040;

  // ── Borders ──
  --border:        rgba(232,184,64,.20);
  --border-bright: rgba(232,184,64,.50);
  --rim:           rgba(232,184,64,.18);
  --line:          rgba(232,184,64,.12);

  // ── FX colour palette (theme automatically applied to all FX modules) ──
  --fx-trace-color:     rgba(232,184,64,.22);  // hover sweep shimmer
  --fx-icegrid-h:       rgba(232,184,64,.07);  // horizontal grid lines
  --fx-icegrid-v:       rgba(200,140,40,.05);  // vertical grid lines
  --fx-icegrid-opacity: 0.13;
}

// Optional: custom active-badge style for this theme
:root[data-vc-theme="my_theme"] .vc-theme-active {
  border-color: rgba(232,184,64,.70) !important;
  background:   rgba(232,184,64,.13) !important;
  color:        #e8b840 !important;
  box-shadow:   0 0 12px rgba(232,184,64,.30), 0 0 0 1px rgba(232,184,64,.14) inset, 0 2px 6px rgba(0,0,0,.5) !important;
  text-shadow:  0 0 10px rgba(232,184,64,.70) !important;
}

// Then add to the THEMES array in §8 JS:
// { id:'my_theme', label:'My Theme', flavor:'One-line vibe.',
//   swatches:['#0a0a0a','#181818','#e8b840','#c05020'] }

   ═══════════════════════════════════════════════════════════════════════ */


/* ─── 2. CORE GAMES UI ───────────────────────────────────── */
/*
 * ╔══════════════════════════════════════════════════════════════════════╗
 * ║  VIDEOCCULT — Games Archive · Core Stylesheet v3                    ║
 * ║  Self-contained: theme tokens + layout + all components             ║
 * ║  Replaces vc_core_games_SITE_READY_CLASSIC_v2.css                   ║
 * ╚══════════════════════════════════════════════════════════════════════╝
 */


/* ═══════════════════════════════════════════════════════════════════════
   §1  THEME TOKENS  (default: Videoccult)
   ═══════════════════════════════════════════════════════════════════════ */

:root {
  /* Depth layers */
  --void:          #050407;
  --abyss:         #080610;
  --deep:          #0e0b18;
  --chamber:       #150f22;
  --altar:         #1e1530;
  --surface:       #251c3a;
  --bg:            var(--void);
  --bg2:           var(--abyss);
  --panel:         var(--chamber);
  --panel2:        var(--altar);

  /* Text */
  --text:          rgba(220,210,195,.92);
  --static:        #b8a898;
  --bone:          #d4c9b0;
  --fog:           #7a6e80;
  --dust:          #4a4255;
  --muted:         #6a6070;

  /* Gold */
  --gold:          #c9973a;
  --gold-bright:   #e8b84b;
  --gold-pale:     #f0d080;
  --gold-dim:      rgba(201,151,58,.55);
  --gold-glow:     rgba(201,151,58,.20);

  /* Blood */
  --blood:         #8b1a1a;
  --blood-bright:  #c0392b;
  --blood-glow:    rgba(139,26,26,.30);

  /* Borders */
  --border:        rgba(180,120,60,.20);
  --border-bright: rgba(180,120,60,.45);
  --rim:           rgba(180,120,60,.15);
  --line:          rgba(180,120,60,.10);

  /* Extras */
  --green:         #4ecf8a;
  --violet:        #b9c7ff;
  --mist:          #a79db6;

  /* Typography */
  --font-occult:   'Cinzel', serif;
  --font-vhs:      'Share Tech Mono', monospace;
  --font-grimoire: 'Crimson Text', serif;
  --font-display:  'Cinzel', serif;

  /* Shape */
  --radius:        8px;
  --radius-lg:     14px;

  /* FX */
  --fx-trace-color:     rgba(201,151,58,.20);
  --fx-icegrid-h:       rgba(201,151,58,.06);
  --fx-icegrid-v:       rgba(201,151,58,.04);
  --fx-icegrid-opacity: 0.14;
  --fx-icegrid-size:    28px;

  /* Nav / sidebar chrome */
  --nav-shell:             linear-gradient(180deg, rgba(10,6,18,.97), rgba(6,4,12,.97));
  --nav-border:            rgba(180,120,60,.16);
  --sidebar-shell:         linear-gradient(180deg, rgba(12,8,20,.98), rgba(8,5,15,.98));
  --sidebar-border:        rgba(180,120,60,.12);
  --nav-active-bg:         rgba(201,151,58,.08);
  --nav-active-border:     rgba(201,151,58,.20);
  --sidebar-active-bg:     rgba(201,151,58,.08);
  --sidebar-active-border: rgba(201,151,58,.20);

  /* Sidebar width — single source of truth */
  --sidebar-w: 220px;
}


/* ── Theme overrides (Netrunner) ── */
:root[data-vc-theme="netrunner"] {
  --void: #05070c; --abyss: #080b14; --chamber: #0b1120; --deep: #080b14;
  --altar: #0b1120; --surface: #101a2c;
  --text: rgba(236,248,255,.92); --static: rgba(236,248,255,.90);
  --fog: rgba(184,210,235,.55); --dust: rgba(184,210,235,.38);
  --gold: #00f0ff; --gold-pale: rgba(220,252,255,.92);
  --gold-dim: rgba(0,240,255,.55); --gold-glow: rgba(0,240,255,.20);
  --blood: #ff2a3d; --blood-bright: #ff5a67;
  --border: rgba(0,240,255,.16); --border-bright: rgba(0,240,255,.40);
  --rim: rgba(0,240,255,.18); --line: rgba(0,240,255,.10);
  --fx-trace-color: rgba(0,240,255,.22);
  --fx-icegrid-h: rgba(0,240,255,.07); --fx-icegrid-v: rgba(0,240,255,.05);
}

:root[data-vc-theme="blackwall"] {
  --void: #07040a; --abyss: #0e0508; --chamber: #160a0c; --deep: #0e0508;
  --altar: #160a0c; --surface: #200b0e;
  --text: rgba(255,228,228,.92); --static: rgba(255,220,220,.88);
  --fog: rgba(255,160,160,.50); --dust: rgba(255,130,130,.32);
  --gold: #ff1f35; --gold-pale: rgba(255,200,200,.94);
  --gold-dim: rgba(255,31,53,.55); --gold-glow: rgba(255,31,53,.28);
  --blood: #9b30ff; --blood-bright: #c466ff;
  --border: rgba(255,31,53,.20); --border-bright: rgba(255,31,53,.55);
  --rim: rgba(255,31,53,.22); --line: rgba(255,31,53,.14);
  --fx-trace-color: rgba(255,31,53,.24);
  --fx-icegrid-h: rgba(255,31,53,.08); --fx-icegrid-v: rgba(155,48,255,.06);
}

:root[data-vc-theme="witch"] {
  --void: #0c0714; --abyss: #100918; --chamber: #1b1029; --deep: #140b1f;
  --altar: #1b1029; --surface: #241535;
  --text: #efe6f8; --bone: #f2eaf9;
  --gold: #b78cff; --gold-pale: #f3eaff;
  --gold-dim: rgba(183,140,255,.55); --gold-glow: rgba(183,140,255,.20);
  --blood: #5b246f; --blood-bright: #8e44ad;
  --rim: rgba(183,140,255,.28); --border: rgba(172,134,255,.16);
  --border-bright: rgba(172,134,255,.40);
}

:root[data-vc-theme="lovecraft"] {
  --void: #071014; --abyss: #0b1a20; --chamber: #0f2228; --deep: #0b1a20;
  --altar: #0f2228; --surface: #142e38;
  --text: #d6e6de; --static: #d6e6de; --bone: #dbe8e2;
  --gold: #8fb6a5; --gold-pale: #d5efe5;
  --gold-dim: rgba(143,182,165,.55); --gold-glow: rgba(143,182,165,.20);
  --blood: #153a38; --blood-bright: #2c6b68;
  --rim: rgba(143,182,165,.28); --border: rgba(90,138,136,.20);
  --border-bright: rgba(90,138,136,.40);
}

:root[data-vc-theme="dark_academia"] {
  --void: #120d0a; --abyss: #1a1410; --chamber: #231b15; --deep: #1a1410;
  --altar: #231b15; --surface: #2e2219;
  --text: #efe3cf; --bone: #f3e8d6;
  --gold: #b98b55; --gold-pale: #f0ddbf;
  --gold-dim: rgba(185,139,85,.55); --gold-glow: rgba(185,139,85,.20);
  --blood: #5a2e21; --blood-bright: #85412f;
  --rim: rgba(185,139,85,.26); --border: rgba(188,148,96,.20);
  --border-bright: rgba(188,148,96,.44);
}

:root[data-vc-theme="light_academia"] {
  --void: #ede6da; --abyss: #e8dfcf; --chamber: #f4eee2; --deep: #e8dfcf;
  --altar: #f4eee2; --surface: #f9f5ee;
  --text: #2b2218; --static: #3a2e20; --bone: #33291e;
  --fog: rgba(80,60,40,.55); --dust: rgba(80,60,40,.36);
  --gold: #8e6a3d; --gold-pale: #f6f0e3;
  --blood: #8a4c3c; --blood-bright: #a55c49;
  --border: rgba(156,126,87,.20); --border-bright: rgba(156,126,87,.44);
  --rim: rgba(142,106,61,.25);
}

:root[data-vc-theme="hedgerow"] {
  --void: #f2eee5; --abyss: #ebe5d8; --chamber: #f6f2ea; --deep: #ebe5d8;
  --altar: #f6f2ea; --surface: #faf8f3;
  --text: #2e342d; --static: #3a4038; --bone: #3a4038;
  --fog: rgba(46,52,45,.55); --dust: rgba(46,52,45,.36);
  --gold: #7e8f74; --gold-pale: #f3eee6;
  --blood: #a07a84; --blood-bright: #b28c96;
  --border: rgba(144,166,127,.20); --border-bright: rgba(144,166,127,.44);
  --rim: rgba(126,143,116,.22);
}


/* ═══════════════════════════════════════════════════════════════════════
   §2  RESET & GLOBAL SURFACE
   ═══════════════════════════════════════════════════════════════════════ */

*, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; }
html { scroll-behavior: smooth; }

body {
  background: var(--void);
  color: var(--static);
  font-family: var(--font-grimoire);
  font-size: 16px;
  line-height: 1.7;
  overflow-x: hidden;
  min-height: 100vh;
}

/* Light theme body text */
:root[data-vc-theme="light_academia"] body,
:root[data-vc-theme="hedgerow"] body { color: var(--text); }

/* Film grain */
body::before {
  content: '';
  position: fixed; inset: 0; z-index: 9000; pointer-events: none;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noise'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noise)' opacity='0.04'/%3E%3C/svg%3E");
  opacity: 0.35;
}
/* Scanlines */
body::after {
  content: '';
  position: fixed; inset: 0; z-index: 8999; pointer-events: none;
  background: repeating-linear-gradient(0deg, transparent, transparent 2px, rgba(0,0,0,.07) 2px, rgba(0,0,0,.07) 4px);
}

body.vc-fx-noise-off::before    { content: none !important; }
body.vc-fx-scanlines-off::after { content: none !important; }
html.vc-modal-open, body.vc-modal-open { overflow: hidden; }

/* Keyframes */
@keyframes flicker {
  0%,100% { opacity:1; }
  92%     { opacity:1; }
  93%     { opacity:.7; }
  94%     { opacity:1; }
  96%     { opacity:.85; }
  97%     { opacity:1; }
}
@keyframes vcPulse { 0%,100%{opacity:.45} 50%{opacity:.85} }
@keyframes vcTraceSweep { from{left:-70%} to{left:130%} }
@keyframes vcGlitchPulse {
  0%  { transform:translateY(0); filter:none; }
  20% { transform:translateY(-1px); filter:contrast(1.05) saturate(1.05); }
  55% { transform:translateY(1px);  filter:contrast(1.10) saturate(1.10); }
  100%{ transform:translateY(0); filter:none; }
}


/* ═══════════════════════════════════════════════════════════════════════
   §3  SHELL LAYOUT
   The sidebar is position:fixed. .vc-main is offset by --sidebar-w.
   .vc-shell is a passive wrapper — no flex, no grid.
   ═══════════════════════════════════════════════════════════════════════ */

.vc-shell { min-height: 100vh; }

.vc-view         { display: none; }
.vc-view.active  { display: block; }


/* ═══════════════════════════════════════════════════════════════════════
   §4  SIDEBAR
   ═══════════════════════════════════════════════════════════════════════ */

.sidebar {
  width: var(--sidebar-w);
  position: fixed;
  top: 0; left: 0; bottom: 0;
  z-index: 200;
  display: flex;
  flex-direction: column;
  background: var(--sidebar-shell, linear-gradient(180deg, rgba(12,8,20,.98), rgba(8,5,15,.98)));
  border-right: 1px solid var(--sidebar-border, rgba(180,120,60,.12));
  overflow-y: auto;
  overflow-x: hidden;
}

/* Scrollbar */
.sidebar::-webkit-scrollbar { width: 3px; }
.sidebar::-webkit-scrollbar-thumb { background: var(--border); border-radius: 2px; }

/* Logo block */
.sidebar-logo {
  padding: 20px 16px 16px;
  border-bottom: 1px solid var(--border);
  flex-shrink: 0;
}
.sidebar-logo-wordmark {
  font-family: var(--font-occult);
  font-size: 13px;
  font-weight: 900;
  letter-spacing: 4px;
  color: var(--gold);
  text-shadow: 0 0 20px var(--gold-glow);
  animation: flicker 8s infinite;
  margin-bottom: 5px;
}
.sidebar-logo-wordmark .vc-sigil {
  display: inline;
  font-style: normal;
  font-size: 15px;
  color: var(--gold-bright);
  text-shadow:
    0 0 8px var(--gold-glow),
    0 0 20px var(--gold-glow);
  filter: drop-shadow(0 0 4px var(--gold-glow));
  letter-spacing: 0;
}
.sidebar-logo-sub {
  font-family: var(--font-vhs);
  font-size: 8px;
  letter-spacing: 3px;
  text-transform: uppercase;
  color: var(--blood-bright);
  opacity: 0.85;
  padding-left: 2px;
}

/* Auth pill */
.sidebar-auth-pill {
  margin: 10px 10px 6px;
  padding: 7px 10px;
  border-radius: 6px;
  border: 1px solid var(--border);
  background: rgba(0,0,0,.25);
  display: flex;
  align-items: center;
  gap: 8px;
  flex-shrink: 0;
}
.sidebar-auth-pill .auth-dot {
  width: 7px; height: 7px;
  border-radius: 50%;
  flex-shrink: 0;
  background: var(--dust);
  box-shadow: 0 0 5px var(--dust);
  transition: background .3s, box-shadow .3s;
}
.sidebar-auth-pill.authed .auth-dot {
  background: #4ade80;
  box-shadow: 0 0 8px rgba(74,222,128,.6);
}
.sidebar-auth-pill.error .auth-dot {
  background: var(--blood-bright);
  box-shadow: 0 0 8px rgba(220,80,80,.6);
}
.sidebar-auth-pill .auth-label {
  font-family: var(--font-vhs);
  font-size: 8px;
  letter-spacing: 1.5px;
  text-transform: uppercase;
  color: var(--dust);
  flex: 1;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.sidebar-auth-pill.authed .auth-label { color: rgba(180,255,212,.8); }
.sidebar-auth-pill .auth-action {
  font-family: var(--font-vhs);
  font-size: 8px;
  letter-spacing: 1px;
  text-transform: uppercase;
  color: var(--gold);
  opacity: .8;
  cursor: pointer;
  border: none;
  background: none;
  padding: 0;
  flex-shrink: 0;
  transition: opacity .15s;
}
.sidebar-auth-pill .auth-action:hover { opacity: 1; }

.sidebar-avatar {
  width: 34px; height: 34px;
  border-radius: 8px;
  flex-shrink: 0;
  display: none;
  align-items: center; justify-content: center;
  overflow: hidden;
  background: linear-gradient(135deg, var(--blood, #5a0a0a), var(--panel, #1a1218));
  border: 1px solid rgba(201,151,58,.35);
  font-size: 18px; line-height: 1;
  color: var(--gold);
  box-shadow: 0 0 10px rgba(139,26,26,0.3);
  transition: border-color .2s, box-shadow .2s;
}
.sidebar-auth-pill.authed .sidebar-avatar { display: flex; }
.sidebar-avatar:hover { border-color: rgba(201,151,58,.6); box-shadow: 0 0 14px rgba(139,26,26,0.5); }
.sidebar-avatar img { width: 100%; height: 100%; object-fit: cover; border-radius: 7px; }


/* Section label */
.sidebar-section-label {
  font-family: var(--font-vhs);
  font-size: 9px;
  letter-spacing: 3px;
  text-transform: uppercase;
  color: var(--fog);
  padding: 14px 16px 6px;
  flex-shrink: 0;
}

/* Nav */
.sidebar .nav {
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding: 0 10px;
  flex-shrink: 0;
}

.sidebar .nav-item {
  display: flex;
  align-items: center;
  gap: 9px;
  padding: 9px 10px;
  border-radius: 6px;
  font-family: var(--font-vhs);
  font-size: 10px;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: var(--mist);
  cursor: pointer;
  transition: background .15s, color .15s, border-color .15s;
  border: 1px solid transparent;
  text-decoration: none;
  white-space: nowrap;
  overflow: hidden;
}
.sidebar .nav-item:hover {
  background: var(--nav-active-bg, rgba(201,151,58,.08));
  color: var(--gold);
  border-color: var(--rim);
}
.sidebar .nav-item.active {
  background: var(--sidebar-active-bg, rgba(201,151,58,.08));
  color: var(--gold);
  border-color: var(--sidebar-active-border, rgba(201,151,58,.20));
}

/* Count badge */
.sidebar .nav-item .nav-count {
  margin-left: auto;
  font-size: 9px;
  opacity: .6;
  background: rgba(255,255,255,.06);
  padding: 1px 6px;
  border-radius: 999px;
  min-width: 20px;
  text-align: center;
  flex-shrink: 0;
  transition: all .2s;
}
.sidebar .nav-item .nav-count.has-items {
  background: rgba(201,151,58,.15);
  color: var(--gold);
  opacity: 1;
}

/* Divider */
.sidebar-divider {
  height: 1px;
  background: var(--border);
  margin: 10px 14px;
  flex-shrink: 0;
}

/* Footer */
.sidebar-footer {
  margin-top: auto;
  padding: 12px 16px;
  font-family: var(--font-vhs);
  font-size: 9px;
  letter-spacing: 1px;
  color: var(--dust);
  opacity: .45;
  border-top: 1px solid var(--border);
  flex-shrink: 0;
}
.sidebar-sync-row {
  display: flex;
  align-items: center;
  gap: 5px;
  margin-bottom: 5px;
  font-size: 8px;
  letter-spacing: 1px;
  text-transform: uppercase;
  opacity: 1;
}
.sidebar-sync-row .sync-dot {
  width: 5px; height: 5px;
  border-radius: 50%;
  background: var(--dust);
  transition: background .3s;
  flex-shrink: 0;
}
.sidebar-sync-row.synced  .sync-dot { background: #4ade80; }
.sidebar-sync-row.syncing .sync-dot { background: var(--gold); animation: vcPulse .9s ease-in-out infinite; }
.sidebar-sync-row.offline .sync-dot { background: var(--blood-bright); }


/* ═══════════════════════════════════════════════════════════════════════
   §5  MAIN AREA
   ═══════════════════════════════════════════════════════════════════════ */

.vc-main {
  margin-left: var(--sidebar-w);
  min-height: 100vh;
}

.vc-page { padding: 0 28px 60px; }


/* ═══════════════════════════════════════════════════════════════════════
   §6  PAGE HEADER (shared across views)
   ═══════════════════════════════════════════════════════════════════════ */

.vc-page-header { padding: 28px 28px 0; }

/* ── Library header with inline action buttons ── */
.vc-lib-page-header { padding-bottom: 0; }
.vc-lib-header-row {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 16px;
  padding-bottom: 18px;
}
.vc-lib-header-left { flex: 1; min-width: 0; }
.vc-lib-header-actions {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-shrink: 0;
  padding-bottom: 4px;
}

.vc-page-eyebrow {
  font-family: var(--font-vhs);
  font-size: 10px;
  letter-spacing: 4px;
  text-transform: uppercase;
  color: var(--blood-bright);
  margin-bottom: 10px;
  display: flex;
  align-items: center;
  gap: 10px;
}
.vc-page-eyebrow::before { content: ''; flex: 1; height: 1px; background: linear-gradient(90deg, transparent, rgba(139,26,26,.5)); }
.vc-page-eyebrow::after  { content: ''; flex: 1; height: 1px; background: linear-gradient(90deg, rgba(139,26,26,.5), transparent); }

.vc-page-title {
  font-family: var(--font-occult);
  font-size: clamp(26px, 3.5vw, 38px);
  font-weight: 700;
  letter-spacing: 1px;
  color: var(--gold-pale);
  text-shadow: 0 0 30px rgba(201,151,58,.2);
  margin-bottom: 5px;
}
.vc-page-sub {
  font-family: var(--font-grimoire);
  font-size: 15px;
  font-style: italic;
  color: var(--fog);
  margin-bottom: 20px;
}
.vc-page-divider {
  height: 1px;
  background: linear-gradient(90deg, var(--border), transparent);
  margin-bottom: 20px;
}


/* ═══════════════════════════════════════════════════════════════════════
   §7  BUTTONS
   ═══════════════════════════════════════════════════════════════════════ */

.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 9px 16px;
  border-radius: var(--radius);
  border: 1px solid var(--border);
  background: transparent;
  color: var(--static);
  font-family: var(--font-vhs);
  font-size: 10px;
  letter-spacing: 2px;
  text-transform: uppercase;
  cursor: pointer;
  transition: background .15s, border-color .15s, color .15s, box-shadow .15s;
  text-decoration: none;
  white-space: nowrap;
  line-height: 1;
}
.btn:hover {
  border-color: var(--border-bright);
  color: var(--gold-pale);
}

/* Sizes */
.btn-sm { padding: 6px 12px; font-size: 9px; }
.btn-lg { padding: 12px 24px; font-size: 11px; }

/* Variants */
.btn-ghost {
  border-color: var(--border);
  background: rgba(255,255,255,.03);
  color: var(--dust);
}
.btn-ghost:hover {
  border-color: var(--border-bright);
  color: var(--gold);
  background: rgba(201,151,58,.05);
}

.btn-ritual {
  border-color: var(--blood-bright);
  background: rgba(139,26,26,.18);
  color: rgba(255,160,140,.9);
  box-shadow: 0 0 16px rgba(139,26,26,.2);
}
.btn-ritual:hover {
  background: rgba(139,26,26,.28);
  border-color: rgba(200,60,50,.6);
  box-shadow: 0 0 24px rgba(139,26,26,.3);
  color: #ffb0a0;
}

.btn-primary {
  border-color: var(--gold-dim);
  background: rgba(201,151,58,.12);
  color: var(--gold);
}
.btn-primary:hover {
  background: rgba(201,151,58,.2);
  border-color: var(--gold);
  box-shadow: 0 0 16px var(--gold-glow);
}

/* Shelf button (secondary actions in modal) */
.btn-shelf {
  display: inline-flex;
  align-items: center;
  font-family: var(--font-vhs);
  font-size: 9px;
  letter-spacing: 1px;
  text-transform: uppercase;
  padding: 6px 10px;
  border-radius: 4px;
  border: 1px solid var(--border);
  background: transparent;
  color: var(--dust);
  cursor: pointer;
  transition: all .15s;
}
.btn-shelf:hover { border-color: var(--gold); color: var(--gold); }

/* Toggle switch */
.toggle { position: relative; display: inline-block; width: 36px; height: 20px; flex-shrink: 0; }
.toggle input { opacity: 0; width: 0; height: 0; }
.toggle-slider {
  position: absolute; inset: 0;
  background: rgba(255,255,255,.08);
  border: 1px solid var(--border);
  border-radius: 999px;
  cursor: pointer;
  transition: background .2s, border-color .2s;
}
.toggle-slider::before {
  content: '';
  position: absolute;
  width: 14px; height: 14px;
  left: 2px; top: 2px;
  background: var(--dust);
  border-radius: 50%;
  transition: transform .2s, background .2s;
}
.toggle input:checked + .toggle-slider { background: rgba(201,151,58,.25); border-color: var(--gold-dim); }
.toggle input:checked + .toggle-slider::before { transform: translateX(16px); background: var(--gold); }


/* ═══════════════════════════════════════════════════════════════════════
   §8  SEARCH PAGE
   ═══════════════════════════════════════════════════════════════════════ */

/* Search bar */
.games-search-wrap { position: relative; margin-bottom: 10px; }

.games-search-icon {
  position: absolute; left: 16px; top: 50%; transform: translateY(-50%);
  font-size: 16px; pointer-events: none; opacity: .45;
}
.games-search-input {
  width: 100%;
  padding: 13px 120px 13px 48px;
  background: var(--deep);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  color: var(--static);
  font-family: var(--font-grimoire);
  font-style: italic;
  font-size: 16px;
  outline: none;
  transition: border-color .2s, box-shadow .2s;
}
.games-search-input:focus {
  border-color: var(--border-bright);
  box-shadow: 0 0 0 3px rgba(201,151,58,.08), 0 0 20px rgba(201,151,58,.07);
}
.games-search-input::placeholder { color: var(--dust); font-style: italic; }

.games-search-btn-pos {
  position: absolute; right: 6px; top: 50%; transform: translateY(-50%);
}

#games-status {
  font-family: var(--font-vhs);
  font-size: 10px;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: var(--dust);
  padding: 4px 0 0;
  min-height: 18px;
}

/* Filter pills */
.games-filter-row {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
  align-items: center;
  margin-bottom: 12px;
}
.games-filter-row .filter-label {
  font-family: var(--font-vhs);
  font-size: 9px;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: var(--dust);
  margin-right: 4px;
}
.games-filter-row .filter-pill {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 12px;
  border-radius: 4px;
  border: 1px solid var(--border);
  background: var(--deep);
  font-family: var(--font-vhs);
  font-size: 10px;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: var(--dust);
  cursor: pointer;
  transition: all .15s;
  user-select: none;
}
.games-filter-row .filter-pill input { display: none; }
.games-filter-row .filter-pill:hover { border-color: var(--gold); color: var(--gold); }
.games-filter-row .filter-pill.on {
  border-color: var(--blood-bright);
  color: #e07070;
  background: rgba(139,26,26,.1);
}

/* Toolbar */
.games-toolbar {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  padding: 10px 0 14px;
  border-bottom: 1px solid rgba(201,151,58,.10);
  margin-bottom: 16px;
  flex-wrap: wrap;
}
.games-toolbar .gt-left,
.games-toolbar .gt-right { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.games-toolbar .gt-sep { width: 1px; height: 18px; background: var(--border); opacity: .75; margin: 0 2px; }

.games-toolbar .gt-check {
  display: flex;
  align-items: center;
  gap: 7px;
  font-family: var(--font-vhs);
  font-size: 10px;
  letter-spacing: 1px;
  color: var(--dust);
  cursor: pointer;
  user-select: none;
}
.games-toolbar .gt-check input { accent-color: var(--gold); width: 14px; height: 14px; }

.games-toolbar .gt-label {
  font-family: var(--font-vhs);
  font-size: 10px;
  letter-spacing: 1px;
  color: var(--dust);
}
.games-toolbar .gt-select {
  height: 32px;
  padding: 0 10px;
  background: var(--deep);
  border: 1px solid var(--border);
  border-radius: 4px;
  color: var(--static);
  font-family: var(--font-vhs);
  font-size: 10px;
  letter-spacing: 1px;
  min-width: 160px;
  outline: none;
}
.games-toolbar .gt-select:focus { border-color: var(--border-bright); }

/* Recent searches */
.games-recent {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding: 0 0 16px;
  min-height: 36px;
  flex-wrap: wrap;
}
.games-recent .recent-label {
  font-family: var(--font-vhs);
  font-size: 9px;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: var(--dust);
  padding-top: 6px;
  white-space: nowrap;
}
.games-recent .recent-muted {
  font-family: var(--font-grimoire);
  font-style: italic;
  font-size: 13px;
  color: var(--dust);
  opacity: .75;
  padding: 5px 0;
}
.games-recent .recent-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.games-recent .recent-chip {
  appearance: none;
  border: 1px solid var(--border);
  background: rgba(255,255,255,.02);
  color: var(--fog);
  font-family: var(--font-vhs);
  font-size: 10px;
  letter-spacing: 1px;
  text-transform: uppercase;
  padding: 5px 10px;
  border-radius: 3px;
  cursor: pointer;
  transition: all .15s;
}
.games-recent .recent-chip:hover { border-color: var(--gold); color: var(--gold); background: rgba(201,151,58,.05); }


/* ═══════════════════════════════════════════════════════════════════════
   §9  RESULT CARDS
   ═══════════════════════════════════════════════════════════════════════ */

#games-results {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
  gap: 14px;
  margin-top: 4px;
}
#games-results.poster-only .result-info { display: none; }
#games-results.poster-only { grid-template-columns: repeat(auto-fill, minmax(130px, 1fr)); }

.result-card {
  border-radius: var(--radius);
  overflow: hidden;
  border: 1px solid var(--border);
  background: var(--deep);
  cursor: pointer;
  transition: border-color .15s, box-shadow .15s, transform .15s;
}
.result-card:hover {
  border-color: var(--border-bright);
  box-shadow: 0 4px 20px rgba(0,0,0,.5);
  transform: translateY(-2px);
}
.result-card:focus-visible {
  outline: 2px solid rgba(201,151,58,.6);
  outline-offset: 2px;
}

.result-poster {
  position: relative;
  aspect-ratio: 3 / 4;
  background: var(--surface);
  overflow: hidden;
}
.result-poster img {
  width: 100%; height: 100%;
  object-fit: cover;
  display: block;
  transition: transform .3s;
}
.result-card:hover .result-poster img { transform: scale(1.03); }

.poster-fallback {
  width: 100%; height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: var(--font-vhs);
  font-size: 9px;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: var(--dust);
}

/* Shelf badges on results */
.result-badges {
  position: absolute;
  top: 8px; left: 8px;
  display: flex;
  flex-direction: column;
  gap: 5px;
  z-index: 2;
}
.rb {
  font-family: var(--font-vhs);
  font-size: 9px;
  letter-spacing: 1px;
  padding: 3px 7px;
  border-radius: 3px;
  background: rgba(0,0,0,.75);
  backdrop-filter: blur(4px);
}
.rb-owned   { border: 1px solid rgba(255,255,255,.2);  color: rgba(255,255,255,.5); }
.rb-played  { border: 1px solid rgba(201,151,58,.4);  color: #c9973a; }
.rb-playing { border: 1px solid rgba(82,176,0,.45); color: #7de040; }

.result-info { padding: 10px 10px 12px; }
.result-title {
  font-family: var(--font-vhs);
  font-size: 10px;
  letter-spacing: 1px;
  text-transform: uppercase;
  color: var(--static);
  line-height: 1.3;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  margin-bottom: 4px;
}
.result-meta {
  font-family: var(--font-vhs);
  font-size: 9px;
  color: var(--dust);
  letter-spacing: 1px;
  margin-bottom: 6px;
}
.result-tags { display: flex; flex-wrap: wrap; gap: 5px; }
.tag {
  display: inline-flex;
  align-items: center;
  padding: 3px 7px;
  border-radius: 3px;
  font-family: var(--font-vhs);
  font-size: 9px;
  letter-spacing: 1px;
  text-transform: uppercase;
  background: rgba(120,92,255,.10);
  border: 1px solid rgba(120,92,255,.22);
  color: rgba(200,185,255,.88);
}

/* Skeleton loading */
.result-card.skel { pointer-events: none; }
.result-card.skel .result-poster img { display: none; }
.skel-box {
  width: 100%; height: 100%;
  background: rgba(255,255,255,.04);
  border-radius: 4px;
  animation: vcPulse 1.4s ease-in-out infinite;
}
.skel-line {
  height: 9px; border-radius: 999px;
  background: rgba(255,255,255,.04);
  margin: 10px 0 0;
  animation: vcPulse 1.4s ease-in-out infinite;
}
.skel-line.w70 { width: 70%; }
.skel-line.w35 { width: 35%; }
.skel-tags { display: flex; gap: 5px; margin-top: 9px; }
.skel-pill {
  width: 44px; height: 17px;
  border-radius: 999px;
  background: rgba(255,255,255,.04);
  animation: vcPulse 1.4s ease-in-out infinite;
}


/* ═══════════════════════════════════════════════════════════════════════
   §10  LIBRARY VIEW
   ═══════════════════════════════════════════════════════════════════════ */

.lib-topbar {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 14px 28px 12px;
}
.lib-sync-label {
  font-family: var(--font-vhs);
  font-size: 9px;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: var(--dust);
  opacity: .7;
  display: flex;
  align-items: center;
  gap: 6px;
}
.lib-sync-label .ldot {
  width: 6px; height: 6px;
  border-radius: 50%;
  background: var(--dust);
  transition: background .3s;
  flex-shrink: 0;
}
.lib-sync-label.synced  .ldot { background: #4ade80; }
.lib-sync-label.syncing .ldot { background: var(--gold); animation: vcPulse .9s infinite; }
.lib-topbar-spacer { flex: 1; }

.lib-inner { padding: 0 28px 60px; }

.lib-stats-strip {
  display: flex;
  gap: 0;
  flex-wrap: wrap;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--deep);
  overflow: hidden;
  margin-bottom: 28px;
}
.lib-stat {
  flex: 1;
  min-width: 80px;
  padding: 14px 16px;
  border-right: 1px solid var(--border);
  text-align: center;
}
.lib-stat:last-child { border-right: none; }
.lib-stat-n {
  font-family: var(--font-occult);
  font-size: 24px;
  font-weight: 700;
  line-height: 1;
  margin-bottom: 5px;
}
.lib-stat-label {
  font-family: var(--font-vhs);
  font-size: 9px;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: var(--dust);
}

.lib-section { margin-bottom: 36px; }
.lib-section-header {
  display: flex;
  align-items: center;
  gap: 10px;
  padding-bottom: 10px;
  margin-bottom: 14px;
  border-bottom: 1px solid var(--border);
}
.lib-section-icon { font-size: 16px; }
.lib-section-title {
  font-family: var(--font-occult);
  font-size: 16px;
  font-weight: 600;
  color: var(--gold-pale);
  letter-spacing: .5px;
}
.lib-section-count {
  font-family: var(--font-vhs);
  font-size: 10px;
  letter-spacing: 1px;
  color: var(--dust);
  background: rgba(255,255,255,.06);
  padding: 2px 8px;
  border-radius: 999px;
}
.lib-add-group-btn { margin-left: auto; }

.lib-empty-shelf {
  padding: 20px 0;
  font-family: var(--font-grimoire);
  font-style: italic;
  font-size: 14px;
  color: var(--dust);
  opacity: .7;
}

.lib-shelf-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
  gap: 12px;
}
.lib-card {
  border-radius: var(--radius);
  overflow: hidden;
  border: 1px solid var(--border);
  background: var(--deep);
  transition: border-color .15s, box-shadow .15s;
  cursor: pointer;
}
.lib-card:hover { border-color: var(--border-bright); box-shadow: 0 4px 16px rgba(0,0,0,.4); }

.lib-card-poster {
  aspect-ratio: 3 / 4;
  position: relative;
  overflow: hidden;
  background: var(--surface);
}
.lib-card-poster img { width: 100%; height: 100%; object-fit: cover; display: block; }

.lib-card-overlay {
  position: absolute; inset: 0;
  background: rgba(0,0,0,.55);
  display: flex;
  align-items: flex-start;
  justify-content: flex-end;
  padding: 6px;
  opacity: 0;
  transition: opacity .15s;
}
.lib-card:hover .lib-card-overlay { opacity: 1; }

.lib-card-remove {
  appearance: none;
  background: rgba(0,0,0,.7);
  border: 1px solid rgba(255,100,100,.35);
  color: rgba(255,130,130,.9);
  border-radius: 3px;
  cursor: pointer;
  font-size: 10px;
  padding: 3px 6px;
  font-family: var(--font-vhs);
  letter-spacing: 1px;
  transition: all .12s;
}
.lib-card-remove:hover { background: rgba(180,40,40,.7); border-color: rgba(255,100,100,.6); }

.lib-card-info { padding: 8px 8px 10px; }
.lib-card-name {
  font-family: var(--font-vhs);
  font-size: 10px;
  letter-spacing: 1px;
  text-transform: uppercase;
  color: var(--static);
  line-height: 1.3;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.lib-card-year { font-family: var(--font-vhs); font-size: 9px; color: var(--dust); letter-spacing: 1px; display: block; margin-top: 2px; }
.lib-card-ago  { font-family: var(--font-vhs); font-size: 8px; color: var(--dust); opacity: .6; letter-spacing: 1px; margin-top: 2px; }
.lib-card-rating {
  display: inline-block;
  margin-top: 3px;
  font-family: var(--font-vhs);
  font-size: 9px;
  letter-spacing: 1px;
  color: var(--gold);
  background: rgba(201,151,58,.1);
  border: 1px solid rgba(201,151,58,.25);
  border-radius: 3px;
  padding: 1px 5px;
}

/* Group lockers */
.lib-group-row {
  margin-bottom: 20px;
  padding: 14px 16px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--deep);
}
.lib-group-name {
  font-family: var(--font-occult);
  font-size: 14px;
  color: var(--gold-pale);
  margin-bottom: 10px;
  display: flex;
  align-items: center;
  gap: 8px;
}
.lib-group-shelf-grid { display: flex; flex-wrap: wrap; gap: 8px; }
.lib-mini-card {
  width: 52px; height: 74px;
  border-radius: 3px;
  overflow: hidden;
  border: 1px solid var(--border);
  background: var(--surface);
  flex-shrink: 0;
}
.lib-mini-card img { width: 100%; height: 100%; object-fit: cover; display: block; }

/* Auth gate */
.lib-auth-gate {
  text-align: center;
  padding: 60px 20px;
  font-family: var(--font-grimoire);
  color: var(--fog);
}
.lib-auth-gate .gate-icon { font-size: 42px; margin-bottom: 16px; opacity: .5; }
.lib-auth-gate h3 { font-family: var(--font-occult); color: var(--gold-pale); font-size: 20px; margin-bottom: 8px; }
.lib-auth-gate p  { font-size: 15px; font-style: italic; opacity: .75; margin-bottom: 20px; }


/* ═══════════════════════════════════════════════════════════════════════
   §11  SETTINGS VIEW
   ═══════════════════════════════════════════════════════════════════════ */

.vc-topbar {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 18px 28px;
  border-bottom: 1px solid var(--border);
}
.vc-topbar h1 {
  margin: 0;
  font-family: var(--font-occult);
  font-size: 22px;
  font-weight: 700;
  color: var(--gold-pale);
  letter-spacing: .5px;
}
#view-settings .vc-page { padding-top: 24px; }

.settings-section {
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  background: var(--deep);
  padding: 16px;
  margin-bottom: 16px;
}
.settings-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 10px 0;
  border-bottom: 1px solid var(--line);
}
.settings-row:last-child { border-bottom: none; }
.settings-row-info { flex: 1; min-width: 0; }
.settings-row-label {
  font-family: var(--font-vhs);
  font-size: 10px;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: var(--static);
  margin-bottom: 3px;
}
.settings-row-desc {
  font-family: var(--font-grimoire);
  font-size: 13px;
  color: var(--fog);
  font-style: italic;
  line-height: 1.4;
}

.card-title {
  font-family: var(--font-occult);
  font-size: 15px;
  font-weight: 600;
  color: var(--gold-pale);
  margin-bottom: 12px;
  letter-spacing: .5px;
}
.modal-section-label {
  font-family: var(--font-vhs);
  font-size: 9px;
  letter-spacing: 3px;
  text-transform: uppercase;
  color: var(--dust);
  margin-bottom: 8px;
}
.modal-divider {
  height: 1px;
  background: var(--border);
}

/* Input */
.input {
  padding: 8px 12px;
  border-radius: 6px;
  background: var(--chamber);
  border: 1px solid var(--border);
  color: var(--static);
  font-family: var(--font-grimoire);
  font-size: 15px;
  outline: none;
  transition: border-color .2s;
  width: 100%;
}
.input:focus { border-color: var(--border-bright); }

/* Theme picker (injected by JS) */
.vc-theme-picker-card {
  margin-top: 12px;
  border: 1px solid var(--line);
  border-radius: 14px;
  padding: 14px;
  background: linear-gradient(180deg,
    color-mix(in srgb, var(--panel) 94%, transparent),
    color-mix(in srgb, var(--bg2)  92%, transparent));
  box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--gold) 8%, transparent);
}
.vc-theme-grimoire-help {
  color: color-mix(in srgb, var(--text) 88%, var(--muted));
  font-size: 12px;
  line-height: 1.45;
  margin-bottom: 10px;
}
.vc-theme-recent-row { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; margin-bottom: 10px; }
.vc-theme-recent-label { font-size: 10px; letter-spacing: .20em; text-transform: uppercase; color: var(--muted); }
.vc-theme-recent-chip {
  border: 1px solid color-mix(in srgb, var(--gold) 28%, var(--line));
  background: color-mix(in srgb, var(--panel) 96%, transparent);
  color: var(--gold-pale);
  border-radius: 999px;
  padding: 4px 10px;
  font-size: 11px;
  cursor: pointer;
  font-family: var(--font-vhs);
}
.vc-theme-grid { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 10px; }
.vc-theme-card {
  position: relative;
  text-align: left;
  cursor: pointer;
  border-radius: 12px;
  border: 1px solid color-mix(in srgb, var(--gold) 18%, var(--line));
  background: linear-gradient(180deg,
    color-mix(in srgb, var(--panel) 96%, transparent),
    color-mix(in srgb, var(--bg2)  93%, transparent));
  padding: 12px 12px 10px;
  overflow: hidden;
  transition: transform .12s, border-color .12s, box-shadow .12s;
}
.vc-theme-card:hover { transform: translateY(-1px); border-color: color-mix(in srgb, var(--gold) 38%, var(--line)); box-shadow: 0 8px 20px rgba(0,0,0,.2); }
.vc-theme-card.active { border-color: color-mix(in srgb, var(--gold) 70%, var(--line)); }
.vc-theme-name { font-family: var(--font-display); font-size: 13px; color: color-mix(in srgb, var(--text) 96%, white); margin-bottom: 4px; position: relative; z-index: 1; }
.vc-theme-flavor { font-size: 12px; color: color-mix(in srgb, var(--bone) 92%, white 8%); line-height: 1.45; min-height: 32px; position: relative; z-index: 1; }
.vc-theme-swatches { display: flex; gap: 6px; margin-top: 9px; position: relative; z-index: 1; }
.vc-theme-swatch { width: 13px; height: 13px; border-radius: 999px; border: 1px solid rgba(255,255,255,.22); }
.vc-theme-active {
  position: absolute; top: 10px; right: 10px; z-index: 10;
  border: 1px solid color-mix(in srgb, var(--gold) 70%, transparent);
  background: color-mix(in srgb, var(--gold) 16%, rgba(0,0,0,.6));
  color: var(--gold);
  border-radius: 6px;
  padding: 4px 10px 3px;
  font-family: var(--font-vhs);
  font-size: 9px;
  letter-spacing: .22em;
  text-transform: uppercase;
  pointer-events: none;
}


/* ═══════════════════════════════════════════════════════════════════════
   §12  AUTH MODAL
   ═══════════════════════════════════════════════════════════════════════ */

.vc-auth-modal {
  position: fixed; inset: 0;
  display: none;
  z-index: 10000;
  align-items: center;
  justify-content: center;
}
.vc-auth-modal[aria-hidden="false"] { display: flex; }
.vc-auth-modal-backdrop {
  position: absolute; inset: 0;
  background: rgba(0,0,0,.85);
  backdrop-filter: blur(12px);
}
.vc-auth-modal-dialog {
  position: relative;
  width: min(420px, calc(100vw - 40px));
  border: 1px solid var(--border-bright);
  border-radius: var(--radius-lg);
  background: var(--deep);
  box-shadow: 0 0 60px rgba(139,26,26,.25), 0 32px 80px rgba(0,0,0,.8);
  padding: 28px 28px 24px;
}
.vc-auth-modal-dialog::before {
  content: '';
  position: absolute; top: 0; left: 0; right: 0; height: 1px;
  background: linear-gradient(90deg, transparent, var(--gold), transparent);
  border-radius: inherit;
}
.vc-auth-title { font-family: var(--font-occult); font-size: 22px; color: var(--gold-pale); margin-bottom: 6px; font-weight: 700; }
.vc-auth-sub   { font-family: var(--font-grimoire); font-style: italic; font-size: 14px; color: var(--fog); margin-bottom: 22px; }
.vc-auth-field { margin-bottom: 14px; }
.vc-auth-field label {
  display: block;
  font-family: var(--font-vhs);
  font-size: 9px;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: var(--dust);
  margin-bottom: 6px;
}
.vc-auth-field input {
  width: 100%;
  padding: 10px 12px;
  border-radius: 6px;
  background: var(--chamber);
  border: 1px solid var(--border);
  color: var(--static);
  font-family: var(--font-grimoire);
  font-size: 15px;
  outline: none;
  transition: border-color .2s;
  box-sizing: border-box;
}
.vc-auth-field input:focus { border-color: var(--border-bright); }
.vc-auth-error {
  font-family: var(--font-vhs);
  font-size: 9px;
  letter-spacing: 1px;
  text-transform: uppercase;
  color: var(--blood-bright);
  margin-bottom: 12px;
  min-height: 16px;
}
.vc-auth-actions { display: flex; gap: 10px; align-items: center; margin-top: 6px; }
.vc-auth-switch {
  font-family: var(--font-vhs);
  font-size: 9px;
  letter-spacing: 1px;
  text-transform: uppercase;
  color: var(--dust);
  cursor: pointer;
  border: none;
  background: none;
  padding: 0;
  margin-left: auto;
  transition: color .15s;
  opacity: .7;
}
.vc-auth-switch:hover { color: var(--gold); opacity: 1; }
.vc-auth-close { position: absolute; top: 12px; right: 14px; }


/* ═══════════════════════════════════════════════════════════════════════
   §13  GAME DETAILS MODAL
   ═══════════════════════════════════════════════════════════════════════ */

.vc-modal {
  position: fixed; inset: 0;
  display: none;
  z-index: 9999;
  align-items: center;
  justify-content: center;
}
.vc-modal[aria-hidden="false"] { display: flex; }
.vc-modal-backdrop {
  position: absolute; inset: 0;
  background: rgba(0,0,0,.82);
  backdrop-filter: blur(10px);
}
.vc-modal-dialog {
  position: relative;
  width: min(1100px, calc(100vw - 32px));
  max-height: 92vh;
  overflow: hidden;
  border: 1px solid var(--border-bright);
  border-radius: var(--radius-lg);
  background: var(--deep);
  box-shadow: 0 0 80px rgba(139,26,26,.28), 0 40px 100px rgba(0,0,0,.9);
  display: flex;
  flex-direction: column;
  z-index: 1;
}
.vc-modal-dialog::before {
  content: '';
  position: absolute; top: 0; left: 0; right: 0; height: 1px;
  background: linear-gradient(90deg, transparent, var(--gold), transparent);
  z-index: 10; pointer-events: none;
}

/* Banner */
#vc-game-modal[data-has-banner] .vc-modal-dialog::after {
  content: '';
  position: absolute; inset: 0;
  border-radius: inherit;
  background-image: var(--vc-game-banner, none);
  background-size: cover;
  background-position: center top;
  opacity: 1; transform: scale(1.04);
  filter: saturate(1.1) brightness(.9);
  pointer-events: none; z-index: 0;
}

.vc-modal-body {
  position: relative; z-index: 2;
  overflow-y: auto; overflow-x: hidden;
  max-height: 92vh;
  padding: 22px 24px 28px;
}
#vc-game-modal[data-has-banner] .vc-modal-body {
  background: linear-gradient(to bottom, rgba(8,6,14,.74) 0%, rgba(8,6,14,.90) 40%, rgba(8,6,14,.97) 100%);
}
.vc-modal-close { position: absolute; top: 12px; right: 14px; z-index: 20; }

/* Modal scrollbar */
.vc-modal-body::-webkit-scrollbar { width: 4px; }
.vc-modal-body::-webkit-scrollbar-thumb { background: var(--border); border-radius: 2px; }

/* ═══════════════════════════════════════════════════════════════
   GAME MODAL v2 — Banner backdrop + hero layout
═══════════════════════════════════════════════════════════════ */

/* Banner backdrop — set via --vc-game-banner CSS var */
#vc-game-modal[data-has-banner] .vc-modal-dialog::after {
  content: '';
  position: absolute; inset: 0;
  border-radius: inherit;
  background-image: var(--vc-game-banner, none);
  background-size: cover;
  background-position: center top;
  opacity: 1; transform: scale(1.04);
  filter: saturate(1.1) brightness(.85);
  pointer-events: none; z-index: 0;
}
#vc-game-modal[data-has-banner] .vc-modal-body {
  background: linear-gradient(to bottom, rgba(8,6,14,.72) 0%, rgba(8,6,14,.88) 35%, rgba(8,6,14,.97) 60%, var(--deep) 100%);
}

/* ── HERO ── */
.vc-gm-hero {
  display: flex;
  gap: 22px;
  align-items: flex-end;
  padding: 28px 26px 22px;
  min-height: 190px;
  position: relative;
}
.vc-game-modal-cover {
  width: 130px;
  flex-shrink: 0;
  aspect-ratio: 3 / 4;
  border-radius: 10px;
  overflow: hidden;
  border: 1px solid var(--border-bright);
  background: var(--surface);
  box-shadow: 0 16px 48px rgba(0,0,0,.75), 0 0 0 1px rgba(201,151,58,.12), 0 0 28px rgba(201,151,58,.08);
  transform: translateY(-6px);
  flex-shrink: 0;
}
.vc-game-modal-cover img { width: 100%; height: 100%; object-fit: cover; display: block; }

.vc-gm-hero-info {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 9px;
}
.vc-game-modal-title {
  font-family: var(--font-occult);
  font-size: 28px; font-weight: 700;
  color: var(--gold-pale);
  text-shadow: 0 0 40px rgba(201,151,58,.35), 0 2px 10px rgba(0,0,0,.8);
  line-height: 1.05;
}
.vc-game-modal-sub {
  font-family: var(--font-vhs);
  font-size: 9px; letter-spacing: 2px; text-transform: uppercase;
  color: var(--dust);
}

/* Status stamp */
.vc-gm-status-stamp {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 6px 14px 6px 10px;
  border-radius: 999px;
  font-family: var(--font-vhs);
  font-size: 10px; letter-spacing: 1.5px; text-transform: uppercase; font-weight: 700;
  width: fit-content;
  cursor: pointer;
  transition: all .2s;
  /* default — locker state; JS overrides color vars per-state */
  background: rgba(201,151,58,.12);
  border: 1px solid rgba(201,151,58,.38);
  color: var(--gold);
}
.vc-gm-status-stamp[data-status="playing"]   { background:rgba(110,181,255,.12); border-color:rgba(110,181,255,.38); color:#6eb5ff; }
.vc-gm-status-stamp[data-status="completed"] { background:rgba(78,207,138,.12);  border-color:rgba(78,207,138,.38);  color:#4ecf8a; }
.vc-gm-status-stamp[data-status="backlog"]   { background:rgba(240,208,128,.1);  border-color:rgba(240,208,128,.32); color:#f0d080; }
.vc-gm-status-stamp[data-status="wishlist"]  { background:rgba(196,154,255,.12); border-color:rgba(196,154,255,.35); color:#c49aff; }
.vc-gm-status-stamp[data-status="dropped"]   { background:rgba(255,122,122,.1);  border-color:rgba(255,122,122,.32); color:#ff7a7a; }
.vc-gm-stamp-dot {
  width: 8px; height: 8px; border-radius: 50%;
  background: currentColor; box-shadow: 0 0 6px currentColor;
  animation: vc-stamp-pulse 2s ease-in-out infinite; flex-shrink: 0;
}
@keyframes vc-stamp-pulse { 0%,100%{opacity:1} 50%{opacity:.38} }
.vc-gm-stamp-text { flex: 1; }
.vc-gm-stamp-edit { font-size: 9px; opacity: .45; }

/* Rating row (reused personal-block id) */
.vc-gm-rating-row {
  display: flex;
  align-items: center;
  gap: 8px;
}
.vc-gm-rating-lbl {
  font-family: var(--font-vhs); font-size: 8px; letter-spacing: 2px;
  text-transform: uppercase; color: var(--dust); white-space: nowrap;
}
.vc-game-stars { display: flex; gap: 3px; }
.vc-game-stars .star {
  font-size: 16px; cursor: pointer;
  opacity: .2; transition: opacity .1s;
  color: var(--gold); line-height: 1;
}
.vc-game-stars .star.on { opacity: 1; }
.vc-game-stars:hover .star { opacity: 1; }
.vc-game-stars .star:hover ~ .star { opacity: .2 !important; }
#vc-game-rating-val {
  font-family: var(--font-vhs); font-size: 10px; letter-spacing: 1px; color: var(--gold);
}

/* Copy chips row in hero */
.vc-gm-copies-row {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
}
.vc-gm-copy-chips {
  display: flex; align-items: center; gap: 6px; flex-wrap: wrap;
}
/* individual chip — rendered by vcRefreshOwnedSection into #vc-modal-owned-chips */
.vc-owned-chip {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 5px 10px;
  background: rgba(0,0,0,.45); backdrop-filter: blur(8px);
  border: 1px solid rgba(255,255,255,.1);
  border-radius: var(--radius);
  cursor: pointer; transition: all .15s;
  font-size: 11px;
}
.vc-owned-chip:hover { border-color: var(--border-bright); background: rgba(201,151,58,.08); }
.vc-gm-copy-add-btn {
  padding: 5px 12px;
  background: transparent;
  border: 1px dashed rgba(201,151,58,.28);
  border-radius: var(--radius);
  color: var(--gold-dim);
  font-family: var(--font-vhs); font-size: 10px; letter-spacing: 1px;
  cursor: pointer; transition: all .15s;
  white-space: nowrap;
}
.vc-gm-copy-add-btn:hover { border-color: var(--gold); color: var(--gold); }

/* ── SHELF PILLS ROW ── */
.vc-gm-shelf-row {
  display: flex; align-items: center; gap: 6px; flex-wrap: wrap;
  padding: 10px 26px;
  border-top: 1px solid var(--border);
  border-bottom: 1px solid var(--border);
  background: rgba(0,0,0,.28);
  backdrop-filter: blur(4px);
}
.vc-gm-shelf-lbl {
  font-family: var(--font-vhs); font-size: 8px; letter-spacing: 2px;
  text-transform: uppercase; color: var(--dust); margin-right: 4px; white-space: nowrap;
}
/* Override btn-shelf inside shelf row to pill style */
.vc-gm-shelf-row .vc-gm-pill {
  display: inline-flex; align-items: center; gap: 4px;
  padding: 4px 12px; border-radius: 999px;
  font-family: var(--font-vhs); font-size: 9px; letter-spacing: 1px; text-transform: uppercase;
  cursor: pointer; transition: all .15s;
  border: 1px solid rgba(255,255,255,.1);
  background: rgba(255,255,255,.04);
  color: rgba(255,255,255,.3);
}
.vc-gm-shelf-row .vc-gm-pill:hover { color: rgba(255,255,255,.6); border-color: rgba(255,255,255,.2); }
/* Active states — set by syncActionLabels via textContent change + data attr */
.vc-gm-shelf-row .vc-gm-pill.active-locker    { background:rgba(201,151,58,.14); border-color:rgba(201,151,58,.45); color:var(--gold); }
.vc-gm-shelf-row .vc-gm-pill.active-playing   { background:rgba(110,181,255,.13); border-color:rgba(110,181,255,.42); color:#6eb5ff; }
.vc-gm-shelf-row .vc-gm-pill.active-completed { background:rgba(78,207,138,.12);  border-color:rgba(78,207,138,.4);  color:#4ecf8a; }
.vc-gm-shelf-row .vc-gm-pill.active-backlog   { background:rgba(240,208,128,.1);  border-color:rgba(240,208,128,.32); color:#f0d080; }
.vc-gm-shelf-row .vc-gm-pill.active-wishlist  { background:rgba(196,154,255,.11); border-color:rgba(196,154,255,.35); color:#c49aff; }
.vc-gm-shelf-row .vc-gm-pill.active-dropped   { background:rgba(255,122,122,.1);  border-color:rgba(255,122,122,.32); color:#ff7a7a; }

/* ── COVEN ROW ── */
.vc-gm-coven-row {
  display: flex; align-items: center; gap: 0;
  padding: 10px 26px;
  border-bottom: 1px solid var(--border);
  background: rgba(0,0,0,.18);
}
.vc-gm-coven-block { display: flex; align-items: center; gap: 9px; flex: 1; }
.vc-gm-coven-block + .vc-gm-coven-block {
  border-left: 1px solid var(--border); padding-left: 22px; margin-left: 6px;
}
.vc-gm-coven-lbl {
  font-family: var(--font-vhs); font-size: 8px; letter-spacing: 1.5px;
  text-transform: uppercase; color: var(--dust); white-space: nowrap;
}
.vc-gm-avatars { display: flex; align-items: center; }
.vc-gm-av {
  width: 26px; height: 26px; border-radius: 50%;
  border: 2px solid var(--deep); background: var(--surface);
  display: flex; align-items: center; justify-content: center;
  font-family: var(--font-occult); font-size: 10px; font-weight: 700; color: var(--gold);
  margin-right: -8px; flex-shrink: 0; overflow: hidden;
}
.vc-gm-av:last-child { margin-right: 0; }
.vc-gm-av img { width: 100%; height: 100%; object-fit: cover; }
.vc-gm-coven-n {
  font-family: var(--font-vhs); font-size: 9px; color: var(--fog); margin-left: 14px;
}

/* ── NOTES BLOCK ── */
.vc-gm-notes-block {
  padding: 14px 26px;
  border-bottom: 1px solid var(--border);
}
.vc-gm-sec-lbl {
  font-family: var(--font-vhs); font-size: 8px; letter-spacing: 2.5px; text-transform: uppercase;
  color: var(--dust); margin-bottom: 8px;
  display: flex; align-items: center; gap: 7px;
}
.vc-gm-sec-lbl::before { content: '⛧'; color: var(--blood-bright); font-size: 10px; }
/* reuse existing .vc-game-notes-area styles */

/* ── COLLAPSIBLE SECTIONS ── */
.vc-gm-collapse { border-bottom: 1px solid var(--border); }
.vc-gm-collapse-hdr {
  width: 100%;
  display: flex; align-items: center; justify-content: space-between;
  padding: 12px 26px;
  background: none; border: none; cursor: pointer;
  transition: background .15s; text-align: left;
}
.vc-gm-collapse-hdr:hover { background: rgba(255,255,255,.02); }
.vc-gm-collapse-title {
  font-family: var(--font-vhs); font-size: 8px; letter-spacing: 2.5px; text-transform: uppercase;
  color: var(--fog); display: flex; align-items: center; gap: 7px;
}
.vc-gm-collapse-title::before { content: '⛧'; color: var(--blood-bright); font-size: 10px; }
.vc-gm-chevron {
  font-family: var(--font-vhs); font-size: 9px; color: var(--dust);
  transition: transform .2s; flex-shrink: 0;
}
.vc-gm-collapse.open .vc-gm-chevron { transform: rotate(180deg); }
.vc-gm-collapse-body { display: none; padding: 4px 26px 18px; }
.vc-gm-collapse.open .vc-gm-collapse-body { display: block; }

.vc-gm-storyline-block { margin-bottom: 12px; }
.vc-gm-storyline-text {
  font-family: var(--font-grimoire); font-style: italic; font-size: 13px;
  color: var(--fog); line-height: 1.7; border-left: 2px solid var(--border);
  padding-left: 12px; margin-bottom: 10px;
}
.vc-gm-summary-text {
  font-family: var(--font-grimoire); font-size: 14px;
  color: var(--fog); line-height: 1.78;
}

/* ── ACTION BAR ── */
.vc-gm-action-bar {
  display: flex; align-items: center; gap: 8px;
  padding: 11px 26px;
  background: rgba(0,0,0,.22);
  border-top: 1px solid var(--border);
}
.vc-gm-icon-btn {
  width: 34px; height: 34px;
  display: inline-flex; align-items: center; justify-content: center;
  background: rgba(255,255,255,.04); border: 1px solid rgba(255,255,255,.1);
  border-radius: var(--radius); color: var(--fog); font-size: 14px;
  cursor: pointer; transition: all .15s;
}
.vc-gm-icon-btn:hover { border-color: var(--border-bright); color: var(--static); }
.vc-gm-icon-btn--danger:hover { border-color: rgba(255,80,80,.4); color: rgba(255,100,100,.65); }

/* Keep old facts/media/links CSS working (IDs still used) */
.vc-game-modal-links-list {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(200px,1fr));
  gap: 8px;
}
.vc-linkcard {
  display: flex; flex-direction: column; gap: 3px;
  padding: 10px 12px; min-height: 52px;
  border: 1px solid rgba(255,255,255,.10);
  background: rgba(0,0,0,.16);
  border-radius: var(--radius);
  text-decoration: none; color: inherit;
  transition: border-color .15s, background .15s;
}
.vc-linkcard:hover { border-color: rgba(201,151,58,.4); background: rgba(0,0,0,.24); }
.vc-linkcard .h {
  font-family: var(--font-vhs);
  font-size: 10px; letter-spacing: 2px; text-transform: uppercase;
  color: var(--gold-pale); opacity: .85;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.vc-linkcard .p { font-size: 12px; opacity: .88; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; color: var(--fog); }


/* ═══════════════════════════════════════════════════════════════════════
   §14  TOAST
   ═══════════════════════════════════════════════════════════════════════ */

.vc-toast {
  position: fixed;
  left: 50%; bottom: 22px;
  transform: translateX(-50%) translateY(10px);
  background: var(--chamber);
  border: 1px solid var(--border-bright);
  color: var(--gold);
  padding: 10px 18px;
  border-radius: 4px;
  font-family: var(--font-vhs);
  font-size: 11px; letter-spacing: 1px;
  opacity: 0;
  transition: opacity .18s, transform .18s;
  z-index: 10050;
  box-shadow: 0 8px 24px rgba(0,0,0,.6), 0 0 16px rgba(201,151,58,.1);
  pointer-events: none;
}
.vc-toast.on { opacity: 1; transform: translateX(-50%) translateY(0); }


/* ═══════════════════════════════════════════════════════════════════════
   §15  DIAGNOSTICS OVERLAY  (Ctrl+Shift+D)
   ═══════════════════════════════════════════════════════════════════════ */

#vc-diag-overlay {
  position: fixed;
  top: 60px; right: 20px;
  width: 280px;
  background: var(--chamber);
  border: 1px solid var(--border-bright);
  border-radius: var(--radius);
  box-shadow: 0 8px 32px rgba(0,0,0,.8);
  z-index: 9998;
  font-family: var(--font-vhs);
  font-size: 10px;
  letter-spacing: 1px;
}
#vc-diag-overlay .hdr {
  display: flex; justify-content: space-between; align-items: center;
  padding: 10px 14px;
  border-bottom: 1px solid var(--border);
  color: var(--gold);
  text-transform: uppercase;
  letter-spacing: 2px;
}
#vc-diag-overlay .body { padding: 10px 14px; }
#vc-diag-overlay .row { display: flex; justify-content: space-between; padding: 4px 0; border-bottom: 1px solid var(--line); }
#vc-diag-overlay .row:last-child { border-bottom: none; }
#vc-diag-overlay .k { color: var(--dust); }
#vc-diag-overlay .v { color: var(--gold-pale); }
#vc-diag-overlay .btns { display: flex; gap: 8px; margin-top: 10px; }


/* ═══════════════════════════════════════════════════════════════════════
   §16  FX TOGGLES
   ═══════════════════════════════════════════════════════════════════════ */

body.vc-fx-icegrid-on .vc-modal-dialog,
body.vc-fx-icegrid-on .lib-card,
body.vc-fx-icegrid-on .result-card,
body.vc-fx-icegrid-on .settings-section { position: relative; }

body.vc-fx-icegrid-on .vc-modal-dialog::before,
body.vc-fx-icegrid-on .settings-section::before {
  content: '';
  position: absolute; inset: 0;
  border-radius: inherit;
  pointer-events: none;
  background-image:
    linear-gradient(to right,  var(--fx-icegrid-h) 1px, transparent 1px),
    linear-gradient(to bottom, var(--fx-icegrid-v) 1px, transparent 1px);
  background-size: var(--fx-icegrid-size, 28px) var(--fx-icegrid-size, 28px);
  opacity: var(--fx-icegrid-opacity, .12);
  mix-blend-mode: screen;
  z-index: 1;
}

body.vc-fx-trace-on .btn,
body.vc-fx-trace-on .result-card { position: relative; overflow: hidden; }

body.vc-fx-trace-on .btn::after,
body.vc-fx-trace-on .result-card::after {
  content: '';
  position: absolute; top: -30%; left: -60%;
  width: 60%; height: 160%;
  transform: rotate(18deg);
  background: linear-gradient(90deg, transparent, var(--fx-trace-color), transparent);
  opacity: 0; pointer-events: none;
}
body.vc-fx-trace-on .btn:hover::after,
body.vc-fx-trace-on .result-card:hover::after {
  opacity: 1;
  animation: vcTraceSweep .65s ease-out 1;
}

body.vc-fx-glitch-pulse .vc-modal-dialog { animation: vcGlitchPulse 180ms ease-out 1; }


/* ═══════════════════════════════════════════════════════════════════════
   §17  RESPONSIVE
   ═══════════════════════════════════════════════════════════════════════ */

@media (max-width: 700px) {
  .sidebar { display: none; }
  .vc-main { margin-left: 0; }
  .vc-game-modal-hero { flex-direction: column; }
  .vc-game-modal-cover { width: 100%; max-width: 180px; }
  .vc-page, .lib-inner { padding: 0 16px 40px; }
  .vc-page-header { padding: 20px 16px 0; }
  .lib-stats-strip { flex-wrap: wrap; }
  .lib-stat { min-width: calc(33% - 1px); }
  .vc-game-modal-facts-grid { grid-template-columns: 1fr; }
  .vc-theme-grid { grid-template-columns: 1fr; }
  .games-toolbar { flex-direction: column; align-items: flex-start; }
}

@media (max-width: 480px) {
  .vc-page-title { font-size: 24px; }
  .vc-modal-dialog { margin: 2vh auto; }
  .vc-modal-body { padding: 16px 16px 20px; }
}


/* ─── 3. THEME EXPANSION ─────────────────────────────────── */
/*
 * ╔══════════════════════════════════════════════════════════════════════════╗
 * ║  VIDEOCCULT — THEME EXPANSION PACK v1                                   ║
 * ║  New IP themes: Alan Wake II · Control · Mass Effect · Resident Evil    ║
 * ║  KOTOR · Zelda · Marathon · Halo 2 · Mario · Dragon Age · Fallout       ║
 * ║                                                                          ║
 * ║  HOW TO USE:                                                             ║
 * ║  1. Include this file AFTER videoccult-themes.css                        ║
 * ║  2. Register themes via vcRegisterTheme() OR use the auto-boot block     ║
 * ║     at the bottom of this file (include the <script> tag in your HTML)  ║
 * ║  3. Each theme wires its FX preset via the applyPreset* functions        ║
 * ╚══════════════════════════════════════════════════════════════════════════╝
 */


/* ═══════════════════════════════════════════════════════════════════════
   ╔═ ALAN WAKE II SUITE ═══════════════════════════════════════════════╗
   ═══════════════════════════════════════════════════════════════════════ */

/* ── AW2 · Dark Place Noir ───────────────────────────────────────────── */
:root[data-vc-theme="aw2_noir"] {
  --void:          #040404;
  --abyss:         #070707;
  --deep:          #0d0c0c;
  --chamber:       #141212;
  --altar:         #1c1918;
  --surface:       #252120;

  --text:          rgba(230,225,215,.93);
  --static:        rgba(220,215,200,.88);
  --bone:          rgba(238,230,210,.95);
  --fog:           rgba(160,152,140,.65);
  --dust:          rgba(110,104,95,.55);
  --muted:         rgba(80,76,70,.6);

  /* Gold slot → tungsten flashlight amber */
  --gold:          #d4a84b;
  --gold-bright:   #f0c060;
  --gold-pale:     #f5d98a;
  --gold-dim:      rgba(212,168,75,.55);
  --gold-glow:     rgba(212,168,75,.22);

  /* Blood slot → deep noir crimson */
  --blood:         #5c1a1a;
  --blood-bright:  #9b2f2f;
  --blood-glow:    rgba(92,26,26,.35);

  --border:        rgba(180,140,70,.18);
  --border-bright: rgba(200,160,80,.42);
  --rim:           rgba(180,140,70,.14);
  --line:          rgba(180,140,70,.09);

  --green:         #7aad72;
  --violet:        #a895cc;

  /* Sidebar */
  --sidebar-shell:         linear-gradient(180deg, rgba(10,9,14,.99), rgba(6,6,8,.99));
  --sidebar-border:        rgba(180,140,70,.12);
  --sidebar-active-bg:     rgba(212,168,75,.08);
  --sidebar-active-border: rgba(212,168,75,.22);

  /* FX */
  --fx-trace-color:     rgba(212,168,75,.22);
  --fx-icegrid-h:       rgba(212,168,75,.05);
  --fx-icegrid-v:       rgba(100,80,40,.04);
  --fx-icegrid-opacity: 0.10;

  /* Theme-specific */
  --aw2-lamp:      #d4a84b;
  --aw2-ink:       #0a0910;
  --aw2-page:      rgba(240,228,200,.06);
}

/* ── AW2 · Manuscript / Writer's Room ───────────────────────────────── */
:root[data-vc-theme="aw2_manuscript"] {
  --void:          #1a1510;
  --abyss:         #201a13;
  --deep:          #272018;
  --chamber:       #30271e;
  --altar:         #3a3025;
  --surface:       #453a2c;

  --text:          rgba(240,228,200,.94);
  --static:        rgba(230,218,190,.90);
  --bone:          rgba(248,238,215,.96);
  --fog:           rgba(175,162,140,.65);
  --dust:          rgba(120,110,92,.55);
  --muted:         rgba(85,78,65,.55);

  /* Gold slot → warm parchment sepia / manuscript cream */
  --gold:          #c8a060;
  --gold-bright:   #e0bc7a;
  --gold-pale:     rgba(248,235,205,.96);
  --gold-dim:      rgba(200,160,96,.55);
  --gold-glow:     rgba(200,160,96,.22);

  /* Blood slot → editor red ink */
  --blood:         #c03030;
  --blood-bright:  #e04545;
  --blood-glow:    rgba(192,48,48,.38);

  --border:        rgba(180,145,90,.20);
  --border-bright: rgba(205,168,108,.44);
  --rim:           rgba(160,125,72,.16);
  --line:          rgba(140,108,58,.10);

  --sidebar-shell:         linear-gradient(180deg, rgba(22,18,12,.98), rgba(16,13,9,.98));
  --sidebar-border:        rgba(180,145,90,.14);
  --sidebar-active-bg:     rgba(200,160,96,.08);
  --sidebar-active-border: rgba(200,160,96,.24);

  --fx-trace-color:     rgba(200,160,96,.22);
  --fx-icegrid-h:       rgba(180,145,90,.06);
  --fx-icegrid-v:       rgba(192,48,48,.04);
  --fx-icegrid-opacity: 0.10;

  --aw2-page-bg:   #f5ead0;
  --aw2-red-ink:   #c8413c;
  --aw2-pencil:    rgba(60,50,35,.8);
}

/* ── AW2 · Cult of the Tree (Ritual Birch) ──────────────────────────── */
:root[data-vc-theme="aw2_cult"] {
  --void:          #040604;
  --abyss:         #060908;
  --deep:          #090e0b;
  --chamber:       #0e1510;
  --altar:         #131d16;
  --surface:       #19261c;

  --text:          rgba(220,230,210,.92);
  --static:        rgba(210,222,200,.88);
  --bone:          rgba(235,240,220,.95);
  --fog:           rgba(140,165,135,.65);
  --dust:          rgba(90,115,88,.50);
  --muted:         rgba(65,85,62,.55);

  /* Gold slot → sap-amber, carved bark */
  --gold:          #c8a040;
  --gold-bright:   #e0bc5a;
  --gold-pale:     #f0d480;
  --gold-dim:      rgba(200,160,64,.55);
  --gold-glow:     rgba(200,160,64,.25);

  /* Blood slot → ritual crimson + forest deep */
  --blood:         #6b1515;
  --blood-bright:  #a03020;
  --blood-glow:    rgba(107,21,21,.38);

  --border:        rgba(85,108,72,.18);
  --border-bright: rgba(108,138,90,.38);
  --rim:           rgba(70,90,58,.14);
  --line:          rgba(52,70,42,.09);

  --green:         #3a9e55;
  --violet:        rgba(95,70,130,.8);

  --sidebar-shell:         linear-gradient(180deg, rgba(4,6,4,.99), rgba(3,4,3,.99));
  --sidebar-border:        rgba(85,108,72,.12);
  --sidebar-active-bg:     rgba(200,160,64,.08);
  --sidebar-active-border: rgba(200,160,64,.22);

  --fx-trace-color:     rgba(200,160,64,.24);
  --fx-icegrid-h:       rgba(85,108,72,.06);
  --fx-icegrid-v:       rgba(52,70,42,.04);
  --fx-icegrid-opacity: 0.11;
}

/* ── AW2 · Saga Anderson (FBI Field Kit) ────────────────────────────── */
:root[data-vc-theme="aw2_saga"] {
  --void:          #12100e;
  --abyss:         #1a1714;
  --deep:          #221e1a;
  --chamber:       #2e2420;
  --altar:         #3a2e28;
  --surface:       #463830;

  --text:          rgba(238,232,224,.93);
  --static:        rgba(225,218,208,.88);
  --bone:          rgba(248,242,234,.96);
  --fog:           rgba(185,168,150,.65);
  --dust:          rgba(130,115,98,.50);
  --muted:         rgba(95,82,68,.55);

  /* Gold slot → dusty rose / mauve / Nordic terracotta */
  --gold:          #c8785a;
  --gold-bright:   #e09070;
  --gold-pale:     rgba(248,230,218,.96);
  --gold-dim:      rgba(200,120,90,.55);
  --gold-glow:     rgba(200,120,90,.20);

  /* Blood slot → evidence red string / cork board pin */
  --blood:         #8a3a2a;
  --blood-bright:  #b04a38;
  --blood-glow:    rgba(138,58,42,.38);

  --border:        rgba(200,165,138,.16);
  --border-bright: rgba(220,188,162,.38);
  --rim:           rgba(185,150,122,.12);
  --line:          rgba(160,128,100,.08);

  --green:         #7a9e6a;
  --violet:        rgba(168,148,188,.8);

  --sidebar-shell:         linear-gradient(180deg, rgba(18,16,14,.99), rgba(14,12,10,.99));
  --sidebar-border:        rgba(200,165,138,.13);
  --sidebar-active-bg:     rgba(200,120,90,.08);
  --sidebar-active-border: rgba(200,120,90,.22);

  --fx-trace-color:     rgba(200,120,90,.22);
  --fx-icegrid-h:       rgba(200,165,138,.06);
  --fx-icegrid-v:       rgba(138,58,42,.04);
  --fx-icegrid-opacity: 0.10;
}

/* ── AW2 · Old Gods of Asgard (Tour Poster) ─────────────────────────── */
:root[data-vc-theme="aw2_oldgods"] {
  --void:          #050404;
  --abyss:         #0c0a0a;
  --deep:          #141010;
  --chamber:       #1c1414;
  --altar:         #241a1a;
  --surface:       #2e2020;

  --text:          rgba(248,232,218,.93);
  --static:        rgba(235,218,202,.88);
  --bone:          rgba(255,245,232,.96);
  --fog:           rgba(185,155,130,.65);
  --dust:          rgba(130,100,82,.50);
  --muted:         rgba(95,72,58,.55);

  /* Gold slot → burning stage-light orange / Old Gods tour flame */
  --gold:          #e84800;
  --gold-bright:   #ff6820;
  --gold-pale:     rgba(255,210,170,.96);
  --gold-dim:      rgba(232,72,0,.55);
  --gold-glow:     rgba(232,72,0,.30);

  /* Blood slot → heavy metal blood red */
  --blood:         #8a0808;
  --blood-bright:  #c01010;
  --blood-glow:    rgba(138,8,8,.42);

  --border:        rgba(200,60,0,.20);
  --border-bright: rgba(240,90,20,.45);
  --rim:           rgba(180,48,0,.15);
  --line:          rgba(145,36,0,.10);

  --green:         rgba(80,200,100,.8);
  --violet:        rgba(160,80,200,.75);

  --sidebar-shell:         linear-gradient(180deg, rgba(12,4,4,.99), rgba(8,3,3,.99));
  --sidebar-border:        rgba(200,60,0,.13);
  --sidebar-active-bg:     rgba(232,72,0,.09);
  --sidebar-active-border: rgba(232,72,0,.28);

  --fx-trace-color:     rgba(232,72,0,.28);
  --fx-icegrid-h:       rgba(200,60,0,.08);
  --fx-icegrid-v:       rgba(138,8,8,.06);
  --fx-icegrid-opacity: 0.13;
}

/* ── AW2 · Deerfest (Neon Festival) ─────────────────────────────────── */
:root[data-vc-theme="aw2_deerfest"] {
  --void:          #070608;
  --abyss:         #0e0c0f;
  --deep:          #151318;
  --chamber:       #1d1a22;
  --altar:         #26222e;
  --surface:       #302c3a;

  --text:          rgba(235,228,218,.93);
  --static:        rgba(222,215,204,.88);
  --bone:          rgba(248,242,232,.96);
  --fog:           rgba(172,162,148,.65);
  --dust:          rgba(118,108,96,.50);
  --muted:         rgba(85,76,66,.55);

  /* Gold slot → marquee warm bulb amber */
  --gold:          #f5c840;
  --gold-bright:   #ffd85a;
  --gold-pale:     rgba(255,245,195,.96);
  --gold-dim:      rgba(245,200,64,.55);
  --gold-glow:     rgba(245,200,64,.28);

  /* Blood slot → Cauldron Lake midnight blue (the eerie undercurrent) */
  --blood:         #1a2860;
  --blood-bright:  #2840a0;
  --blood-glow:    rgba(26,40,96,.40);

  --border:        rgba(245,200,64,.18);
  --border-bright: rgba(255,220,80,.42);
  --rim:           rgba(220,180,50,.14);
  --line:          rgba(190,155,40,.09);

  --green:         #40d890;
  --violet:        rgba(160,140,255,.85);

  --sidebar-shell:         linear-gradient(180deg, rgba(7,6,8,.99), rgba(5,4,6,.99));
  --sidebar-border:        rgba(245,200,64,.14);
  --sidebar-active-bg:     rgba(245,200,64,.09);
  --sidebar-active-border: rgba(245,200,64,.28);

  --fx-trace-color:     rgba(245,200,64,.26);
  --fx-icegrid-h:       rgba(245,200,64,.07);
  --fx-icegrid-v:       rgba(26,40,96,.05);
  --fx-icegrid-opacity: 0.12;
}

/* ── AW2 · Bright Falls (Rain / Fog / Streetlamp) ───────────────────── */
:root[data-vc-theme="aw2_brightfalls"] {
  --void:          #060708;
  --abyss:         #0a0b0d;
  --deep:          #101214;
  --chamber:       #171a1d;
  --altar:         #1e2226;
  --surface:       #262b30;

  --text:          rgba(215,220,225,.92);
  --static:        rgba(198,205,212,.88);
  --bone:          rgba(232,236,240,.96);
  --fog:           rgba(138,148,162,.65);
  --dust:          rgba(90,98,112,.50);
  --muted:         rgba(64,70,82,.55);

  /* Gold slot → sodium streetlamp amber */
  --gold:          #e8a040;
  --gold-bright:   #f5ba55;
  --gold-pale:     rgba(255,230,175,.95);
  --gold-dim:      rgba(232,160,64,.55);
  --gold-glow:     rgba(232,160,64,.26);

  /* Blood slot → Pacific Northwest pine dark */
  --blood:         #0c1a0e;
  --blood-bright:  #163020;
  --blood-glow:    rgba(12,26,14,.5);

  --border:        rgba(130,145,160,.16);
  --border-bright: rgba(155,172,190,.38);
  --rim:           rgba(110,125,142,.12);
  --line:          rgba(88,100,118,.08);

  --green:         #5ab87c;
  --violet:        rgba(158,168,192,.75);

  --sidebar-shell:         linear-gradient(180deg, rgba(6,7,8,.99), rgba(4,5,6,.99));
  --sidebar-border:        rgba(130,145,160,.12);
  --sidebar-active-bg:     rgba(232,160,64,.08);
  --sidebar-active-border: rgba(232,160,64,.22);

  --fx-trace-color:     rgba(232,160,64,.24);
  --fx-icegrid-h:       rgba(130,145,160,.06);
  --fx-icegrid-v:       rgba(12,26,14,.04);
  --fx-icegrid-opacity: 0.09;
}

/* ── AW2 · Night Springs (Pulp TV / Retro Sci-Fi) ───────────────────── */
:root[data-vc-theme="aw2_nightsprings"] {
  --void:          #060605;
  --abyss:         #0c0c0a;
  --deep:          #131210;
  --chamber:       #1a1916;
  --altar:         #22211d;
  --surface:       #2b2a25;

  --text:          rgba(230,228,210,.93);
  --static:        rgba(215,213,196,.88);
  --bone:          rgba(244,242,225,.96);
  --fog:           rgba(162,160,140,.65);
  --dust:          rgba(110,108,92,.50);
  --muted:         rgba(80,78,66,.55);

  /* Gold slot → cathode-ray phosphor yellow-green */
  --gold:          #c8d820;
  --gold-bright:   #ddef30;
  --gold-pale:     rgba(240,252,185,.96);
  --gold-dim:      rgba(200,216,32,.55);
  --gold-glow:     rgba(200,216,32,.26);

  /* Blood slot → pulp cover red */
  --blood:         #c01820;
  --blood-bright:  #e02030;
  --blood-glow:    rgba(192,24,32,.40);

  --border:        rgba(185,183,140,.16);
  --border-bright: rgba(210,208,162,.38);
  --rim:           rgba(165,163,122,.12);
  --line:          rgba(138,136,100,.08);

  --green:         rgba(80,190,80,.85);
  --violet:        rgba(168,128,220,.75);

  --sidebar-shell:         linear-gradient(180deg, rgba(6,6,5,.99), rgba(4,4,3,.99));
  --sidebar-border:        rgba(185,183,140,.12);
  --sidebar-active-bg:     rgba(200,216,32,.08);
  --sidebar-active-border: rgba(200,216,32,.24);

  --fx-trace-color:     rgba(200,216,32,.24);
  --fx-icegrid-h:       rgba(185,183,140,.07);
  --fx-icegrid-v:       rgba(192,24,32,.04);
  --fx-icegrid-opacity: 0.12;
}


/* ═══════════════════════════════════════════════════════════════════════
   ╔═ CONTROL SUITE ════════════════════════════════════════════════════╗
   ═══════════════════════════════════════════════════════════════════════ */

/* ── Control · Polaris (Astral Calm) ────────────────────────────────── */
:root[data-vc-theme="control_polaris"] {
  --void:          #080a12;
  --abyss:         #0d1020;
  --deep:          #141828;
  --chamber:       #1b2035;
  --altar:         #222842;
  --surface:       #2b3252;

  --text:          rgba(218,224,248,.93);
  --static:        rgba(200,210,240,.88);
  --bone:          rgba(235,240,255,.96);
  --fog:           rgba(140,158,215,.65);
  --dust:          rgba(90,108,172,.50);
  --muted:         rgba(65,82,145,.55);

  /* Gold slot → Polaris guiding-star warm gold — the light at the end */
  --gold:          #f0d878;
  --gold-bright:   #f8e898;
  --gold-pale:     rgba(255,248,220,.97);
  --gold-dim:      rgba(240,216,120,.55);
  --gold-glow:     rgba(240,216,120,.30);

  /* Blood slot → Astral Plane aurora violet */
  --blood:         #7040c0;
  --blood-bright:  #9060e0;
  --blood-glow:    rgba(112,64,192,.38);

  --border:        rgba(100,148,245,.18);
  --border-bright: rgba(130,175,255,.42);
  --rim:           rgba(80,130,235,.14);
  --line:          rgba(60,110,220,.09);

  --green:         #50d8b8;
  --violet:        rgba(190,160,255,.85);

  --sidebar-shell:         linear-gradient(180deg, rgba(8,10,18,.99), rgba(5,7,13,.99));
  --sidebar-border:        rgba(100,148,245,.13);
  --sidebar-active-bg:     rgba(240,216,120,.08);
  --sidebar-active-border: rgba(240,216,120,.28);

  --fx-trace-color:     rgba(240,216,120,.26);
  --fx-icegrid-h:       rgba(100,148,245,.07);
  --fx-icegrid-v:       rgba(112,64,192,.05);
  --fx-icegrid-opacity: 0.13;
}

/* ── Control · Hiss Corruption ──────────────────────────────────────── */
:root[data-vc-theme="control_hiss"] {
  --void:          #080306;
  --abyss:         #0e0408;
  --deep:          #160510;
  --chamber:       #200618;
  --altar:         #2c0822;
  --surface:       #380b2c;

  --text:          rgba(238,225,230,.93);
  --static:        rgba(222,208,214,.88);
  --bone:          rgba(248,235,238,.96);
  --fog:           rgba(175,145,155,.65);
  --dust:          rgba(128,95,105,.50);
  --muted:         rgba(95,65,75,.55);

  /* Gold slot → Hiss resonance red (deep, corrupted, not neon) */
  --gold:          #cc0a28;
  --gold-bright:   #e81e3c;
  --gold-pale:     rgba(255,165,178,.96);
  --gold-dim:      rgba(204,10,40,.55);
  --gold-glow:     rgba(204,10,40,.35);

  /* Blood slot → void-corruption deep purple */
  --blood:         #580070;
  --blood-bright:  #8a00a8;
  --blood-glow:    rgba(88,0,112,.45);

  --border:        rgba(175,10,32,.20);
  --border-bright: rgba(210,15,40,.48);
  --rim:           rgba(155,8,26,.16);
  --line:          rgba(120,5,20,.10);

  --green:         rgba(60,185,150,.75);
  --violet:        rgba(148,40,190,.85);

  --sidebar-shell:         linear-gradient(180deg, rgba(8,3,6,.99), rgba(5,2,4,.99));
  --sidebar-border:        rgba(175,10,32,.14);
  --sidebar-active-bg:     rgba(204,10,40,.10);
  --sidebar-active-border: rgba(204,10,40,.32);

  --fx-trace-color:     rgba(204,10,40,.28);
  --fx-icegrid-h:       rgba(175,10,32,.08);
  --fx-icegrid-v:       rgba(88,0,112,.06);
  --fx-icegrid-opacity: 0.13;
}

/* ── Control · FBC Bureau Terminal ──────────────────────────────────── */
:root[data-vc-theme="control_fbc"] {
  --void:          #0a0a0a;
  --abyss:         #101010;
  --deep:          #181818;
  --chamber:       #202020;
  --altar:         #282828;
  --surface:       #303030;

  --text:          rgba(220,215,205,.92);
  --static:        rgba(205,200,190,.88);
  --bone:          rgba(238,232,218,.96);
  --fog:           rgba(155,150,140,.65);
  --dust:          rgba(105,100,92,.50);
  --muted:         rgba(75,72,66,.55);

  /* Gold slot → FBC file-folder amber */
  --gold:          #d4a830;
  --gold-bright:   #e8c050;
  --gold-pale:     rgba(255,235,175,.96);
  --gold-dim:      rgba(212,168,48,.55);
  --gold-glow:     rgba(212,168,48,.22);

  /* Blood slot → government-form red */
  --blood:         #802010;
  --blood-bright:  #b03020;
  --blood-glow:    rgba(128,32,16,.38);

  --border:        rgba(180,155,80,.18);
  --border-bright: rgba(200,175,100,.42);
  --rim:           rgba(160,135,65,.14);
  --line:          rgba(130,110,50,.09);

  --green:         rgba(80,160,80,.9);
  --violet:        rgba(140,130,180,.8);

  --sidebar-shell:         linear-gradient(180deg, rgba(10,10,10,.99), rgba(7,7,7,.99));
  --sidebar-border:        rgba(180,155,80,.13);
  --sidebar-active-bg:     rgba(212,168,48,.08);
  --sidebar-active-border: rgba(212,168,48,.24);

  --fx-trace-color:     rgba(212,168,48,.22);
  --fx-icegrid-h:       rgba(180,155,80,.07);
  --fx-icegrid-v:       rgba(130,110,50,.05);
  --fx-icegrid-opacity: 0.12;
}


/* ═══════════════════════════════════════════════════════════════════════
   ╔═ MASS EFFECT ══════════════════════════════════════════════════════╗
   ═══════════════════════════════════════════════════════════════════════ */

/* ── Mass Effect · Omni-Tool HUD ────────────────────────────────────── */
:root[data-vc-theme="me_omnitool"] {
  --void:          #050810;
  --abyss:         #080d18;
  --deep:          #0e1425;
  --chamber:       #141c35;
  --altar:         #1a2445;
  --surface:       #212d58;

  --text:          rgba(210,228,255,.93);
  --static:        rgba(192,215,250,.88);
  --bone:          rgba(230,242,255,.96);
  --fog:           rgba(130,165,230,.65);
  --dust:          rgba(80,115,195,.50);
  --muted:         rgba(55,88,165,.55);

  /* Gold slot → omni-tool orange holo */
  --gold:          #ff8c20;
  --gold-bright:   #ffa840;
  --gold-pale:     rgba(255,220,165,.96);
  --gold-dim:      rgba(255,140,32,.55);
  --gold-glow:     rgba(255,140,32,.28);

  /* Blood slot → Paragon blue / Renegade orange is via --gold */
  --blood:         #1040c0;
  --blood-bright:  #2060e8;
  --blood-glow:    rgba(16,64,192,.42);

  --border:        rgba(80,140,255,.18);
  --border-bright: rgba(100,165,255,.42);
  --rim:           rgba(60,120,240,.14);
  --line:          rgba(40,100,220,.09);

  --green:         #30d8c0;
  --violet:        rgba(180,160,255,.85);

  --sidebar-shell:         linear-gradient(180deg, rgba(5,8,16,.99), rgba(3,5,10,.99));
  --sidebar-border:        rgba(80,140,255,.14);
  --sidebar-active-bg:     rgba(255,140,32,.09);
  --sidebar-active-border: rgba(255,140,32,.28);

  --fx-trace-color:     rgba(255,140,32,.26);
  --fx-icegrid-h:       rgba(80,140,255,.08);
  --fx-icegrid-v:       rgba(40,100,220,.06);
  --fx-icegrid-opacity: 0.14;

  --me-paragon:    #3070ff;
  --me-renegade:   #ff4820;
}


/* ═══════════════════════════════════════════════════════════════════════
   ╔═ RESIDENT EVIL SUITE ══════════════════════════════════════════════╗
   ═══════════════════════════════════════════════════════════════════════ */

/* ── RE · Biohazard Lab ─────────────────────────────────────────────── */
:root[data-vc-theme="re_biohazard"] {
  --void:          #050808;
  --abyss:         #080c0c;
  --deep:          #0d1414;
  --chamber:       #121c1c;
  --altar:         #182424;
  --surface:       #1e2e2e;

  --text:          rgba(210,218,215,.92);
  --static:        rgba(192,202,200,.88);
  --bone:          rgba(228,235,232,.96);
  --fog:           rgba(128,145,142,.65);
  --dust:          rgba(82,98,95,.50);
  --muted:         rgba(58,74,71,.55);

  /* Gold slot → hazard alert yellow */
  --gold:          #e8c820;
  --gold-bright:   #f5d830;
  --gold-pale:     rgba(255,245,170,.96);
  --gold-dim:      rgba(232,200,32,.55);
  --gold-glow:     rgba(232,200,32,.26);

  /* Blood slot → biohazard warning red */
  --blood:         #c01010;
  --blood-bright:  #e02020;
  --blood-glow:    rgba(192,16,16,.42);

  --border:        rgba(120,148,142,.16);
  --border-bright: rgba(148,172,165,.36);
  --rim:           rgba(100,128,122,.12);
  --line:          rgba(78,105,100,.08);

  --green:         #28c870;
  --violet:        rgba(128,90,168,.8);

  --sidebar-shell:         linear-gradient(180deg, rgba(5,8,8,.99), rgba(3,5,5,.99));
  --sidebar-border:        rgba(120,148,142,.12);
  --sidebar-active-bg:     rgba(232,200,32,.08);
  --sidebar-active-border: rgba(232,200,32,.24);

  --fx-trace-color:     rgba(232,200,32,.24);
  --fx-icegrid-h:       rgba(60,180,140,.07);
  --fx-icegrid-v:       rgba(36,135,105,.05);
  --fx-icegrid-opacity: 0.12;
}

/* ── RE · Umbrella Corp Clinical ────────────────────────────────────── */
:root[data-vc-theme="re_umbrella"] {
  --void:          #080808;
  --abyss:         #0e0e0e;
  --deep:          #161616;
  --chamber:       #1e1e1e;
  --altar:         #262626;
  --surface:       #2e2e2e;

  --text:          rgba(225,222,218,.93);
  --static:        rgba(210,207,203,.88);
  --bone:          rgba(242,240,236,.96);
  --fog:           rgba(158,155,151,.65);
  --dust:          rgba(108,106,102,.50);
  --muted:         rgba(78,76,73,.55);

  /* Gold slot → Umbrella corporate red */
  --gold:          #cc1a1a;
  --gold-bright:   #e52020;
  --gold-pale:     rgba(255,200,200,.96);
  --gold-dim:      rgba(204,26,26,.55);
  --gold-glow:     rgba(204,26,26,.26);

  --blood:         #8a0505;
  --blood-bright:  #b80a0a;
  --blood-glow:    rgba(138,5,5,.40);

  --border:        rgba(180,20,20,.20);
  --border-bright: rgba(220,30,30,.45);
  --rim:           rgba(160,18,18,.16);
  --line:          rgba(130,14,14,.10);

  --green:         rgba(50,180,50,.85);
  --violet:        rgba(130,100,180,.75);

  --sidebar-shell:         linear-gradient(180deg, rgba(8,8,8,.99), rgba(5,5,5,.99));
  --sidebar-border:        rgba(180,20,20,.15);
  --sidebar-active-bg:     rgba(204,26,26,.08);
  --sidebar-active-border: rgba(204,26,26,.28);

  --fx-trace-color:     rgba(204,26,26,.26);
  --fx-icegrid-h:       rgba(180,20,20,.08);
  --fx-icegrid-v:       rgba(130,14,14,.06);
  --fx-icegrid-opacity: 0.12;
}

/* ── RE · Safe Room Typewriter ──────────────────────────────────────── */
:root[data-vc-theme="re_saferoom"] {
  --void:          #100c08;
  --abyss:         #181210;
  --deep:          #201a14;
  --chamber:       #2a2218;
  --altar:         #342c20;
  --surface:       #40352a;

  --text:          rgba(235,228,210,.93);
  --static:        rgba(220,214,196,.88);
  --bone:          rgba(248,240,222,.96);
  --fog:           rgba(168,158,138,.65);
  --dust:          rgba(115,107,92,.50);
  --muted:         rgba(82,76,65,.55);

  /* Gold slot → warm lamp amber */
  --gold:          #c89050;
  --gold-bright:   #e0aa68;
  --gold-pale:     rgba(255,232,190,.96);
  --gold-dim:      rgba(200,144,80,.55);
  --gold-glow:     rgba(200,144,80,.24);

  --blood:         #782010;
  --blood-bright:  #a02c18;
  --blood-glow:    rgba(120,32,16,.38);

  --border:        rgba(180,140,85,.20);
  --border-bright: rgba(210,168,105,.44);
  --rim:           rgba(160,122,72,.16);
  --line:          rgba(130,100,58,.10);

  --green:         rgba(70,165,70,.9);
  --violet:        rgba(150,120,185,.8);

  --sidebar-shell:         linear-gradient(180deg, rgba(14,10,8,.99), rgba(10,7,5,.99));
  --sidebar-border:        rgba(180,140,85,.14);
  --sidebar-active-bg:     rgba(200,144,80,.08);
  --sidebar-active-border: rgba(200,144,80,.24);

  --fx-trace-color:     rgba(200,144,80,.22);
  --fx-icegrid-h:       rgba(180,140,85,.06);
  --fx-icegrid-v:       rgba(130,100,58,.04);
  --fx-icegrid-opacity: 0.09;
}

/* ── RE · VHS Found Footage (RE7) ───────────────────────────────────── */
:root[data-vc-theme="re_vhs"] {
  --void:          #040404;
  --abyss:         #090909;
  --deep:          #101010;
  --chamber:       #181818;
  --altar:         #202020;
  --surface:       #282828;

  --text:          rgba(215,215,200,.92);
  --static:        rgba(198,198,184,.88);
  --bone:          rgba(235,235,220,.96);
  --fog:           rgba(145,145,132,.65);
  --dust:          rgba(95,95,86,.50);
  --muted:         rgba(68,68,62,.55);

  /* Gold slot → VHS tape-white / washed phosphor */
  --gold:          #d8d5c8;
  --gold-bright:   #eceae0;
  --gold-pale:     rgba(248,246,238,.96);
  --gold-dim:      rgba(216,213,200,.55);
  --gold-glow:     rgba(216,213,200,.20);

  /* Blood slot → REC indicator red */
  --blood:         #c00808;
  --blood-bright:  #e01010;
  --blood-glow:    rgba(192,8,8,.42);

  --border:        rgba(180,180,165,.15);
  --border-bright: rgba(210,210,195,.35);
  --rim:           rgba(155,155,142,.12);
  --line:          rgba(125,125,114,.08);

  --green:         rgba(70,200,70,.8);
  --violet:        rgba(200,180,255,.75);

  --sidebar-shell:         linear-gradient(180deg, rgba(4,4,4,.99), rgba(3,3,3,.99));
  --sidebar-border:        rgba(180,180,165,.11);
  --sidebar-active-bg:     rgba(216,213,200,.06);
  --sidebar-active-border: rgba(216,213,200,.20);

  --fx-trace-color:     rgba(216,213,200,.20);
  --fx-icegrid-h:       rgba(155,155,142,.05);
  --fx-icegrid-v:       rgba(192,8,8,.04);
  --fx-icegrid-opacity: 0.09;
}


/* ═══════════════════════════════════════════════════════════════════════
   ╔═ KOTOR ════════════════════════════════════════════════════════════╗
   ═══════════════════════════════════════════════════════════════════════ */

/* ── KOTOR · Holocron / Jedi Archive ────────────────────────────────── */
:root[data-vc-theme="kotor_holocron"] {
  --void:          #0c0a06;
  --abyss:         #151008;
  --deep:          #1e170c;
  --chamber:       #271e12;
  --altar:         #302618;
  --surface:       #3a2f1e;

  --text:          rgba(245,238,218,.93);
  --static:        rgba(232,224,202,.88);
  --bone:          rgba(255,248,232,.96);
  --fog:           rgba(185,168,130,.65);
  --dust:          rgba(135,118,82,.50);
  --muted:         rgba(98,84,55,.55);

  /* Gold slot → holocron amber, Republic gold, warm Force light */
  --gold:          #d4a040;
  --gold-bright:   #e8b855;
  --gold-pale:     rgba(255,238,195,.96);
  --gold-dim:      rgba(212,160,64,.55);
  --gold-glow:     rgba(212,160,64,.24);

  /* Blood slot → Sith red, dark side corruption */
  --blood:         #8b3a1a;
  --blood-bright:  #b04d28;
  --blood-glow:    rgba(139,58,26,.40);

  --border:        rgba(200,165,100,.16);
  --border-bright: rgba(225,190,125,.38);
  --rim:           rgba(180,145,85,.12);
  --line:          rgba(152,120,65,.08);

  --green:         #70a860;
  --violet:        rgba(165,140,210,.80);

  --sidebar-shell:         linear-gradient(180deg, rgba(12,10,6,.99), rgba(8,7,4,.99));
  --sidebar-border:        rgba(200,165,100,.13);
  --sidebar-active-bg:     rgba(212,160,64,.08);
  --sidebar-active-border: rgba(212,160,64,.25);

  --fx-trace-color:     rgba(212,160,64,.22);
  --fx-icegrid-h:       rgba(200,165,100,.06);
  --fx-icegrid-v:       rgba(139,58,26,.04);
  --fx-icegrid-opacity: 0.11;
}


/* ═══════════════════════════════════════════════════════════════════════
   ╔═ LEGEND OF ZELDA ══════════════════════════════════════════════════╗
   ═══════════════════════════════════════════════════════════════════════ */

/* ── Zelda · Sheikah Slate / Ancient Tech ────────────────────────────── */
:root[data-vc-theme="zelda_sheikah"] {
  --void:          #050608;
  --abyss:         #080a10;
  --deep:          #0e1018;
  --chamber:       #141722;
  --altar:         #1a1e2e;
  --surface:       #20253c;

  --text:          rgba(215,225,248,.93);
  --static:        rgba(195,210,242,.88);
  --bone:          rgba(230,238,255,.96);
  --fog:           rgba(128,150,218,.65);
  --dust:          rgba(80,105,185,.50);
  --muted:         rgba(55,78,160,.55);

  /* Gold slot → Sheikah rune cyan-blue */
  --gold:          #40c8e8;
  --gold-bright:   #60e0ff;
  --gold-pale:     rgba(185,238,255,.96);
  --gold-dim:      rgba(64,200,232,.55);
  --gold-glow:     rgba(64,200,232,.27);

  /* Blood slot → Sheikah eye red */
  --blood:         #c01820;
  --blood-bright:  #e02838;
  --blood-glow:    rgba(192,24,32,.40);

  --border:        rgba(60,185,235,.17);
  --border-bright: rgba(80,210,255,.40);
  --rim:           rgba(44,165,215,.13);
  --line:          rgba(30,140,195,.08);

  --green:         #40e8a0;
  --violet:        rgba(160,130,255,.85);

  --sidebar-shell:         linear-gradient(180deg, rgba(5,6,9,.99), rgba(4,5,7,.99));
  --sidebar-border:        rgba(60,185,235,.13);
  --sidebar-active-bg:     rgba(64,200,232,.08);
  --sidebar-active-border: rgba(64,200,232,.26);

  --fx-trace-color:     rgba(64,200,232,.25);
  --fx-icegrid-h:       rgba(60,185,235,.07);
  --fx-icegrid-v:       rgba(30,140,195,.05);
  --fx-icegrid-opacity: 0.13;
}


/* ═══════════════════════════════════════════════════════════════════════
   ╔═ MARATHON (2026) ══════════════════════════════════════════════════╗
   ═══════════════════════════════════════════════════════════════════════ */

/* ── Marathon · Runner HUD / Neon Void Terminal ──────────────────────── */
:root[data-vc-theme="marathon_hud"] {
  --void:          #050507;
  --abyss:         #08080d;
  --deep:          #0d0e16;
  --chamber:       #131420;
  --altar:         #191a2a;
  --surface:       #202135;

  --text:          rgba(218,220,240,.93);
  --static:        rgba(200,202,225,.88);
  --bone:          rgba(232,234,252,.96);
  --fog:           rgba(135,138,175,.65);
  --dust:          rgba(88,90,135,.50);
  --muted:         rgba(62,64,108,.55);

  /* Gold slot → Marathon neon orange-red */
  --gold:          #ff5a20;
  --gold-bright:   #ff7840;
  --gold-pale:     rgba(255,215,195,.96);
  --gold-dim:      rgba(255,90,32,.55);
  --gold-glow:     rgba(255,90,32,.30);

  /* Blood slot → void deep blue */
  --blood:         #0820a0;
  --blood-bright:  #1438d0;
  --blood-glow:    rgba(8,32,160,.45);

  --border:        rgba(255,90,32,.18);
  --border-bright: rgba(255,120,60,.45);
  --rim:           rgba(240,75,25,.14);
  --line:          rgba(200,60,18,.09);

  --green:         #30f0d0;
  --violet:        rgba(180,160,255,.85);

  --sidebar-shell:         linear-gradient(180deg, rgba(5,5,7,.99), rgba(3,3,5,.99));
  --sidebar-border:        rgba(255,90,32,.14);
  --sidebar-active-bg:     rgba(255,90,32,.10);
  --sidebar-active-border: rgba(255,90,32,.30);

  --fx-trace-color:     rgba(255,90,32,.28);
  --fx-icegrid-h:       rgba(255,90,32,.08);
  --fx-icegrid-v:       rgba(8,32,160,.06);
  --fx-icegrid-opacity: 0.14;
}


/* ═══════════════════════════════════════════════════════════════════════
   ╔═ HALO 2 ═══════════════════════════════════════════════════════════╗
   ═══════════════════════════════════════════════════════════════════════ */

/* ── Halo 2 · UNSC HUD + Covenant Glow ──────────────────────────────── */
:root[data-vc-theme="halo2_unsc"] {
  --void:          #060808;
  --abyss:         #0a0d0d;
  --deep:          #101515;
  --chamber:       #161d1d;
  --altar:         #1c2525;
  --surface:       #222e2e;

  --text:          rgba(210,228,220,.93);
  --static:        rgba(192,215,205,.88);
  --bone:          rgba(230,242,235,.96);
  --fog:           rgba(120,158,148,.65);
  --dust:          rgba(75,115,106,.50);
  --muted:         rgba(52,88,80,.55);

  /* Gold slot → UNSC HUD green */
  --gold:          #30c870;
  --gold-bright:   #48e088;
  --gold-pale:     rgba(185,255,220,.96);
  --gold-dim:      rgba(48,200,112,.55);
  --gold-glow:     rgba(48,200,112,.26);

  /* Blood slot → Covenant plasma violet */
  --blood:         #8020d0;
  --blood-bright:  #a840f0;
  --blood-glow:    rgba(128,32,208,.40);

  --border:        rgba(48,200,112,.17);
  --border-bright: rgba(72,224,136,.40);
  --rim:           rgba(36,178,96,.13);
  --line:          rgba(24,155,80,.08);

  --green:         #40f080;
  --violet:        rgba(180,120,255,.85);

  --sidebar-shell:         linear-gradient(180deg, rgba(6,8,8,.99), rgba(4,6,6,.99));
  --sidebar-border:        rgba(48,200,112,.13);
  --sidebar-active-bg:     rgba(48,200,112,.08);
  --sidebar-active-border: rgba(48,200,112,.26);

  --fx-trace-color:     rgba(48,200,112,.24);
  --fx-icegrid-h:       rgba(48,200,112,.07);
  --fx-icegrid-v:       rgba(128,32,208,.05);
  --fx-icegrid-opacity: 0.13;

  --halo-cortana:  #5080ff;
  --halo-plasma:   #a840f0;
}


/* ═══════════════════════════════════════════════════════════════════════
   ╔═ MARIO ════════════════════════════════════════════════════════════╗
   ═══════════════════════════════════════════════════════════════════════ */

/* ── Mario · Toybox Clean ───────────────────────────────────────────── */
:root[data-vc-theme="mario_toybox"] {
  --void:          #fafaf8;
  --abyss:         #f0f0ec;
  --deep:          #e8e8e4;
  --chamber:       #f8f8f6;
  --altar:         #ffffff;
  --surface:       #ffffff;
  --bg:            #fafaf8;
  --bg2:           #f0f0ec;
  --panel:         #f8f8f6;
  --panel2:        #ffffff;

  --text:          #1a1a1a;
  --static:        #2a2a2a;
  --bone:          #1a1a1a;
  --fog:           rgba(40,40,40,.60);
  --dust:          rgba(40,40,40,.42);
  --muted:         rgba(40,40,40,.30);

  /* Gold slot → Mario coin gold */
  --gold:          #e84830;
  --gold-bright:   #ff5c40;
  --gold-pale:     rgba(255,200,180,.98);
  --gold-dim:      rgba(232,72,48,.55);
  --gold-glow:     rgba(232,72,48,.20);

  /* Blood slot → question block yellow */
  --blood:         #e8b820;
  --blood-bright:  #f5cc30;
  --blood-glow:    rgba(232,184,32,.30);

  --border:        rgba(50,50,50,.12);
  --border-bright: rgba(50,50,50,.28);
  --rim:           rgba(50,50,50,.10);
  --line:          rgba(50,50,50,.07);

  --green:         #2cb848;
  --violet:        rgba(120,80,220,.8);

  --sidebar-shell:         linear-gradient(180deg, rgba(248,248,246,.99), rgba(240,240,236,.98));
  --sidebar-border:        rgba(50,50,50,.10);
  --sidebar-active-bg:     rgba(232,72,48,.07);
  --sidebar-active-border: rgba(232,72,48,.20);

  --fx-trace-color:     rgba(232,72,48,.18);
  --fx-icegrid-h:       rgba(50,50,50,.04);
  --fx-icegrid-v:       rgba(50,50,50,.03);
  --fx-icegrid-opacity: 0.07;
}

/* Light-theme text overrides for Mario */
:root[data-vc-theme="mario_toybox"] body,
:root[data-vc-theme="mario_toybox"] .sidebar,
:root[data-vc-theme="mario_toybox"] .sidebar .nav-item { color: var(--text); }


/* ═══════════════════════════════════════════════════════════════════════
   ╔═ DRAGON AGE ═══════════════════════════════════════════════════════╗
   ═══════════════════════════════════════════════════════════════════════ */

/* ── Dragon Age · Fade / Veilfire Codex ─────────────────────────────── */
:root[data-vc-theme="da_veilfire"] {
  --void:          #0a0806;
  --abyss:         #131008;
  --deep:          #1c1610;
  --chamber:       #261e16;
  --altar:         #30261c;
  --surface:       #3c3024;

  --text:          rgba(238,228,208,.92);
  --static:        rgba(225,215,192,.87);
  --bone:          rgba(252,242,225,.95);
  --fog:           rgba(185,168,135,.63);
  --dust:          rgba(135,118,85,.48);
  --muted:         rgba(98,82,55,.52);

  /* Gold slot → darkspawn fire amber, ember orange */
  --gold:          #c87828;
  --gold-bright:   #e09040;
  --gold-pale:     rgba(255,235,195,.95);
  --gold-dim:      rgba(200,120,40,.52);
  --gold-glow:     rgba(200,120,40,.20);

  /* Blood slot → Blight corruption, darkspawn crimson */
  --blood:         #5a1a08;
  --blood-bright:  #7a2510;
  --blood-glow:    rgba(90,26,8,.50);

  --border:        rgba(188,155,105,.15);
  --border-bright: rgba(215,180,128,.35);
  --rim:           rgba(168,135,88,.11);
  --line:          rgba(140,110,68,.07);

  --green:         #5a8840;
  --violet:        rgba(148,108,168,.78);

  --sidebar-shell:         linear-gradient(180deg, rgba(10,8,6,.99), rgba(6,5,4,.99));
  --sidebar-border:        rgba(188,155,105,.12);
  --sidebar-active-bg:     rgba(200,120,40,.07);
  --sidebar-active-border: rgba(200,120,40,.22);

  --fx-trace-color:     rgba(200,120,40,.20);
  --fx-icegrid-h:       rgba(188,155,105,.05);
  --fx-icegrid-v:       rgba(90,26,8,.04);
  --fx-icegrid-opacity: 0.10;
}


/* ═══════════════════════════════════════════════════════════════════════
   ╔═ FALLOUT ══════════════════════════════════════════════════════════╗
   ═══════════════════════════════════════════════════════════════════════ */

/* ── Fallout · Pip-Boy Terminal ─────────────────────────────────────── */
:root[data-vc-theme="fallout_pipboy"] {
  --void:          #020503;
  --abyss:         #040804;
  --deep:          #060c06;
  --chamber:       #091209;
  --altar:         #0c180c;
  --surface:       #0f1e0f;

  --text:          rgba(88,255,106,.92);
  --static:        rgba(72,240,90,.88);
  --bone:          rgba(110,255,125,.96);
  --fog:           rgba(50,190,65,.65);
  --dust:          rgba(32,140,45,.55);
  --muted:         rgba(22,110,34,.50);

  /* Gold slot → Pip-Boy phosphor green */
  --gold:          #4eff58;
  --gold-bright:   #70ff7a;
  --gold-pale:     rgba(180,255,185,.96);
  --gold-dim:      rgba(78,255,88,.55);
  --gold-glow:     rgba(78,255,88,.28);

  /* Blood slot → Rad warning amber */
  --blood:         #d08010;
  --blood-bright:  #f09020;
  --blood-glow:    rgba(208,128,16,.40);

  --border:        rgba(50,200,60,.18);
  --border-bright: rgba(70,230,82,.44);
  --rim:           rgba(38,178,50,.14);
  --line:          rgba(26,150,38,.09);

  --green:         #4eff58;
  --violet:        rgba(150,255,160,.7);

  --sidebar-shell:         linear-gradient(180deg, rgba(2,5,3,.99), rgba(1,3,2,.99));
  --sidebar-border:        rgba(50,200,60,.14);
  --sidebar-active-bg:     rgba(78,255,88,.08);
  --sidebar-active-border: rgba(78,255,88,.28);

  --fx-trace-color:     rgba(78,255,88,.26);
  --fx-icegrid-h:       rgba(50,200,60,.09);
  --fx-icegrid-v:       rgba(26,150,38,.07);
  --fx-icegrid-opacity: 0.16;

  --pip-green:     #4eff58;
  --pip-amber:     #f09020;
}


/* ═══════════════════════════════════════════════════════════════════════
   ╔═ KOTOR II ══════════════════════════════════════════════════════════╗
   ═══════════════════════════════════════════════════════════════════════ */

:root[data-vc-theme="kotor2_sith"] {
  --void:          #080a0e;
  --abyss:         #0e1018;
  --deep:          #141822;
  --chamber:       #1a1e2c;
  --altar:         #202438;
  --surface:       #272c44;

  --text:          rgba(210,218,238,.90);
  --static:        rgba(192,202,225,.85);
  --bone:          rgba(230,238,255,.94);
  --fog:           rgba(128,140,180,.62);
  --dust:          rgba(85,95,135,.48);
  --muted:         rgba(60,68,105,.52);

  /* Gold slot → cold steel grey, the wound */
  --gold:          #8090b0;
  --gold-bright:   #a0b0cc;
  --gold-pale:     rgba(195,210,235,.94);
  --gold-dim:      rgba(128,144,176,.50);
  --gold-glow:     rgba(128,144,176,.14);

  /* Blood slot → Sith corruption dark red */
  --blood:         #601010;
  --blood-bright:  #881818;
  --blood-glow:    rgba(96,16,16,.45);

  --border:        rgba(105,120,165,.15);
  --border-bright: rgba(128,145,195,.33);
  --rim:           rgba(88,100,148,.11);
  --line:          rgba(65,78,122,.07);

  --green:         #5080a0;
  --violet:        rgba(140,120,200,.78);

  --sidebar-shell:         linear-gradient(180deg, rgba(8,10,14,.99), rgba(5,7,10,.99));
  --sidebar-border:        rgba(105,120,165,.12);
  --sidebar-active-bg:     rgba(128,144,176,.07);
  --sidebar-active-border: rgba(128,144,176,.20);

  --fx-trace-color:     rgba(128,144,176,.18);
  --fx-icegrid-h:       rgba(105,120,165,.05);
  --fx-icegrid-v:       rgba(96,16,16,.04);
  --fx-icegrid-opacity: 0.09;
}


/* ═══════════════════════════════════════════════════════════════════════
   ╔═ MARATHON FACTIONS ═════════════════════════════════════════════════╗
   ═══════════════════════════════════════════════════════════════════════ */

/* ── Arachne — void black + predator crimson ─────────────────────────── */
:root[data-vc-theme="marathon_arachne"] {
  --void:          #040202;
  --abyss:         #0a0404;
  --deep:          #120606;
  --chamber:       #1a0808;
  --altar:         #220a0a;
  --surface:       #2c0e0e;

  --text:          rgba(242,225,225,.92);
  --static:        rgba(228,208,208,.87);
  --bone:          rgba(255,242,242,.96);
  --fog:           rgba(192,155,155,.63);
  --dust:          rgba(145,105,105,.48);
  --muted:         rgba(105,70,70,.52);

  /* Gold slot → Arachne BOLD crimson signal */
  --gold:          #e00000;
  --gold-bright:   #ff1010;
  --gold-pale:     rgba(255,210,210,.98);
  --gold-dim:      rgba(224,0,0,.65);
  --gold-glow:     rgba(224,0,0,.30);

  /* Blood slot → deep void red */
  --blood:         #8a0000;
  --blood-bright:  #b00000;
  --blood-glow:    rgba(138,0,0,.55);

  --border:        rgba(224,0,0,.25);
  --border-bright: rgba(255,20,20,.48);
  --rim:           rgba(200,0,0,.18);
  --line:          rgba(168,0,0,.10);

  --green:         #5a0000;
  --violet:        rgba(200,0,0,.85);

  --sidebar-shell:         linear-gradient(180deg, rgba(4,2,2,.99), rgba(2,1,1,.99));
  --sidebar-border:        rgba(168,28,28,.13);
  --sidebar-active-bg:     rgba(200,8,8,.08);
  --sidebar-active-border: rgba(200,8,8,.28);

  --fx-trace-color:     rgba(200,8,8,.25);
  --fx-icegrid-h:       rgba(168,28,28,.07);
  --fx-icegrid-v:       rgba(128,0,0,.05);
  --fx-icegrid-opacity: 0.12;
}

/* ── Traxus — charcoal gunmetal + construction orange ────────────────── */
:root[data-vc-theme="marathon_traxus"] {
  --void:          #0a0a0a;
  --abyss:         #121212;
  --deep:          #1a1a1a;
  --chamber:       #222222;
  --altar:         #2a2a2a;
  --surface:       #323232;

  --text:          rgba(255,248,238,.95);
  --static:        rgba(248,238,225,.92);
  --bone:          rgba(255,255,250,.98);
  --fog:           rgba(255,200,140,.78);
  --dust:          rgba(255,170,90,.65);
  --muted:         rgba(255,140,50,.55);

  /* Gold slot → Traxus BOLD construction orange */
  --gold:          #ff6600;
  --gold-bright:   #ff8822;
  --gold-pale:     rgba(255,225,195,.96);
  --gold-dim:      rgba(255,106,0,.52);
  --gold-glow:     rgba(255,106,0,.22);

  /* Blood slot → deep charcoal */
  --blood:         #2a2a2a;
  --blood-bright:  #3a3a3a;
  --blood-glow:    rgba(42,42,42,.60);

  --border:        rgba(255,106,0,.28);
  --border-bright: rgba(255,140,40,.55);
  --rim:           rgba(255,100,0,.20);
  --line:          rgba(220,80,0,.12);

  --green:         #cc6600;
  --violet:        rgba(255,120,20,.85);

  --sidebar-shell:         linear-gradient(180deg, rgba(10,10,10,.99), rgba(6,6,6,.99));
  --sidebar-border:        rgba(220,88,0,.14);
  --sidebar-active-bg:     rgba(255,106,0,.08);
  --sidebar-active-border: rgba(255,106,0,.28);

  --fx-trace-color:     rgba(255,106,0,.25);
  --fx-icegrid-h:       rgba(220,88,0,.07);
  --fx-icegrid-v:       rgba(42,42,42,.05);
  --fx-icegrid-opacity: 0.12;
}

/* ── CyberAcme — near-void + electric blue + toxic neon green ────────── */
:root[data-vc-theme="marathon_cyberacme"] {
  --void:          #020408;
  --abyss:         #04080e;
  --deep:          #080e18;
  --chamber:       #0c1420;
  --altar:         #101a2a;
  --surface:       #142035;

  --text:          rgba(220,255,230,.96);
  --static:        rgba(200,248,215,.94);
  --bone:          rgba(240,255,245,.98);
  --fog:           rgba(120,230,150,.80);
  --dust:          rgba(80,200,110,.65);
  --muted:         rgba(50,165,80,.55);

  /* Gold slot → CyberAcme BLAZING neon green */
  --gold:          #00ff55;
  --gold-bright:   #40ff80;
  --gold-pale:     rgba(220,255,235,.98);
  --gold-dim:      rgba(0,255,85,.65);
  --gold-glow:     rgba(0,255,85,.30);

  /* Blood slot → electric blue data stream */
  --blood:         #0040ff;
  --blood-bright:  #2060ff;
  --blood-glow:    rgba(0,64,255,.45);

  --border:        rgba(0,200,70,.16);
  --border-bright: rgba(20,230,90,.35);
  --rim:           rgba(0,175,60,.11);
  --line:          rgba(0,145,48,.07);

  --green:         #00e050;
  --violet:        rgba(40,100,255,.80);

  --sidebar-shell:         linear-gradient(180deg, rgba(2,4,8,.99), rgba(1,2,5,.99));
  --sidebar-border:        rgba(0,175,60,.13);
  --sidebar-active-bg:     rgba(0,224,80,.07);
  --sidebar-active-border: rgba(0,224,80,.25);

  --fx-trace-color:     rgba(0,224,80,.22);
  --fx-icegrid-h:       rgba(0,175,60,.06);
  --fx-icegrid-v:       rgba(16,64,255,.05);
  --fx-icegrid-opacity: 0.13;
}

/* ── NuCaloric — deep void + neon magenta / hot pink ─────────────────── */
:root[data-vc-theme="marathon_nucaloric"] {
  --void:          #1a0020;
  --abyss:         #240030;
  --deep:          #300040;
  --chamber:       #3c0050;
  --altar:         #4a0060;
  --surface:       #5a0075;

  --text:          rgba(255,240,255,.96);
  --static:        rgba(255,220,255,.94);
  --bone:          rgba(255,255,255,.98);
  --fog:           rgba(255,180,240,.80);
  --dust:          rgba(255,140,220,.65);
  --muted:         rgba(240,100,200,.55);

  /* Gold slot → FULL BLAST neon magenta */
  --gold:          #ff00aa;
  --gold-bright:   #ff40cc;
  --gold-pale:     rgba(255,255,255,.98);
  --gold-dim:      rgba(255,0,170,.70);
  --gold-glow:     rgba(255,0,170,.35);

  /* Blood slot → hot electric pink */
  --blood:         #ff0080;
  --blood-bright:  #ff30a0;
  --blood-glow:    rgba(255,0,128,.45);

  --border:        rgba(255,0,170,.30);
  --border-bright: rgba(255,60,200,.55);
  --rim:           rgba(255,0,170,.22);
  --line:          rgba(255,0,170,.12);

  --green:         #cc00ff;
  --violet:        rgba(255,100,220,.90);

  --sidebar-shell:         linear-gradient(180deg, rgba(26,0,32,.99), rgba(18,0,22,.99));
  --sidebar-border:        rgba(255,0,170,.25);
  --sidebar-active-bg:     rgba(255,0,170,.15);
  --sidebar-active-border: rgba(255,0,170,.50);

  --fx-trace-color:     rgba(255,0,170,.40);
  --fx-icegrid-h:       rgba(255,0,170,.12);
  --fx-icegrid-v:       rgba(255,0,128,.08);
  --fx-icegrid-opacity: 0.18;
}

/* ── Sekiguchi — near-black + precision silver-white + cool cyan ──────── */
:root[data-vc-theme="marathon_sekiguchi"] {
  --void:          #f0f4f8;
  --abyss:         #e4eaf0;
  --deep:          #d8e2ec;
  --chamber:       #ccd8e6;
  --altar:         #c0cede;
  --surface:       #b4c4d6;

  --text:          rgba(8,16,28,.92);
  --static:        rgba(14,24,40,.88);
  --bone:          rgba(4,10,20,.96);
  --fog:           rgba(30,60,100,.70);
  --dust:          rgba(50,90,140,.58);
  --muted:         rgba(70,115,168,.52);

  /* Gold slot → deep navy corporate, Sekiguchi precision */
  --gold:          #0a2850;
  --gold-bright:   #0e3870;
  --gold-pale:     rgba(4,10,20,.96);
  --gold-dim:      rgba(10,40,80,.65);
  --gold-glow:     rgba(10,40,80,.20);

  /* Blood slot → Sekiguchi red accent (corporate mark) */
  --blood:         #cc2020;
  --blood-bright:  #e83030;
  --blood-glow:    rgba(204,32,32,.30);

  --border:        rgba(10,40,80,.18);
  --border-bright: rgba(10,40,80,.38);
  --rim:           rgba(10,40,80,.12);
  --line:          rgba(10,40,80,.08);

  --green:         #006688;
  --violet:        rgba(40,80,160,.80);

  --sidebar-shell:         linear-gradient(180deg, rgba(232,240,248,.99), rgba(220,232,244,.99));
  --sidebar-border:        rgba(10,40,80,.14);
  --sidebar-active-bg:     rgba(10,40,80,.08);
  --sidebar-active-border: rgba(10,40,80,.30);

  --fx-trace-color:     rgba(10,40,80,.25);
  --fx-icegrid-h:       rgba(10,40,80,.07);
  --fx-icegrid-v:       rgba(204,32,32,.04);
  --fx-icegrid-opacity: 0.10;
}

/* Fallout phosphor active-badge */
:root[data-vc-theme="fallout_pipboy"] .vc-theme-active {
  border-color: rgba(78,255,88,.75) !important;
  background:   rgba(78,255,88,.12) !important;
  color:        #4eff58 !important;
  box-shadow:   0 0 14px rgba(78,255,88,.35), 0 0 0 1px rgba(78,255,88,.18) inset, 0 2px 6px rgba(0,0,0,.6) !important;
  text-shadow:  0 0 10px rgba(78,255,88,.75) !important;
}

/* Fallout body phosphor tint on cards */
:root[data-vc-theme="fallout_pipboy"] .result-card,
:root[data-vc-theme="fallout_pipboy"] .lib-card,
:root[data-vc-theme="fallout_pipboy"] .settings-section {
  box-shadow: 0 0 0 1px rgba(78,255,88,.06) inset;
}


/* ═══════════════════════════════════════════════════════════════════════
   §  ACTIVE BADGE OVERRIDES (themed glow per-IP)
   ═══════════════════════════════════════════════════════════════════════ */

/* AW2 Noir — tungsten amber */
:root[data-vc-theme="aw2_noir"] .vc-theme-active {
  border-color: rgba(212,168,75,.70) !important;
  background:   rgba(212,168,75,.13) !important;
  color:        #d4a84b !important;
  box-shadow:   0 0 12px rgba(212,168,75,.30), 0 0 0 1px rgba(212,168,75,.16) inset, 0 2px 6px rgba(0,0,0,.6) !important;
  text-shadow:  0 0 10px rgba(212,168,75,.70) !important;
}

/* AW2 Cult — sap gold */
:root[data-vc-theme="aw2_cult"] .vc-theme-active {
  border-color: rgba(200,160,64,.70) !important;
  background:   rgba(200,160,64,.13) !important;
  color:        #c8a040 !important;
  box-shadow:   0 0 12px rgba(200,160,64,.30), 0 0 0 1px rgba(200,160,64,.16) inset, 0 2px 6px rgba(0,0,0,.6) !important;
  text-shadow:  0 0 10px rgba(200,160,64,.70) !important;
}

/* AW2 Saga — evidence amber */
:root[data-vc-theme="aw2_saga"] .vc-theme-active {
  border-color: rgba(212,136,10,.72) !important;
  background:   rgba(212,136,10,.13) !important;
  color:        #d4880a !important;
  box-shadow:   0 0 14px rgba(212,136,10,.32), 0 0 0 1px rgba(212,136,10,.18) inset, 0 2px 6px rgba(0,0,0,.6) !important;
  text-shadow:  0 0 10px rgba(212,136,10,.72) !important;
}

/* AW2 Manuscript — parchment sepia */
:root[data-vc-theme="aw2_manuscript"] .vc-theme-active {
  border-color: rgba(200,160,96,.72) !important;
  background:   rgba(200,160,96,.13) !important;
  color:        #c8a060 !important;
  box-shadow:   0 0 14px rgba(200,160,96,.30), 0 0 0 1px rgba(200,160,96,.16) inset, 0 2px 6px rgba(0,0,0,.6) !important;
  text-shadow:  0 0 10px rgba(200,160,96,.70) !important;
}

/* AW2 Old Gods — neon magenta */
:root[data-vc-theme="aw2_oldgods"] .vc-theme-active {
  border-color: rgba(232,72,0,.72) !important;
  background:   rgba(232,72,0,.13) !important;
  color:        #e84800 !important;
  box-shadow:   0 0 14px rgba(232,72,0,.35), 0 0 0 1px rgba(232,72,0,.18) inset, 0 2px 6px rgba(0,0,0,.6) !important;
  text-shadow:  0 0 10px rgba(232,72,0,.72) !important;
}

/* Control Hiss — signal red */
:root[data-vc-theme="control_hiss"] .vc-theme-active {
  border-color: rgba(255,26,64,.75) !important;
  background:   rgba(255,26,64,.13) !important;
  color:        #ff1a40 !important;
  box-shadow:   0 0 14px rgba(255,26,64,.40), 0 0 0 1px rgba(255,26,64,.22) inset, 0 2px 6px rgba(0,0,0,.6) !important;
  text-shadow:  0 0 10px rgba(255,26,64,.75) !important;
}

/* Control Polaris — guiding star gold */
:root[data-vc-theme="control_polaris"] .vc-theme-active {
  border-color: rgba(240,216,120,.72) !important;
  background:   rgba(240,216,120,.13) !important;
  color:        #f0d878 !important;
  box-shadow:   0 0 14px rgba(240,216,120,.35), 0 0 0 1px rgba(240,216,120,.18) inset, 0 2px 6px rgba(0,0,0,.6) !important;
  text-shadow:  0 0 10px rgba(240,216,120,.72) !important;
}

/* Mass Effect — omni orange */
:root[data-vc-theme="me_omnitool"] .vc-theme-active {
  border-color: rgba(255,140,32,.72) !important;
  background:   rgba(255,140,32,.13) !important;
  color:        #ff8c20 !important;
  box-shadow:   0 0 14px rgba(255,140,32,.35), 0 0 0 1px rgba(255,140,32,.18) inset, 0 2px 6px rgba(0,0,0,.6) !important;
  text-shadow:  0 0 10px rgba(255,140,32,.72) !important;
}

/* KOTOR — Force cyan */
:root[data-vc-theme="kotor_holocron"] .vc-theme-active {
  border-color: rgba(96,200,240,.72) !important;
  background:   rgba(96,200,240,.13) !important;
  color:        #60c8f0 !important;
  box-shadow:   0 0 14px rgba(96,200,240,.35), 0 0 0 1px rgba(96,200,240,.18) inset, 0 2px 6px rgba(0,0,0,.6) !important;
  text-shadow:  0 0 10px rgba(96,200,240,.72) !important;
}

/* Zelda — Sheikah cyan */
:root[data-vc-theme="zelda_sheikah"] .vc-theme-active {
  border-color: rgba(64,200,232,.72) !important;
  background:   rgba(64,200,232,.12) !important;
  color:        #40c8e8 !important;
  box-shadow:   0 0 14px rgba(64,200,232,.34), 0 0 0 1px rgba(64,200,232,.18) inset, 0 2px 6px rgba(0,0,0,.6) !important;
  text-shadow:  0 0 10px rgba(64,200,232,.72) !important;
}

/* Marathon — neon orange-red */
:root[data-vc-theme="marathon_hud"] .vc-theme-active {
  border-color: rgba(255,90,32,.75) !important;
  background:   rgba(255,90,32,.13) !important;
  color:        #ff5a20 !important;
  box-shadow:   0 0 14px rgba(255,90,32,.38), 0 0 0 1px rgba(255,90,32,.20) inset, 0 2px 6px rgba(0,0,0,.6) !important;
  text-shadow:  0 0 10px rgba(255,90,32,.75) !important;
}

/* Halo 2 — UNSC green */
:root[data-vc-theme="halo2_unsc"] .vc-theme-active {
  border-color: rgba(48,200,112,.72) !important;
  background:   rgba(48,200,112,.12) !important;
  color:        #30c870 !important;
  box-shadow:   0 0 14px rgba(48,200,112,.34), 0 0 0 1px rgba(48,200,112,.18) inset, 0 2px 6px rgba(0,0,0,.6) !important;
  text-shadow:  0 0 10px rgba(48,200,112,.72) !important;
}

/* Dragon Age — Veilfire teal */
:root[data-vc-theme="da_veilfire"] .vc-theme-active {
  border-color: rgba(32,216,200,.72) !important;
  background:   rgba(32,216,200,.12) !important;
  color:        #20d8c8 !important;
  box-shadow:   0 0 14px rgba(32,216,200,.34), 0 0 0 1px rgba(32,216,200,.18) inset, 0 2px 6px rgba(0,0,0,.6) !important;
  text-shadow:  0 0 10px rgba(32,216,200,.72) !important;
}

/* Mario — bright red */
:root[data-vc-theme="mario_toybox"] .vc-theme-active {
  border-color: rgba(232,72,48,.65) !important;
  background:   rgba(232,72,48,.12) !important;
  color:        #e84830 !important;
  box-shadow:   0 0 12px rgba(232,72,48,.25), 0 0 0 1px rgba(232,72,48,.16) inset, 0 2px 6px rgba(0,0,0,.3) !important;
  text-shadow:  0 0 8px rgba(232,72,48,.55) !important;
}


/* ─── 4. SHELL & LAYOUT ──────────────────────────────────── */
    /* ═══════════════════════════════════════
       SHELL — sidebar is position:fixed.
       .vc-main gets margin-left to match.
       No flex/grid on .vc-shell needed.
    ═══════════════════════════════════════ */
    .vc-shell { min-height:100vh; }
    .vc-view  { display:none; }
    .vc-view.active { display:block; }

    /* ── SIDEBAR ── */
    .sidebar {
      width:220px; position:fixed; top:0; left:0; bottom:0; z-index:50;
      display:flex; flex-direction:column;
      background:var(--sidebar-shell, var(--abyss));
      border-right:1px solid var(--sidebar-border, var(--border));
      padding:0 0 20px; overflow-y:auto;
    }
    .sidebar-logo {
      padding:18px 16px 14px; border-bottom:1px solid var(--border);
      margin-bottom:4px; flex-shrink:0;
    }
    .sidebar-logo-wordmark {
      font-family:var(--font-occult); font-size:13px; font-weight:900;
      letter-spacing:4px; color:var(--gold); text-shadow:0 0 20px var(--gold-glow);
      display:flex; align-items:center; gap:6px; animation:flicker 8s infinite; margin-bottom:4px;
    }
    .sidebar-logo-wordmark .vc-sigil {
      display:inline; font-style:normal; font-size:15px;
      color:var(--gold-bright);
      text-shadow:0 0 8px var(--gold-glow), 0 0 20px var(--gold-glow);
      filter:drop-shadow(0 0 4px var(--gold-glow));
      letter-spacing:0;
    }
    .sidebar-logo-sub {
      font-family:var(--font-vhs); font-size:8px; letter-spacing:3px; text-transform:uppercase;
      color:var(--blood-bright); opacity:0.85; padding-left:2px;
    }

    /* Auth status pill */
    .sidebar-auth-pill {
      margin:8px 10px 0; padding:6px 10px; border-radius:4px;
      border:1px solid var(--border); background:rgba(0,0,0,0.25);
      display:flex; align-items:center; gap:7px; flex-shrink:0;
    }
    .sidebar-auth-pill .auth-dot {
      width:7px; height:7px; border-radius:50%; flex-shrink:0;
      background:var(--dust); box-shadow:0 0 5px var(--dust); transition:all 0.3s;
    }
    .sidebar-auth-pill.authed .auth-dot { background:#4ade80; box-shadow:0 0 8px rgba(74,222,128,0.6); }
    .sidebar-auth-pill.error .auth-dot { background:var(--blood-bright); box-shadow:0 0 8px rgba(220,80,80,0.6); }
    .sidebar-auth-pill .auth-label {
      font-family:var(--font-vhs); font-size:8px; letter-spacing:1.5px; text-transform:uppercase;
      color:var(--dust); flex:1; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
    }
    .sidebar-auth-pill.authed .auth-label { color:rgba(180,255,212,0.8); }
    .sidebar-auth-pill .auth-action {
      font-family:var(--font-vhs); font-size:8px; letter-spacing:1px; text-transform:uppercase;
      color:var(--gold); opacity:0.8; cursor:pointer; border:none; background:none; padding:0; flex-shrink:0;
      transition:opacity 0.15s;
    }
    .sidebar-auth-pill .auth-action:hover { opacity:1; }

    .sidebar-section-label {
      font-family:var(--font-vhs); font-size:9px; letter-spacing:3px; text-transform:uppercase;
      color:var(--fog); padding:12px 16px 5px; flex-shrink:0;
    }
    .sidebar .nav { display:flex; flex-direction:column; gap:2px; padding:0 10px; }
    .sidebar .nav-item {
      display:flex; align-items:center; gap:9px; padding:9px 10px; border-radius:6px;
      font-family:var(--font-vhs); font-size:10px; letter-spacing:2px; text-transform:uppercase;
      color:var(--mist); cursor:pointer; transition:all 0.15s; border:1px solid transparent;
      text-decoration:none;
    }
    .sidebar .nav-item .nav-count {
      margin-left:auto; font-size:9px; opacity:0.65;
      background:rgba(255,255,255,0.06); padding:1px 6px; border-radius:999px;
      min-width:18px; text-align:center; transition:all 0.2s;
    }
    .sidebar .nav-item .nav-count.has-items {
      background:rgba(201,151,58,0.15); color:var(--gold); opacity:1;
    }
    .sidebar .nav-item:hover { background:var(--chamber); color:var(--gold); border-color:var(--rim); }
    .sidebar .nav-item.active { background:var(--chamber); color:var(--gold); border-color:var(--border); }

    .sidebar-divider { height:1px; background:var(--border); margin:10px 14px; flex-shrink:0; }

    .sidebar-footer {
      margin-top:auto; padding:12px 16px; flex-shrink:0;
      font-family:var(--font-vhs); font-size:9px; letter-spacing:1px;
      color:var(--dust); opacity:0.45; border-top:1px solid var(--border);
    }
    .sidebar-sync-row {
      display:flex; align-items:center; gap:5px; margin-bottom:5px;
      font-size:8px; letter-spacing:1px; text-transform:uppercase; opacity:1;
    }
    .sidebar-sync-row .sync-dot {
      width:5px; height:5px; border-radius:50%; background:var(--dust); transition:background 0.3s;
    }
    .sidebar-sync-row.synced .sync-dot { background:#4ade80; }
    .sidebar-sync-row.syncing .sync-dot { background:var(--gold); animation:vcPulse 0.9s ease-in-out infinite; }
    .sidebar-sync-row.offline .sync-dot { background:var(--blood-bright); }

    /* ── MAIN ── */
    .vc-main { margin-left:220px; min-height:100vh; }
    .vc-page { padding:0 28px 60px; }

    /* Page header */
    .vc-page-header { padding:28px 28px 0; }
    .vc-page-eyebrow {
      font-family:var(--font-vhs); font-size:10px; letter-spacing:4px; text-transform:uppercase;
      color:var(--blood-bright); margin-bottom:10px; display:flex; align-items:center; gap:10px;
    }
    .vc-page-eyebrow::before { content:''; flex:1; height:1px; background:linear-gradient(90deg,transparent,rgba(139,26,26,0.5)); }
    .vc-page-eyebrow::after  { content:''; flex:1; height:1px; background:linear-gradient(90deg,rgba(139,26,26,0.5),transparent); }
    .vc-page-title {
      font-family:var(--font-occult); font-size:clamp(26px,3.5vw,38px); font-weight:700;
      letter-spacing:1px; color:var(--gold-pale); text-shadow:0 0 30px rgba(201,151,58,0.2); margin-bottom:5px;
    }
    .vc-page-sub { font-family:var(--font-grimoire); font-size:14px; font-style:italic; color:var(--fog); margin-bottom:20px; }
    .vc-page-divider { height:1px; background:linear-gradient(90deg,var(--border),transparent); margin-bottom:20px; }

    /* Search */
    .games-search-wrap { position:relative; margin-bottom:10px; }
    .games-search-icon { position:absolute; left:16px; top:50%; transform:translateY(-50%); font-size:16px; pointer-events:none; opacity:0.45; }
    .games-search-input {
      width:100%; padding:13px 116px 13px 48px; background:var(--deep); border:1px solid var(--border);
      border-radius:var(--radius); color:var(--static); font-family:var(--font-grimoire); font-style:italic;
      font-size:16px; outline:none; transition:all 0.2s;
    }
    .games-search-input:focus { border-color:var(--border-bright); box-shadow:0 0 0 3px rgba(201,151,58,0.08); }
    .games-search-input::placeholder { color:var(--dust); font-style:italic; }
    .games-search-btn-pos { position:absolute; right:6px; top:50%; transform:translateY(-50%); }
    #games-status { font-family:var(--font-vhs); font-size:10px; letter-spacing:2px; text-transform:uppercase; color:var(--dust); padding:4px 0 0; min-height:18px; }

    /* Filter pills */
    .games-filter-row { display:flex; gap:6px; flex-wrap:wrap; align-items:center; margin-bottom:12px; }
    .games-filter-row .filter-label { font-family:var(--font-vhs); font-size:9px; letter-spacing:2px; text-transform:uppercase; color:var(--dust); margin-right:4px; }
    .games-filter-row .filter-pill {
      display:inline-flex; align-items:center; gap:6px; padding:6px 12px; border-radius:3px;
      border:1px solid var(--border); background:var(--deep); font-family:var(--font-vhs);
      font-size:10px; letter-spacing:2px; text-transform:uppercase; color:var(--dust);
      cursor:pointer; transition:all 0.15s; user-select:none;
    }
    .games-filter-row .filter-pill input { display:none; }
    .games-filter-row .filter-pill:hover { border-color:var(--gold); color:var(--gold); }
    .games-filter-row .filter-pill.on { border-color:var(--blood-bright); color:#e07070; background:rgba(139,26,26,0.1); }

    /* Toolbar */
    .games-toolbar {
      display:flex; justify-content:space-between; align-items:center; gap:12px;
      padding:10px 0 14px; border-bottom:1px solid rgba(201,151,58,0.10); margin-bottom:16px;
    }
    .games-toolbar .gt-left, .games-toolbar .gt-right { display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
    .games-toolbar .gt-sep { width:1px; height:18px; background:var(--border); opacity:0.75; margin:0 2px; }
    .games-toolbar .gt-check { display:flex; align-items:center; gap:7px; font-family:var(--font-vhs); font-size:10px; letter-spacing:1px; color:var(--dust); cursor:pointer; user-select:none; }
    .games-toolbar .gt-check input { accent-color:var(--gold); }
    .games-toolbar .gt-label { font-family:var(--font-vhs); font-size:10px; letter-spacing:1px; color:var(--dust); }
    .games-toolbar .gt-select { height:32px; padding:0 10px; background:var(--deep); border:1px solid var(--border); border-radius:4px; color:var(--static); font-family:var(--font-vhs); font-size:10px; letter-spacing:1px; min-width:160px; outline:none; }
    .games-toolbar .gt-select:focus { border-color:var(--border-bright); }

    /* Recent */
    .games-recent { display:flex; align-items:flex-start; gap:10px; padding:0 0 16px; min-height:36px; }
    .games-recent .recent-label { font-family:var(--font-vhs); font-size:9px; letter-spacing:2px; text-transform:uppercase; color:var(--dust); padding-top:6px; white-space:nowrap; }
    .games-recent .recent-muted { font-family:var(--font-grimoire); font-style:italic; font-size:13px; color:var(--dust); opacity:0.75; padding:5px 0; }
    .games-recent .recent-chips { display:flex; flex-wrap:wrap; gap:6px; }
    .games-recent .recent-chip { appearance:none; border:1px solid var(--border); background:rgba(255,255,255,0.02); color:var(--fog); font-family:var(--font-vhs); font-size:10px; letter-spacing:1px; text-transform:uppercase; padding:5px 10px; border-radius:3px; cursor:pointer; transition:all 0.15s; }
    .games-recent .recent-chip:hover { border-color:var(--gold); color:var(--gold); }

    /* Result grid */
    #games-results { display:grid; grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); gap:14px; margin-top:4px; }
    #games-results.poster-only .result-info { display:none; }
    #games-results.poster-only { grid-template-columns:repeat(auto-fill,minmax(140px,1fr)); }
    .poster-fallback { width:100%; height:100%; display:flex; align-items:center; justify-content:center; font-family:var(--font-vhs); font-size:9px; letter-spacing:2px; text-transform:uppercase; color:var(--dust); }
    #games-results .result-poster { position:relative; }
    #games-results .result-badges { position:absolute; top:8px; left:8px; display:flex; flex-direction:column; gap:5px; z-index:2; }
    #games-results .rb { font-family:var(--font-vhs); font-size:9px; letter-spacing:1px; padding:3px 7px; border-radius:3px; background:rgba(0,0,0,0.75); backdrop-filter:blur(4px); }
    #games-results .rb-owned  { border:1px solid rgba(180,255,212,0.35); color:rgba(180,255,212,0.9); }
    #games-results .rb-played { border:1px solid rgba(180,180,255,0.3);  color:rgba(180,180,255,0.88); }
    #games-results .rb-playing{ border:1px solid rgba(255,210,120,0.35); color:rgba(255,210,120,0.9); }
    #games-results .result-card.skel { pointer-events:none; }
    #games-results .result-card.skel .result-poster img { display:none; }
    #games-results .skel-box { width:100%; height:100%; background:rgba(255,255,255,0.04); border-radius:4px; animation:vcPulse 1.4s ease-in-out infinite; }
    #games-results .skel-line { height:9px; border-radius:999px; background:rgba(255,255,255,0.04); margin:10px 0 0; animation:vcPulse 1.4s ease-in-out infinite; }
    #games-results .skel-line.w70 { width:70%; }
    #games-results .skel-line.w35 { width:35%; }
    #games-results .skel-tags { display:flex; gap:5px; margin-top:9px; }
    #games-results .skel-pill { width:44px; height:17px; border-radius:999px; background:rgba(255,255,255,0.04); animation:vcPulse 1.4s ease-in-out infinite; }
    @keyframes vcPulse { 0%,100%{opacity:0.45} 50%{opacity:0.85} }
    #games-results .result-card { cursor:pointer; }
    #games-results .result-card:focus-visible { outline:2px solid rgba(201,151,58,0.6); outline-offset:2px; }

    /* Library */
    .lib-inner { padding:0 28px 60px; }
    .lib-topbar { display:flex; align-items:center; gap:10px; padding:14px 28px 12px; }
    .lib-sync-label { font-family:var(--font-vhs); font-size:9px; letter-spacing:2px; text-transform:uppercase; color:var(--dust); opacity:0.7; display:flex; align-items:center; gap:6px; }
    .lib-sync-label .ldot { width:6px; height:6px; border-radius:50%; background:var(--dust); transition:background 0.3s; }
    .lib-sync-label.synced .ldot { background:#4ade80; }
    .lib-sync-label.syncing .ldot { background:var(--gold); animation:vcPulse 0.9s infinite; }
    .lib-topbar-spacer { flex:1; }

    .lib-stats-strip { display:flex; gap:0; flex-wrap:wrap; border:1px solid var(--border); border-radius:var(--radius); background:var(--deep); overflow:hidden; margin-bottom:28px; }
    .lib-stat { flex:1; min-width:80px; padding:14px 16px; border-right:1px solid var(--border); text-align:center; }
    .lib-stat:last-child { border-right:none; }
    .lib-stat-n { font-family:var(--font-occult); font-size:24px; font-weight:700; line-height:1; margin-bottom:5px; }
    .lib-stat-label { font-family:var(--font-vhs); font-size:9px; letter-spacing:2px; text-transform:uppercase; color:var(--dust); }

    .lib-section { margin-bottom:36px; }
    .lib-section-header { display:flex; align-items:center; gap:10px; padding-bottom:10px; margin-bottom:14px; border-bottom:1px solid var(--border); }
    .lib-section-icon { font-size:16px; }
    .lib-section-title { font-family:var(--font-occult); font-size:16px; font-weight:600; color:var(--gold-pale); letter-spacing:0.5px; }
    .lib-section-count { font-family:var(--font-vhs); font-size:10px; letter-spacing:1px; color:var(--dust); background:rgba(255,255,255,0.06); padding:2px 8px; border-radius:999px; }
    .lib-add-group-btn { margin-left:auto; }

    .lib-empty-shelf { padding:20px 0; font-family:var(--font-grimoire); font-style:italic; font-size:14px; color:var(--dust); opacity:0.7; }

    .lib-shelf-grid { display:grid; grid-template-columns:repeat(auto-fill, minmax(120px, 1fr)); gap:12px; }
    .lib-card { border-radius:var(--radius); overflow:hidden; border:1px solid var(--border); background:var(--deep); transition:border-color 0.15s, box-shadow 0.15s; cursor:pointer; }
    .lib-card:hover { border-color:var(--border-bright); box-shadow:0 4px 16px rgba(0,0,0,0.4); }
    .lib-card-poster { aspect-ratio:3/4; position:relative; overflow:hidden; background:var(--surface); }
    .lib-card-poster img { width:100%; height:100%; object-fit:cover; display:block; }
    .lib-card-overlay { position:absolute; inset:0; background:rgba(0,0,0,0.55); display:flex; align-items:flex-start; justify-content:flex-end; padding:6px; opacity:0; transition:opacity 0.15s; }
    .lib-card:hover .lib-card-overlay { opacity:1; }
    .lib-card-remove { appearance:none; background:rgba(0,0,0,0.7); border:1px solid rgba(255,100,100,0.35); color:rgba(255,130,130,0.9); border-radius:3px; cursor:pointer; font-size:10px; padding:3px 6px; font-family:var(--font-vhs); letter-spacing:1px; transition:all 0.12s; }
    .lib-card-remove:hover { background:rgba(180,40,40,0.7); border-color:rgba(255,100,100,0.6); }
    .lib-card-info { padding:8px 8px 10px; }
    .lib-card-name { font-family:var(--font-vhs); font-size:10px; letter-spacing:1px; text-transform:uppercase; color:var(--static); line-height:1.3; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
    .lib-card-year { font-family:var(--font-vhs); font-size:9px; color:var(--dust); letter-spacing:1px; display:block; margin-top:2px; }
    .lib-card-ago { font-family:var(--font-vhs); font-size:8px; color:var(--dust); opacity:0.6; letter-spacing:1px; margin-top:2px; }
    .lib-card-rating { display:inline-block; margin-top:3px; font-family:var(--font-vhs); font-size:9px; letter-spacing:1px; color:var(--gold); background:rgba(201,151,58,0.1); border:1px solid rgba(201,151,58,0.25); border-radius:3px; padding:1px 5px; }

    .lib-group-row { margin-bottom:20px; padding:14px 16px; border:1px solid var(--border); border-radius:var(--radius); background:var(--deep); }
    .lib-group-name { font-family:var(--font-occult); font-size:14px; color:var(--gold-pale); margin-bottom:10px; display:flex; align-items:center; gap:8px; }
    .lib-group-shelf-grid { display:flex; flex-wrap:wrap; gap:8px; }
    .lib-mini-card { width:52px; height:74px; border-radius:3px; overflow:hidden; border:1px solid var(--border); background:var(--surface); flex-shrink:0; }
    .lib-mini-card img { width:100%; height:100%; object-fit:cover; display:block; }

    /* Auth gate in library */
    .lib-auth-gate { text-align:center; padding:60px 20px; font-family:var(--font-grimoire); color:var(--fog); }
    .lib-auth-gate .gate-icon { font-size:42px; margin-bottom:16px; opacity:0.5; }
    .lib-auth-gate h3 { font-family:var(--font-occult); color:var(--gold-pale); font-size:20px; margin-bottom:8px; }
    .lib-auth-gate p { font-size:15px; font-style:italic; opacity:0.75; margin-bottom:20px; }

    /* Auth modal */
    .vc-auth-modal { position:fixed; inset:0; display:none; z-index:10000; align-items:center; justify-content:center; }
    .vc-auth-modal[aria-hidden="false"] { display:flex; }
    .vc-auth-modal-backdrop { position:absolute; inset:0; background:rgba(0,0,0,0.85); backdrop-filter:blur(12px); }
    .vc-auth-modal-dialog {
      position:relative; width:min(420px,calc(100vw - 40px));
      border:1px solid var(--border-bright); border-radius:var(--radius-lg);
      background:var(--deep); box-shadow:0 0 60px rgba(139,26,26,0.25), 0 32px 80px rgba(0,0,0,0.8);
      padding:28px 28px 24px;
    }
    .vc-auth-modal-dialog::before { content:''; position:absolute; top:0; left:0; right:0; height:1px; background:linear-gradient(90deg,transparent,var(--gold),transparent); border-radius:inherit; }
    .vc-auth-title { font-family:var(--font-occult); font-size:22px; color:var(--gold-pale); margin-bottom:6px; font-weight:700; }
    .vc-auth-sub { font-family:var(--font-grimoire); font-style:italic; font-size:14px; color:var(--fog); margin-bottom:22px; opacity:0.85; }
    .vc-auth-field { margin-bottom:14px; }
    .vc-auth-field label { display:block; font-family:var(--font-vhs); font-size:9px; letter-spacing:2px; text-transform:uppercase; color:var(--dust); margin-bottom:6px; }
    .vc-auth-field input { width:100%; padding:10px 12px; border-radius:6px; background:var(--chamber); border:1px solid var(--border); color:var(--static); font-family:var(--font-grimoire); font-size:15px; outline:none; transition:border-color 0.2s; box-sizing:border-box; }
    .vc-auth-field input:focus { border-color:var(--border-bright); }
    .vc-auth-error { font-family:var(--font-vhs); font-size:9px; letter-spacing:1px; text-transform:uppercase; color:var(--blood-bright); margin-bottom:12px; min-height:16px; }
    .vc-auth-actions { display:flex; gap:10px; align-items:center; margin-top:6px; }
    .vc-auth-switch { font-family:var(--font-vhs); font-size:9px; letter-spacing:1px; text-transform:uppercase; color:var(--dust); cursor:pointer; border:none; background:none; padding:0; margin-left:auto; transition:color 0.15s; opacity:0.7; }
    .vc-auth-switch:hover { color:var(--gold); opacity:1; }
    .vc-auth-close { position:absolute; top:12px; right:14px; }

    /* Game details modal */
    .vc-modal { position:fixed; inset:0; display:none; z-index:9999; }
    .vc-modal[aria-hidden="false"] { display:flex; align-items:center; justify-content:center; }
    .vc-modal-backdrop { position:absolute; inset:0; background:rgba(0,0,0,0.80); backdrop-filter:blur(10px); }
    .vc-modal-dialog {
      position:relative; width:min(1280px,calc(100vw - 32px));
      margin:0; max-height:92vh; overflow:hidden;
      border:1px solid var(--border-bright); border-radius:var(--radius-lg);
      background:var(--deep); box-shadow:0 0 60px rgba(139,26,26,0.25), 0 32px 80px rgba(0,0,0,0.8);
      display:flex; flex-direction:column;
    }
    .vc-modal-dialog::before { content:''; position:absolute; top:0; left:0; right:0; height:1px; background:linear-gradient(90deg,transparent,var(--gold),transparent); z-index:10; pointer-events:none; }
    #vc-game-modal[data-has-banner] .vc-modal-dialog::after { content:''; position:absolute; inset:0; border-radius:inherit; background-image:var(--vc-game-banner, none); background-size:cover; background-position:center top; opacity:1; transform:scale(1.04); filter:saturate(1.1) brightness(0.9); pointer-events:none; z-index:0; }
    .vc-modal-body { position:relative; z-index:2; overflow-y:auto; overflow-x:hidden; max-height:92vh; padding:22px 24px 28px; }
    #vc-game-modal[data-has-banner] .vc-modal-body { background:linear-gradient(to bottom, rgba(8,6,14,0.74) 0%, rgba(8,6,14,0.90) 40%, rgba(8,6,14,0.97) 100%); }
    .vc-modal-close { position:absolute; top:12px; right:14px; z-index:20; }

    .vc-game-modal-hero { display:flex; gap:20px; align-items:flex-start; margin-bottom:18px; }
    .vc-game-modal-cover { width:180px; flex-shrink:0; aspect-ratio:3/4; border-radius:var(--radius); overflow:hidden; border:1px solid var(--border-bright); background:var(--surface); box-shadow:0 8px 32px rgba(0,0,0,0.6), 0 0 20px rgba(201,151,58,0.1); }
    .vc-game-modal-cover img { width:100%; height:100%; object-fit:cover; display:block; }
    .vc-game-modal-meta { flex:1; min-width:0; padding-top:4px; }
    .vc-game-modal-title { font-family:var(--font-occult); font-size:26px; font-weight:700; color:var(--gold-pale); text-shadow:0 0 30px rgba(201,151,58,0.3); line-height:1.1; margin-bottom:8px; }
    .vc-game-modal-sub { font-family:var(--font-vhs); font-size:10px; letter-spacing:2px; text-transform:uppercase; color:var(--dust); margin-bottom:14px; }
    .vc-game-modal-storyline-block { margin-top:12px; border:1px solid rgba(201,151,58,0.14); border-radius:var(--radius); padding:12px 14px; background:rgba(0,0,0,0.25); }
    .vc-game-modal-storyline-head { font-family:var(--font-vhs); font-size:9px; letter-spacing:2px; text-transform:uppercase; color:var(--dust); margin-bottom:7px; }
    .vc-game-modal-storyline-head::before { content:'⛧ '; color:var(--blood-bright); }
    .vc-game-modal-storyline-text { font-family:var(--font-grimoire); font-style:italic; font-size:14px; color:var(--fog); line-height:1.7; }
    .vc-game-modal-tags-inline { display:flex; flex-wrap:wrap; gap:6px; }
    .vc-game-modal-tags-inline .tag { background:rgba(120,92,255,0.10); border:1px solid rgba(120,92,255,0.22); color:rgba(200,185,255,0.88); border-radius:3px; padding:3px 9px; font-family:var(--font-vhs); font-size:9px; letter-spacing:1px; text-transform:uppercase; }

    /* User rating + notes in modal */
    .vc-game-personal-block { margin-top:14px; border:1px solid var(--border); border-radius:var(--radius); padding:14px; background:rgba(0,0,0,0.2); }
    .vc-game-personal-block .pb-label { font-family:var(--font-vhs); font-size:9px; letter-spacing:3px; text-transform:uppercase; color:var(--dust); margin-bottom:12px; display:flex; align-items:center; gap:8px; }
    .vc-game-personal-block .pb-label::before { content:'⛧'; color:var(--blood-bright); }
    .vc-game-rating-row { display:flex; align-items:center; gap:10px; margin-bottom:12px; }
    .vc-game-rating-row label { font-family:var(--font-vhs); font-size:9px; letter-spacing:2px; text-transform:uppercase; color:var(--dust); white-space:nowrap; }
    .vc-game-stars { display:flex; gap:3px; }
    .vc-game-stars .star { font-size:18px; cursor:pointer; opacity:0.25; transition:opacity 0.1s, transform 0.1s; color:var(--gold); line-height:1; }
    .vc-game-stars .star.on { opacity:1; }
    .vc-game-stars .star:hover ~ .star { opacity:0.25 !important; }
    .vc-game-stars:hover .star { opacity:1; }
    #vc-game-rating-val { font-family:var(--font-vhs); font-size:10px; letter-spacing:1px; color:var(--gold); margin-left:4px; }
    .vc-game-notes-area { width:100%; box-sizing:border-box; background:var(--chamber); border:1px solid var(--border); border-radius:var(--radius); color:var(--static); font-family:var(--font-grimoire); font-size:14px; padding:10px 12px; outline:none; resize:vertical; min-height:70px; transition:border-color 0.2s; }
    .vc-game-notes-area:focus { border-color:var(--border-bright); }
    .vc-game-notes-label { font-family:var(--font-vhs); font-size:9px; letter-spacing:2px; text-transform:uppercase; color:var(--dust); margin-bottom:6px; display:block; }
    .vc-game-save-btn-row { display:flex; justify-content:flex-end; margin-top:8px; }

    /* Actions */
    .vc-game-modal-actions { display:flex; gap:8px; align-items:center; flex-wrap:wrap; margin:18px 0 0; padding:14px 0; border-top:1px solid var(--border); border-bottom:1px solid var(--border); }
    .vc-game-modal-actions-spacer { flex:1; }
    .vc-game-modal-actions .btn-shelf { font-family:var(--font-vhs); font-size:9px; letter-spacing:1px; text-transform:uppercase; padding:6px 10px; border-radius:3px; border:1px solid var(--border); background:transparent; color:var(--dust); cursor:pointer; transition:all 0.15s; }
    .vc-game-modal-actions .btn-shelf:hover { border-color:var(--gold); color:var(--gold); }

    .vc-section-title { font-family:var(--font-vhs); font-size:9px; letter-spacing:3px; text-transform:uppercase; color:var(--dust); margin-bottom:12px; padding-bottom:8px; border-bottom:1px solid var(--rim); display:flex; align-items:center; gap:8px; }
    .vc-section-title::before { content:'⛧'; color:var(--blood-bright); font-size:10px; }

    .vc-game-modal-summaryblock { margin-top:20px; border:1px solid var(--border); border-radius:var(--radius); padding:16px; background:rgba(0,0,0,0.18); }
    .vc-game-modal-summary-text { font-family:var(--font-grimoire); font-size:15px; color:var(--fog); line-height:1.75; }
    .vc-game-modal-detailsblock { margin-top:16px; border:1px solid var(--border); border-radius:var(--radius); padding:16px; background:rgba(0,0,0,0.18); }
    .vc-game-modal-facts-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
    .vc-fact { border:1px solid rgba(255,255,255,0.07); background:rgba(0,0,0,0.18); border-radius:var(--radius); padding:10px 12px; }
    .vc-fact .k { font-family:var(--font-vhs); font-size:9px; letter-spacing:2px; text-transform:uppercase; color:var(--dust); opacity:0.85; margin-bottom:8px; }
    .vc-fact .v { display:flex; flex-wrap:wrap; gap:6px; }
    .vc-chip { display:inline-flex; align-items:center; padding:4px 9px; border-radius:3px; font-family:var(--font-vhs); font-size:10px; letter-spacing:1px; text-transform:uppercase; background:rgba(201,151,58,0.08); border:1px solid rgba(201,151,58,0.22); color:var(--gold-pale); max-width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
    .vc-game-modal-screensblock { margin-top:16px; border:1px solid var(--border); border-radius:var(--radius); padding:16px; background:rgba(0,0,0,0.18); }
    .vc-game-modal-media-row { display:flex; gap:10px; overflow-x:auto; padding-bottom:6px; }
    .vc-game-modal-media-row::-webkit-scrollbar { height:3px; }
    .vc-game-modal-media-row::-webkit-scrollbar-thumb { background:var(--surface); border-radius:2px; }
    .vc-game-modal-media-row a { display:block; flex-shrink:0; border-radius:var(--radius); overflow:hidden; border:1px solid var(--border); transition:border-color 0.2s; }
    .vc-game-modal-media-row a:hover { border-color:var(--gold); }
    .vc-game-modal-media-row a img { display:block; width:240px; height:135px; object-fit:cover; }
    .vc-game-modal-linksblock { margin-top:16px; border:1px solid var(--border); border-radius:var(--radius); padding:16px; background:rgba(0,0,0,0.18); }
    .vc-game-modal-links-list { display:grid; grid-template-columns:repeat(auto-fill,minmax(200px,1fr)); gap:8px; }
    .vc-linkcard { display:flex; flex-direction:column; gap:3px; padding:10px 12px; min-height:52px; border:1px solid rgba(255,255,255,0.10); background:rgba(0,0,0,0.16); border-radius:var(--radius); text-decoration:none; color:inherit; transition:border-color 0.15s,background 0.15s; }
    .vc-linkcard:hover { border-color:rgba(201,151,58,0.4); background:rgba(0,0,0,0.24); }
    .vc-linkcard .h { font-family:var(--font-vhs); font-size:10px; letter-spacing:2px; text-transform:uppercase; color:var(--gold-pale); opacity:0.85; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
    .vc-linkcard .p { font-size:12px; opacity:0.88; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; color:var(--fog); }

    /* Toast */
    .vc-toast { position:fixed; left:50%; bottom:22px; transform:translateX(-50%) translateY(10px); background:var(--chamber); border:1px solid var(--border-bright); color:var(--gold); padding:10px 18px; border-radius:4px; font-family:var(--font-vhs); font-size:11px; letter-spacing:1px; opacity:0; transition:opacity 0.18s,transform 0.18s; z-index:10050; box-shadow:0 8px 24px rgba(0,0,0,0.6); }
    .vc-toast.on { opacity:1; transform:translateX(-50%) translateY(0); }

    /* Settings */
    .vc-topbar { display:flex; justify-content:space-between; align-items:center; padding:18px 28px; border-bottom:1px solid var(--border); }
    .vc-topbar h1 { margin:0; font-family:var(--font-occult); font-size:22px; font-weight:700; color:var(--gold-pale); letter-spacing:0.5px; }
    #view-settings .vc-page { padding-top:24px; }
    .input { padding:8px 12px; border-radius:6px; background:var(--chamber); border:1px solid var(--border); color:var(--static); font-family:var(--font-grimoire); font-size:15px; outline:none; transition:border-color 0.2s; width:100%; }
    .input:focus { border-color:var(--border-bright); }

    html.vc-modal-open, body.vc-modal-open { overflow:hidden; }

    @media (max-width:680px) { .vc-game-modal-facts-grid { grid-template-columns:1fr; } }
    @media (max-width:700px) {
      .sidebar { display:none; }
      .vc-main { margin-left:0; }
      .vc-game-modal-hero { flex-direction:column; }
      .vc-game-modal-cover { width:100%; max-width:180px; }
      .vc-page, .lib-inner { padding:0 16px 40px; }
      .lib-stats-strip { flex-wrap:wrap; }
      .lib-stat { min-width:calc(33% - 1px); }
    }


/* ═══════════════════════════════════════════════════════════════════════
   §8  THEME-SPECIFIC FX EXTENSIONS
       Each block activates only when the matching theme is active.
       Body-class toggles still control opt-in behaviours; these are
       the *visual atoms* those toggles drive per IP.

   TABLE OF CONTENTS
   ─────────────────
   §8.1   Shared atoms  (rain, fog, bloom, particles, brackets, stamps)
   §8.2   AW2 Dark Place Noir       — flashlight sweep + ink bleed
   §8.3   AW2 Manuscript            — typewriter scanline + red-ink overlay
   §8.4   AW2 Cult of the Tree      — firefly drift + bark grain + sigil etch
   §8.5   AW2 Saga / FBI Field Kit  — evidence stamps + notebook paper
   §8.6   AW2 Old Gods of Asgard    — stage fog + light rig + poster grain
   §8.7   AW2 Deerfest              — marquee bulbs + neon flicker + confetti
   §8.8   AW2 Bright Falls          — rain streaks + fog bloom + streetlamp
   §8.9   AW2 Night Springs         — TV frame + halftone + channel static
   §8.10  Control Polaris           — astral particles + resonance bloom
   §8.11  Control Hiss              — corrupt scan bars + glyph distortion
   §8.12  Control FBC               — CRT bloom + dot-matrix + stamp slam
   §8.13  Mass Effect Omni-Tool     — holo shimmer + HUD brackets + scan sweep
   §8.14  RE Biohazard Lab          — hazard stripes + containment fog + low-health pulse
   §8.15  RE Umbrella Corp          — sterile bloom + biohazard micro-text
   §8.16  RE Safe Room              — typewriter reveal + warm lamp vignette
   §8.17  RE VHS Found Footage      — tracking tear + REC stamp + lens dirt
   §8.18  KOTOR Holocron            — rune glow + force aura + light seams
   §8.19  Zelda Sheikah Slate       — rune overlay + topographic lines + UI pulse
   §8.20  Marathon Runner HUD       — vector scan + HUD brackets + telemetry strip
   §8.21  Halo 2 UNSC HUD          — shield pulse + reticle corners + cortana veil
   §8.22  Mario Toybox             — coin sparkle + confetti pop + sticker badges
   §8.23  Dragon Age Veilfire       — rune circle etch + veilfire mist
   §8.24  Fallout Pip-Boy          — CRT curvature + phosphor bloom + bezel overlay
   ═══════════════════════════════════════════════════════════════════════ */


/* ───────────────────────────────────────────────────────────────────────
   §8.1  SHARED ATOMS
   Reusable pseudo-element patterns referenced by per-theme blocks.
   ─────────────────────────────────────────────────────────────────────── */

/* -- Rain streaks atom ------------------------------------------------- */
@keyframes vcRainFall {
  from { background-position: 0 -100vh; }
  to   { background-position: 0 100vh; }
}

/* -- Fog drift atom ----------------------------------------------------- */
@keyframes vcFogDrift {
  0%   { opacity: 0;    transform: translateX(-6%) scaleX(1.04); }
  40%  { opacity: 1; }
  100% { opacity: 0;    transform: translateX(6%)  scaleX(1.04); }
}

/* -- Particle/firefly float -------------------------------------------- */
@keyframes vcFireflyFloat {
  0%   { transform: translate(0, 0)        scale(1);    opacity: 0; }
  20%  { opacity: 1; }
  80%  { opacity: .7; }
  100% { transform: translate(var(--ff-dx,12px), var(--ff-dy,-40px)) scale(.6); opacity: 0; }
}

/* -- Astral particle drift --------------------------------------------- */
@keyframes vcAstralDrift {
  0%   { transform: translateY(0)   opacity: 0; }
  15%  { opacity: .8; }
  100% { transform: translateY(-60px); opacity: 0; }
}

/* -- Bloom pulse (resonance glow) -------------------------------------- */
@keyframes vcBloomPulse {
  0%, 100% { opacity: .45; filter: blur(18px); }
  50%       { opacity: .70; filter: blur(14px); }
}

/* -- Vignette strobe (Hiss / Breach) ----------------------------------- */
@keyframes vcHissStrobe {
  0%, 100% { opacity: 0; }
  48%      { opacity: 0; }
  50%      { opacity: .18; }
  52%      { opacity: 0; }
  73%      { opacity: 0; }
  75%      { opacity: .10; }
  77%      { opacity: 0; }
}

/* -- Scan bar crawl (Hiss corruption / Omni-Tool) ---------------------- */
@keyframes vcScanCrawl {
  from { top: -8px; }
  to   { top: 100%; }
}

/* -- TV static flicker ------------------------------------------------- */
@keyframes vcStaticFlicker {
  0%, 100% { opacity: .06; }
  25%      { opacity: .11; }
  50%      { opacity: .04; }
  75%      { opacity: .09; }
}

/* -- Marquee bulb blink ------------------------------------------------ */
@keyframes vcBulbBlink {
  0%, 90%, 100% { opacity: 1; }
  92%           { opacity: .2; }
  94%           { opacity: 1; }
  96%           { opacity: .4; }
}

/* -- Neon flicker ------------------------------------------------------ */
@keyframes vcNeonFlicker {
  0%, 100% { opacity: 1;   text-shadow: 0 0 6px currentColor; }
  18%      { opacity: .85; text-shadow: none; }
  20%      { opacity: 1;   text-shadow: 0 0 8px currentColor; }
  60%      { opacity: 1; }
  62%      { opacity: .6; }
  64%      { opacity: 1;   text-shadow: 0 0 14px currentColor; }
}

/* -- Tracking tear (VHS) ----------------------------------------------- */
@keyframes vcTrackingTear {
  0%, 85%, 100% { clip-path: none; transform: none; }
  87% { clip-path: inset(30% 0 60% 0); transform: translateX(-3px) skewX(-1deg); }
  89% { clip-path: inset(60% 0 20% 0); transform: translateX(4px); }
  91% { clip-path: none; transform: none; }
}

/* -- Shield pulse ring (Halo) ------------------------------------------ */
@keyframes vcShieldPulse {
  0%   { box-shadow: 0 0 0 2px rgba(82,176,0,.25), 0 0 16px rgba(82,176,0,.08); }
  50%  { box-shadow: 0 0 0 2px rgba(82,176,0,.55), 0 0 32px rgba(82,176,0,.22); }
  100% { box-shadow: 0 0 0 2px rgba(82,176,0,.25), 0 0 16px rgba(82,176,0,.08); }
}

/* -- Force aura rotation (KOTOR) -------------------------------------- */
@keyframes vcForceRotate {
  from { transform: rotate(0deg); }
  to   { transform: rotate(360deg); }
}

/* -- Rune pulse (Zelda / KOTOR / Dragon Age) --------------------------- */
@keyframes vcRunePulse {
  0%, 100% { opacity: .12; filter: blur(0px); }
  50%       { opacity: .28; filter: blur(.5px); }
}

/* -- Coin sparkle (Mario) ---------------------------------------------- */
@keyframes vcCoinSpin {
  0%   { transform: rotateY(0deg) scale(1); }
  50%  { transform: rotateY(90deg) scale(.5); }
  100% { transform: rotateY(0deg) scale(1); }
}

/* -- Typewriter cursor blink ------------------------------------------- */
@keyframes vcTypeBlink {
  0%, 100% { border-right-color: currentColor; }
  50%       { border-right-color: transparent; }
}

/* -- Confetti fall ----------------------------------------------------- */
@keyframes vcConfettiFall {
  0%   { transform: translateY(-10px) rotate(0deg)   scaleX(1);   opacity: 1; }
  100% { transform: translateY(60px)  rotate(520deg) scaleX(.4);  opacity: 0; }
}

/* -- Phosphor bloom scanline (Fallout / RE VHS) ------------------------ */
@keyframes vcPhosphorBloom {
  0%, 100% { opacity: .55; }
  50%       { opacity: .75; }
}

/* -- Stage light sweep (Old Gods) -------------------------------------- */
@keyframes vcLightRig {
  0%   { left: -30%; opacity: 0; }
  10%  { opacity: .55; }
  90%  { opacity: .40; }
  100% { left: 130%;  opacity: 0; }
}

/* -- Fog/mist rise ----------------------------------------------------- */
@keyframes vcMistRise {
  0%   { opacity: 0;   transform: translateY(20px) scaleX(1.05); }
  30%  { opacity: .7; }
  70%  { opacity: .7; }
  100% { opacity: 0;   transform: translateY(-30px) scaleX(.98); }
}

/* -- Stamp slam -------------------------------------------------------- */
@keyframes vcStampSlam {
  0%   { transform: scale(2.4) rotate(-8deg); opacity: 0; }
  40%  { transform: scale(.95) rotate(-2deg); opacity: 1; }
  55%  { transform: scale(1.04) rotate(-2deg); }
  100% { transform: scale(1) rotate(-2deg);   opacity: 1; }
}

/* -- Low-health pulse vignette (RE Biohazard) -------------------------- */
@keyframes vcLowHealthPulse {
  0%, 100% { box-shadow: inset 0 0 0px 0px rgba(220,20,20,0); }
  50%       { box-shadow: inset 0 0 80px 20px rgba(220,20,20,.18); }
}

/* -- Veilfire mist (Dragon Age) ---------------------------------------- */
@keyframes vcVeilfireMist {
  0%   { opacity: 0;   transform: scale(1)    translateX(0); }
  25%  { opacity: .55; }
  75%  { opacity: .45; }
  100% { opacity: 0;   transform: scale(1.08) translateX(10px); }
}

/* -- CRT warp / curvature (Fallout) ------------------------------------ */
@keyframes vcCrtHum {
  0%, 100% { filter: brightness(1)   contrast(1); }
  50%       { filter: brightness(1.02) contrast(1.01); }
}

/* -- Holo shimmer (Mass Effect) ---------------------------------------- */
@keyframes vcHoloShimmer {
  0%   { background-position: 0% 50%; }
  100% { background-position: 100% 50%; }
}

/* -- Evidence stamp appear (FBI Field Kit) ----------------------------- */
@keyframes vcEvidenceStamp {
  0%   { transform: rotate(-6deg) scale(0); opacity: 0; }
  60%  { transform: rotate(-6deg) scale(1.08); opacity: 1; }
  100% { transform: rotate(-6deg) scale(1);    opacity: 1; }
}

/* -- Telemetry blip (Marathon) ----------------------------------------- */
@keyframes vcTelemetryBlip {
  0%, 100% { opacity: .5; }
  10%      { opacity: 1; }
  12%      { opacity: .2; }
  14%      { opacity: 1; }
}

/* -- Plasma bloom glow (Halo / KOTOR) ---------------------------------- */
@keyframes vcPlasmaGlow {
  0%, 100% { filter: drop-shadow(0 0 4px currentColor); }
  50%       { filter: drop-shadow(0 0 12px currentColor) drop-shadow(0 0 24px currentColor); }
}

/* -- Ripple / Puddle sheen (Bright Falls) ------------------------------ */
@keyframes vcPuddleSheen {
  0%   { background-position: 0 0; opacity: .3; }
  100% { background-position: 0 80px; opacity: .15; }
}


/* ───────────────────────────────────────────────────────────────────────
   §8.2  AW2 — DARK PLACE NOIR
   Flashlight sweep across the page, plus deep ink-bleed vignette.
   Active on: [data-vc-theme="aw2_noir"]
   ─────────────────────────────────────────────────────────────────────── */

/* Ink bleed — permanent deep vignette */
:root[data-vc-theme="aw2_noir"] body::before {
  background-image:
    radial-gradient(ellipse 80% 60% at 50% 50%, transparent 55%, rgba(6,6,8,.85) 100%),
    url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.055'/%3E%3C/svg%3E");
  background-size: cover, 256px 256px;
}

/* Flashlight cone — pseudo sweep triggered by vc-fx-trace-on */
:root[data-vc-theme="aw2_noir"] body.vc-fx-trace-on::after {
  content: "";
  position: fixed;
  top: -30vh; left: -40vw;
  width: 80vw; height: 160vh;
  background: conic-gradient(from 0deg at 50% 50%,
    transparent 0deg,
    rgba(212,168,75,.04) 15deg,
    rgba(212,168,75,.09) 22deg,
    rgba(212,168,75,.04) 30deg,
    transparent 45deg);
  pointer-events: none;
  z-index: 9998;
  animation: vcFlashlightSweep 16s ease-in-out infinite;
  mix-blend-mode: screen;
}
@keyframes vcFlashlightSweep {
  0%   { transform: rotate(-18deg) translateY(-5%); opacity: .6; }
  30%  { transform: rotate(8deg)   translateY(2%);  opacity: .85; }
  60%  { transform: rotate(-4deg)  translateY(-3%); opacity: .7; }
  100% { transform: rotate(-18deg) translateY(-5%); opacity: .6; }
}

/* Cards get a subtle ink-edge shadow */
:root[data-vc-theme="aw2_noir"] .result-card,
:root[data-vc-theme="aw2_noir"] .lib-card {
  box-shadow: 0 2px 12px rgba(6,6,8,.7), 0 0 0 1px rgba(180,140,70,.08) inset;
}


/* ───────────────────────────────────────────────────────────────────────
   §8.3  AW2 — MANUSCRIPT / WRITER'S ROOM
   Typewriter scanline + cream page warmth + red ink drips.
   ─────────────────────────────────────────────────────────────────────── */

/* Page warmth base overlay */
:root[data-vc-theme="aw2_manuscript"] body::before {
  background-image:
    linear-gradient(180deg,
      rgba(240,228,200,.035) 0%,
      rgba(240,228,200,.02) 100%),
    url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.75' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.05'/%3E%3C/svg%3E");
  background-size: cover, 256px 256px;
}

/* Typewriter scanline — a single slow-crawl line (vc-fx-scanlines-on implies heavier CRT) */
:root[data-vc-theme="aw2_manuscript"] body::after {
  background-image:
    repeating-linear-gradient(
      0deg,
      transparent,
      transparent 3px,
      rgba(200,65,60,.018) 3px,
      rgba(200,65,60,.018) 4px
    );
}

/* Red ink highlight on active nav */
:root[data-vc-theme="aw2_manuscript"] .nav-item.active,
:root[data-vc-theme="aw2_manuscript"] .nav-item:hover {
  border-left: 2px solid rgba(200,65,60,.55) !important;
}

/* Cards look like manuscript pages */
:root[data-vc-theme="aw2_manuscript"] .result-card,
:root[data-vc-theme="aw2_manuscript"] .lib-card,
:root[data-vc-theme="aw2_manuscript"] .vc-theme-picker-card {
  border-top: 1px solid rgba(200,65,60,.18);
  box-shadow: 0 1px 8px rgba(26,21,16,.55), inset 0 1px 0 rgba(240,228,200,.04);
}

/* Typewriter cursor on text inputs */
:root[data-vc-theme="aw2_manuscript"] input:focus,
:root[data-vc-theme="aw2_manuscript"] textarea:focus {
  border-right: 2px solid rgba(200,65,60,.7);
  animation: vcTypeBlink .8s step-end infinite;
}


/* ───────────────────────────────────────────────────────────────────────
   §8.4  AW2 — CULT OF THE TREE (RITUAL BIRCH)
   Firefly drift + bark-pattern grain + sigil etch on borders.
   ─────────────────────────────────────────────────────────────────────── */

/* Bark/moss grain overlay */
:root[data-vc-theme="aw2_cult"] body::before {
  background-image:
    url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='turbulence' baseFrequency='0.35 0.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.06'/%3E%3C/svg%3E");
  background-size: 512px 512px;
}

/* Deep forest vignette */
:root[data-vc-theme="aw2_cult"] body::after {
  background-image:
    radial-gradient(ellipse 100% 100% at 50% 100%, rgba(6,9,8,.9) 0%, transparent 60%),
    radial-gradient(ellipse 100% 50% at 50% 0%, rgba(6,9,8,.7) 0%, transparent 50%);
  background-size: cover;
  animation: none;
}

/* Card borders get a carved/etched feel */
:root[data-vc-theme="aw2_cult"] .result-card,
:root[data-vc-theme="aw2_cult"] .lib-card {
  border-color: rgba(200,160,64,.14);
  box-shadow: 0 3px 14px rgba(6,9,8,.65), inset 0 0 0 1px rgba(200,160,64,.06);
}

/* Sigil etch on active badge */
:root[data-vc-theme="aw2_cult"] .vc-theme-active::after {
  content: "⛧";
  position: absolute; right: -18px; top: 50%;
  transform: translateY(-50%);
  font-size: 10px;
  opacity: .55;
  color: var(--gold);
  animation: vcRunePulse 3s ease-in-out infinite;
  pointer-events: none;
}

/* Fireflies — CSS-only via multi-shadow animation on body */
:root[data-vc-theme="aw2_cult"] .vc-shell::after {
  content: "";
  position: fixed; inset: 0;
  pointer-events: none;
  z-index: 9997;
  background:
    radial-gradient(circle 2px at 18% 32%, rgba(200,160,64,.7) 0%, transparent 100%),
    radial-gradient(circle 1.5px at 72% 18%, rgba(200,160,64,.55) 0%, transparent 100%),
    radial-gradient(circle 2px at 45% 68%, rgba(200,160,64,.6) 0%, transparent 100%),
    radial-gradient(circle 1px at 83% 55%, rgba(200,160,64,.5) 0%, transparent 100%),
    radial-gradient(circle 1.5px at 25% 80%, rgba(200,160,64,.45) 0%, transparent 100%),
    radial-gradient(circle 2px at 60% 40%, rgba(200,160,64,.65) 0%, transparent 100%),
    radial-gradient(circle 1px at 90% 75%, rgba(200,160,64,.4) 0%, transparent 100%);
  animation: vcFirefliesMove 8s ease-in-out infinite alternate;
}
@keyframes vcFirefliesMove {
  0%   { transform: translate(0, 0);     opacity: .5; }
  33%  { transform: translate(6px, -8px);  opacity: .9; }
  66%  { transform: translate(-4px, 5px);  opacity: .7; }
  100% { transform: translate(3px, -12px); opacity: .85; }
}


/* ───────────────────────────────────────────────────────────────────────
   §8.5  AW2 — SAGA ANDERSON / FBI FIELD KIT
   Evidence stamps + notebook-paper rule lines on cards.
   ─────────────────────────────────────────────────────────────────────── */

/* Notebook paper rule lines on card surfaces */
:root[data-vc-theme="aw2_saga"] .result-card,
:root[data-vc-theme="aw2_saga"] .lib-card,
:root[data-vc-theme="aw2_saga"] .vc-theme-picker-card {
  background-image: repeating-linear-gradient(
    0deg,
    transparent,
    transparent 23px,
    rgba(232,160,32,.07) 23px,
    rgba(232,160,32,.07) 24px
  );
  border-left: 2px solid rgba(232,160,32,.18) !important;
}

/* Evidence grid overlay when icegrid is on */
:root[data-vc-theme="aw2_saga"] body.vc-fx-icegrid-on .result-card::before,
:root[data-vc-theme="aw2_saga"] body.vc-fx-icegrid-on .lib-card::before {
  background-image:
    linear-gradient(to right, rgba(232,160,32,.08) 1px, transparent 1px),
    linear-gradient(to bottom, rgba(232,160,32,.05) 1px, transparent 1px);
  background-size: 32px 24px; /* matches notebook lines */
}

/* "EVIDENCE" ribbon on locker badges */
:root[data-vc-theme="aw2_saga"] .rb-owned {
  border-color: rgba(232,160,32,.5) !important;
  color: rgba(232,160,32,.95) !important;
  letter-spacing: 1.5px;
}
:root[data-vc-theme="aw2_saga"] .rb-owned::before {
  content: "EVIDENCE · ";
  font-size: 7px;
  opacity: .7;
}

/* Map thread lines — horizontal accent on sidebar sections */
:root[data-vc-theme="aw2_saga"] .sidebar-section-label::after {
  content: "";
  display: block;
  height: 1px;
  margin-top: 4px;
  background: linear-gradient(90deg, rgba(232,160,32,.35), transparent);
}


/* ───────────────────────────────────────────────────────────────────────
   §8.6  AW2 — OLD GODS OF ASGARD / TOUR POSTER
   Stage fog + light-rig sweep + poster grain + bass-thump glitch.
   ─────────────────────────────────────────────────────────────────────── */

/* Heavy poster grain */
:root[data-vc-theme="aw2_oldgods"] body::before {
  background-image:
    url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.07'/%3E%3C/svg%3E");
  background-size: 256px 256px;
}

/* Stage fog — bottom rise */
:root[data-vc-theme="aw2_oldgods"] .vc-shell::before {
  content: "";
  position: fixed;
  bottom: 0; left: 0; right: 0;
  height: 35vh;
  background: linear-gradient(to top,
    rgba(12,6,8,.65) 0%,
    rgba(38,18,36,.35) 30%,
    transparent 100%);
  pointer-events: none;
  z-index: 9996;
  animation: vcMistRise 9s ease-in-out infinite alternate;
}

/* Light rig sweep — two crossing beams when trace is on */
:root[data-vc-theme="aw2_oldgods"] body.vc-fx-trace-on::after {
  content: "";
  position: fixed;
  top: -10vh; left: -20vw;
  width: 40vw; height: 80vh;
  background: linear-gradient(160deg,
    transparent 0%,
    rgba(255,77,200,.06) 40%,
    rgba(232,96,32,.08) 55%,
    transparent 100%);
  pointer-events: none;
  z-index: 9998;
  animation: vcLightRig 7s ease-in-out infinite;
  mix-blend-mode: screen;
}

/* Neon accent on titles */
:root[data-vc-theme="aw2_oldgods"] .vc-page-title,
:root[data-vc-theme="aw2_oldgods"] .sidebar-logo-wordmark {
  animation: vcNeonFlicker 6s ease-in-out infinite;
}


/* ───────────────────────────────────────────────────────────────────────
   §8.7  AW2 — DEERFEST (NEON FESTIVAL)
   Marquee bulbs + neon flicker on nav + confetti specks overlay.
   ─────────────────────────────────────────────────────────────────────── */

/* Marquee bulb border on page header */
:root[data-vc-theme="aw2_deerfest"] .vc-page-header {
  border-bottom: 2px dotted rgba(245,200,64,.3);
  position: relative;
}
:root[data-vc-theme="aw2_deerfest"] .vc-page-header::before {
  content: "• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • •";
  display: block;
  font-size: 6px;
  letter-spacing: 8px;
  color: rgba(245,200,64,.5);
  margin-bottom: 6px;
  animation: vcBulbBlink 4s ease-in-out infinite;
  overflow: hidden;
}

/* Neon flicker on active nav */
:root[data-vc-theme="aw2_deerfest"] .nav-item.active,
:root[data-vc-theme="aw2_deerfest"] .nav-item:hover {
  animation: vcNeonFlicker 4s ease-in-out infinite;
  text-shadow: 0 0 8px var(--gold-glow);
}

/* Confetti specks — fixed radial dots */
:root[data-vc-theme="aw2_deerfest"] .vc-shell::after {
  content: "";
  position: fixed; inset: 0;
  pointer-events: none;
  z-index: 9997;
  background:
    radial-gradient(circle 3px at 15% 25%, rgba(245,200,64,.55) 0%, transparent 100%),
    radial-gradient(circle 2px at 78% 12%, rgba(0,144,192,.6) 0%, transparent 100%),
    radial-gradient(circle 3px at 50% 70%, rgba(245,200,64,.45) 0%, transparent 100%),
    radial-gradient(circle 2px at 88% 60%, rgba(0,144,192,.5) 0%, transparent 100%),
    radial-gradient(circle 2px at 33% 88%, rgba(245,200,64,.4) 0%, transparent 100%),
    radial-gradient(circle 3px at 65% 35%, rgba(0,144,192,.45) 0%, transparent 100%);
  animation: vcFirefliesMove 12s ease-in-out infinite alternate;
  opacity: .7;
}

/* Warm page tint */
:root[data-vc-theme="aw2_deerfest"] body::before {
  background-image:
    radial-gradient(ellipse 80% 60% at 50% 100%, rgba(0,80,100,.25) 0%, transparent 60%),
    url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.04'/%3E%3C/svg%3E");
  background-size: cover, 256px 256px;
}


/* ───────────────────────────────────────────────────────────────────────
   §8.8  AW2 — BRIGHT FALLS (RAIN / FOG / STREETLAMP)
   Rain streaks overlay + low fog bloom + streetlamp vignette.
   ─────────────────────────────────────────────────────────────────────── */

/* Rain streaks */
:root[data-vc-theme="aw2_brightfalls"] body::before {
  background-image:
    repeating-linear-gradient(
      175deg,
      transparent 0px,
      transparent 2px,
      rgba(200,210,220,.04) 2px,
      rgba(200,210,220,.04) 3px,
      transparent 3px,
      transparent 22px
    ),
    url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.045'/%3E%3C/svg%3E");
  background-size: cover, 256px 256px;
  animation: vcRainFall 2.5s linear infinite;
}

/* Streetlamp vignette — warm amber cone from top-center */
:root[data-vc-theme="aw2_brightfalls"] body::after {
  background-image:
    radial-gradient(ellipse 60% 40% at 50% 0%, rgba(232,160,64,.12) 0%, transparent 70%),
    radial-gradient(ellipse 100% 40% at 50% 100%, rgba(10,12,14,.8) 0%, transparent 80%);
  background-size: cover;
  animation: none;
}

/* Fog bloom on sidebar */
:root[data-vc-theme="aw2_brightfalls"] .sidebar::after {
  content: "";
  position: absolute; inset: 0;
  background: linear-gradient(to bottom,
    transparent 60%,
    rgba(14,26,16,.6) 100%);
  pointer-events: none;
}

/* Wet sheen on cards */
:root[data-vc-theme="aw2_brightfalls"] .result-card,
:root[data-vc-theme="aw2_brightfalls"] .lib-card {
  box-shadow:
    0 4px 16px rgba(7,8,12,.7),
    inset 0 1px 0 rgba(200,210,220,.06);
}


/* ───────────────────────────────────────────────────────────────────────
   §8.9  AW2 — NIGHT SPRINGS (PULP TV / RETRO SCI-FI)
   TV frame overlay + heavy halftone dot-grain + channel static.
   ─────────────────────────────────────────────────────────────────────── */

/* Halftone dot grain */
:root[data-vc-theme="aw2_nightsprings"] body::before {
  background-image:
    radial-gradient(circle 1px at 50% 50%, rgba(216,240,64,.12) 0%, transparent 100%),
    url("data:image/svg+xml,%3Csvg viewBox='0 0 8 8' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='4' cy='4' r='1' fill='rgba(216,240,64,0.07)'/%3E%3C/svg%3E");
  background-size: cover, 8px 8px;
}

/* TV frame — rounded inset border + phosphor edge glow */
:root[data-vc-theme="aw2_nightsprings"] .vc-main::before {
  content: "";
  position: fixed;
  inset: 6px;
  border: 2px solid rgba(216,240,64,.12);
  border-radius: 8px;
  pointer-events: none;
  z-index: 9995;
  box-shadow:
    inset 0 0 40px rgba(216,240,64,.05),
    0 0 0 4px rgba(5,5,8,.8);
}

/* Channel static flicker */
:root[data-vc-theme="aw2_nightsprings"] body::after {
  background-image:
    repeating-linear-gradient(
      0deg,
      transparent,
      transparent 2px,
      rgba(216,240,64,.025) 2px,
      rgba(216,240,64,.025) 4px
    );
  animation: vcStaticFlicker 0.18s steps(1) infinite;
}

/* Episode bumper pill on page eyebrow */
:root[data-vc-theme="aw2_nightsprings"] .vc-page-eyebrow {
  font-family: var(--font-vhs);
  letter-spacing: 5px;
  color: rgba(216,240,64,.8) !important;
}


/* ───────────────────────────────────────────────────────────────────────
   §8.10  CONTROL — POLARIS (ASTRAL CALM)
   Astral particles + resonance bloom + guidance pulse on focus.
   ─────────────────────────────────────────────────────────────────────── */

/* Subtle aurora shimmer — top edge */
:root[data-vc-theme="control_polaris"] body::after {
  background-image:
    linear-gradient(180deg,
      rgba(122,184,245,.08) 0%,
      rgba(192,96,220,.05) 10%,
      transparent 40%);
  background-size: cover;
  animation: vcBloomPulse 6s ease-in-out infinite;
}

/* Astral particle field */
:root[data-vc-theme="control_polaris"] .vc-shell::after {
  content: "";
  position: fixed; inset: 0;
  pointer-events: none;
  z-index: 9997;
  background:
    radial-gradient(circle 1.5px at 20% 15%, rgba(122,184,245,.7) 0%, transparent 100%),
    radial-gradient(circle 1px  at 55% 8%,  rgba(192,96,220,.6) 0%, transparent 100%),
    radial-gradient(circle 2px  at 80% 22%, rgba(122,184,245,.55) 0%, transparent 100%),
    radial-gradient(circle 1px  at 35% 30%, rgba(192,96,220,.5) 0%, transparent 100%),
    radial-gradient(circle 1.5px at 70% 40%, rgba(122,184,245,.6) 0%, transparent 100%),
    radial-gradient(circle 1px  at 10% 60%, rgba(192,96,220,.45) 0%, transparent 100%),
    radial-gradient(circle 2px  at 90% 70%, rgba(122,184,245,.5) 0%, transparent 100%),
    radial-gradient(circle 1px  at 45% 80%, rgba(192,96,220,.55) 0%, transparent 100%),
    radial-gradient(circle 1.5px at 25% 90%, rgba(122,184,245,.45) 0%, transparent 100%);
  animation: vcAstralDrift 14s ease-in-out infinite alternate;
}
@keyframes vcAstralDrift {
  0%   { transform: translateY(0)   translateX(0);   opacity: .6; }
  50%  { transform: translateY(-8px) translateX(4px); opacity: 1; }
  100% { transform: translateY(-14px) translateX(-3px); opacity: .7; }
}

/* Resonance bloom ring on focused elements */
:root[data-vc-theme="control_polaris"] *:focus-visible {
  outline: 1px solid rgba(122,184,245,.55) !important;
  box-shadow: 0 0 0 3px rgba(122,184,245,.15), 0 0 16px rgba(122,184,245,.2) !important;
}

/* Guidance pulse — breach-on border pulse */
:root[data-vc-theme="control_polaris"] body.vc-fx-breach-on .vc-modal-dialog {
  animation: vcShieldPulse 3s ease-in-out infinite;
}


/* ───────────────────────────────────────────────────────────────────────
   §8.11  CONTROL — HISS CORRUPTION
   Corrupt scan bars + red strobe vignette + glyph distortion.
   ─────────────────────────────────────────────────────────────────────── */

/* Red strobe vignette — persistent, subtle */
:root[data-vc-theme="control_hiss"] body::after {
  background-image:
    radial-gradient(ellipse 100% 100% at 50% 50%, transparent 50%, rgba(255,26,64,.10) 100%);
  background-size: cover;
  animation: vcHissStrobe 4.3s steps(1) infinite;
}

/* Scan bar crawl — a single dark bar moving top to bottom */
:root[data-vc-theme="control_hiss"] .vc-main::after {
  content: "";
  position: fixed;
  left: 0; right: 0;
  height: 3px;
  background: linear-gradient(180deg,
    rgba(255,26,64,.25) 0%,
    rgba(255,26,64,.08) 50%,
    transparent 100%);
  pointer-events: none;
  z-index: 9998;
  animation: vcScanCrawl 3.8s linear infinite;
}

/* Glyph distortion on card images when hovered */
:root[data-vc-theme="control_hiss"] .result-card:hover .result-poster img,
:root[data-vc-theme="control_hiss"] .lib-card:hover .lib-card-poster img {
  filter: contrast(1.1) saturate(1.2) hue-rotate(8deg);
  animation: vcGlitchPulse 200ms ease-out;
}

/* Hiss-corrupted noise — heavier than default */
:root[data-vc-theme="control_hiss"] body::before {
  background-image:
    url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.07'/%3E%3C/svg%3E");
  background-size: 256px 256px;
}


/* ───────────────────────────────────────────────────────────────────────
   §8.12  CONTROL — FBC BUREAU TERMINAL
   CRT bloom + dot-matrix grid on surfaces + stamp slam (JS-driven).
   ─────────────────────────────────────────────────────────────────────── */

/* CRT phosphor base glow */
:root[data-vc-theme="control_fbc"] body::after {
  background-image:
    radial-gradient(ellipse 70% 50% at 50% 50%,
      rgba(212,168,48,.04) 0%,
      transparent 80%);
  background-size: cover;
  animation: vcCrtHum 4s ease-in-out infinite;
}

/* Dot-matrix grid — tighter than icegrid */
:root[data-vc-theme="control_fbc"] body.vc-fx-icegrid-on .vc-modal-dialog::before,
:root[data-vc-theme="control_fbc"] body.vc-fx-icegrid-on .result-card::before,
:root[data-vc-theme="control_fbc"] body.vc-fx-icegrid-on .lib-card::before {
  background-image:
    radial-gradient(circle 1px at center, rgba(212,168,48,.18) 0%, transparent 100%);
  background-size: 10px 10px;
}

/* Stamp element — injected by JS, styled here */
.vc-fx-stamp {
  position: absolute;
  top: 12px; right: 12px;
  font-family: var(--font-vhs, monospace);
  font-size: 9px;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: rgba(212,168,48,.8);
  border: 2px solid rgba(212,168,48,.6);
  border-radius: 2px;
  padding: 2px 6px;
  opacity: 0;
  pointer-events: none;
  transform: rotate(-5deg);
  z-index: 10;
}
.vc-fx-stamp.visible {
  animation: vcStampSlam .35s cubic-bezier(.22,.68,0,1.35) forwards;
}

/* Folder tab accent on sidebar sections */
:root[data-vc-theme="control_fbc"] .sidebar-section-label {
  border-left: 3px solid rgba(212,168,48,.4);
  padding-left: 10px;
}


/* ───────────────────────────────────────────────────────────────────────
   §8.13  MASS EFFECT — OMNI-TOOL HUD
   Holo shimmer + HUD bracket corners + omni scanline sweep.
   ─────────────────────────────────────────────────────────────────────── */

/* Omni-tool scanline sweep (uses vc-fx-trace-on) */
:root[data-vc-theme="me_omnitool"] body.vc-fx-trace-on .vc-shell::after {
  content: "";
  position: fixed;
  left: 0; right: 0; height: 2px;
  background: linear-gradient(180deg,
    rgba(255,140,32,.35) 0%,
    rgba(255,140,32,.1) 100%);
  pointer-events: none;
  z-index: 9998;
  animation: vcScanCrawl 2.5s linear infinite;
}

/* Holo shimmer on cards */
:root[data-vc-theme="me_omnitool"] .result-card,
:root[data-vc-theme="me_omnitool"] .lib-card {
  position: relative;
  overflow: hidden;
}
:root[data-vc-theme="me_omnitool"] .result-card::after,
:root[data-vc-theme="me_omnitool"] .lib-card::after {
  content: "";
  position: absolute; inset: 0;
  background: linear-gradient(120deg,
    transparent 30%,
    rgba(255,140,32,.06) 50%,
    transparent 70%);
  background-size: 200% 100%;
  animation: vcHoloShimmer 4s linear infinite;
  pointer-events: none;
}

/* HUD bracket corners — see §8.1 shared .vc-fx-hud-brackets class */
:root[data-vc-theme="me_omnitool"] .vc-modal-dialog,
:root[data-vc-theme="me_omnitool"] .result-card {
  position: relative;
}
:root[data-vc-theme="me_omnitool"] .vc-modal-dialog::after {
  content: "";
  position: absolute; inset: -1px;
  border-radius: inherit;
  pointer-events: none;
  background:
    linear-gradient(rgba(255,140,32,.5), rgba(255,140,32,.5)) top    left  / 12px 1.5px no-repeat,
    linear-gradient(rgba(255,140,32,.5), rgba(255,140,32,.5)) top    left  / 1.5px 12px no-repeat,
    linear-gradient(rgba(255,140,32,.5), rgba(255,140,32,.5)) top    right / 12px 1.5px no-repeat,
    linear-gradient(rgba(255,140,32,.5), rgba(255,140,32,.5)) top    right / 1.5px 12px no-repeat,
    linear-gradient(rgba(255,140,32,.5), rgba(255,140,32,.5)) bottom left  / 12px 1.5px no-repeat,
    linear-gradient(rgba(255,140,32,.5), rgba(255,140,32,.5)) bottom left  / 1.5px 12px no-repeat,
    linear-gradient(rgba(255,140,32,.5), rgba(255,140,32,.5)) bottom right / 12px 1.5px no-repeat,
    linear-gradient(rgba(255,140,32,.5), rgba(255,140,32,.5)) bottom right / 1.5px 12px no-repeat;
  animation: vcBloomPulse 3s ease-in-out infinite;
}

/* Paragon/Renegade accent — default Paragon (blue) */
:root[data-vc-theme="me_omnitool"] .btn-ritual {
  border-color: rgba(32,96,232,.55);
  box-shadow: 0 0 10px rgba(32,96,232,.2);
}
:root[data-vc-theme="me_omnitool"][data-me-bias="renegade"] .btn-ritual {
  border-color: rgba(255,80,32,.55);
  box-shadow: 0 0 10px rgba(255,80,32,.2);
}


/* ───────────────────────────────────────────────────────────────────────
   §8.14  RE — BIOHAZARD LAB
   Hazard stripes + containment fog vignette + low-health screen pulse.
   ─────────────────────────────────────────────────────────────────────── */

/* Hazard stripe header accent */
:root[data-vc-theme="re_biohazard"] .vc-page-header {
  border-bottom: 3px solid transparent;
  border-image: repeating-linear-gradient(
    -45deg,
    rgba(232,200,32,.4) 0px,
    rgba(232,200,32,.4) 6px,
    rgba(224,32,32,.35) 6px,
    rgba(224,32,32,.35) 12px
  ) 1;
}

/* Containment fog vignette */
:root[data-vc-theme="re_biohazard"] body::after {
  background-image:
    radial-gradient(ellipse 100% 100% at 50% 50%, transparent 45%, rgba(5,8,8,.75) 100%);
  background-size: cover;
  animation: vcBloomPulse 5s ease-in-out infinite;
}

/* Security cam timestamp — fixed bottom corner */
:root[data-vc-theme="re_biohazard"] .vc-main::before {
  content: "REC ● CAM-01";
  position: fixed;
  bottom: 12px; right: 16px;
  font-family: var(--font-vhs, monospace);
  font-size: 9px;
  letter-spacing: 2px;
  color: rgba(232,200,32,.5);
  pointer-events: none;
  z-index: 9999;
  animation: vcTelemetryBlip 3s ease-in-out infinite;
}

/* Low-health pulse — body border when breach is on */
:root[data-vc-theme="re_biohazard"] body.vc-fx-breach-on {
  animation: vcLowHealthPulse 1.8s ease-in-out infinite;
}

/* Biohazard badge on locker items */
:root[data-vc-theme="re_biohazard"] .rb-owned::before {
  content: "☣ ";
  font-size: 8px;
}


/* ───────────────────────────────────────────────────────────────────────
   §8.15  RE — UMBRELLA CORP CLINICAL
   Sterile CRT bloom + biohazard microtext watermark + seal stamps.
   ─────────────────────────────────────────────────────────────────────── */

/* Sterile bloom — cool white center */
:root[data-vc-theme="re_umbrella"] body::after {
  background-image:
    radial-gradient(ellipse 50% 30% at 50% 50%, rgba(220,220,240,.03) 0%, transparent 80%);
  background-size: cover;
  animation: vcCrtHum 5s ease-in-out infinite;
}

/* Biohazard microtext watermark on page */
:root[data-vc-theme="re_umbrella"] .vc-main::before {
  content: "UMBRELLA CORP · CLASSIFIED · UMBRELLA CORP · CLASSIFIED · UMBRELLA CORP · CLASSIFIED · UMBRELLA CORP · CLASSIFIED · UMBRELLA CORP · CLASSIFIED";
  position: fixed;
  bottom: 8px; left: 0; right: 0;
  text-align: center;
  font-family: var(--font-vhs, monospace);
  font-size: 7px;
  letter-spacing: 3px;
  color: rgba(204,26,26,.18);
  pointer-events: none;
  z-index: 9999;
  white-space: nowrap;
  overflow: hidden;
}

/* Containment seal on active badge */
:root[data-vc-theme="re_umbrella"] .vc-theme-active::before {
  content: "☂ ";
  font-size: 9px;
  opacity: .7;
}

/* Sterile grid — white on dark */
:root[data-vc-theme="re_umbrella"] body.vc-fx-icegrid-on .result-card::before,
:root[data-vc-theme="re_umbrella"] body.vc-fx-icegrid-on .lib-card::before {
  background-image:
    linear-gradient(to right, rgba(240,240,255,.05) 1px, transparent 1px),
    linear-gradient(to bottom, rgba(240,240,255,.04) 1px, transparent 1px);
  background-size: 20px 20px;
}


/* ───────────────────────────────────────────────────────────────────────
   §8.16  RE — SAFE ROOM
   Typewriter reveal + warm lamp vignette + inventory grid.
   ─────────────────────────────────────────────────────────────────────── */

/* Lamp glow vignette — warm amber center */
:root[data-vc-theme="re_saferoom"] body::after {
  background-image:
    radial-gradient(ellipse 60% 50% at 50% 50%,
      rgba(200,144,80,.06) 0%,
      transparent 70%),
    radial-gradient(ellipse 100% 40% at 50% 100%,
      rgba(16,12,8,.7) 0%,
      transparent 80%);
  background-size: cover;
  animation: vcBloomPulse 7s ease-in-out infinite;
}

/* Inventory grid on card backgrounds */
:root[data-vc-theme="re_saferoom"] body.vc-fx-icegrid-on .result-card::before,
:root[data-vc-theme="re_saferoom"] body.vc-fx-icegrid-on .lib-card::before {
  background-image:
    linear-gradient(to right, rgba(200,144,80,.06) 1px, transparent 1px),
    linear-gradient(to bottom, rgba(200,144,80,.05) 1px, transparent 1px);
  background-size: 24px 24px;
}

/* Typewriter cursor on search input */
:root[data-vc-theme="re_saferoom"] input:focus {
  border-right: 2px solid rgba(200,144,80,.7) !important;
  animation: vcTypeBlink .9s step-end infinite;
}

/* Ribbon accent — the iconic typewriter save ribbon */
:root[data-vc-theme="re_saferoom"] .sidebar-footer {
  border-top: 2px solid rgba(200,144,80,.22);
  position: relative;
}
:root[data-vc-theme="re_saferoom"] .sidebar-footer::before {
  content: "— GAME SAVED —";
  display: block;
  font-family: var(--font-vhs, monospace);
  font-size: 8px;
  letter-spacing: 3px;
  color: rgba(200,144,80,.45);
  text-align: center;
  margin-bottom: 4px;
}


/* ───────────────────────────────────────────────────────────────────────
   §8.17  RE — VHS FOUND FOOTAGE
   Tracking tear + REC timestamp + lens dirt grain.
   ─────────────────────────────────────────────────────────────────────── */

/* Lens dirt / moisture grain */
:root[data-vc-theme="re_vhs"] body::before {
  background-image:
    url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.65 0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.07'/%3E%3C/svg%3E");
  background-size: 512px 512px;
}

/* VHS scanlines — heavier than default */
:root[data-vc-theme="re_vhs"] body::after {
  background-image:
    repeating-linear-gradient(
      0deg,
      rgba(0,0,0,.18) 0px,
      rgba(0,0,0,.18) 1px,
      transparent 1px,
      transparent 3px
    );
  animation: vcPhosphorBloom 3s ease-in-out infinite;
}

/* REC timestamp — top-left corner */
:root[data-vc-theme="re_vhs"] .vc-main::before {
  content: "● REC  00:00";
  position: fixed;
  top: 14px; left: 20px;
  font-family: var(--font-vhs, monospace);
  font-size: 10px;
  letter-spacing: 2px;
  color: rgba(224,16,16,.8);
  pointer-events: none;
  z-index: 9999;
  animation: vcTelemetryBlip 2s ease-in-out infinite;
}

/* Tracking tear glitch on main content */
:root[data-vc-theme="re_vhs"] .vc-main {
  animation: vcTrackingTear 8s ease-in-out infinite;
}

/* Exposure over-bright flicker on hover */
:root[data-vc-theme="re_vhs"] .result-card:hover img,
:root[data-vc-theme="re_vhs"] .lib-card:hover img {
  filter: brightness(1.08) contrast(1.05) saturate(0.85);
  transition: filter .1s;
}


/* ───────────────────────────────────────────────────────────────────────
   §8.18  KOTOR — HOLOCRON / JEDI ARCHIVE
   Hologlyph rune overlay + Force aura ring + light-seam borders.
   ─────────────────────────────────────────────────────────────────────── */

/* Force aura — slow rotating border ring on modals */
:root[data-vc-theme="kotor_holocron"] .vc-modal-dialog {
  position: relative;
  overflow: hidden;
}
:root[data-vc-theme="kotor_holocron"] .vc-modal-dialog::after {
  content: "";
  position: absolute; inset: -50%;
  background: conic-gradient(
    from 0deg,
    transparent 0deg,
    rgba(96,200,240,.18) 30deg,
    rgba(200,32,16,.12) 90deg,
    transparent 120deg,
    rgba(96,200,240,.10) 200deg,
    transparent 240deg,
    rgba(200,32,16,.08) 300deg,
    transparent 360deg
  );
  animation: vcForceRotate 18s linear infinite;
  pointer-events: none;
  mix-blend-mode: screen;
}

/* Hologlyph rune overlay on page */
:root[data-vc-theme="kotor_holocron"] .vc-shell::after {
  content: "";
  position: fixed; inset: 0;
  pointer-events: none;
  z-index: 9997;
  background:
    radial-gradient(circle 1.5px at 22% 20%, rgba(96,200,240,.55) 0%, transparent 100%),
    radial-gradient(circle 1px  at 68% 14%, rgba(200,32,16,.45) 0%, transparent 100%),
    radial-gradient(circle 2px  at 78% 35%, rgba(96,200,240,.5) 0%, transparent 100%),
    radial-gradient(circle 1px  at 40% 55%, rgba(200,32,16,.4) 0%, transparent 100%),
    radial-gradient(circle 1.5px at 85% 62%, rgba(96,200,240,.45) 0%, transparent 100%),
    radial-gradient(circle 1px  at 15% 78%, rgba(200,32,16,.5) 0%, transparent 100%);
  animation: vcRunePulse 4s ease-in-out infinite;
}

/* Light seam borders */
:root[data-vc-theme="kotor_holocron"] .result-card,
:root[data-vc-theme="kotor_holocron"] .lib-card {
  border-color: rgba(96,200,240,.18);
  box-shadow:
    0 0 0 1px rgba(96,200,240,.06) inset,
    0 4px 14px rgba(6,8,15,.7);
}

/* Force side — Light/Dark aura on active theme badge */
:root[data-vc-theme="kotor_holocron"] .vc-theme-active {
  animation: vcPlasmaGlow 3s ease-in-out infinite;
}


/* ───────────────────────────────────────────────────────────────────────
   §8.19  ZELDA — SHEIKAH SLATE / ANCIENT TECH
   Rune overlay + topographic grid lines + UI activation pulse.
   ─────────────────────────────────────────────────────────────────────── */

/* Sheikah rune watermark overlay */
:root[data-vc-theme="zelda_sheikah"] .vc-shell::after {
  content: "";
  position: fixed; inset: 0;
  pointer-events: none;
  z-index: 9997;
  background:
    radial-gradient(circle 2px at 30% 20%, rgba(64,200,232,.6) 0%, transparent 100%),
    radial-gradient(circle 1.5px at 70% 15%, rgba(64,200,232,.5) 0%, transparent 100%),
    radial-gradient(circle 1px  at 50% 45%, rgba(224,40,56,.4) 0%, transparent 100%),
    radial-gradient(circle 2px  at 20% 65%, rgba(64,200,232,.55) 0%, transparent 100%),
    radial-gradient(circle 1.5px at 80% 72%, rgba(64,200,232,.45) 0%, transparent 100%),
    radial-gradient(circle 1px  at 55% 88%, rgba(224,40,56,.35) 0%, transparent 100%);
  animation: vcRunePulse 5s ease-in-out infinite;
}

/* Topographic contour lines on card surfaces */
:root[data-vc-theme="zelda_sheikah"] body.vc-fx-icegrid-on .result-card::before,
:root[data-vc-theme="zelda_sheikah"] body.vc-fx-icegrid-on .lib-card::before,
:root[data-vc-theme="zelda_sheikah"] body.vc-fx-icegrid-on .vc-modal-dialog::before {
  background-image:
    repeating-radial-gradient(
      ellipse at 50% 50%,
      transparent,
      transparent 24px,
      rgba(64,200,232,.07) 25px
    );
  background-size: 80px 80px;
}

/* UI activation pulse on button click */
:root[data-vc-theme="zelda_sheikah"] .btn:active {
  box-shadow: 0 0 0 6px rgba(64,200,232,.2), 0 0 20px rgba(64,200,232,.15) !important;
  transition: box-shadow .05s;
}

/* Sheikah eye glyph on active badge */
:root[data-vc-theme="zelda_sheikah"] .vc-theme-active::before {
  content: "◈ ";
  font-size: 9px;
  opacity: .8;
  color: var(--gold);
}

/* Rune glow on sidebar logo */
:root[data-vc-theme="zelda_sheikah"] .sidebar-logo-wordmark {
  text-shadow: 0 0 12px rgba(64,200,232,.4), 0 0 24px rgba(64,200,232,.15);
  animation: vcRunePulse 4s ease-in-out infinite;
}


/* ───────────────────────────────────────────────────────────────────────
   §8.20  MARATHON — RUNNER HUD / NEON VOID TERMINAL
   Vector scan diagonal + HUD bracket corners + telemetry strip.
   ─────────────────────────────────────────────────────────────────────── */

/* Diagonal vector scan lines */
:root[data-vc-theme="marathon_hud"] body::before {
  background-image:
    repeating-linear-gradient(
      -35deg,
      transparent 0px,
      transparent 10px,
      rgba(255,90,32,.025) 10px,
      rgba(255,90,32,.025) 11px
    ),
    url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.04'/%3E%3C/svg%3E");
  background-size: cover, 256px 256px;
}

/* HUD bracket corners on the main viewport */
:root[data-vc-theme="marathon_hud"] .vc-main::before {
  content: "";
  position: fixed;
  inset: 10px;
  pointer-events: none;
  z-index: 9995;
  background:
    linear-gradient(rgba(255,90,32,.6), rgba(255,90,32,.6)) top    left  / 20px 2px no-repeat,
    linear-gradient(rgba(255,90,32,.6), rgba(255,90,32,.6)) top    left  / 2px 20px no-repeat,
    linear-gradient(rgba(255,90,32,.6), rgba(255,90,32,.6)) top    right / 20px 2px no-repeat,
    linear-gradient(rgba(255,90,32,.6), rgba(255,90,32,.6)) top    right / 2px 20px no-repeat,
    linear-gradient(rgba(255,90,32,.6), rgba(255,90,32,.6)) bottom left  / 20px 2px no-repeat,
    linear-gradient(rgba(255,90,32,.6), rgba(255,90,32,.6)) bottom left  / 2px 20px no-repeat,
    linear-gradient(rgba(255,90,32,.6), rgba(255,90,32,.6)) bottom right / 20px 2px no-repeat,
    linear-gradient(rgba(255,90,32,.6), rgba(255,90,32,.6)) bottom right / 2px 20px no-repeat;
  animation: vcBloomPulse 4s ease-in-out infinite;
}

/* Telemetry strip — top edge data bar */
:root[data-vc-theme="marathon_hud"] .vc-main::after {
  content: "RUNNER · ONLINE · SYS:OK · PKT:—— · LAT:—ms · RUN";
  position: fixed;
  top: 0; left: 0; right: 0;
  height: 18px;
  background: rgba(4,6,10,.9);
  border-bottom: 1px solid rgba(255,90,32,.25);
  font-family: var(--font-vhs, monospace);
  font-size: 7px;
  letter-spacing: 3px;
  color: rgba(255,90,32,.55);
  display: flex;
  align-items: center;
  padding-left: 16px;
  pointer-events: none;
  z-index: 9999;
  animation: vcTelemetryBlip 2.5s ease-in-out infinite;
}

/* Packet-loss micro-glitch on cards when glitch is on */
:root[data-vc-theme="marathon_hud"] body.vc-fx-glitch-on .result-card:nth-child(7n) {
  animation: vcTrackingTear 12s ease-in-out infinite;
}


/* ───────────────────────────────────────────────────────────────────────
   §8.21  HALO 2 — UNSC HUD + COVENANT GLOW
   Shield pulse ring + reticle bracket corners + Cortana circuit veil.
   ─────────────────────────────────────────────────────────────────────── */

/* Reticle bracket corners on viewport */
:root[data-vc-theme="halo2_unsc"] .vc-main::before {
  content: "";
  position: fixed;
  inset: 8px;
  pointer-events: none;
  z-index: 9995;
  background:
    linear-gradient(rgba(48,200,112,.5), rgba(48,200,112,.5)) top    left  / 16px 2px no-repeat,
    linear-gradient(rgba(48,200,112,.5), rgba(48,200,112,.5)) top    left  / 2px 16px no-repeat,
    linear-gradient(rgba(48,200,112,.5), rgba(48,200,112,.5)) top    right / 16px 2px no-repeat,
    linear-gradient(rgba(48,200,112,.5), rgba(48,200,112,.5)) top    right / 2px 16px no-repeat,
    linear-gradient(rgba(48,200,112,.5), rgba(48,200,112,.5)) bottom left  / 16px 2px no-repeat,
    linear-gradient(rgba(48,200,112,.5), rgba(48,200,112,.5)) bottom left  / 2px 16px no-repeat,
    linear-gradient(rgba(48,200,112,.5), rgba(48,200,112,.5)) bottom right / 16px 2px no-repeat,
    linear-gradient(rgba(48,200,112,.5), rgba(48,200,112,.5)) bottom right / 2px 16px no-repeat;
}

/* Shield recharge pulse ring on modal */
:root[data-vc-theme="halo2_unsc"] .vc-modal-dialog {
  animation: vcShieldPulse 4s ease-in-out infinite;
}

/* Cortana circuit veil — sigil-like shimmer */
:root[data-vc-theme="halo2_unsc"] body.vc-fx-sigils-on .vc-shell::after {
  content: "";
  position: fixed; inset: 0;
  pointer-events: none;
  z-index: 9997;
  background:
    radial-gradient(circle 1.5px at 25% 30%, rgba(80,128,255,.55) 0%, transparent 100%),
    radial-gradient(circle 1px  at 65% 20%, rgba(168,64,240,.5) 0%, transparent 100%),
    radial-gradient(circle 2px  at 75% 50%, rgba(80,128,255,.5) 0%, transparent 100%),
    radial-gradient(circle 1px  at 40% 70%, rgba(168,64,240,.45) 0%, transparent 100%),
    radial-gradient(circle 1.5px at 88% 80%, rgba(80,128,255,.4) 0%, transparent 100%);
  animation: vcRunePulse 5s ease-in-out infinite;
}

/* Plasma badge glow on rare items */
:root[data-vc-theme="halo2_unsc"] .rb {
  animation: vcPlasmaGlow 4s ease-in-out infinite;
}


/* ───────────────────────────────────────────────────────────────────────
   §8.22  MARIO — TOYBOX CLEAN
   Coin sparkle on hover + confetti pop on milestones + sticker badges.
   ─────────────────────────────────────────────────────────────────────── */

/* Card hover coin flash */
:root[data-vc-theme="mario_toybox"] .result-card:hover,
:root[data-vc-theme="mario_toybox"] .lib-card:hover {
  box-shadow:
    0 6px 20px rgba(232,72,48,.15),
    0 0 0 2px rgba(245,204,48,.3),
    0 0 12px rgba(245,204,48,.12) !important;
  transition: box-shadow .15s;
}

/* Star/coin sparkle overlay on result-card hover */
:root[data-vc-theme="mario_toybox"] .result-card::before {
  content: "★";
  position: absolute;
  top: 8px; right: 8px;
  font-size: 12px;
  color: rgba(245,204,48,.8);
  opacity: 0;
  pointer-events: none;
  transition: opacity .15s;
  filter: drop-shadow(0 0 4px rgba(245,204,48,.6));
}
:root[data-vc-theme="mario_toybox"] .result-card:hover::before {
  opacity: 1;
  animation: vcCoinSpin .5s ease-in-out;
}

/* Sticker badges — round pill style */
:root[data-vc-theme="mario_toybox"] .rb {
  border-radius: 999px !important;
  font-weight: 700;
  letter-spacing: 0.5px;
}
:root[data-vc-theme="mario_toybox"] .rb-owned {
  background: rgba(232,72,48,.85) !important;
  border-color: rgba(232,72,48,.9) !important;
  color: #fff !important;
}
:root[data-vc-theme="mario_toybox"] .rb-playing {
  background: rgba(245,204,48,.85) !important;
  border-color: rgba(245,204,48,.9) !important;
  color: #2a1800 !important;
}

/* Confetti pop — sprinkled on .vc-fx-confetti class (added by JS on milestone) */
.vc-fx-confetti-piece {
  position: fixed;
  width: 6px; height: 6px;
  border-radius: 1px;
  pointer-events: none;
  z-index: 10000;
  animation: vcConfettiFall .9s ease-in forwards;
}

/* Light + bright body for Mario */
:root[data-vc-theme="mario_toybox"] body::after {
  background-image:
    radial-gradient(ellipse 70% 50% at 50% 20%, rgba(255,255,255,.04) 0%, transparent 70%);
  background-size: cover;
  animation: none;
}


/* ───────────────────────────────────────────────────────────────────────
   §8.23  DRAGON AGE — FADE / VEILFIRE CODEX
   Rune circle etch + veilfire mist wisps + codex parchment styling.
   ─────────────────────────────────────────────────────────────────────── */

/* Parchment grain texture */
:root[data-vc-theme="da_veilfire"] body::before {
  background-image:
    url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.45 0.65' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.055'/%3E%3C/svg%3E");
  background-size: 512px 512px;
}

/* Veilfire mist — teal wisps from bottom */
:root[data-vc-theme="da_veilfire"] .vc-shell::before {
  content: "";
  position: fixed;
  bottom: 0; left: -10%; right: -10%;
  height: 50vh;
  background:
    radial-gradient(ellipse 80% 60% at 30% 100%, rgba(32,216,200,.09) 0%, transparent 70%),
    radial-gradient(ellipse 60% 40% at 70% 100%, rgba(184,56,220,.07) 0%, transparent 60%);
  pointer-events: none;
  z-index: 9996;
  animation: vcVeilfireMist 10s ease-in-out infinite alternate;
}

/* Rune circle on page bg — tiled faint pattern */
:root[data-vc-theme="da_veilfire"] body.vc-fx-icegrid-on .vc-modal-dialog::before,
:root[data-vc-theme="da_veilfire"] body.vc-fx-icegrid-on .result-card::before {
  background-image:
    repeating-radial-gradient(
      circle at 50% 50%,
      transparent,
      transparent 30px,
      rgba(32,216,200,.06) 31px,
      transparent 32px
    );
  background-size: 80px 80px;
}

/* Codex page styling on cards */
:root[data-vc-theme="da_veilfire"] .result-card,
:root[data-vc-theme="da_veilfire"] .lib-card {
  border-color: rgba(32,216,200,.14);
  box-shadow:
    0 4px 16px rgba(7,6,15,.6),
    inset 0 0 0 1px rgba(32,216,200,.05);
}

/* Blood accent on destructive buttons */
:root[data-vc-theme="da_veilfire"] .lib-card-remove {
  border-color: rgba(184,56,220,.5) !important;
  color: rgba(184,56,220,.9) !important;
}


/* ───────────────────────────────────────────────────────────────────────
   §8.24  FALLOUT — PIP-BOY TERMINAL
   CRT curvature warp + phosphor bloom scanlines + bezel overlay.
   ─────────────────────────────────────────────────────────────────────── */

/* Heavy phosphor scanlines — override default */
:root[data-vc-theme="fallout_pipboy"] body::after {
  background-image:
    repeating-linear-gradient(
      0deg,
      rgba(0,0,0,.25) 0px,
      rgba(0,0,0,.25) 1px,
      transparent 1px,
      transparent 2px
    );
  animation: vcPhosphorBloom 2.5s ease-in-out infinite;
}

/* CRT phosphor glow grain */
:root[data-vc-theme="fallout_pipboy"] body::before {
  background-image:
    url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.06'/%3E%3C/svg%3E");
  background-size: 256px 256px;
}

/* CRT bezel — rounded border + inner shadow + curvature hint */
:root[data-vc-theme="fallout_pipboy"] .vc-main::before {
  content: "";
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 9998;
  border-radius: 12px;
  box-shadow:
    inset 0 0 80px rgba(0,0,0,.55),
    inset 0 0 8px rgba(78,255,88,.08);
  background:
    radial-gradient(ellipse 100% 100% at 50% 50%,
      transparent 70%,
      rgba(0,0,0,.4) 100%);
  animation: vcCrtHum 3s ease-in-out infinite;
}

/* Terminal bezel frame */
:root[data-vc-theme="fallout_pipboy"] .vc-main::after {
  content: "PIP-BOY 3000 · ROBCO IND.";
  position: fixed;
  bottom: 6px; right: 12px;
  font-family: var(--font-vhs, monospace);
  font-size: 7px;
  letter-spacing: 3px;
  color: rgba(78,255,88,.3);
  pointer-events: none;
  z-index: 9999;
}

/* CRT warp on whole page */
:root[data-vc-theme="fallout_pipboy"] .vc-shell {
  filter: contrast(1.06) brightness(1.04);
  animation: vcCrtHum 4s ease-in-out infinite;
}

/* Rad warning badge */
:root[data-vc-theme="fallout_pipboy"] .rb-owned::before {
  content: "☢ ";
  font-size: 8px;
}




/* ═══════════════════════════════════════════════════════════════════════
   ╔═ ZELDA — OCARINA OF TIME ══════════════════════════════════════════╗
   ═══════════════════════════════════════════════════════════════════════ */

:root[data-vc-theme="zelda_ocarina"] {
  --void:          #0a1408;
  --abyss:         #102010;
  --deep:          #182e18;
  --chamber:       #203c20;
  --altar:         #284828;
  --surface:       #325432;

  --text:          rgba(235,248,228,.93);
  --static:        rgba(220,236,212,.88);
  --bone:          rgba(248,255,240,.96);
  --fog:           rgba(148,195,138,.65);
  --dust:          rgba(100,148,90,.50);
  --muted:         rgba(70,112,62,.55);

  /* Gold slot → N64 HUD gold, Triforce amber */
  --gold:          #e8a020;
  --gold-bright:   #f8bc38;
  --gold-pale:     rgba(255,240,195,.96);
  --gold-dim:      rgba(232,160,32,.52);
  --gold-glow:     rgba(232,160,32,.22);

  /* Blood slot → Kokiri forest green, deep canopy */
  --blood:         #1a5020;
  --blood-bright:  #286830;
  --blood-glow:    rgba(26,80,32,.50);

  --border:        rgba(100,185,88,.16);
  --border-bright: rgba(130,212,115,.38);
  --rim:           rgba(80,165,68,.12);
  --line:          rgba(58,138,48,.08);

  --green:         #40d060;
  --violet:        rgba(100,180,240,.80);

  --sidebar-shell:         linear-gradient(180deg, rgba(10,20,8,.99), rgba(6,14,5,.99));
  --sidebar-border:        rgba(80,165,68,.13);
  --sidebar-active-bg:     rgba(232,160,32,.08);
  --sidebar-active-border: rgba(232,160,32,.24);

  --fx-trace-color:     rgba(120,220,100,.22);
  --fx-icegrid-h:       rgba(80,165,68,.06);
  --fx-icegrid-v:       rgba(26,80,32,.04);
  --fx-icegrid-opacity: 0.10;
}


/* ── Zelda · Ocarina of Time FX ──────────────────────────────────────── */

/* Dusk warmth grain — like the Kokiri Forest at golden hour */
:root[data-vc-theme="zelda_ocarina"] body::before {
  background-image:
    url("data:image/svg+xml,%3Csvg viewBox='0 0 400 400' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.65 0.75' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.045'/%3E%3C/svg%3E");
  background-size: 400px 400px;
}

/* Warm forest canopy light from above */
:root[data-vc-theme="zelda_ocarina"] body::after {
  background-image:
    radial-gradient(ellipse 65% 50% at 50% 0%,
      rgba(232,160,32,var(--fx-bloom-intensity,.07)) 0%,
      rgba(64,208,96,calc(var(--fx-bloom-intensity,.07)*0.57)) 50%,
      transparent 75%),
    radial-gradient(ellipse 100% 60% at 50% 100%,
      rgba(10,20,8,var(--fx-vignette-depth,.50)) 0%,
      transparent 70%);
  background-size: cover;
  animation: vcBloomPulse 7s ease-in-out infinite;
}

/* Fairy sweep trace — navi blue-white */
:root[data-vc-theme="zelda_ocarina"] body.vc-fx-trace-on .vc-shell::after {
  content: "";
  position: fixed;
  left: 0; right: 0; height: 1.5px;
  background: linear-gradient(90deg,
    transparent 0%,
    rgba(160,220,255,.35) 30%,
    rgba(232,160,32,.25) 50%,
    rgba(160,220,255,.35) 70%,
    transparent 100%);
  pointer-events: none;
  z-index: 9998;
  animation: vcScanCrawl 5s ease-in-out infinite;
}

/* Triforce breach pulse — gold bloom */
:root[data-vc-theme="zelda_ocarina"] body.vc-fx-breach-on .vc-modal-dialog {
  box-shadow: 0 0 0 1px rgba(232,160,32,.25), 0 0 40px rgba(232,160,32,.12) !important;
  animation: vcBloomPulse 3s ease-in-out infinite;
}

/* Forest glow on card hover */
:root[data-vc-theme="zelda_ocarina"] .result-card:hover,
:root[data-vc-theme="zelda_ocarina"] .lib-card:hover {
  box-shadow: 0 4px 20px rgba(40,104,48,.20), 0 0 0 1px rgba(64,208,96,.18) !important;
}

/* Triforce icon on active badge */
:root[data-vc-theme="zelda_ocarina"] .vc-theme-active::before {
  content: "▲ ";
  font-size: 8px;
  opacity: .8;
  color: var(--gold);
}

/* Hey! Listen. footer */
:root[data-vc-theme="zelda_ocarina"] .vc-main::before {
  content: "HEY! LISTEN. · OCARINA OF TIME";
  position: fixed;
  bottom: 8px; right: 14px;
  font-family: var(--font-vhs, monospace);
  font-size: 7px;
  letter-spacing: 3px;
  color: rgba(232,160,32,.28);
  pointer-events: none;
  z-index: 9999;
}

/* Logo wordmark — forest glow */
:root[data-vc-theme="zelda_ocarina"] .sidebar-logo-wordmark {
  text-shadow: 0 0 16px rgba(64,208,96,.20), 0 0 40px rgba(232,160,32,.10);
}

/* ═══════════════════════════════════════════════════════════════════════
   §9  PASS 2 THEME EFFECTS
   New and reworked FX for transformed themes.
   ═══════════════════════════════════════════════════════════════════════ */


/* ───────────────────────────────────────────────────────────────────────
   §9.1  AW2 — SAGA ANDERSON
   Nordic warmth, cork board obsession, mind place amber. She finds the truth.
   ─────────────────────────────────────────────────────────────────────── */

/* Warm grain — like wool texture or old film photo */
:root[data-vc-theme="aw2_saga"] body::before {
  background-image:
    url("data:image/svg+xml,%3Csvg viewBox='0 0 400 400' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.75 0.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.055'/%3E%3C/svg%3E");
  background-size: 400px 400px;
}

/* Warm lamplight vignette — like a living room in Watery */
:root[data-vc-theme="aw2_saga"] body::after {
  background-image:
    radial-gradient(ellipse 80% 60% at 50% 30%,
      rgba(200,120,90,var(--fx-bloom-intensity,.04)) 0%,
      transparent 70%),
    radial-gradient(ellipse 100% 50% at 50% 100%,
      rgba(18,16,14,.55) 0%,
      transparent 80%);
  background-size: cover;
  animation: vcBloomPulse 8s ease-in-out infinite;
}

/* Mind place thread trace — amber sweep */
:root[data-vc-theme="aw2_saga"] body.vc-fx-trace-on .vc-shell::after {
  content: "";
  position: fixed;
  left: 0; right: 0; height: 1.5px;
  background: linear-gradient(180deg,
    rgba(200,120,90,var(--fx-trace-brightness,.30)) 0%,
    rgba(200,120,90,calc(var(--fx-trace-brightness,.30)*0.27)) 100%);
  pointer-events: none;
  z-index: 9998;
  animation: vcScanCrawl 4s linear infinite;
}

/* Nordic knit pattern on card backgrounds when icegrid on */
:root[data-vc-theme="aw2_saga"] body.vc-fx-icegrid-on .result-card::before,
:root[data-vc-theme="aw2_saga"] body.vc-fx-icegrid-on .lib-card::before {
  background-image:
    repeating-linear-gradient(
      0deg,
      transparent 0px, transparent 7px,
      rgba(200,120,90,.05) 7px, rgba(200,120,90,.05) 8px
    ),
    repeating-linear-gradient(
      90deg,
      transparent 0px, transparent 7px,
      rgba(200,120,90,.03) 7px, rgba(200,120,90,.03) 8px
    );
  background-size: 8px 8px;
}

/* Cork board edge on cards */
:root[data-vc-theme="aw2_saga"] .result-card,
:root[data-vc-theme="aw2_saga"] .lib-card {
  border-left: 2px solid rgba(200,120,90,.16) !important;
}

/* Polaroid-style border on images */
:root[data-vc-theme="aw2_saga"] .result-poster,
:root[data-vc-theme="aw2_saga"] .lib-card-poster {
  box-shadow: 0 2px 8px rgba(18,16,14,.6), inset 0 0 0 3px rgba(248,242,234,.06);
}


/* ───────────────────────────────────────────────────────────────────────
   §9.2  CONTROL — POLARIS REWORK
   Crystal dark. One cold light. No grain, no warmth. It called you.
   ─────────────────────────────────────────────────────────────────────── */

/* Remove noise — Polaris is clean void */
:root[data-vc-theme="control_polaris"] body::before {
  display: none;
}

/* Cold light bloom from center — the Polaris object */
:root[data-vc-theme="control_polaris"] body::after {
  background-image:
    radial-gradient(ellipse 40% 35% at 50% 42%,
      rgba(168,204,224,var(--fx-bloom-intensity,.06)) 0%,
      rgba(100,140,180,calc(var(--fx-bloom-intensity,.06)*0.5)) 40%,
      transparent 70%),
    radial-gradient(ellipse 100% 100% at 50% 50%,
      transparent 55%,
      rgba(5,8,16,var(--fx-vignette-depth,.75)) 100%);
  background-size: cover;
  animation: vcBloomPulse 6s ease-in-out infinite;
}

/* Single crystalline pulse on breach */
:root[data-vc-theme="control_polaris"] body.vc-fx-breach-on .vc-modal-dialog {
  animation: vcShieldPulse 4s ease-in-out infinite;
  box-shadow: 0 0 0 1px rgba(168,204,224,.12), 0 0 40px rgba(168,204,224,.06) !important;
}

/* Crystal geometry on cards — subtle refraction lines */
:root[data-vc-theme="control_polaris"] .result-card,
:root[data-vc-theme="control_polaris"] .lib-card {
  border-color: rgba(100,140,180,.12);
  box-shadow: 0 4px 20px rgba(5,8,16,.7), 0 0 0 1px rgba(168,204,224,.04) inset;
}

/* Cold light logo */
:root[data-vc-theme="control_polaris"] .sidebar-logo-wordmark {
  text-shadow: 0 0 20px rgba(168,204,224,.25), 0 0 60px rgba(168,204,224,.08);
}


/* ───────────────────────────────────────────────────────────────────────
   §9.3  CONTROL — HISS REWORK
   Organic crimson. Something breathing in the walls. No scanline.
   ─────────────────────────────────────────────────────────────────────── */

/* Remove old single scanline */
:root[data-vc-theme="control_hiss"] .vc-main::after {
  display: none !important;
}

/* Organic flesh-red noise — heavier, more biological */
:root[data-vc-theme="control_hiss"] body::before {
  background-image:
    url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='turbulence' baseFrequency='0.55 0.45' numOctaves='5' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.09'/%3E%3C/svg%3E");
  background-size: 512px 512px;
  mix-blend-mode: overlay;
  opacity: 0.6;
}

/* Edge-in organic bloom — the presence filling the room */
:root[data-vc-theme="control_hiss"] body::after {
  background-image:
    radial-gradient(ellipse 100% 100% at 50% 50%,
      transparent 38%,
      rgba(200,8,32,calc(var(--fx-atmos-opacity,.12)*1.0)) 65%,
      rgba(200,8,32,calc(var(--fx-atmos-opacity,.12)*1.83)) 100%);
  background-size: cover;
  animation: vcHissOrganic 5s ease-in-out infinite;
  will-change: opacity;
}

/* Bottom-up pulse flow — ported from Tour Night concept */
:root[data-vc-theme="control_hiss"] .vc-shell::before {
  content: "";
  position: fixed;
  bottom: 0; left: 0; right: 0;
  height: 40vh;
  background:
    radial-gradient(ellipse 70% 80% at 30% 100%, rgba(200,8,32,var(--fx-atmos-opacity,.12)) 0%, transparent 70%),
    radial-gradient(ellipse 50% 60% at 70% 100%, rgba(150,4,20,calc(var(--fx-atmos-opacity,.10)*0.83)) 0%, transparent 65%);
  pointer-events: none;
  z-index: 9996;
  animation: vcHissRise 7s ease-in-out infinite alternate;
  will-change: opacity, transform;
}

/* Glitch reality tear */
:root[data-vc-theme="control_hiss"] body.vc-fx-glitch-on .vc-main {
  animation: vcTrackingTear 6s ease-in-out infinite;
}

/* Corrupted card hover */
:root[data-vc-theme="control_hiss"] .result-card:hover .result-poster img,
:root[data-vc-theme="control_hiss"] .lib-card:hover .lib-card-poster img {
  filter: contrast(1.15) saturate(0.8) hue-rotate(-10deg);
  animation: vcGlitchPulse 200ms ease-out;
}

/* Breach: full organic strobe */
:root[data-vc-theme="control_hiss"] body.vc-fx-breach-on::after {
  animation: vcHissStrobe 3.2s steps(1) infinite !important;
}

@keyframes vcHissOrganic {
  0%, 100% { opacity: 0.7; }
  50%       { opacity: 1.0; }
}
@keyframes vcHissRise {
  0%   { opacity: 0.5; transform: translateY(8px); }
  100% { opacity: 1.0; transform: translateY(-4px); }
}


/* ───────────────────────────────────────────────────────────────────────
   §9.4  CONTROL — FBC BUREAU REWORK
   Brutalist concrete. Fluorescent hum. OOP classified.
   ─────────────────────────────────────────────────────────────────────── */

/* Fluorescent overhead light cast */
:root[data-vc-theme="control_fbc"] body::after {
  background-image:
    radial-gradient(ellipse 90% 40% at 50% 0%,
      rgba(184,200,144,var(--fx-bloom-intensity,.05)) 0%,
      transparent 60%),
    radial-gradient(ellipse 100% 100% at 50% 50%,
      transparent 50%,
      rgba(12,12,12,.50) 100%);
  background-size: cover;
  animation: vcCrtHum 5s ease-in-out infinite;
}

/* Concrete grid texture on cards */
:root[data-vc-theme="control_fbc"] body.vc-fx-icegrid-on .result-card::before,
:root[data-vc-theme="control_fbc"] body.vc-fx-icegrid-on .lib-card::before {
  background-image:
    linear-gradient(to right, rgba(165,180,150,.07) 1px, transparent 1px),
    linear-gradient(to bottom, rgba(165,180,150,.06) 1px, transparent 1px);
  background-size: 18px 18px;
}

/* Fluorescent trace sweep */
:root[data-vc-theme="control_fbc"] body.vc-fx-trace-on .vc-shell::after {
  content: "";
  position: fixed;
  left: 0; right: 0; height: 2px;
  background: linear-gradient(180deg,
    rgba(184,200,144,var(--fx-trace-brightness,.28)) 0%,
    rgba(184,200,144,calc(var(--fx-trace-brightness,.28)*0.21)) 100%);
  pointer-events: none;
  z-index: 9998;
  animation: vcScanCrawl 3.2s linear infinite;
}

/* Classified stamp on modal */
:root[data-vc-theme="control_fbc"] .vc-modal-dialog {
  position: relative;
}

/* Folder accent on sidebar */
:root[data-vc-theme="control_fbc"] .sidebar-section-label {
  border-left: 3px solid rgba(184,200,144,.30);
  padding-left: 10px;
}

/* OOP reference stamp on cards */
:root[data-vc-theme="control_fbc"] .vc-main::before {
  content: "FBC · CLASSIFIED · OOP-01";
  position: fixed;
  bottom: 10px; right: 14px;
  font-family: var(--font-vhs, monospace);
  font-size: 7px;
  letter-spacing: 3px;
  color: rgba(184,200,144,.30);
  pointer-events: none;
  z-index: 9999;
}


/* ───────────────────────────────────────────────────────────────────────
   §9.5  RE — UMBRELLA CORP REWORK
   Clinical white facility. Cold light bloom. Corporate menace.
   ─────────────────────────────────────────────────────────────────────── */

/* Clinical white bloom — overhead lab lighting */
:root[data-vc-theme="re_umbrella"] body::after {
  background-image:
    radial-gradient(ellipse 70% 50% at 50% 0%,
      rgba(255,255,255,var(--fx-bloom-intensity,.65)) 0%,
      rgba(240,248,255,calc(var(--fx-bloom-intensity,.65)*0.46)) 40%,
      transparent 75%);
  background-size: cover;
  animation: none;
}

/* Sterile noise — very faint, just barely there */
:root[data-vc-theme="re_umbrella"] body::before {
  background-image:
    url("data:image/svg+xml,%3Csvg viewBox='0 0 300 300' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.025'/%3E%3C/svg%3E");
  background-size: 300px 300px;
  opacity: 0.4;
}

/* Umbrella logo watermark — subtle centered background */
:root[data-vc-theme="re_umbrella"] .vc-shell::after {
  content: "";
  position: fixed;
  top: 50%; left: 50%;
  transform: translate(-50%, -50%);
  width: min(40vw, 400px);
  height: min(40vw, 400px);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'%3E%3Ccircle cx='50' cy='50' r='48' fill='none' stroke='%23cc1a1a' stroke-width='2.5' opacity='0.06'/%3E%3Cpath d='M50 2 L50 98 M2 50 L98 50 M15.6 15.6 L84.4 84.4 M84.4 15.6 L15.6 84.4' stroke='%23cc1a1a' stroke-width='2.5' opacity='0.06'/%3E%3Ccircle cx='50' cy='50' r='6' fill='%23cc1a1a' opacity='0.08'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-size: contain;
  pointer-events: none;
  z-index: 9995;
}

/* Surveillance timestamp */
:root[data-vc-theme="re_umbrella"] .vc-main::before {
  content: "UMBRELLA CORP · CLASSIFIED · AUTHORIZED USE ONLY";
  position: fixed;
  bottom: 8px; left: 50%; transform: translateX(-50%);
  font-family: var(--font-vhs, monospace);
  font-size: 7px;
  letter-spacing: 3px;
  color: rgba(204,26,26,.45);
  pointer-events: none;
  z-index: 9999;
  white-space: nowrap;
}

/* Sterile grid on cards */
:root[data-vc-theme="re_umbrella"] body.vc-fx-icegrid-on .result-card::before,
:root[data-vc-theme="re_umbrella"] body.vc-fx-icegrid-on .lib-card::before {
  background-image:
    linear-gradient(to right, rgba(26,58,90,.06) 1px, transparent 1px),
    linear-gradient(to bottom, rgba(26,58,90,.05) 1px, transparent 1px);
  background-size: 22px 22px;
}

/* Red Umbrella accent on active theme badge */
:root[data-vc-theme="re_umbrella"] .vc-theme-active {
  border-color: rgba(204,26,26,.60) !important;
  background: rgba(204,26,26,.06) !important;
}


/* ───────────────────────────────────────────────────────────────────────
   §9.6  HALO — UNSC REWORK
   Olive drab. Gunmetal. Hazard yellow. Everything feels issued.
   ─────────────────────────────────────────────────────────────────────── */

/* UNSC tactical grid */
:root[data-vc-theme="halo2_unsc"] body.vc-fx-icegrid-on .result-card::before,
:root[data-vc-theme="halo2_unsc"] body.vc-fx-icegrid-on .lib-card::before {
  background-image:
    linear-gradient(to right, rgba(175,185,155,.07) 1px, transparent 1px),
    linear-gradient(to bottom, rgba(175,185,155,.06) 1px, transparent 1px);
  background-size: 24px 24px;
}

/* Hazard viewport brackets */
:root[data-vc-theme="halo2_unsc"] .vc-main::before {
  content: "";
  position: fixed;
  inset: 8px;
  pointer-events: none;
  z-index: 9995;
  background:
    linear-gradient(rgba(232,192,64,.5), rgba(232,192,64,.5)) top    left  / 18px 2px no-repeat,
    linear-gradient(rgba(232,192,64,.5), rgba(232,192,64,.5)) top    left  / 2px 18px no-repeat,
    linear-gradient(rgba(232,192,64,.5), rgba(232,192,64,.5)) top    right / 18px 2px no-repeat,
    linear-gradient(rgba(232,192,64,.5), rgba(232,192,64,.5)) top    right / 2px 18px no-repeat,
    linear-gradient(rgba(232,192,64,.5), rgba(232,192,64,.5)) bottom left  / 18px 2px no-repeat,
    linear-gradient(rgba(232,192,64,.5), rgba(232,192,64,.5)) bottom left  / 2px 18px no-repeat,
    linear-gradient(rgba(232,192,64,.5), rgba(232,192,64,.5)) bottom right / 18px 2px no-repeat,
    linear-gradient(rgba(232,192,64,.5), rgba(232,192,64,.5)) bottom right / 2px 18px no-repeat;
  top: 22px !important;
}

/* Motion tracker sweep */
:root[data-vc-theme="halo2_unsc"] body.vc-fx-trace-on .vc-shell::after {
  content: "";
  position: fixed;
  left: 0; right: 0; height: 1.5px;
  background: linear-gradient(180deg,
    rgba(232,192,64,var(--fx-trace-brightness,.30)) 0%,
    rgba(232,192,64,calc(var(--fx-trace-brightness,.30)*0.27)) 100%);
  pointer-events: none;
  z-index: 9998;
  animation: vcScanCrawl 3s linear infinite;
}

/* Shield recharge on modal */
:root[data-vc-theme="halo2_unsc"] body.vc-fx-breach-on .vc-modal-dialog {
  animation: vcShieldPulse 4.5s ease-in-out infinite;
}

/* Stencil sidebar labels */
:root[data-vc-theme="halo2_unsc"] .sidebar-section-label {
  letter-spacing: 3px;
  font-size: 9px;
}

/* UNSC serial at bottom */
:root[data-vc-theme="halo2_unsc"] .vc-main::after {
  content: "UNSC · S-117 · AUTH PERSONNEL ONLY";
  position: fixed;
  bottom: 8px; right: 14px;
  font-family: var(--font-vhs, monospace);
  font-size: 7px;
  letter-spacing: 3px;
  color: rgba(232,192,64,.28);
  pointer-events: none;
  z-index: 9999;
}

/* Hazard active badge */
:root[data-vc-theme="halo2_unsc"] .vc-theme-active {
  border-color: rgba(232,192,64,.65) !important;
  background: rgba(232,192,64,.08) !important;
}


/* ───────────────────────────────────────────────────────────────────────
   §9.7  DRAGON AGE — THE BLIGHT REWORK
   Burnt ochre. Ash grey. Campfire and dread. In your heart shall burn.
   ─────────────────────────────────────────────────────────────────────── */

/* Parchment grain — coarser, older */
:root[data-vc-theme="da_veilfire"] body::before {
  background-image:
    url("data:image/svg+xml,%3Csvg viewBox='0 0 600 600' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.40 0.55' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.06'/%3E%3C/svg%3E");
  background-size: 600px 600px;
}

/* Ember warmth — campfire light from below */
:root[data-vc-theme="da_veilfire"] .vc-shell::before {
  content: "";
  position: fixed;
  bottom: 0; left: -10%; right: -10%;
  height: 45vh;
  background:
    radial-gradient(ellipse 80% 60% at 40% 100%, rgba(200,120,40,var(--fx-atmos-opacity,.10)) 0%, transparent 70%),
    radial-gradient(ellipse 55% 45% at 65% 100%, rgba(160,80,20,calc(var(--fx-atmos-opacity,.10)*0.8)) 0%, transparent 60%);
  pointer-events: none;
  z-index: 9996;
  animation: vcVeilfireMist 9s ease-in-out infinite alternate;
}

/* Darkspawn breach pulse — sickly corruption */
:root[data-vc-theme="da_veilfire"] body.vc-fx-breach-on {
  animation: vcLowHealthPulse 2.2s ease-in-out infinite;
}

/* Ember trace sweep */
:root[data-vc-theme="da_veilfire"] body.vc-fx-trace-on .vc-shell::after {
  content: "";
  position: fixed;
  left: 0; right: 0; height: 1.5px;
  background: linear-gradient(180deg,
    rgba(200,120,40,var(--fx-trace-brightness,.28)) 0%,
    rgba(200,120,40,calc(var(--fx-trace-brightness,.28)*0.21)) 100%);
  pointer-events: none;
  z-index: 9998;
  animation: vcScanCrawl 4.5s linear infinite;
}

/* Stone border on cards — like a codex page */
:root[data-vc-theme="da_veilfire"] .result-card,
:root[data-vc-theme="da_veilfire"] .lib-card {
  border-color: rgba(188,155,105,.14);
  box-shadow: 0 4px 18px rgba(10,8,6,.7), 0 0 0 1px rgba(200,120,40,.04) inset;
}

/* Grey Warden active badge */
:root[data-vc-theme="da_veilfire"] .vc-theme-active {
  border-color: rgba(200,120,40,.60) !important;
  background: rgba(200,120,40,.08) !important;
}

/* Codex marker */
:root[data-vc-theme="da_veilfire"] .vc-main::before {
  content: "CODEX · IN YOUR HEART SHALL BURN";
  position: fixed;
  bottom: 8px; right: 14px;
  font-family: var(--font-vhs, monospace);
  font-size: 7px;
  letter-spacing: 3px;
  color: rgba(200,120,40,.28);
  pointer-events: none;
  z-index: 9999;
}


/* ───────────────────────────────────────────────────────────────────────
   §9.8  AW2 — OLD GODS OF ASGARD
   Bone white on void black. Heavy metal concert poster. Weathered vinyl.
   ─────────────────────────────────────────────────────────────────────── */

/* Heavy grain — vinyl press, concert poster print */
:root[data-vc-theme="aw2_oldgods"] body::before {
  background-image:
    url("data:image/svg+xml,%3Csvg viewBox='0 0 512 512' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.70 0.80' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.085'/%3E%3C/svg%3E");
  background-size: 512px 512px;
}

/* Stage light rig — sweeping light beam from above */
:root[data-vc-theme="aw2_oldgods"] body.vc-fx-trace-on::after {
  content: "";
  position: fixed;
  top: 0; left: 0; right: 0; bottom: 0;
  background: conic-gradient(
    from -60deg at 50% -20%,
    transparent 0deg,
    rgba(240,236,224,var(--fx-overlay-opacity,.04)) 15deg,
    transparent 30deg,
    rgba(240,236,224,calc(var(--fx-overlay-opacity,.04)*0.5)) 50deg,
    transparent 70deg
  );
  pointer-events: none;
  z-index: 9996;
  animation: vcOldGodsLight 8s ease-in-out infinite alternate;
}

/* Amp overload glitch */
:root[data-vc-theme="aw2_oldgods"] body.vc-fx-glitch-on .vc-main {
  animation: vcGlitchPulse 200ms ease-out;
}

/* Lightning breach */
:root[data-vc-theme="aw2_oldgods"] body.vc-fx-breach-on::after {
  background-image:
    radial-gradient(ellipse 100% 100% at 50% 50%, transparent 40%, rgba(192,16,16,.20) 100%);
  background-size: cover;
  animation: vcHissStrobe 2s steps(1) infinite !important;
}

/* Bone white logo treatment */
:root[data-vc-theme="aw2_oldgods"] .sidebar-logo-wordmark {
  text-shadow: 0 0 30px rgba(240,236,224,.15), 0 1px 0 rgba(192,16,16,.5);
  letter-spacing: 4px;
}

/* Concert poster band label on cards */
:root[data-vc-theme="aw2_oldgods"] .vc-main::before {
  content: "OLD GODS OF ASGARD · WE SING THE WORLD AWAKE";
  position: fixed;
  bottom: 8px; right: 14px;
  font-family: var(--font-vhs, monospace);
  font-size: 7px;
  letter-spacing: 3px;
  color: rgba(240,236,224,.22);
  pointer-events: none;
  z-index: 9999;
  white-space: nowrap;
}

/* Distressed border on cards */
:root[data-vc-theme="aw2_oldgods"] .result-card,
:root[data-vc-theme="aw2_oldgods"] .lib-card {
  border-color: rgba(240,236,224,.10);
  box-shadow: 0 4px 16px rgba(5,4,4,.8);
}

@keyframes vcOldGodsLight {
  0%   { transform: rotate(-8deg); opacity: 0.7; }
  50%  { transform: rotate(0deg);  opacity: 1.0; }
  100% { transform: rotate(8deg);  opacity: 0.7; }
}


/* ───────────────────────────────────────────────────────────────────────
   §9.9  KOTOR I — JEDI ARCHIVE
   Warm bronze. Republic amber. The Force is with you.
   ─────────────────────────────────────────────────────────────────────── */

/* Holocron amber glow on modal */
:root[data-vc-theme="kotor_holocron"] .vc-modal-dialog::after {
  content: "";
  position: absolute; inset: -50%;
  background: conic-gradient(
    from 0deg,
    transparent 0deg,
    rgba(212,160,64,.14) 30deg,
    rgba(139,58,26,.10) 90deg,
    transparent 120deg,
    rgba(212,160,64,.08) 200deg,
    transparent 240deg,
    rgba(139,58,26,.06) 300deg,
    transparent 360deg
  );
  animation: vcForceRotate 20s linear infinite;
  pointer-events: none;
  mix-blend-mode: screen;
}

/* Force light — warm amber glow from center */
:root[data-vc-theme="kotor_holocron"] body::after {
  background-image:
    radial-gradient(ellipse 60% 50% at 50% 30%,
      rgba(212,160,64,var(--fx-bloom-intensity,.05)) 0%,
      transparent 70%),
    radial-gradient(ellipse 100% 100% at 50% 50%,
      transparent 50%,
      rgba(12,10,6,var(--fx-vignette-depth,.55)) 100%);
  background-size: cover;
  animation: vcBloomPulse 6s ease-in-out infinite;
}

/* Light seam borders */
:root[data-vc-theme="kotor_holocron"] .result-card,
:root[data-vc-theme="kotor_holocron"] .lib-card {
  border-color: rgba(200,165,100,.14);
  box-shadow: 0 0 0 1px rgba(212,160,64,.05) inset, 0 4px 14px rgba(12,10,6,.7);
}

/* Force trace sweep */
:root[data-vc-theme="kotor_holocron"] body.vc-fx-trace-on .vc-shell::after {
  content: "";
  position: fixed;
  left: 0; right: 0; height: 1.5px;
  background: linear-gradient(180deg,
    rgba(212,160,64,var(--fx-trace-brightness,.28)) 0%,
    rgba(212,160,64,calc(var(--fx-trace-brightness,.28)*0.21)) 100%);
  pointer-events: none;
  z-index: 9998;
  animation: vcScanCrawl 3.5s linear infinite;
}

/* Jedi active badge */
:root[data-vc-theme="kotor_holocron"] .vc-theme-active {
  border-color: rgba(212,160,64,.65) !important;
  background: rgba(212,160,64,.08) !important;
  animation: none !important;
}


/* ───────────────────────────────────────────────────────────────────────
   §9.10  KOTOR II — SITH LORDS
   Cold steel. The wound in the Force. Existential dread.
   ─────────────────────────────────────────────────────────────────────── */

/* Cold void ambience */
:root[data-vc-theme="kotor2_sith"] body::after {
  background-image:
    radial-gradient(ellipse 100% 100% at 50% 50%,
      transparent 45%,
      rgba(8,10,14,.65) 100%);
  background-size: cover;
  animation: vcBloomPulse 8s ease-in-out infinite;
}

/* Wound in the Force — Force lattice grid */
:root[data-vc-theme="kotor2_sith"] body.vc-fx-icegrid-on .result-card::before,
:root[data-vc-theme="kotor2_sith"] body.vc-fx-icegrid-on .lib-card::before {
  background-image:
    linear-gradient(to right, rgba(128,144,176,.06) 1px, transparent 1px),
    linear-gradient(to bottom, rgba(128,144,176,.05) 1px, transparent 1px);
  background-size: 28px 28px;
}

/* Breach: wound pulse */
:root[data-vc-theme="kotor2_sith"] body.vc-fx-breach-on .vc-modal-dialog {
  animation: vcShieldPulse 5s ease-in-out infinite;
  box-shadow: 0 0 0 1px rgba(128,144,176,.10), 0 0 30px rgba(96,16,16,.12) !important;
}

/* Dark side active badge */
:root[data-vc-theme="kotor2_sith"] .vc-theme-active {
  border-color: rgba(128,144,176,.55) !important;
  background: rgba(128,144,176,.07) !important;
}

/* Kreia's echo */
:root[data-vc-theme="kotor2_sith"] .vc-main::before {
  content: "THE FORCE IS A WOUND · SITH LORDS";
  position: fixed;
  bottom: 8px; right: 14px;
  font-family: var(--font-vhs, monospace);
  font-size: 7px;
  letter-spacing: 3px;
  color: rgba(128,144,176,.22);
  pointer-events: none;
  z-index: 9999;
}


/* ───────────────────────────────────────────────────────────────────────
   §9.11  MARATHON — ARACHNE
   Void black. Predator crimson. We watch. We always watch.
   ─────────────────────────────────────────────────────────────────────── */

/* Surveillance vignette — we are watching */
:root[data-vc-theme="marathon_arachne"] body::after {
  background-image:
    radial-gradient(ellipse 100% 100% at 50% 50%,
      transparent 35%,
      rgba(200,8,8,.10) 65%,
      rgba(200,8,8,.20) 100%);
  background-size: cover;
  animation: vcHissOrganic 6s ease-in-out infinite;
}

/* Sun glyph static grain */
:root[data-vc-theme="marathon_arachne"] body::before {
  background-image:
    url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.07'/%3E%3C/svg%3E");
  background-size: 256px 256px;
}

/* Surveillance glitch dropout */
:root[data-vc-theme="marathon_arachne"] body.vc-fx-glitch-on .result-card:nth-child(5n) {
  animation: vcTrackingTear 10s ease-in-out infinite;
}

/* Breach: we see you */
:root[data-vc-theme="marathon_arachne"] body.vc-fx-breach-on .vc-shell::before {
  content: "";
  position: fixed; inset: 0;
  background: rgba(200,8,8,.04);
  pointer-events: none;
  z-index: 9994;
  animation: vcHissStrobe 4s steps(1) infinite;
}

:root[data-vc-theme="marathon_arachne"] .vc-main::before {
  content: "ARACHNE · WE WATCH ALL OF THE DEADLIEST RUNNERS";
  position: fixed;
  bottom: 8px; right: 14px;
  font-family: var(--font-vhs, monospace);
  font-size: 7px;
  letter-spacing: 3px;
  color: rgba(200,8,8,.30);
  pointer-events: none;
  z-index: 9999;
  white-space: nowrap;
}

:root[data-vc-theme="marathon_arachne"] .vc-theme-active {
  border-color: rgba(200,8,8,.65) !important;
  background: rgba(200,8,8,.08) !important;
}


/* ───────────────────────────────────────────────────────────────────────
   §9.12  MARATHON — TRAXUS
   Charcoal gunmetal. Construction orange. Industrial utility.
   ─────────────────────────────────────────────────────────────────────── */

/* Traxus ambient construction glow */
:root[data-vc-theme="marathon_traxus"] .vc-shell {
  background:
    radial-gradient(ellipse 80% 55% at 50% 90%,
      rgba(255,102,0,var(--fx-bloom-intensity,.12)) 0%,
      rgba(200,70,0,calc(var(--fx-bloom-intensity,.12)*0.4)) 50%,
      transparent 78%) no-repeat,
    radial-gradient(ellipse 100% 100% at 50% 50%,
      transparent 40%,
      rgba(10,10,10,var(--fx-vignette-depth,.75)) 100%) no-repeat;
  background-size: cover;
}

/* Scaffold viewport brackets — construction orange */
:root[data-vc-theme="marathon_traxus"] .vc-main::before {
  content: "";
  position: fixed;
  inset: 10px;
  top: 22px;
  pointer-events: none;
  z-index: 9995;
  background:
    linear-gradient(rgba(255,106,0,.55), rgba(255,106,0,.55)) top    left  / 22px 2px no-repeat,
    linear-gradient(rgba(255,106,0,.55), rgba(255,106,0,.55)) top    left  / 2px 22px no-repeat,
    linear-gradient(rgba(255,106,0,.55), rgba(255,106,0,.55)) top    right / 22px 2px no-repeat,
    linear-gradient(rgba(255,106,0,.55), rgba(255,106,0,.55)) top    right / 2px 22px no-repeat,
    linear-gradient(rgba(255,106,0,.55), rgba(255,106,0,.55)) bottom left  / 22px 2px no-repeat,
    linear-gradient(rgba(255,106,0,.55), rgba(255,106,0,.55)) bottom left  / 2px 22px no-repeat,
    linear-gradient(rgba(255,106,0,.55), rgba(255,106,0,.55)) bottom right / 22px 2px no-repeat,
    linear-gradient(rgba(255,106,0,.55), rgba(255,106,0,.55)) bottom right / 2px 22px no-repeat;
}

/* Construction grid */
:root[data-vc-theme="marathon_traxus"] body.vc-fx-icegrid-on .result-card::before,
:root[data-vc-theme="marathon_traxus"] body.vc-fx-icegrid-on .lib-card::before {
  background-image:
    linear-gradient(to right, rgba(255,106,0,.07) 1px, transparent 1px),
    linear-gradient(to bottom, rgba(255,106,0,.06) 1px, transparent 1px);
  background-size: 20px 20px;
}

/* Build sweep */
:root[data-vc-theme="marathon_traxus"] body.vc-fx-trace-on .vc-shell::after {
  content: "";
  position: fixed;
  left: 0; right: 0; height: 2px;
  background: linear-gradient(180deg,
    rgba(255,106,0,var(--fx-trace-brightness,.35)) 0%,
    rgba(255,106,0,calc(var(--fx-trace-brightness,.35)*0.23)) 100%);
  pointer-events: none;
  z-index: 9998;
  animation: vcScanCrawl 2.8s linear infinite;
}

:root[data-vc-theme="marathon_traxus"] .vc-main::after {
  content: "TRAXUS HEAVY INDUSTRIES · BUILD. HAUL. DOMINATE.";
  position: fixed;
  bottom: 8px; right: 14px;
  font-family: var(--font-vhs, monospace);
  font-size: 7px;
  letter-spacing: 3px;
  color: rgba(255,106,0,.28);
  pointer-events: none;
  z-index: 9999;
  white-space: nowrap;
}

:root[data-vc-theme="marathon_traxus"] .vc-theme-active {
  border-color: rgba(255,106,0,.65) !important;
  background: rgba(255,106,0,.08) !important;
}


/* ───────────────────────────────────────────────────────────────────────
   §9.13  MARATHON — CYBERACME
   Electric blue + toxic neon green. Everything runs on CyberAcme.
   ─────────────────────────────────────────────────────────────────────── */

/* Data stream grain */
:root[data-vc-theme="marathon_cyberacme"] body::before {
  background-image:
    url("data:image/svg+xml,%3Csvg viewBox='0 0 300 300' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.90 0.70' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.06'/%3E%3C/svg%3E");
  background-size: 300px 300px;
}

/* Server rack grid */
:root[data-vc-theme="marathon_cyberacme"] body.vc-fx-icegrid-on .result-card::before,
:root[data-vc-theme="marathon_cyberacme"] body.vc-fx-icegrid-on .lib-card::before {
  background-image:
    linear-gradient(to right, rgba(0,224,80,.07) 1px, transparent 1px),
    linear-gradient(to bottom, rgba(16,64,255,.05) 1px, transparent 1px);
  background-size: 14px 14px;
}

/* Dual-color data stream trace */
:root[data-vc-theme="marathon_cyberacme"] body.vc-fx-trace-on .vc-shell::after {
  content: "";
  position: fixed;
  left: 0; right: 0; height: 2px;
  background: linear-gradient(90deg,
    rgba(0,224,80,.40) 0%,
    rgba(16,64,255,.30) 50%,
    rgba(0,224,80,.40) 100%);
  pointer-events: none;
  z-index: 9998;
  animation: vcScanCrawl 2s linear infinite;
}

/* Packet loss glitch */
:root[data-vc-theme="marathon_cyberacme"] body.vc-fx-glitch-on .result-card:nth-child(4n),
:root[data-vc-theme="marathon_cyberacme"] body.vc-fx-glitch-on .result-card:nth-child(7n) {
  animation: vcTrackingTear 8s ease-in-out infinite;
}

/* CyberAcme card glow */
:root[data-vc-theme="marathon_cyberacme"] .result-card:hover,
:root[data-vc-theme="marathon_cyberacme"] .lib-card:hover {
  box-shadow: 0 4px 20px rgba(0,224,80,.12), 0 0 0 1px rgba(0,224,80,.20) !important;
}

:root[data-vc-theme="marathon_cyberacme"] .vc-main::before {
  content: "CYBERACME · EVERYTHING RUNS ON CYBERACME";
  position: fixed;
  bottom: 8px; right: 14px;
  font-family: var(--font-vhs, monospace);
  font-size: 7px;
  letter-spacing: 3px;
  color: rgba(0,224,80,.30);
  pointer-events: none;
  z-index: 9999;
  white-space: nowrap;
}

:root[data-vc-theme="marathon_cyberacme"] .vc-theme-active {
  border-color: rgba(0,224,80,.60) !important;
  background: rgba(0,224,80,.07) !important;
}


/* ───────────────────────────────────────────────────────────────────────
   §9.14  MARATHON — NUCALORIC
   Neon magenta. Hot pink. Synthetic warmth. Consume. Subscribe.
   ─────────────────────────────────────────────────────────────────────── */

/* Neon trace sweep */
:root[data-vc-theme="marathon_nucaloric"] body.vc-fx-trace-on .vc-shell::after {
  content: "";
  position: fixed;
  left: 0; right: 0; height: 2px;
  background: linear-gradient(180deg,
    rgba(255,24,144,var(--fx-trace-brightness,.40)) 0%,
    rgba(255,24,144,calc(var(--fx-trace-brightness,.40)*0.2)) 100%);
  pointer-events: none;
  z-index: 9998;
  animation: vcScanCrawl 2.2s linear infinite;
}

/* Ad flicker glitch */
:root[data-vc-theme="marathon_nucaloric"] body.vc-fx-glitch-on .vc-main {
  animation: vcGlitchPulse 300ms ease-out;
}

/* Subscribe pulse breach */
:root[data-vc-theme="marathon_nucaloric"] body.vc-fx-breach-on::after {
  background-image:
    radial-gradient(ellipse 80% 60% at 50% 50%,
      rgba(255,24,144,.06) 0%,
      transparent 70%);
  background-size: cover;
  animation: vcBloomPulse 3s ease-in-out infinite !important;
}

/* Neon card hover */
:root[data-vc-theme="marathon_nucaloric"] .result-card:hover,
:root[data-vc-theme="marathon_nucaloric"] .lib-card:hover {
  box-shadow: 0 4px 20px rgba(255,24,144,.15), 0 0 0 1px rgba(255,24,144,.25) !important;
}

:root[data-vc-theme="marathon_nucaloric"] .vc-main::before {
  content: "NUCALORIC · FUEL YOUR RUN · SUBSCRIBE NOW";
  position: fixed;
  bottom: 8px; right: 14px;
  font-family: var(--font-vhs, monospace);
  font-size: 7px;
  letter-spacing: 3px;
  color: rgba(255,24,144,.30);
  pointer-events: none;
  z-index: 9999;
  white-space: nowrap;
}

:root[data-vc-theme="marathon_nucaloric"] .vc-theme-active {
  border-color: rgba(255,24,144,.65) !important;
  background: rgba(255,24,144,.08) !important;
}


/* ───────────────────────────────────────────────────────────────────────
   §9.15  MARATHON — SEKIGUCHI
   Precision silver-white. Cool cyan. Japanese corporate perfection.
   ─────────────────────────────────────────────────────────────────────── */

/* Sekiguchi — crisp top-lit corporate ambient */
:root[data-vc-theme="marathon_sekiguchi"] .vc-shell {
  background:
    radial-gradient(ellipse 100% 45% at 50% 0%,
      rgba(255,255,255,var(--fx-bloom-intensity,.55)) 0%,
      transparent 65%) no-repeat,
    radial-gradient(ellipse 50% 35% at 92% 8%,
      rgba(204,24,24,calc(var(--fx-bloom-intensity,.55)*0.06)) 0%,
      transparent 55%) no-repeat;
  background-size: cover;
}

/* Precision grid */
:root[data-vc-theme="marathon_sekiguchi"] body.vc-fx-icegrid-on .result-card::before,
:root[data-vc-theme="marathon_sekiguchi"] body.vc-fx-icegrid-on .lib-card::before {
  background-image:
    linear-gradient(to right, rgba(200,224,240,.06) 1px, transparent 1px),
    linear-gradient(to bottom, rgba(200,224,240,.05) 1px, transparent 1px);
  background-size: 16px 16px;
}

/* Precision trace sweep — clean, single line */
:root[data-vc-theme="marathon_sekiguchi"] body.vc-fx-trace-on .vc-shell::after {
  content: "";
  position: fixed;
  left: 0; right: 0; height: 1px;
  background: linear-gradient(180deg,
    rgba(200,224,240,var(--fx-trace-brightness,.35)) 0%,
    rgba(200,224,240,calc(var(--fx-trace-brightness,.35)*0.23)) 100%);
  pointer-events: none;
  z-index: 9998;
  animation: vcScanCrawl 3.5s linear infinite;
}

/* Precision card borders */
:root[data-vc-theme="marathon_sekiguchi"] .result-card,
:root[data-vc-theme="marathon_sekiguchi"] .lib-card {
  border-color: rgba(160,200,240,.12);
  box-shadow: 0 2px 12px rgba(8,10,14,.7), 0 0 0 1px rgba(200,224,240,.04) inset;
}

:root[data-vc-theme="marathon_sekiguchi"] .vc-main::before {
  content: "SEKIGUCHI TECH · PRECISION · PERFORMANCE";
  position: fixed;
  bottom: 8px; right: 14px;
  font-family: var(--font-vhs, monospace);
  font-size: 7px;
  letter-spacing: 3px;
  color: rgba(200,224,240,.25);
  pointer-events: none;
  z-index: 9999;
}

:root[data-vc-theme="marathon_sekiguchi"] .vc-theme-active {
  border-color: rgba(200,224,240,.55) !important;
  background: rgba(200,224,240,.07) !important;
}


/* ═══════════════════════════════════════════════════════════════════════
   §8.25  GLOBAL HUD BRACKET UTILITY CLASS
   .vc-fx-hud-brackets applied by JS to any element for corner markers.
   ═══════════════════════════════════════════════════════════════════════ */

.vc-fx-hud-brackets {
  position: relative;
}
.vc-fx-hud-brackets::after {
  content: "";
  position: absolute; inset: -2px;
  pointer-events: none;
  background:
    linear-gradient(var(--gold, rgba(201,151,58,.6)), var(--gold, rgba(201,151,58,.6))) top    left  / 10px 1.5px no-repeat,
    linear-gradient(var(--gold, rgba(201,151,58,.6)), var(--gold, rgba(201,151,58,.6))) top    left  / 1.5px 10px no-repeat,
    linear-gradient(var(--gold, rgba(201,151,58,.6)), var(--gold, rgba(201,151,58,.6))) top    right / 10px 1.5px no-repeat,
    linear-gradient(var(--gold, rgba(201,151,58,.6)), var(--gold, rgba(201,151,58,.6))) top    right / 1.5px 10px no-repeat,
    linear-gradient(var(--gold, rgba(201,151,58,.6)), var(--gold, rgba(201,151,58,.6))) bottom left  / 10px 1.5px no-repeat,
    linear-gradient(var(--gold, rgba(201,151,58,.6)), var(--gold, rgba(201,151,58,.6))) bottom left  / 1.5px 10px no-repeat,
    linear-gradient(var(--gold, rgba(201,151,58,.6)), var(--gold, rgba(201,151,58,.6))) bottom right / 10px 1.5px no-repeat,
    linear-gradient(var(--gold, rgba(201,151,58,.6)), var(--gold, rgba(201,151,58,.6))) bottom right / 1.5px 10px no-repeat;
  border-radius: inherit;
  opacity: .65;
  transition: opacity .2s;
}
.vc-fx-hud-brackets:hover::after { opacity: 1; }


/* ═══════════════════════════════════════════════════════════════════════
   END §8 — THEME-SPECIFIC FX EXTENSIONS
   ═══════════════════════════════════════════════════════════════════════ */


/* ═══════════════════════════════════════════════════════════════════════
   §9  THEME GRIMOIRE — GROUP HEADERS + SIDEBAR THEME BUTTON
   ═══════════════════════════════════════════════════════════════════════ */

/* ── Group headers in the theme grid ──────────────────────────────────── */
.vc-theme-group-header {
  grid-column: 1 / -1;          /* span full grid width */
  font-family: var(--font-vhs);
  font-size: 8px;
  letter-spacing: 4px;
  text-transform: uppercase;
  color: var(--gold);
  opacity: 0.65;
  padding: 16px 4px 6px;
  border-bottom: 1px solid var(--line);
  margin-bottom: 2px;
  display: flex;
  align-items: center;
  gap: 8px;
}
.vc-theme-group-header::before {
  content: "⛧";
  font-size: 10px;
  opacity: 0.7;
}

/* First group header — less top padding */
.vc-theme-group-header:first-child {
  padding-top: 8px;
}

/* ── Sidebar ⛧ Themes button ──────────────────────────────────────────── */
#sidebar-theme-btn {
  color: var(--gold) !important;
  opacity: 0.75;
  font-size: 10px;
  letter-spacing: 1px;
  transition: opacity 0.2s, color 0.2s;
  border-left: 1px solid var(--gold-dim) !important;
  margin-left: 2px;
}
#sidebar-theme-btn:hover {
  opacity: 1;
  color: var(--gold-bright) !important;
  background: var(--gold-glow) !important;
  text-shadow: 0 0 8px var(--gold-glow);
}

/* ── Avatar icon in the auth pill ─────────────────────────────────────── */
.vc-avatar-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 18px;
  height: 18px;
  font-size: 12px;
  line-height: 1;
  border-radius: 50%;
  background: var(--gold-glow);
  border: 1px solid var(--gold-dim);
  flex-shrink: 0;
}

/* Coven tag glyph */
.vc-coven-tag {
  font-size: 9px;
  opacity: 0.55;
  color: var(--gold);
  flex-shrink: 0;
}

/* ═══════════════════════════════════════════════════════════════════════
   END §9
   ═══════════════════════════════════════════════════════════════════════ */


/* ═══════════════════════════════════════════════════════════════════════
   §10  CROSS-THEME UI CONSISTENCY FIXES
   Pass 1 corrections — search bar, modal X, filter pills, telemetry overlap.
   ═══════════════════════════════════════════════════════════════════════ */

/* ── §10.1  Search button: use gold accent on themes where --blood is non-warm
   The btn-ritual class uses --blood-bright as its border, which looks broken
   on HUD/sci-fi/fantasy themes that repurpose --blood as a second accent color.
   Fix: override .games-search-btn specifically to always use --gold styling. ── */

.games-search-btn-pos .btn-ritual,
#games-search-btn {
  border-color: var(--gold-dim) !important;
  background: rgba(0,0,0,.0) !important;
  color: var(--gold) !important;
  box-shadow: 0 0 12px var(--gold-glow) !important;
}
.games-search-btn-pos .btn-ritual:hover,
#games-search-btn:hover {
  border-color: var(--gold) !important;
  background: var(--gold-glow) !important;
  color: var(--gold-bright) !important;
  box-shadow: 0 0 20px var(--gold-glow) !important;
}

/* ── §10.2  Modal close (X) button: ensure it's always readable.
   Some themes make --static very close to the modal background color. ── */
.vc-modal-close,
[id$="-close-btn"],
.vc-auth-close,
#vc-auth-close-btn {
  color: var(--fog) !important;
  border-color: var(--border) !important;
  background: transparent !important;
}
.vc-modal-close:hover,
[id$="-close-btn"]:hover,
.vc-auth-close:hover,
#vc-auth-close-btn:hover {
  color: var(--gold-pale) !important;
  border-color: var(--border-bright) !important;
  background: var(--gold-glow) !important;
}

/* ── §10.3  Filter pills: use border color, not blood-bright ── */
.games-filter-row .filter-pill {
  border-color: var(--border) !important;
  color: var(--fog) !important;
}
.games-filter-row .filter-pill:hover {
  border-color: var(--gold-dim) !important;
  color: var(--gold) !important;
}
.games-filter-row .filter-pill.on {
  border-color: var(--gold-dim) !important;
  color: var(--gold) !important;
  background: var(--gold-glow) !important;
}

/* ── §10.4  Marathon / Fallout / Halo telemetry strips:
   Add padding-top to .vc-page so the fixed top bar doesn't overlap content.── */
:root[data-vc-theme="marathon_hud"] .vc-page,
:root[data-vc-theme="fallout_pipboy"] .vc-page {
  padding-top: 28px;
}

/* ── §10.5  Halo / Marathon viewport corner brackets:
   The inset:8px fixed bracket sits on top of the topbar.
   Push it down to clear the topbar height. ── */
:root[data-vc-theme="halo2_unsc"] .vc-main::before,
:root[data-vc-theme="marathon_hud"] .vc-main::before {
  top: 22px !important;
}

/* ── §10.6  Eyebrow line color: always use a theme-appropriate warm/neutral tone
   Some themes set --blood-bright to blue/purple which makes the eyebrow lines
   look broken. Override to use blood only when it's warm, otherwise use gold. ── */

/* Themes where --blood is non-red → use --gold-dim for eyebrow accent */
:root[data-vc-theme="marathon_hud"] .vc-page-eyebrow,
:root[data-vc-theme="halo2_unsc"] .vc-page-eyebrow,
:root[data-vc-theme="me_omnitool"] .vc-page-eyebrow,
:root[data-vc-theme="control_polaris"] .vc-page-eyebrow,
:root[data-vc-theme="control_hiss"] .vc-page-eyebrow,
:root[data-vc-theme="kotor_holocron"] .vc-page-eyebrow,
:root[data-vc-theme="da_veilfire"] .vc-page-eyebrow,
:root[data-vc-theme="blackwall"] .vc-page-eyebrow,
:root[data-vc-theme="netrunner"] .vc-page-eyebrow,
:root[data-vc-theme="witch"] .vc-page-eyebrow,
:root[data-vc-theme="lovecraft"] .vc-page-eyebrow {
  color: var(--gold-dim);
}
:root[data-vc-theme="marathon_hud"] .vc-page-eyebrow::before,
:root[data-vc-theme="marathon_hud"] .vc-page-eyebrow::after,
:root[data-vc-theme="halo2_unsc"] .vc-page-eyebrow::before,
:root[data-vc-theme="halo2_unsc"] .vc-page-eyebrow::after,
:root[data-vc-theme="me_omnitool"] .vc-page-eyebrow::before,
:root[data-vc-theme="me_omnitool"] .vc-page-eyebrow::after,
:root[data-vc-theme="control_polaris"] .vc-page-eyebrow::before,
:root[data-vc-theme="control_polaris"] .vc-page-eyebrow::after,
:root[data-vc-theme="control_hiss"] .vc-page-eyebrow::before,
:root[data-vc-theme="control_hiss"] .vc-page-eyebrow::after,
:root[data-vc-theme="kotor_holocron"] .vc-page-eyebrow::before,
:root[data-vc-theme="kotor_holocron"] .vc-page-eyebrow::after,
:root[data-vc-theme="da_veilfire"] .vc-page-eyebrow::before,
:root[data-vc-theme="da_veilfire"] .vc-page-eyebrow::after,
:root[data-vc-theme="blackwall"] .vc-page-eyebrow::before,
:root[data-vc-theme="blackwall"] .vc-page-eyebrow::after,
:root[data-vc-theme="netrunner"] .vc-page-eyebrow::before,
:root[data-vc-theme="netrunner"] .vc-page-eyebrow::after,
:root[data-vc-theme="witch"] .vc-page-eyebrow::before,
:root[data-vc-theme="witch"] .vc-page-eyebrow::after,
:root[data-vc-theme="lovecraft"] .vc-page-eyebrow::before,
:root[data-vc-theme="lovecraft"] .vc-page-eyebrow::after {
  background: linear-gradient(90deg, transparent, var(--gold-dim));
}

/* ── §10.7  Mario Toybox: search button on light bg needs dark text ── */
:root[data-vc-theme="mario_toybox"] #games-search-btn,
:root[data-vc-theme="mario_toybox"] .games-search-btn-pos .btn-ritual {
  color: #2a1800 !important;
  background: var(--gold-glow) !important;
}

/* ── §10.8  Consistent search input readability across all themes ── */
.games-search-input {
  color: var(--static);
}
.games-search-input:focus {
  box-shadow: 0 0 0 3px var(--gold-glow), 0 0 20px var(--gold-glow) !important;
  border-color: var(--gold-dim) !important;
}

/* ─────────────────────────────────────────────────────────────────────── */

/* §10.9  Pip-Boy: brighter CRT ambient glow */
:root[data-vc-theme="fallout_pipboy"] body::after {
  background-image:
    radial-gradient(ellipse 75% 60% at 50% 42%,
      rgba(78,255,88,var(--fx-bloom-intensity,.15)) 0%,
      rgba(78,255,88,calc(var(--fx-bloom-intensity,.15)*0.4)) 45%,
      transparent 72%),
    radial-gradient(ellipse 100% 100% at 50% 50%,
      transparent 50%,
      rgba(2,5,3,var(--fx-vignette-depth,.60)) 100%) !important;
  background-size: cover !important;
}

/* ═══════════════════════════════════════════════════════════════════════
   §10  CONSOLE HERITAGE THEMES
   Xbox · PlayStation · Sega · Atari · Nintendo
   ═══════════════════════════════════════════════════════════════════════ */

/* ─────────────────────────────────────────────────────────────────────
   XBOX — ORIGINAL
   Radioactive green X on matte black. The Duke controller. JSRF vibes.
   ───────────────────────────────────────────────────────────────────── */
:root[data-vc-theme="xbox_og"] {
  --void: #060806; --abyss: #0a0c0a; --deep: #0e120e; --chamber: #121814;
  --altar: #182018; --surface: #1e281e;
  --text: rgba(225,245,220,.92); --static: rgba(208,232,202,.87);
  --bone: rgba(240,255,235,.96); --fog: rgba(130,190,118,.63);
  --dust: rgba(80,145,68,.48); --muted: rgba(52,108,42,.52);
  --gold: #52b000; --gold-bright: #6ed400; --gold-pale: rgba(195,255,175,.96);
  --gold-dim: rgba(82,176,0,.52); --gold-glow: rgba(82,176,0,.22);
  --blood: #107010; --blood-bright: #188a18; --blood-glow: rgba(16,112,16,.45);
  --border: rgba(82,176,0,.18); --border-bright: rgba(110,212,0,.40);
  --rim: rgba(68,155,0,.13); --line: rgba(52,125,0,.08);
  --green: #52b000; --violet: rgba(80,180,60,.80);
  --sidebar-shell: linear-gradient(180deg, rgba(6,8,6,.99), rgba(4,5,4,.99));
  --sidebar-border: rgba(68,155,0,.14);
  --sidebar-active-bg: rgba(82,176,0,.08);
  --sidebar-active-border: rgba(82,176,0,.26);
  --fx-trace-color: rgba(82,176,0,.25); --fx-icegrid-h: rgba(68,155,0,.07);
  --fx-icegrid-v: rgba(16,112,16,.05); --fx-icegrid-opacity: 0.13;
}

/* ── Xbox OG FX ── */
:root[data-vc-theme="xbox_og"] body::after {
  background-image:
    radial-gradient(ellipse 55% 45% at 50% 50%,
      rgba(82,176,0,var(--fx-bloom-intensity,.08)) 0%,
      transparent 65%),
    radial-gradient(ellipse 100% 100% at 50% 50%,
      transparent 50%, rgba(6,8,6,var(--fx-vignette-depth,.70)) 100%);
  background-size: cover;
  animation: vcBloomPulse 5s ease-in-out infinite;
}
:root[data-vc-theme="xbox_og"] body.vc-fx-icegrid-on .result-card::before,
:root[data-vc-theme="xbox_og"] body.vc-fx-icegrid-on .lib-card::before {
  background-image: linear-gradient(to right, rgba(82,176,0,.07) 1px, transparent 1px),
    linear-gradient(to bottom, rgba(82,176,0,.06) 1px, transparent 1px);
  background-size: 20px 20px;
}
:root[data-vc-theme="xbox_og"] body.vc-fx-breach-on .vc-shell::before {
  content: "";
  position: fixed; inset: 0;
  background: radial-gradient(ellipse 60% 55% at 50% 50%,
    rgba(82,176,0,calc(var(--fx-bloom-intensity,.08)*1.5)) 0%, transparent 70%);
  pointer-events: none; z-index: 9994;
  animation: vcBloomPulse 2s ease-in-out infinite;
}
:root[data-vc-theme="xbox_og"] .vc-main::before {
  content: "XBOX · SYSTEM LINK ACTIVE";
  position: fixed; bottom: 8px; right: 14px;
  font-family: var(--font-vhs, monospace); font-size: 7px; letter-spacing: 3px;
  color: rgba(82,176,0,.30); pointer-events: none; z-index: 9999;
}
:root[data-vc-theme="xbox_og"] .vc-theme-active {
  border-color: rgba(82,176,0,.70) !important; background: rgba(82,176,0,.09) !important;
}


/* ─────────────────────────────────────────────────────────────────────
   XBOX 360
   White gloss shell, green ring of life. Blade UI. Achievement unlocked.
   ───────────────────────────────────────────────────────────────────── */
:root[data-vc-theme="xbox_360"] {
  --void: #f0f0ee; --abyss: #f4f4f2; --deep: #f8f8f6; --chamber: #fafafa;
  --altar: #fcfcfc; --surface: #ffffff;
  --text: rgba(18,24,18,.90); --static: rgba(32,40,32,.84);
  --bone: rgba(10,14,10,.95); --fog: rgba(60,80,60,.62);
  --dust: rgba(90,110,90,.50); --muted: rgba(120,140,120,.55);
  --gold: #52b000; --gold-bright: #6ed400; --gold-pale: rgba(10,14,10,.95);
  --gold-dim: rgba(82,176,0,.55); --gold-glow: rgba(82,176,0,.18);
  --blood: #207a20; --blood-bright: #2a9a2a; --blood-glow: rgba(32,122,32,.30);
  --border: rgba(32,120,32,.18); --border-bright: rgba(42,154,42,.38);
  --rim: rgba(28,105,28,.12); --line: rgba(20,85,20,.08);
  --green: #52b000; --violet: rgba(80,160,80,.78);
  --sidebar-shell: linear-gradient(180deg, rgba(236,236,234,.99), rgba(228,228,226,.99));
  --sidebar-border: rgba(28,105,28,.12);
  --sidebar-active-bg: rgba(82,176,0,.07);
  --sidebar-active-border: rgba(82,176,0,.28);
  --fx-trace-color: rgba(82,176,0,.28); --fx-icegrid-h: rgba(32,120,32,.06);
  --fx-icegrid-v: rgba(20,85,20,.04); --fx-icegrid-opacity: 0.09;
}

/* ── Xbox 360 FX ── */
:root[data-vc-theme="xbox_360"] body::after {
  background-image:
    radial-gradient(ellipse 90% 50% at 50% 0%,
      rgba(255,255,255,var(--fx-bloom-intensity,.50)) 0%,
      transparent 65%);
  background-size: cover;
}
:root[data-vc-theme="xbox_360"] body.vc-fx-trace-on .vc-shell::after {
  content: "";
  position: fixed; left: 0; right: 0; height: 1.5px;
  background: linear-gradient(180deg,
    rgba(82,176,0,var(--fx-trace-brightness,.28)) 0%,
    rgba(82,176,0,calc(var(--fx-trace-brightness,.28)*0.25)) 100%);
  pointer-events: none; z-index: 9998;
  animation: vcScanCrawl 3s linear infinite;
}
:root[data-vc-theme="xbox_360"] body.vc-fx-breach-on .vc-modal-dialog {
  box-shadow: 0 0 0 2px rgba(82,176,0,.40), 0 0 30px rgba(82,176,0,.15) !important;
  animation: vcShieldPulse 3s ease-in-out infinite;
}
:root[data-vc-theme="xbox_360"] .vc-main::before {
  content: "ACHIEVEMENT UNLOCKED · 10G";
  position: fixed; bottom: 8px; right: 14px;
  font-family: var(--font-vhs, monospace); font-size: 7px; letter-spacing: 3px;
  color: rgba(82,176,0,.35); pointer-events: none; z-index: 9999;
}
:root[data-vc-theme="xbox_360"] .vc-theme-active {
  border-color: rgba(82,176,0,.65) !important; background: rgba(82,176,0,.07) !important;
}


/* ─────────────────────────────────────────────────────────────────────
   PLAYSTATION 1
   Grey plastic dawn. Startup drone. Memory card slots. You are here.
   ───────────────────────────────────────────────────────────────────── */
:root[data-vc-theme="ps1_gray"] {
  --void: #909090; --abyss: #a8a8a8; --deep: #b8b8b8; --chamber: #c8c8c8;
  --altar: #d4d4d4; --surface: #e0e0e0;
  --text: rgba(18,18,32,.92); --static: rgba(28,28,48,.86);
  --bone: rgba(10,10,20,.95); --fog: rgba(50,50,80,.65);
  --dust: rgba(80,80,115,.52); --muted: rgba(110,110,145,.55);
  --gold: #0050a0; --gold-bright: #0070cc; --gold-pale: rgba(10,10,20,.95);
  --gold-dim: rgba(0,80,160,.55); --gold-glow: rgba(0,80,160,.18);
  --blood: #a00020; --blood-bright: #cc0028; --blood-glow: rgba(160,0,32,.32);
  --border: rgba(0,60,130,.18); --border-bright: rgba(0,80,160,.38);
  --rim: rgba(0,50,110,.12); --line: rgba(0,40,90,.08);
  --green: #008040; --violet: rgba(80,0,180,.75);
  --sidebar-shell: linear-gradient(180deg, rgba(130,130,130,.99), rgba(120,120,120,.99));
  --sidebar-border: rgba(0,50,110,.12);
  --sidebar-active-bg: rgba(0,80,160,.07);
  --sidebar-active-border: rgba(0,80,160,.28);
  --fx-trace-color: rgba(0,80,160,.25); --fx-icegrid-h: rgba(0,60,130,.06);
  --fx-icegrid-v: rgba(160,0,32,.04); --fx-icegrid-opacity: 0.09;
}

:root[data-vc-theme="ps1_gray"] body::before {
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 300 300' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.80' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.04'/%3E%3C/svg%3E");
  background-size: 300px 300px;
}
:root[data-vc-theme="ps1_gray"] .vc-main::before {
  content: "○ △ □ × · MEMORY CARD SLOT 1";
  position: fixed; bottom: 8px; right: 14px;
  font-family: var(--font-vhs, monospace); font-size: 7px; letter-spacing: 3px;
  color: rgba(0,80,160,.40); pointer-events: none; z-index: 9999;
}
:root[data-vc-theme="ps1_gray"] .vc-theme-active {
  border-color: rgba(0,80,160,.60) !important; background: rgba(0,80,160,.08) !important;
}


/* ─────────────────────────────────────────────────────────────────────
   PLAYSTATION 2
   Gloss black monolith. Browser boot. Startup choir. Infinite library.
   ───────────────────────────────────────────────────────────────────── */
:root[data-vc-theme="ps2_black"] {
  --void: #060606; --abyss: #0c0c0e; --deep: #121216; --chamber: #18181e;
  --altar: #1e1e26; --surface: #24242e;
  --text: rgba(210,225,255,.92); --static: rgba(192,210,248,.87);
  --bone: rgba(235,242,255,.96); --fog: rgba(110,140,215,.63);
  --dust: rgba(65,95,175,.50); --muted: rgba(42,65,145,.52);
  --gold: #0060c8; --gold-bright: #1880e8; --gold-pale: rgba(195,215,255,.96);
  --gold-dim: rgba(0,96,200,.52); --gold-glow: rgba(0,96,200,.20);
  --blood: #8000c8; --blood-bright: #a018e8; --blood-glow: rgba(128,0,200,.35);
  --border: rgba(0,100,200,.18); --border-bright: rgba(0,128,220,.40);
  --rim: rgba(0,85,175,.13); --line: rgba(0,68,148,.08);
  --green: rgba(0,200,150,.80); --violet: rgba(160,0,240,.80);
  --sidebar-shell: linear-gradient(180deg, rgba(6,6,6,.99), rgba(4,4,4,.99));
  --sidebar-border: rgba(0,85,175,.14);
  --sidebar-active-bg: rgba(0,96,200,.08);
  --sidebar-active-border: rgba(0,96,200,.26);
  --fx-trace-color: rgba(0,96,200,.22); --fx-icegrid-h: rgba(0,100,200,.07);
  --fx-icegrid-v: rgba(128,0,200,.05); --fx-icegrid-opacity: 0.13;
}

:root[data-vc-theme="ps2_black"] body::after {
  background-image:
    radial-gradient(ellipse 70% 55% at 50% 30%,
      rgba(0,96,200,var(--fx-bloom-intensity,.06)) 0%,
      transparent 70%),
    radial-gradient(ellipse 100% 100% at 50% 50%,
      transparent 48%, rgba(6,6,6,var(--fx-vignette-depth,.72)) 100%);
  background-size: cover;
  animation: vcBloomPulse 6s ease-in-out infinite;
}
:root[data-vc-theme="ps2_black"] body.vc-fx-breach-on .vc-modal-dialog {
  animation: vcShieldPulse 4s ease-in-out infinite;
  box-shadow: 0 0 0 1px rgba(0,96,200,.20), 0 0 50px rgba(0,96,200,.10),
              0 0 0 3px rgba(128,0,200,.08) !important;
}
:root[data-vc-theme="ps2_black"] .vc-main::before {
  content: "PS2 · BROWSER v1.10 · DISC READ OK";
  position: fixed; bottom: 8px; right: 14px;
  font-family: var(--font-vhs, monospace); font-size: 7px; letter-spacing: 3px;
  color: rgba(0,96,200,.30); pointer-events: none; z-index: 9999;
}
:root[data-vc-theme="ps2_black"] .vc-theme-active {
  border-color: rgba(0,96,200,.65) !important; background: rgba(0,96,200,.08) !important;
}


/* ─────────────────────────────────────────────────────────────────────
   PLAYSTATION 3 — XMB
   Chrome wave interface, deep navy, XMB crossbar. It only does everything.
   ───────────────────────────────────────────────────────────────────── */
:root[data-vc-theme="ps3_xmb"] {
  --void: #04080f; --abyss: #070e1c; --deep: #0c1828; --chamber: #121e34;
  --altar: #182640; --surface: #1e2e4e;
  --text: rgba(215,230,255,.92); --static: rgba(195,215,250,.87);
  --bone: rgba(235,244,255,.96); --fog: rgba(115,155,230,.63);
  --dust: rgba(70,110,195,.50); --muted: rgba(45,75,165,.52);
  --gold: #0090e0; --gold-bright: #18aeff; --gold-pale: rgba(195,228,255,.96);
  --gold-dim: rgba(0,144,224,.52); --gold-glow: rgba(0,144,224,.20);
  --blood: #0050b0; --blood-bright: #0068d8; --blood-glow: rgba(0,80,176,.40);
  --border: rgba(0,130,210,.18); --border-bright: rgba(0,160,240,.40);
  --rim: rgba(0,110,185,.13); --line: rgba(0,88,155,.08);
  --green: rgba(0,200,180,.78); --violet: rgba(100,80,240,.78);
  --sidebar-shell: linear-gradient(180deg, rgba(4,8,15,.99), rgba(3,6,11,.99));
  --sidebar-border: rgba(0,110,185,.14);
  --sidebar-active-bg: rgba(0,144,224,.08);
  --sidebar-active-border: rgba(0,144,224,.26);
  --fx-trace-color: rgba(0,144,224,.25); --fx-icegrid-h: rgba(0,130,210,.07);
  --fx-icegrid-v: rgba(0,80,176,.05); --fx-icegrid-opacity: 0.12;
}

:root[data-vc-theme="ps3_xmb"] body::after {
  background-image:
    radial-gradient(ellipse 100% 60% at 20% 50%,
      rgba(0,144,224,var(--fx-bloom-intensity,.05)) 0%,
      transparent 70%),
    radial-gradient(ellipse 100% 60% at 80% 50%,
      rgba(0,80,176,var(--fx-bloom-intensity,.04)) 0%,
      transparent 70%),
    radial-gradient(ellipse 100% 100% at 50% 50%,
      transparent 45%, rgba(4,8,15,var(--fx-vignette-depth,.70)) 100%);
  background-size: cover;
  animation: vcBloomPulse 8s ease-in-out infinite;
}
/* XMB wave — decorative diagonal sweep */
:root[data-vc-theme="ps3_xmb"] .vc-shell::before {
  content: "";
  position: fixed; inset: 0;
  background: linear-gradient(
    -35deg,
    transparent 0%,
    rgba(0,144,224,calc(var(--fx-atmos-opacity,.10)*0.3)) 40%,
    transparent 60%,
    rgba(0,80,176,calc(var(--fx-atmos-opacity,.10)*0.2)) 100%
  );
  pointer-events: none; z-index: 9994;
  animation: vcOldGodsLight 12s ease-in-out infinite alternate;
}
:root[data-vc-theme="ps3_xmb"] .vc-main::before {
  content: "PLAYSTATION®3 · XMB";
  position: fixed; bottom: 8px; right: 14px;
  font-family: var(--font-vhs, monospace); font-size: 7px; letter-spacing: 3px;
  color: rgba(0,144,224,.28); pointer-events: none; z-index: 9999;
}
:root[data-vc-theme="ps3_xmb"] .vc-theme-active {
  border-color: rgba(0,144,224,.65) !important; background: rgba(0,144,224,.08) !important;
}


/* ─────────────────────────────────────────────────────────────────────
   PLAYSTATION 4
   Matte slate. Electric blue. Share button. The era of screenshots.
   ───────────────────────────────────────────────────────────────────── */
:root[data-vc-theme="ps4_blue"] {
  --void: #0a0c12; --abyss: #0f1220; --deep: #14182c; --chamber: #1a1e38;
  --altar: #202545; --surface: #272d52;
  --text: rgba(215,228,255,.92); --static: rgba(198,214,252,.87);
  --bone: rgba(238,244,255,.96); --fog: rgba(108,145,228,.63);
  --dust: rgba(62,100,195,.50); --muted: rgba(40,68,165,.52);
  --gold: #0070cc; --gold-bright: #1888e8; --gold-pale: rgba(195,220,255,.96);
  --gold-dim: rgba(0,112,204,.52); --gold-glow: rgba(0,112,204,.20);
  --blood: #003888; --blood-bright: #0050b0; --blood-glow: rgba(0,56,136,.45);
  --border: rgba(0,100,195,.18); --border-bright: rgba(0,130,220,.40);
  --rim: rgba(0,85,168,.13); --line: rgba(0,68,138,.08);
  --green: rgba(0,210,175,.78); --violet: rgba(120,80,240,.78);
  --sidebar-shell: linear-gradient(180deg, rgba(10,12,18,.99), rgba(7,9,14,.99));
  --sidebar-border: rgba(0,85,168,.14);
  --sidebar-active-bg: rgba(0,112,204,.08);
  --sidebar-active-border: rgba(0,112,204,.26);
  --fx-trace-color: rgba(0,112,204,.25); --fx-icegrid-h: rgba(0,100,195,.07);
  --fx-icegrid-v: rgba(0,56,136,.05); --fx-icegrid-opacity: 0.11;
}

:root[data-vc-theme="ps4_blue"] body::after {
  background-image:
    radial-gradient(ellipse 60% 50% at 50% 60%,
      rgba(0,112,204,var(--fx-bloom-intensity,.07)) 0%,
      transparent 70%),
    radial-gradient(ellipse 100% 100% at 50% 50%,
      transparent 50%, rgba(10,12,18,var(--fx-vignette-depth,.68)) 100%);
  background-size: cover;
  animation: vcBloomPulse 6s ease-in-out infinite;
}
:root[data-vc-theme="ps4_blue"] body.vc-fx-trace-on .vc-shell::after {
  content: "";
  position: fixed; left: 0; right: 0; height: 1.5px;
  background: linear-gradient(180deg,
    rgba(0,112,204,var(--fx-trace-brightness,.25)) 0%,
    rgba(0,112,204,calc(var(--fx-trace-brightness,.25)*0.24)) 100%);
  pointer-events: none; z-index: 9998;
  animation: vcScanCrawl 4s linear infinite;
}
:root[data-vc-theme="ps4_blue"] .vc-main::before {
  content: "PLAYSTATION®4 · SHARE";
  position: fixed; bottom: 8px; right: 14px;
  font-family: var(--font-vhs, monospace); font-size: 7px; letter-spacing: 3px;
  color: rgba(0,112,204,.28); pointer-events: none; z-index: 9999;
}
:root[data-vc-theme="ps4_blue"] .vc-theme-active {
  border-color: rgba(0,112,204,.65) !important; background: rgba(0,112,204,.08) !important;
}


/* ─────────────────────────────────────────────────────────────────────
   PLAYSTATION 5
   Ceramic white. Haptic feedback. Activity Cards. Next generation.
   ───────────────────────────────────────────────────────────────────── */
:root[data-vc-theme="ps5_white"] {
  --void: #f8f8fa; --abyss: #f2f4f8; --deep: #eaecf4; --chamber: #e2e6f0;
  --altar: #d8dcea; --surface: #cdd3e4;
  --text: rgba(12,14,28,.90); --static: rgba(20,24,42,.84);
  --bone: rgba(6,8,18,.96); --fog: rgba(40,55,105,.62);
  --dust: rgba(65,82,145,.50); --muted: rgba(90,108,175,.55);
  --gold: #0050ff; --gold-bright: #1868ff; --gold-pale: rgba(8,10,22,.95);
  --gold-dim: rgba(0,80,255,.52); --gold-glow: rgba(0,80,255,.16);
  --blood: #080a14; --blood-bright: #101422; --blood-glow: rgba(8,10,20,.40);
  --border: rgba(0,60,200,.14); --border-bright: rgba(0,80,230,.32);
  --rim: rgba(0,50,175,.10); --line: rgba(0,40,148,.07);
  --green: rgba(0,200,160,.80); --violet: rgba(80,60,200,.75);
  --sidebar-shell: linear-gradient(180deg, rgba(240,242,248,.99), rgba(232,236,244,.99));
  --sidebar-border: rgba(0,50,175,.11);
  --sidebar-active-bg: rgba(0,80,255,.06);
  --sidebar-active-border: rgba(0,80,255,.26);
  --fx-trace-color: rgba(0,80,255,.20); --fx-icegrid-h: rgba(0,60,200,.05);
  --fx-icegrid-v: rgba(8,10,20,.04); --fx-icegrid-opacity: 0.08;
}

:root[data-vc-theme="ps5_white"] body::after {
  background-image:
    radial-gradient(ellipse 80% 50% at 50% 0%,
      rgba(255,255,255,var(--fx-bloom-intensity,.55)) 0%,
      transparent 65%),
    radial-gradient(ellipse 60% 50% at 50% 100%,
      rgba(0,80,255,calc(var(--fx-bloom-intensity,.55)*0.07)) 0%,
      transparent 70%);
  background-size: cover;
}
:root[data-vc-theme="ps5_white"] body.vc-fx-trace-on .vc-shell::after {
  content: "";
  position: fixed; left: 0; right: 0; height: 1px;
  background: linear-gradient(180deg,
    rgba(0,80,255,var(--fx-trace-brightness,.20)) 0%,
    rgba(0,80,255,calc(var(--fx-trace-brightness,.20)*0.2)) 100%);
  pointer-events: none; z-index: 9998;
  animation: vcScanCrawl 5s linear infinite;
}
:root[data-vc-theme="ps5_white"] body.vc-fx-breach-on .vc-modal-dialog {
  animation: vcShieldPulse 4s ease-in-out infinite;
  box-shadow: 0 0 0 1px rgba(0,80,255,.22), 0 0 30px rgba(0,80,255,.08) !important;
}
:root[data-vc-theme="ps5_white"] .vc-main::before {
  content: "PLAYSTATION®5 · ACTIVITY";
  position: fixed; bottom: 8px; right: 14px;
  font-family: var(--font-vhs, monospace); font-size: 7px; letter-spacing: 3px;
  color: rgba(0,80,255,.30); pointer-events: none; z-index: 9999;
}
:root[data-vc-theme="ps5_white"] .vc-theme-active {
  border-color: rgba(0,80,255,.60) !important; background: rgba(0,80,255,.06) !important;
}


/* ─────────────────────────────────────────────────────────────────────
   SEGA GENESIS
   Blast Processing. Jet black, blast red, 16-bit raw power. SEEEEGA.
   ───────────────────────────────────────────────────────────────────── */
:root[data-vc-theme="sega_genesis"] {
  --void: #060606; --abyss: #0c0c0c; --deep: #121212; --chamber: #181818;
  --altar: #202020; --surface: #2a2a2a;
  --text: rgba(240,235,230,.92); --static: rgba(228,222,216,.87);
  --bone: rgba(252,248,244,.96); --fog: rgba(192,185,178,.63);
  --dust: rgba(145,138,130,.50); --muted: rgba(105,98,92,.52);
  --gold: #d01010; --gold-bright: #f01818; --gold-pale: rgba(255,205,205,.96);
  --gold-dim: rgba(208,16,16,.52); --gold-glow: rgba(208,16,16,.22);
  --blood: #404040; --blood-bright: #555555; --blood-glow: rgba(64,64,64,.55);
  --border: rgba(200,16,16,.18); --border-bright: rgba(240,24,24,.40);
  --rim: rgba(175,12,12,.13); --line: rgba(145,8,8,.08);
  --green: #808080; --violet: rgba(180,60,60,.78);
  --sidebar-shell: linear-gradient(180deg, rgba(6,6,6,.99), rgba(4,4,4,.99));
  --sidebar-border: rgba(175,12,12,.14);
  --sidebar-active-bg: rgba(208,16,16,.08);
  --sidebar-active-border: rgba(208,16,16,.26);
  --fx-trace-color: rgba(208,16,16,.25); --fx-icegrid-h: rgba(200,16,16,.07);
  --fx-icegrid-v: rgba(64,64,64,.05); --fx-icegrid-opacity: 0.12;
}

:root[data-vc-theme="sega_genesis"] body::before {
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.80' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.08'/%3E%3C/svg%3E");
  background-size: 256px 256px;
}
:root[data-vc-theme="sega_genesis"] body::after {
  background-image:
    radial-gradient(ellipse 100% 100% at 50% 50%,
      transparent 45%, rgba(6,6,6,var(--fx-vignette-depth,.72)) 100%);
  background-size: cover;
}
:root[data-vc-theme="sega_genesis"] body.vc-fx-glitch-on .vc-main {
  animation: vcTrackingTear 5s ease-in-out infinite;
}
:root[data-vc-theme="sega_genesis"] .vc-main::before {
  content: "SEGA · BLAST PROCESSING · 16-BIT";
  position: fixed; bottom: 8px; right: 14px;
  font-family: var(--font-vhs, monospace); font-size: 7px; letter-spacing: 3px;
  color: rgba(208,16,16,.32); pointer-events: none; z-index: 9999;
}
:root[data-vc-theme="sega_genesis"] .vc-theme-active {
  border-color: rgba(208,16,16,.68) !important; background: rgba(208,16,16,.08) !important;
}


/* ─────────────────────────────────────────────────────────────────────
   ATARI 2600
   Wood veneer and black plastic. Joystick calluses. CRT phosphor warmth.
   ───────────────────────────────────────────────────────────────────── */
:root[data-vc-theme="atari_2600"] {
  --void: #1a1008; --abyss: #221508; --deep: #2c1e0e; --chamber: #362818;
  --altar: #423220; --surface: #503d28;
  --text: rgba(248,238,215,.93); --static: rgba(235,224,200,.88);
  --bone: rgba(255,248,228,.96); --fog: rgba(200,178,138,.65);
  --dust: rgba(155,130,88,.50); --muted: rgba(115,92,55,.52);
  --gold: #e8a028; --gold-bright: #f8b840; --gold-pale: rgba(255,238,190,.96);
  --gold-dim: rgba(232,160,40,.52); --gold-glow: rgba(232,160,40,.22);
  --blood: #c06010; --blood-bright: #e07818; --blood-glow: rgba(192,96,16,.40);
  --border: rgba(210,160,80,.18); --border-bright: rgba(235,185,105,.40);
  --rim: rgba(188,140,65,.13); --line: rgba(160,118,48,.08);
  --green: rgba(80,160,80,.80); --violet: rgba(120,80,180,.78);
  --sidebar-shell: linear-gradient(180deg, rgba(26,16,8,.99), rgba(18,10,4,.99));
  --sidebar-border: rgba(188,140,65,.14);
  --sidebar-active-bg: rgba(232,160,40,.08);
  --sidebar-active-border: rgba(232,160,40,.26);
  --fx-trace-color: rgba(232,160,40,.25); --fx-icegrid-h: rgba(210,160,80,.07);
  --fx-icegrid-v: rgba(192,96,16,.05); --fx-icegrid-opacity: 0.11;
}

:root[data-vc-theme="atari_2600"] body::before {
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 400 400' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.55 0.70' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.075'/%3E%3C/svg%3E");
  background-size: 400px 400px;
}
:root[data-vc-theme="atari_2600"] body::after {
  background-image:
    radial-gradient(ellipse 70% 55% at 50% 40%,
      rgba(232,160,40,var(--fx-bloom-intensity,.06)) 0%,
      transparent 70%),
    radial-gradient(ellipse 100% 100% at 50% 50%,
      transparent 48%, rgba(26,16,8,var(--fx-vignette-depth,.68)) 100%);
  background-size: cover;
  animation: vcBloomPulse 5s ease-in-out infinite;
}
:root[data-vc-theme="atari_2600"] body.vc-fx-trace-on .vc-shell::after {
  content: "";
  position: fixed; left: 0; right: 0; height: 2px;
  background: linear-gradient(180deg,
    rgba(232,160,40,var(--fx-trace-brightness,.28)) 0%,
    rgba(232,160,40,calc(var(--fx-trace-brightness,.28)*0.21)) 100%);
  pointer-events: none; z-index: 9998;
  animation: vcScanCrawl 4s linear infinite;
}
:root[data-vc-theme="atari_2600"] .vc-main::before {
  content: "ATARI · GAME PROGRAM™ · JOYSTICK PORT 1";
  position: fixed; bottom: 8px; right: 14px;
  font-family: var(--font-vhs, monospace); font-size: 7px; letter-spacing: 3px;
  color: rgba(232,160,40,.30); pointer-events: none; z-index: 9999;
}
:root[data-vc-theme="atari_2600"] .vc-theme-active {
  border-color: rgba(232,160,40,.65) !important; background: rgba(232,160,40,.08) !important;
}


/* ─────────────────────────────────────────────────────────────────────
   SUPER NINTENDO
   Lavender grey plastic. Mode 7 dreams. Button rainbow. Super!
   ───────────────────────────────────────────────────────────────────── */
:root[data-vc-theme="nintendo_snes"] {
  --void: #cccad8; --abyss: #d4d2e0; --deep: #dcdae8; --chamber: #e4e2ee;
  --altar: #eceaf4; --surface: #f2f0f8;
  --text: rgba(28,18,48,.90); --static: rgba(40,28,65,.84);
  --bone: rgba(16,10,30,.96); --fog: rgba(70,50,110,.62);
  --dust: rgba(100,75,148,.50); --muted: rgba(130,100,178,.55);
  --gold: #7040b0; --gold-bright: #9058d8; --gold-pale: rgba(14,8,28,.95);
  --gold-dim: rgba(112,64,176,.52); --gold-glow: rgba(112,64,176,.18);
  --blood: #d02828; --blood-bright: #e83030; --blood-glow: rgba(208,40,40,.30);
  --border: rgba(100,60,160,.18); --border-bright: rgba(130,80,200,.38);
  --rim: rgba(85,50,138,.12); --line: rgba(68,38,115,.08);
  --green: rgba(0,168,80,.80); --violet: rgba(80,60,200,.78);
  --sidebar-shell: linear-gradient(180deg, rgba(195,192,208,.99), rgba(185,182,200,.99));
  --sidebar-border: rgba(85,50,138,.12);
  --sidebar-active-bg: rgba(112,64,176,.08);
  --sidebar-active-border: rgba(112,64,176,.26);
  --fx-trace-color: rgba(112,64,176,.25); --fx-icegrid-h: rgba(100,60,160,.06);
  --fx-icegrid-v: rgba(208,40,40,.04); --fx-icegrid-opacity: 0.09;
}

:root[data-vc-theme="nintendo_snes"] body::after {
  background-image:
    radial-gradient(ellipse 90% 50% at 50% 0%,
      rgba(255,255,255,var(--fx-bloom-intensity,.35)) 0%,
      transparent 65%),
    radial-gradient(ellipse 60% 50% at 50% 100%,
      rgba(112,64,176,calc(var(--fx-bloom-intensity,.35)*0.08)) 0%,
      transparent 70%);
  background-size: cover;
}
:root[data-vc-theme="nintendo_snes"] .vc-main::before {
  content: "SUPER NINTENDO · MODE 7 · © NINTENDO";
  position: fixed; bottom: 8px; right: 14px;
  font-family: var(--font-vhs, monospace); font-size: 7px; letter-spacing: 3px;
  color: rgba(112,64,176,.35); pointer-events: none; z-index: 9999;
}
:root[data-vc-theme="nintendo_snes"] .vc-theme-active {
  border-color: rgba(112,64,176,.60) !important; background: rgba(112,64,176,.07) !important;
}


/* ─────────────────────────────────────────────────────────────────────
   NINTENDO 64
   64-bit power, cartridge rumble, expansion pak hum. Ultra 64.
   ───────────────────────────────────────────────────────────────────── */
:root[data-vc-theme="nintendo_n64"] {
  --void: #0a0a14; --abyss: #101020; --deep: #181828; --chamber: #201838;
  --altar: #281e46; --surface: #302456;
  --text: rgba(225,220,255,.92); --static: rgba(210,205,248,.87);
  --bone: rgba(242,238,255,.96); --fog: rgba(155,140,225,.65);
  --dust: rgba(110,90,185,.50); --muted: rgba(78,60,155,.52);
  --gold: #e82020; --gold-bright: #ff2828; --gold-pale: rgba(255,205,205,.96);
  --gold-dim: rgba(232,32,32,.52); --gold-glow: rgba(232,32,32,.20);
  --blood: #1a1ae0; --blood-bright: #2828ff; --blood-glow: rgba(26,26,224,.38);
  --border: rgba(220,30,30,.18); --border-bright: rgba(255,40,40,.38);
  --rim: rgba(195,25,25,.13); --line: rgba(165,18,18,.08);
  --green: rgba(0,200,80,.78); --violet: rgba(160,50,230,.80);
  --sidebar-shell: linear-gradient(180deg, rgba(10,10,20,.99), rgba(7,7,15,.99));
  --sidebar-border: rgba(195,25,25,.14);
  --sidebar-active-bg: rgba(232,32,32,.08);
  --sidebar-active-border: rgba(232,32,32,.25);
  --fx-trace-color: rgba(232,32,32,.22); --fx-icegrid-h: rgba(220,30,30,.07);
  --fx-icegrid-v: rgba(26,26,224,.05); --fx-icegrid-opacity: 0.12;
}

:root[data-vc-theme="nintendo_n64"] body::after {
  background-image:
    radial-gradient(ellipse 100% 100% at 50% 50%,
      transparent 42%, rgba(10,10,20,var(--fx-vignette-depth,.72)) 100%);
  background-size: cover;
}
:root[data-vc-theme="nintendo_n64"] body.vc-fx-icegrid-on .result-card::before,
:root[data-vc-theme="nintendo_n64"] body.vc-fx-icegrid-on .lib-card::before {
  background-image:
    linear-gradient(to right, rgba(232,32,32,.07) 1px, transparent 1px),
    linear-gradient(to bottom, rgba(26,26,224,.05) 1px, transparent 1px);
  background-size: 22px 22px;
}
:root[data-vc-theme="nintendo_n64"] .vc-main::before {
  content: "NINTENDO 64 · EXPANSION PAK DETECTED";
  position: fixed; bottom: 8px; right: 14px;
  font-family: var(--font-vhs, monospace); font-size: 7px; letter-spacing: 3px;
  color: rgba(232,32,32,.28); pointer-events: none; z-index: 9999;
}
:root[data-vc-theme="nintendo_n64"] .vc-theme-active {
  border-color: rgba(232,32,32,.62) !important; background: rgba(232,32,32,.08) !important;
}


/* ─────────────────────────────────────────────────────────────────────
   NINTENDO GAMECUBE
   Indigo purple. Lunchbox form. Startup jingle. The purple lunch pail.
   ───────────────────────────────────────────────────────────────────── */
:root[data-vc-theme="nintendo_gc"] {
  --void: #1a0838; --abyss: #220e48; --deep: #2c1460; --chamber: #361a78;
  --altar: #402090; --surface: #4c28aa;
  --text: rgba(230,218,255,.92); --static: rgba(215,200,252,.87);
  --bone: rgba(245,238,255,.96); --fog: rgba(175,140,248,.65);
  --dust: rgba(135,95,225,.50); --muted: rgba(100,65,195,.52);
  --gold: #7040e0; --gold-bright: #9060ff; --gold-pale: rgba(215,195,255,.96);
  --gold-dim: rgba(112,64,224,.52); --gold-glow: rgba(112,64,224,.22);
  --blood: #e060a0; --blood-bright: #ff78b8; --blood-glow: rgba(224,96,160,.35);
  --border: rgba(140,80,240,.18); --border-bright: rgba(168,100,255,.40);
  --rim: rgba(120,65,215,.13); --line: rgba(98,50,185,.08);
  --green: rgba(80,220,160,.78); --violet: rgba(240,100,180,.80);
  --sidebar-shell: linear-gradient(180deg, rgba(26,8,56,.99), rgba(18,5,40,.99));
  --sidebar-border: rgba(120,65,215,.14);
  --sidebar-active-bg: rgba(112,64,224,.08);
  --sidebar-active-border: rgba(112,64,224,.26);
  --fx-trace-color: rgba(112,64,224,.25); --fx-icegrid-h: rgba(140,80,240,.07);
  --fx-icegrid-v: rgba(224,96,160,.05); --fx-icegrid-opacity: 0.12;
}

:root[data-vc-theme="nintendo_gc"] body::after {
  background-image:
    radial-gradient(ellipse 65% 55% at 50% 30%,
      rgba(112,64,224,var(--fx-bloom-intensity,.08)) 0%,
      transparent 70%),
    radial-gradient(ellipse 100% 100% at 50% 50%,
      transparent 42%, rgba(26,8,56,var(--fx-vignette-depth,.72)) 100%);
  background-size: cover;
  animation: vcBloomPulse 6s ease-in-out infinite;
}
:root[data-vc-theme="nintendo_gc"] body.vc-fx-trace-on .vc-shell::after {
  content: "";
  position: fixed; left: 0; right: 0; height: 1.5px;
  background: linear-gradient(180deg,
    rgba(112,64,224,var(--fx-trace-brightness,.28)) 0%,
    rgba(112,64,224,calc(var(--fx-trace-brightness,.28)*0.21)) 100%);
  pointer-events: none; z-index: 9998;
  animation: vcScanCrawl 4s linear infinite;
}
:root[data-vc-theme="nintendo_gc"] .vc-main::before {
  content: "NINTENDO GAMECUBE · SLOT A";
  position: fixed; bottom: 8px; right: 14px;
  font-family: var(--font-vhs, monospace); font-size: 7px; letter-spacing: 3px;
  color: rgba(112,64,224,.30); pointer-events: none; z-index: 9999;
}
:root[data-vc-theme="nintendo_gc"] .vc-theme-active {
  border-color: rgba(112,64,224,.65) !important; background: rgba(112,64,224,.08) !important;
}


/* ─────────────────────────────────────────────────────────────────────
   NINTENDO WII
   White minimalism. Wii Sports stadium. Everyone played.
   ───────────────────────────────────────────────────────────────────── */
:root[data-vc-theme="nintendo_wii"] {
  --void: #f0f0f0; --abyss: #f4f4f4; --deep: #f8f8f8; --chamber: #fafafa;
  --altar: #fcfcfc; --surface: #ffffff;
  --text: rgba(30,30,30,.90); --static: rgba(45,45,45,.84);
  --bone: rgba(15,15,15,.96); --fog: rgba(80,80,80,.63);
  --dust: rgba(110,110,110,.50); --muted: rgba(140,140,140,.55);
  --gold: #c0c0c0; --gold-bright: #d8d8d8; --gold-pale: rgba(15,15,15,.95);
  --gold-dim: rgba(192,192,192,.55); --gold-glow: rgba(192,192,192,.18);
  --blood: #484848; --blood-bright: #606060; --blood-glow: rgba(72,72,72,.35);
  --border: rgba(80,80,80,.16); --border-bright: rgba(100,100,100,.35);
  --rim: rgba(65,65,65,.11); --line: rgba(50,50,50,.07);
  --green: rgba(0,160,80,.78); --violet: rgba(100,100,200,.75);
  --sidebar-shell: linear-gradient(180deg, rgba(232,232,232,.99), rgba(224,224,224,.99));
  --sidebar-border: rgba(65,65,65,.11);
  --sidebar-active-bg: rgba(192,192,192,.10);
  --sidebar-active-border: rgba(80,80,80,.30);
  --fx-trace-color: rgba(80,80,80,.20); --fx-icegrid-h: rgba(80,80,80,.05);
  --fx-icegrid-v: rgba(72,72,72,.04); --fx-icegrid-opacity: 0.07;
}

:root[data-vc-theme="nintendo_wii"] body::after {
  background-image:
    radial-gradient(ellipse 90% 50% at 50% 0%,
      rgba(255,255,255,var(--fx-bloom-intensity,.50)) 0%,
      transparent 60%);
  background-size: cover;
}
:root[data-vc-theme="nintendo_wii"] body.vc-fx-trace-on .vc-shell::after {
  content: "";
  position: fixed; left: 0; right: 0; height: 1px;
  background: linear-gradient(180deg,
    rgba(80,80,80,var(--fx-trace-brightness,.20)) 0%,
    rgba(80,80,80,calc(var(--fx-trace-brightness,.20)*0.2)) 100%);
  pointer-events: none; z-index: 9998;
  animation: vcScanCrawl 5s linear infinite;
}
:root[data-vc-theme="nintendo_wii"] .vc-main::before {
  content: "WII · SENSOR BAR DETECTED · STRAP ATTACHED";
  position: fixed; bottom: 8px; right: 14px;
  font-family: var(--font-vhs, monospace); font-size: 7px; letter-spacing: 3px;
  color: rgba(80,80,80,.28); pointer-events: none; z-index: 9999;
}
:root[data-vc-theme="nintendo_wii"] .vc-theme-active {
  border-color: rgba(80,80,80,.45) !important; background: rgba(80,80,80,.07) !important;
}


/* ─────────────────────────────────────────────────────────────────────
   NINTENDO SWITCH
   Joy-Con red and blue. Dock click. Play anywhere.
   ───────────────────────────────────────────────────────────────────── */
:root[data-vc-theme="nintendo_switch"] {
  --void: #161616; --abyss: #1c1c1c; --deep: #222222; --chamber: #2a2a2a;
  --altar: #323232; --surface: #3c3c3c;
  --text: rgba(240,240,240,.92); --static: rgba(228,228,228,.87);
  --bone: rgba(252,252,252,.96); --fog: rgba(180,180,180,.63);
  --dust: rgba(135,135,135,.50); --muted: rgba(100,100,100,.52);
  --gold: #e82020; --gold-bright: #ff2828; --gold-pale: rgba(255,205,205,.96);
  --gold-dim: rgba(232,32,32,.52); --gold-glow: rgba(232,32,32,.22);
  --blood: #2060e8; --blood-bright: #3878ff; --blood-glow: rgba(32,96,232,.38);
  --border: rgba(220,30,30,.18); --border-bright: rgba(255,40,40,.38);
  --rim: rgba(195,25,25,.13); --line: rgba(165,18,18,.08);
  --green: rgba(0,190,100,.80); --violet: rgba(100,80,220,.80);
  --sidebar-shell: linear-gradient(180deg, rgba(22,22,22,.99), rgba(16,16,16,.99));
  --sidebar-border: rgba(195,25,25,.14);
  --sidebar-active-bg: rgba(232,32,32,.08);
  --sidebar-active-border: rgba(232,32,32,.26);
  --fx-trace-color: rgba(232,32,32,.25); --fx-icegrid-h: rgba(220,30,30,.07);
  --fx-icegrid-v: rgba(32,96,232,.05); --fx-icegrid-opacity: 0.11;
}

/* Dual Joy-Con side strips */
:root[data-vc-theme="nintendo_switch"] .vc-main::before {
  content: "";
  position: fixed; top: 0; bottom: 0; left: 0; width: 4px;
  background: rgba(232,32,32,calc(var(--fx-atmos-opacity,.10)*1.2));
  pointer-events: none; z-index: 9995;
}
:root[data-vc-theme="nintendo_switch"] .vc-main::after {
  content: "";
  position: fixed; top: 0; bottom: 0; right: 0; width: 4px;
  background: rgba(32,96,232,calc(var(--fx-atmos-opacity,.10)*1.2));
  pointer-events: none; z-index: 9995;
}
:root[data-vc-theme="nintendo_switch"] .vc-shell::before {
  content: "";
  position: fixed; inset: 0;
  background: radial-gradient(ellipse 100% 100% at 50% 50%,
    transparent 45%, rgba(22,22,22,var(--fx-vignette-depth,.65)) 100%);
  pointer-events: none; z-index: 9994;
}
:root[data-vc-theme="nintendo_switch"] body.vc-fx-trace-on .vc-shell::after {
  content: "";
  position: fixed; left: 0; right: 0; height: 2px;
  background: linear-gradient(90deg,
    rgba(232,32,32,var(--fx-trace-brightness,.25)) 0%,
    rgba(32,96,232,var(--fx-trace-brightness,.25)) 100%);
  pointer-events: none; z-index: 9998;
  animation: vcScanCrawl 3.5s linear infinite;
}
:root[data-vc-theme="nintendo_switch"] body.vc-fx-breach-on .vc-modal-dialog {
  animation: vcShieldPulse 3s ease-in-out infinite;
  box-shadow: 0 0 0 1px rgba(232,32,32,.25), 0 0 0 2px rgba(32,96,232,.15),
              0 0 30px rgba(232,32,32,.08) !important;
}
:root[data-vc-theme="nintendo_switch"] .vc-theme-active {
  border-color: rgba(232,32,32,.65) !important; background: rgba(232,32,32,.08) !important;
}

/* ═══════════════════════════════════════════════════════════════════════════
   XBOX 360 BLADE UI — Complete styles
   ═══════════════════════════════════════════════════════════════════════════ */

/* ── Body takeover ─────────────────────────────────────────────────────────── */
body.vc-blade-mode { overflow: hidden !important; background: #0a0a0a !important; }
body.vc-blade-mode .vc-shell,
body.vc-blade-mode .sidebar,
body.vc-blade-mode .vc-main { display: none !important; }

/* ── Root shell ────────────────────────────────────────────────────────────── */
#vc-blade-root {
  position: fixed; inset: 0; display: none; flex-direction: column;
  font-family: 'Rajdhani','Segoe UI',sans-serif;
  background: linear-gradient(175deg,#eceee8,#d4d8d2 45%,#bec2bc);
  overflow: hidden; z-index: 9000;
}
#vc-blade-root.active { display: flex; }
#vc-blade-root::before {
  content: ''; position: absolute; top: 0; left: 0; right: 0; height: 4px;
  background: linear-gradient(180deg,rgba(255,255,255,.75),transparent);
  z-index: 100; pointer-events: none;
}

/* ── Top bar ───────────────────────────────────────────────────────────────── */
#vc-blade-topbar {
  height: 44px; flex-shrink: 0; display: flex; align-items: center;
  justify-content: space-between; padding: 0 18px;
  background: linear-gradient(180deg,rgba(255,255,255,.52),rgba(255,255,255,.18));
  border-bottom: 1px solid rgba(0,0,0,.10); position: relative; z-index: 50;
}
#vc-blade-topbar::after { content: ''; position: absolute; bottom: -1px; left: 0; right: 0; height: 1px; background: rgba(255,255,255,.55); }
.vb-topleft { display: flex; align-items: center; gap: 10px; }
.vb-ring {
  width: 28px; height: 28px; border-radius: 50%; cursor: pointer; flex-shrink: 0;
  background: radial-gradient(circle at 38% 30%,rgba(150,240,80,.55),rgba(25,80,0,.80) 55%,rgba(8,42,0,.96));
  border: 2px solid rgba(82,176,0,.58);
  box-shadow: 0 0 0 3px rgba(82,176,0,.14),0 0 12px rgba(82,176,0,.28),inset 0 1px rgba(255,255,255,.22);
  display: flex; align-items: center; justify-content: center; position: relative; overflow: hidden;
}
.vb-ring::before { content: ''; position: absolute; inset: 3px; border-radius: 50%; background: linear-gradient(rgba(82,176,0,.28),rgba(82,176,0,.28)) center/1px 100% no-repeat, linear-gradient(rgba(82,176,0,.28),rgba(82,176,0,.28)) center/100% 1px no-repeat; }
.vb-ring::after { content: '⛧'; font-size: 14px; font-weight: 900; color: #b8ff40; text-shadow: 0 0 6px #80ff00,0 0 14px rgba(82,220,0,.90); position: relative; z-index: 1; }
.vb-gamertag { font-size: 13px; font-weight: 700; letter-spacing: 2px; text-transform: uppercase; color: #404040; }
.vb-gscore   { font-size: 10px; font-weight: 600; letter-spacing: 2px; color: #52b000; }
.vb-clock    { font-size: 13px; font-weight: 600; letter-spacing: 2px; color: #646460; }

/* ── Middle ────────────────────────────────────────────────────────────────── */
#vc-blade-middle { flex: 1; position: relative; overflow: hidden; min-height: 0; }
#vc-blade-backdrop {
  position: absolute; inset: 0; z-index: 0; transition: background .3s ease;
}
#vc-blade-backdrop[data-section="library"] { background: linear-gradient(160deg,#209020,#186818 35%,#105210 70%,#0a3e0a); }
#vc-blade-backdrop[data-section="shelves"] { background: linear-gradient(160deg,#c87010,#a85808 35%,#884808 70%,#683804); }
#vc-blade-backdrop[data-section="games"]   { background: linear-gradient(160deg,#2a9020,#1e6818 35%,#145212 70%,#0c3e0a); }
#vc-blade-backdrop[data-section="profile"] { background: linear-gradient(160deg,#c84010,#a83008 35%,#882408 70%,#681806); }
#vc-blade-backdrop[data-section="system"]  { background: linear-gradient(160deg,#6820a8,#501888 35%,#3c1070 70%,#2c0858); }
#vc-blade-backdrop::after { content: ''; position: absolute; inset: 0; pointer-events: none; background: linear-gradient(160deg,rgba(255,255,255,.15),rgba(255,255,255,.04) 30%,transparent 55%), linear-gradient(180deg,rgba(255,255,255,.10),transparent 30%); }

/* Content area */
#vc-blade-content {
  position: absolute; top: 0; bottom: 0; z-index: 2;
  display: flex; flex-direction: column; overflow: hidden;
  transition: left .18s ease, right .18s ease;
}
/* SVG blade panels */
#vc-blade-lp, #vc-blade-rp {
  position: absolute; top: 0; bottom: 0; z-index: 10; pointer-events: none;
  display: flex; align-items: stretch;
}
#vc-blade-lp { left: 0; }
#vc-blade-rp { right: 0; }
#vc-blade-lp svg, #vc-blade-rp svg { display: block; overflow: visible; width: auto; height: 100%; }
#vc-blade-lp g, #vc-blade-rp g { pointer-events: all; }

/* ── Bottom bar ────────────────────────────────────────────────────────────── */
#vc-blade-botbar {
  height: 46px; flex-shrink: 0; display: flex; align-items: center;
  padding: 0 18px; gap: 14px;
  background: linear-gradient(180deg,#d4d8d2,#bec2bc 60%,#a8aca8);
  border-top: 1px solid rgba(255,255,255,.50); position: relative; z-index: 50;
}
#vc-blade-botbar::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 1px; background: rgba(255,255,255,.65); }
.vb-bhint  { display: flex; align-items: center; gap: 6px; }
.vb-bcirc  {
  width: 27px; height: 27px; border-radius: 50%; flex-shrink: 0;
  display: flex; align-items: center; justify-content: center; font-size: 13px; font-weight: 900;
  box-shadow: 0 3px 8px rgba(0,0,0,.55),inset 0 -3px 5px rgba(0,0,0,.30),inset 0 2px 2px rgba(255,255,255,.22);
  border: 1.5px solid rgba(0,0,0,.28); position: relative; overflow: hidden;
}
.vb-bcirc span { position: relative; z-index: 1; color: rgba(255,255,255,.55); text-shadow: 0 1px 0 rgba(0,0,0,.50); }
.vb-bcirc::before { content: ''; position: absolute; top: 3px; left: 4px; width: 46%; height: 38%; border-radius: 50%; background: radial-gradient(ellipse at 40% 35%,rgba(255,255,255,.82) 0%,rgba(255,255,255,.28) 55%,transparent 100%); z-index: 3; pointer-events: none; }
.vb-bcirc::after  { content: ''; position: absolute; bottom: 0; left: 0; right: 0; height: 38%; border-radius: 0 0 50% 50%; background: linear-gradient(180deg,transparent,rgba(0,0,0,.28)); z-index: 2; pointer-events: none; }
.vb-by { background: radial-gradient(ellipse at 40% 25%,#ffe040 0%,#f0a800 45%,#c07800 75%,#7a4a00 100%); }
.vb-bx { background: radial-gradient(ellipse at 40% 25%,#60a8ff 0%,#2060e0 45%,#0840b0 75%,#021870 100%); }
.vb-bb { background: radial-gradient(ellipse at 40% 25%,#ff6040 0%,#e02010 45%,#b01008 75%,#600404 100%); }
.vb-ba { background: radial-gradient(ellipse at 40% 25%,#80e040 0%,#40b010 45%,#208008 75%,#0c4004 100%); }
.vb-blbl  { font-size: 10px; font-weight: 600; letter-spacing: .5px; color: #565652; }
.vb-bsep  { width: 1px; height: 20px; background: rgba(0,0,0,.13); margin: 0 2px; }
.vb-bright { margin-left: auto; display: flex; align-items: center; gap: 14px; }
.vb-keyhint { display: flex; align-items: center; gap: 5px; font-size: 10px; font-weight: 600; letter-spacing: .5px; color: #6a6a66; }
.vb-kpill { background: rgba(0,0,0,.12); border: 1px solid rgba(0,0,0,.18); border-radius: 4px; padding: 1px 6px; font-size: 10px; font-weight: 700; color: #555; box-shadow: inset 0 1px rgba(255,255,255,.60),0 1px 2px rgba(0,0,0,.18); }

/* ── View header ───────────────────────────────────────────────────────────── */
.vb-view-hdr {
  height: 54px; flex-shrink: 0; display: flex; align-items: flex-end;
  padding: 0 22px 10px;
  border-bottom: 1px solid rgba(255,255,255,.18);
  background: linear-gradient(180deg,rgba(0,0,0,.16),transparent);
}
.vb-view-title { font-size: 24px; font-weight: 700; letter-spacing: 3px; text-transform: uppercase; color: rgba(255,255,255,.95); line-height: 1; text-shadow: 0 2px 8px rgba(0,0,0,.28); }
.vb-view-sub   { font-size: 10px; font-weight: 500; letter-spacing: 3px; text-transform: uppercase; color: rgba(255,255,255,.48); margin-left: 12px; margin-bottom: 3px; }
.vb-view-body  { flex: 1; overflow-y: auto; overflow-x: hidden; scrollbar-width: thin; scrollbar-color: rgba(255,255,255,.18) transparent; }

/* ── Real app views inside blade ───────────────────────────────────────────── */
#vc-blade-content .vc-view { display: none !important; }
#vc-blade-content .vc-view.active { display: flex !important; flex-direction: column; flex: 1; overflow: hidden; }
#vc-blade-content .vc-page-header,
#vc-blade-content .vc-topbar,
#vc-blade-content .lib-topbar { display: none !important; }
#vc-blade-content .vc-page    { padding: 12px 18px; background: transparent; }
#vc-blade-content .lib-inner  { padding: 8px 12px; }
#vc-blade-content { color: rgba(255,255,255,.88); }
#vc-blade-content .lib-section-header { color: rgba(255,255,255,.70); border-color: rgba(255,255,255,.14); }

/* ── FROSTED GLASS cards ───────────────────────────────────────────────────── */
#vc-blade-content .result-card {
  background: rgba(255,255,255,.10) !important;
  backdrop-filter: blur(12px) saturate(1.4) !important;
  -webkit-backdrop-filter: blur(12px) saturate(1.4) !important;
  border: 1px solid rgba(255,255,255,.22) !important;
  box-shadow: 0 2px 16px rgba(0,0,0,.28), inset 0 1px rgba(255,255,255,.18) !important;
  color: rgba(255,255,255,.90) !important;
  transition: background .15s, border-color .15s, transform .15s, box-shadow .15s !important;
}
#vc-blade-content .result-card:hover {
  background: rgba(255,255,255,.18) !important;
  border-color: rgba(255,255,255,.40) !important;
  box-shadow: 0 6px 24px rgba(0,0,0,.40), inset 0 1px rgba(255,255,255,.28) !important;
  transform: translateY(-3px) !important;
}
#vc-blade-content .poster-fallback { background: rgba(255,255,255,.06) !important; color: rgba(255,255,255,.38) !important; }
#vc-blade-content .result-title    { color: rgba(255,255,255,.92) !important; }
#vc-blade-content .result-year     { color: rgba(255,255,255,.52) !important; }
#vc-blade-content .platform-tag    { background: rgba(255,255,255,.12) !important; border-color: rgba(255,255,255,.20) !important; color: rgba(255,255,255,.72) !important; }

#vc-blade-content .lib-card {
  background: rgba(255,255,255,.10) !important;
  backdrop-filter: blur(10px) !important;
  -webkit-backdrop-filter: blur(10px) !important;
  border: 1px solid rgba(255,255,255,.20) !important;
  color: rgba(255,255,255,.88) !important;
}
#vc-blade-content .lib-card:hover  { background: rgba(255,255,255,.18) !important; border-color: rgba(255,255,255,.36) !important; }
#vc-blade-content .lib-card-name   { color: rgba(255,255,255,.92) !important; }
#vc-blade-content .lib-card-year,
#vc-blade-content .lib-card-ago    { color: rgba(255,255,255,.45) !important; }

/* Search/filter overrides */
#vc-blade-content .games-search-wrap { background: rgba(255,255,255,.10) !important; backdrop-filter: blur(8px) !important; -webkit-backdrop-filter: blur(8px) !important; border: 1px solid rgba(255,255,255,.22) !important; border-radius: 8px !important; padding: 4px 12px !important; }
#vc-blade-content .games-search-input { background: transparent !important; color: rgba(255,255,255,.96) !important; font-weight: 600 !important; }
#vc-blade-content .games-search-input::placeholder { color: rgba(255,255,255,.55) !important; }
#vc-blade-content .btn-ritual        { background: rgba(82,176,0,.30) !important; border-color: rgba(82,176,0,.65) !important; color: rgba(200,255,100,.98) !important; font-weight: 700 !important; }
#vc-blade-content .btn-ghost         { background: rgba(255,255,255,.16) !important; border-color: rgba(255,255,255,.35) !important; color: rgba(255,255,255,.92) !important; font-weight: 600 !important; }
#vc-blade-content .filter-pill       { color: rgba(255,255,255,.85) !important; border-color: rgba(255,255,255,.30) !important; }
#vc-blade-content .gt-label,
#vc-blade-content .gt-check          { color: rgba(255,255,255,.85) !important; font-weight: 600 !important; }
#vc-blade-content select,
#vc-blade-content .gt-select         { background: rgba(0,0,0,.38) !important; color: rgba(255,255,255,.92) !important; border-color: rgba(255,255,255,.30) !important; font-weight: 600 !important; }
#vc-blade-content .games-status      { color: rgba(255,255,255,.75) !important; font-weight: 600 !important; }
#vc-blade-content .lib-section-title { color: rgba(255,255,255,.90) !important; font-weight: 700 !important; }
#vc-blade-content .lib-section-icon  { opacity: .85; }
#vc-blade-content .recent-label      { color: rgba(255,255,255,.75) !important; font-weight: 700 !important; }
#vc-blade-content .recent-chip       { background: rgba(255,255,255,.16) !important; border: 1px solid rgba(255,255,255,.30) !important; color: rgba(255,255,255,.92) !important; font-weight: 600 !important; }
#vc-blade-content .result-title      { color: #fff !important; font-weight: 700 !important; text-shadow: 0 1px 4px rgba(0,0,0,.60) !important; }
#vc-blade-content .result-year       { color: rgba(255,255,255,.72) !important; font-weight: 600 !important; }
#vc-blade-content .platform-tag,
#vc-blade-content .tag               { background: rgba(255,255,255,.18) !important; border-color: rgba(255,255,255,.30) !important; color: rgba(255,255,255,.90) !important; font-weight: 600 !important; }
#vc-blade-content .games-toolbar     { color: rgba(255,255,255,.85) !important; }
#vc-blade-content input[type="checkbox"] { accent-color: #52b000; }

/* ── Games Dashboard (blade-only) ──────────────────────────────────────────── */
#vb-games-dash {
  display: flex; flex-direction: column; height: 100%; overflow: hidden;
}
.vb-dash-body {
  flex: 1; overflow-y: auto; padding: 14px 20px; display: flex; flex-direction: column; gap: 16px;
  scrollbar-width: none;
}
/* Shared search bar in dashboard */
.vb-dash-search {
  display: flex; align-items: center; gap: 10px;
  background: rgba(255,255,255,.12); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
  border: 1px solid rgba(255,255,255,.25); border-radius: 8px; padding: 7px 14px;
}
.vb-dash-search input {
  flex: 1; background: transparent; border: none; outline: none;
  color: rgba(255,255,255,.90); font-size: 14px; font-family: inherit;
}
.vb-dash-search input::placeholder { color: rgba(255,255,255,.38); }
.vb-dash-search .vb-dash-search-lbl { font-size: 10px; letter-spacing: 3px; text-transform: uppercase; color: rgba(255,255,255,.35); }
/* New Releases — horizontal scroll row of poster cards */
.vb-hero-row { display: flex; gap: 10px; overflow-x: auto; padding-bottom: 4px; scrollbar-width: none; }
.vb-hero-row::-webkit-scrollbar { display: none; }
.vb-dash-hero {
  position: relative; overflow: hidden; border-radius: 8px; flex: 0 0 150px; height: 220px;
  background: rgba(0,0,0,.22); border: 1px solid rgba(255,255,255,.18);
  display: flex; align-items: flex-end; cursor: pointer; transition: border-color .15s, transform .15s;
}
.vb-dash-hero:hover { border-color: rgba(255,255,255,.50); transform: translateY(-3px); }
.vb-dash-hero-bg { position: absolute; inset: 0; object-fit: cover; width: 100%; height: 100%; opacity: .90; z-index: 0; }
.vb-dash-hero::after { content:''; position:absolute; inset:0; background: linear-gradient(0deg, rgba(0,0,0,.90) 0%, rgba(0,0,0,.35) 50%, transparent 80%); z-index: 1; pointer-events: none; }
.vb-dash-hero-content { position: relative; z-index: 2; padding: 10px 10px 9px; width: 100%; }
.vb-dash-hero-eyebrow { font-size: 7px; font-weight: 700; letter-spacing: 3px; text-transform: uppercase; color: rgba(255,220,60,.85); margin-bottom: 3px; }
.vb-dash-hero-title { font-size: 13px; font-weight: 700; color: rgba(255,255,255,.97); letter-spacing: .3px; line-height: 1.25; text-shadow: 0 1px 4px rgba(0,0,0,.80); }
.vb-dash-hero-meta  { font-size: 9px; letter-spacing: 1.5px; text-transform: uppercase; color: rgba(255,255,255,.48); margin-top: 2px; }
.vb-dash-hero-btn   { display: none; }
.vb-dash-hero-icon  { display: none; }
/* Section label */
.vb-dash-section { font-size: 9px; font-weight: 700; letter-spacing: 4px; text-transform: uppercase; color: rgba(255,255,255,.45); display: flex; align-items: center; gap: 8px; }
.vb-dash-section::after { content: ''; flex: 1; height: 1px; background: linear-gradient(90deg,rgba(255,255,255,.20),transparent); }
/* Trending — larger poster grid */
.vb-trend-row { display: grid; grid-template-columns: repeat(auto-fill, minmax(90px, 1fr)); gap: 6px; }
.vb-trend-card {
  cursor: pointer;
}
.vb-trend-thumb {
  width: 100%; aspect-ratio: 3/4; border-radius: 7px; position: relative; overflow: hidden;
  background: rgba(255,255,255,.10); border: 1px solid rgba(255,255,255,.16);
  display: flex; align-items: center; justify-content: center; transition: border-color .15s, transform .15s;
}
.vb-trend-card:hover .vb-trend-thumb { border-color: rgba(255,255,255,.45); transform: translateY(-3px); }
.vb-trend-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.vb-trend-thumb .vb-trend-score {
  position: absolute; bottom: 6px; right: 7px;
  background: rgba(0,0,0,.82); border-radius: 4px; padding: 3px 7px;
  font-size: 12px; font-weight: 700; color: rgba(255,255,255,.95); letter-spacing: .5px;
}
.vb-trend-thumb .vb-trend-ico { font-size: 32px; opacity: .55; position: absolute; top: 50%; left: 50%; transform: translate(-50%,-50%); }
.vb-trend-name { font-size: 11px; font-weight: 700; color: rgba(255,255,255,.85); margin-top: 6px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.vb-trend-genre { font-size: 9px; letter-spacing: 1.5px; text-transform: uppercase; color: rgba(255,255,255,.40); margin-top: 2px; }
/* Upcoming — cover card grid */
.vb-upcoming-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(120px, 1fr)); gap: 10px; }
.vb-upcoming-item {
  position: relative; overflow: hidden; border-radius: 7px; aspect-ratio: 3/4;
  background: rgba(255,255,255,.10); border: 1px solid rgba(255,255,255,.16);
  cursor: pointer; transition: border-color .15s, transform .15s; display: flex; align-items: flex-end;
}
.vb-upcoming-item:hover { border-color: rgba(255,255,255,.45); transform: translateY(-3px); }
.vb-upcoming-cover { position: absolute; inset: 0; object-fit: cover; width: 100%; height: 100%; opacity: .90; z-index: 0; }
.vb-upcoming-item::after { content:''; position:absolute; inset:0; background: linear-gradient(0deg, rgba(0,0,0,.90) 0%, rgba(0,0,0,.30) 50%, transparent 80%); z-index: 1; pointer-events: none; }
.vb-upcoming-info { position: relative; z-index: 2; padding: 9px 9px 8px; width: 100%; }
.vb-upcoming-date {
  display: inline-block; margin-bottom: 4px;
  background: rgba(255,220,60,.90); color: #000; border-radius: 3px;
  padding: 2px 5px; font-size: 7px; font-weight: 700; letter-spacing: 2px; text-transform: uppercase;
}
.vb-upcoming-name { font-size: 11px; font-weight: 700; color: rgba(255,255,255,.95); line-height: 1.25; text-shadow: 0 1px 4px rgba(0,0,0,.80); }
.vb-upcoming-meta { font-size: 9px; letter-spacing: 1px; text-transform: uppercase; color: rgba(255,255,255,.45); margin-top: 2px; }
.vb-upcoming-ico { display: none; }
.vb-shimmer { border-radius: 6px; background: rgba(255,255,255,.08); animation: vbShimmer 1.4s ease infinite; }
@keyframes vbShimmer { 0%,100%{opacity:.5} 50%{opacity:.15} }

/* ── Profile view ──────────────────────────────────────────────────────────── */
.vb-prof-body { flex: 1; overflow-y: auto; padding: 16px 20px; display: flex; flex-direction: column; gap: 12px; scrollbar-width: thin; scrollbar-color: rgba(255,255,255,.18) transparent; }
.vb-hero { display: flex; align-items: center; gap: 14px; padding: 12px 14px; background: rgba(255,255,255,.10); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); border: 1px solid rgba(255,255,255,.20); border-radius: 8px; }
.vb-avatar { width: 64px; height: 64px; border-radius: 10px; flex-shrink: 0; background: rgba(0,0,0,.30); border: 2px solid rgba(255,255,255,.32); display: flex; align-items: center; justify-content: center; font-size: 28px; cursor: pointer; transition: border-color .15s; }
.vb-avatar:hover { border-color: rgba(255,255,255,.60); }
.vb-hname  { font-size: 20px; font-weight: 700; letter-spacing: 2px; text-transform: uppercase; color: #fff; }
.vb-hemail { font-size: 11px; color: rgba(255,255,255,.48); margin-top: 2px; }
.vb-hg     { font-size: 11px; font-weight: 600; letter-spacing: 2px; color: #52b000; margin-top: 3px; }
.vb-stats  { display: grid; grid-template-columns: repeat(4,1fr); gap: 7px; }
.vb-stat   { padding: 9px 10px; border-radius: 6px; background: rgba(255,255,255,.10); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); border: 1px solid rgba(255,255,255,.14); text-align: center; }
.vb-stat-v { font-size: 22px; font-weight: 700; color: rgba(255,255,255,.92); }
.vb-stat-l { font-size: 8px; letter-spacing: 3px; text-transform: uppercase; color: rgba(255,255,255,.42); margin-top: 1px; }
.vb-sec    { font-size: 10px; font-weight: 700; letter-spacing: 4px; text-transform: uppercase; color: rgba(255,255,255,.45); display: flex; align-items: center; gap: 8px; }
.vb-sec::after { content: ''; flex: 1; height: 1px; background: linear-gradient(90deg,rgba(255,255,255,.18),transparent); }
.vb-field  { display: flex; flex-direction: column; gap: 4px; }
.vb-field label { font-size: 10px; font-weight: 700; letter-spacing: 2px; text-transform: uppercase; color: rgba(255,255,255,.50); }
.vb-input  { background: rgba(255,255,255,.10); backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px); border: 1px solid rgba(255,255,255,.18); border-radius: 6px; padding: 7px 11px; color: rgba(255,255,255,.88); font-size: 14px; font-family: inherit; outline: none; width: 100%; transition: border-color .15s; }
.vb-input:focus { border-color: rgba(82,176,0,.55); }
.vb-input::placeholder { color: rgba(255,255,255,.25); }
.vb-textarea { min-height: 62px; resize: vertical; }
.vb-btn { align-self: flex-start; background: rgba(82,176,0,.22); border: 1px solid rgba(82,176,0,.44); border-radius: 6px; padding: 7px 18px; color: rgba(180,255,80,.95); font-size: 11px; font-weight: 700; letter-spacing: 2px; text-transform: uppercase; cursor: pointer; font-family: inherit; transition: background .15s; }
.vb-btn:hover { background: rgba(82,176,0,.36); }
.vb-btn-danger { background: rgba(180,30,30,.18); border-color: rgba(200,60,60,.38); color: rgba(255,130,130,.90); }
.vb-msg { font-size: 11px; letter-spacing: 1px; color: rgba(82,220,0,.85); min-height: 14px; }

/* ── System view ───────────────────────────────────────────────────────────── */
.vb-sys-body { flex: 1; overflow-y: auto; padding: 12px 18px; display: flex; flex-direction: column; gap: 6px; scrollbar-width: thin; scrollbar-color: rgba(255,255,255,.18) transparent; }
.vb-sys-row { display: flex; align-items: center; gap: 11px; padding: 9px 12px; border-radius: 7px; border: 1px solid rgba(255,255,255,.14); background: rgba(255,255,255,.10); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); cursor: pointer; transition: all .15s; }
.vb-sys-row:hover { background: rgba(255,255,255,.20); border-color: rgba(255,255,255,.30); }
.vb-sys-ico  { font-size: 18px; width: 26px; text-align: center; flex-shrink: 0; }
.vb-sys-lbl  { font-size: 13px; font-weight: 700; letter-spacing: 1px; text-transform: uppercase; color: rgba(255,255,255,.84); }
.vb-sys-desc { font-size: 10px; color: rgba(255,255,255,.40); letter-spacing: .5px; margin-top: 1px; }
.vb-sys-val  { font-size: 11px; font-weight: 700; letter-spacing: 1px; color: rgba(255,255,255,.52); margin-left: auto; }
.vb-sys-arr  { font-size: 15px; color: rgba(255,255,255,.26); margin-left: auto; }
.vb-sys-ver  { font-size: 8px; letter-spacing: 3px; text-transform: uppercase; color: rgba(255,255,255,.18); text-align: right; margin-top: auto; padding-top: 10px; }

/* ── Shelves view ──────────────────────────────────────────────────────────── */
.vb-sh-body { flex: 1; overflow-y: auto; padding: 14px 18px; scrollbar-width: none; }
.vb-sh-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; }
.vb-sh-card {
  border-radius: 10px; background: rgba(255,255,255,.10); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
  border: 1px solid rgba(255,255,255,.16); cursor: pointer; transition: all .15s;
  display: flex; flex-direction: column; overflow: hidden;
}
.vb-sh-card:hover { background: rgba(255,255,255,.20); border-color: rgba(255,255,255,.40); transform: translateY(-2px); }
.vb-sh-card[data-shelf="locker"]    { border-top: 3px solid rgba(201,151,58,.85); }
.vb-sh-card[data-shelf="playing"]   { border-top: 3px solid rgba(255,210,80,.90); }
.vb-sh-card[data-shelf="completed"] { border-top: 3px solid rgba(130,200,140,.85); }
.vb-sh-card[data-shelf="backlog"]   { border-top: 3px solid rgba(160,140,255,.85); }
.vb-sh-card[data-shelf="wishlist"]  { border-top: 3px solid rgba(255,160,80,.85); }
.vb-sh-card[data-shelf="dropped"]   { border-top: 3px solid rgba(180,80,80,.85); }
/* Header row: icon + name + desc on left, count on right */
.vb-sh-card-top { display: flex; align-items: flex-start; gap: 8px; padding: 10px 12px 8px; }
.vb-sh-ico  { font-size: 16px; flex-shrink: 0; margin-top: 1px; }
.vb-sh-head { flex: 1; min-width: 0; }
.vb-sh-name { font-size: 11px; font-weight: 700; letter-spacing: 1.5px; text-transform: uppercase; color: rgba(255,255,255,.90); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.vb-sh-desc { font-size: 9px; color: rgba(255,255,255,.42); margin-top: 2px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.vb-sh-cnt  { font-size: 18px; font-weight: 700; color: rgba(255,255,255,.80); flex-shrink: 0; }
/* Cover grid — smaller thumbnails */
.vb-sh-cover-grid { display: grid; grid-template-columns: repeat(2,1fr); gap: 4px; padding: 0 10px 10px; }
.vb-sh-cg-img { width: 100%; aspect-ratio: 3/4; border-radius: 4px; background: rgba(255,255,255,.08); object-fit: cover; border: 1px solid rgba(255,255,255,.10); }
.vb-sh-empty-art { height: 60px; margin: 0 10px 10px; border-radius: 6px; background: rgba(255,255,255,.05); }
/* footer removed — info is in header now */
.vb-sh-card-foot { display: none; }
/* Legacy cover strip */
.vb-sh-covers { display: none; }
.vb-sh-cover  { display: none; }

/* ── Achievement toast ─────────────────────────────────────────────────────── */
/* ── Achievement Toast — xquatrox-style reimagined ── */
#vc-blade-toast {
  position: fixed;
  bottom: 52px;
  left: 50%;
  transform: translateX(-50%) translateY(20px);
  z-index: 99999;
  display: flex;
  align-items: center;
  gap: 0;
  pointer-events: none;
  font-family: 'Share Tech Mono', 'Rajdhani', sans-serif;
  opacity: 0;
  transition: opacity 0s;
}

/* The spinning sigil ring — always visible, leads the animation */
#vb-toast-ring {
  position: relative;
  width: 52px; height: 52px;
  flex-shrink: 0;
  z-index: 2;
}

/* Outer arc track */
#vb-toast-ring svg {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
}

/* The dark circle background of the icon */
#vb-toast-ring-bg {
  position: absolute; inset: 4px;
  border-radius: 50%;
  background: radial-gradient(circle at 38% 35%, #1a2a10, #080c06);
  border: 1px solid rgba(82,176,0,.30);
  display: flex; align-items: center; justify-content: center;
  overflow: hidden;
}

/* Sigil face */
.vb-ring-face {
  position: absolute; inset: 0;
  display: flex; align-items: center; justify-content: center;
  transition: opacity .18s ease;
}
.vb-ring-face-sigil { font-size: 20px; line-height: 1; color: #76d400; text-shadow: 0 0 8px rgba(82,220,0,.8); }
.vb-ring-face-trophy { font-size: 17px; line-height: 1; opacity: 0; }

/* Pill body — slides in from the left behind the ring */
#vb-toast-pill {
  background: rgba(10,12,10,.96);
  backdrop-filter: blur(16px); -webkit-backdrop-filter: blur(16px);
  border: 1px solid rgba(82,176,0,.55);
  border-left: none;
  border-radius: 0 28px 28px 0;
  padding: 9px 18px 9px 22px;
  margin-left: -14px; /* tucks behind ring */
  min-width: 0; max-width: 0;
  overflow: hidden;
  white-space: nowrap;
  box-shadow: 0 0 0 1px rgba(82,176,0,.10), 0 6px 24px rgba(0,0,0,.80), 0 0 16px rgba(82,176,0,.08);
  transition: max-width .38s cubic-bezier(.22,1,.36,1), padding .38s cubic-bezier(.22,1,.36,1);
  display: flex; flex-direction: column; justify-content: center;
}
#vb-toast-pill.open {
  max-width: 280px;
  padding: 9px 18px 9px 22px;
}

.vb-toast-badge {
  font-size: 8px; font-weight: 700; letter-spacing: 4px;
  text-transform: uppercase; color: rgba(82,220,0,.90);
  margin-bottom: 2px; opacity: 0; transition: opacity .22s ease .32s;
}
.vb-toast-title {
  font-size: 13px; font-weight: 700; letter-spacing: .5px;
  color: rgba(245,255,240,.96); opacity: 0; transition: opacity .22s ease .38s;
  font-family: 'Cinzel', serif;
}
.vb-toast-pts {
  font-size: 10px; letter-spacing: 2px;
  color: rgba(82,176,0,.80); margin-top: 1px;
  opacity: 0; transition: opacity .22s ease .44s;
}
#vb-toast-pill.open .vb-toast-badge,
#vb-toast-pill.open .vb-toast-title,
#vb-toast-pill.open .vb-toast-pts { opacity: 1; }

/* Arc ring SVG stroke animation */
@keyframes vbRingSpinIn {
  from { stroke-dashoffset: 138; opacity: 0; }
  to   { stroke-dashoffset: 0;   opacity: 1; }
}
@keyframes vbRingPulse {
  0%,100% { opacity: .85; }
  50%      { opacity: 1; filter: drop-shadow(0 0 4px rgba(82,220,0,.9)); }
}
@keyframes vbRingSpinLoop {
  from { transform: rotate(0deg); }
  to   { transform: rotate(360deg); }
}

/* Icon swap crossfade */
@keyframes vbIconOut { from{opacity:1} to{opacity:0} }
@keyframes vbIconIn  { from{opacity:0} to{opacity:1} }

/* Toast fade out */
@keyframes vbToastFadeOut {
  from { opacity: 1; transform: translateX(-50%) translateY(0); }
  to   { opacity: 0; transform: translateX(-50%) translateY(8px); }
}

/* hide old children we no longer use */
#vb-toast-icon, #vb-toast-g { display: none !important; }

/* ── Blade Color Picker ────────────────────────────────────────────────────── */
#vb-color-picker-overlay {
  position: fixed; inset: 0; z-index: 99998;
  background: rgba(0,0,0,.55); backdrop-filter: blur(4px); -webkit-backdrop-filter: blur(4px);
  display: flex; align-items: center; justify-content: center;
  animation: vbCpFadeIn .18s ease;
}
@keyframes vbCpFadeIn { from{opacity:0;transform:scale(.96)} to{opacity:1;transform:scale(1)} }
#vb-color-picker-box {
  background: linear-gradient(160deg,rgba(18,20,18,.97),rgba(10,12,10,.99));
  border: 1px solid rgba(255,255,255,.18); border-radius: 10px;
  box-shadow: 0 0 0 1px rgba(255,255,255,.06), 0 20px 60px rgba(0,0,0,.80);
  padding: 0; min-width: 360px; max-width: 420px; overflow: hidden;
  font-family: 'Rajdhani','Segoe UI',sans-serif;
}
.vb-cp-header {
  display: flex; align-items: center; gap: 10px;
  padding: 14px 16px 12px;
  border-bottom: 1px solid rgba(255,255,255,.10);
  background: linear-gradient(180deg,rgba(255,255,255,.06),transparent);
}
.vb-cp-y-btn {
  width: 24px; height: 24px; border-radius: 50%; flex-shrink: 0;
  background: radial-gradient(ellipse at 40% 25%,#ffe040 0%,#f0a800 45%,#c07800 75%,#7a4a00 100%);
  display: flex; align-items: center; justify-content: center;
  font-size: 11px; font-weight: 900; color: rgba(255,255,255,.55);
  box-shadow: 0 2px 6px rgba(0,0,0,.50),inset 0 1px rgba(255,255,255,.20);
}
.vb-cp-title { flex: 1; font-size: 13px; font-weight: 700; letter-spacing: 2px; text-transform: uppercase; color: rgba(255,255,255,.85); }
.vb-cp-title span { color: rgba(255,210,60,.90); }
.vb-cp-close { background: none; border: none; color: rgba(255,255,255,.40); font-size: 15px; cursor: pointer; padding: 2px 4px; line-height: 1; transition: color .15s; }
.vb-cp-close:hover { color: rgba(255,255,255,.80); }
.vb-cp-presets { display: flex; flex-wrap: wrap; gap: 8px; padding: 16px; }
.vb-cp-swatch {
  width: 36px; height: 36px; border-radius: 6px; border: 2px solid rgba(255,255,255,.15);
  cursor: pointer; transition: transform .12s, border-color .12s, box-shadow .12s;
  box-shadow: 0 2px 8px rgba(0,0,0,.40);
}
.vb-cp-swatch:hover { transform: scale(1.18); border-color: rgba(255,255,255,.60); box-shadow: 0 4px 14px rgba(0,0,0,.55); }
.vb-cp-custom { padding: 0 16px 14px; display: flex; flex-direction: column; gap: 6px; }
.vb-cp-hex-label { font-size: 9px; font-weight: 700; letter-spacing: 3px; text-transform: uppercase; color: rgba(255,255,255,.40); }
.vb-cp-hex-row { display: flex; align-items: center; gap: 8px; }
.vb-cp-colorinput { width: 38px; height: 34px; border: 1px solid rgba(255,255,255,.20); border-radius: 6px; background: none; cursor: pointer; padding: 2px; }
.vb-cp-hextext { flex: 1; background: rgba(255,255,255,.08); border: 1px solid rgba(255,255,255,.18); border-radius: 6px; padding: 7px 10px; color: rgba(255,255,255,.88); font-size: 14px; font-family: 'Share Tech Mono',monospace; outline: none; letter-spacing: 1px; }
.vb-cp-hextext:focus { border-color: rgba(255,200,60,.55); }
.vb-cp-apply { background: rgba(255,200,60,.18); border: 1px solid rgba(255,200,60,.40); border-radius: 6px; padding: 7px 14px; color: rgba(255,220,80,.95); font-size: 11px; font-weight: 700; letter-spacing: 1.5px; text-transform: uppercase; cursor: pointer; font-family: inherit; transition: background .15s; white-space: nowrap; }
.vb-cp-apply:hover { background: rgba(255,200,60,.32); }
.vb-cp-footer {
  display: flex; align-items: center; justify-content: space-between; gap: 10px;
  padding: 11px 16px; border-top: 1px solid rgba(255,255,255,.10);
  background: rgba(0,0,0,.20);
}
.vb-cp-reset { background: none; border: 1px solid rgba(255,255,255,.14); border-radius: 6px; padding: 6px 12px; color: rgba(255,255,255,.50); font-size: 10px; font-weight: 700; letter-spacing: 1.5px; text-transform: uppercase; cursor: pointer; font-family: inherit; transition: all .15s; }
.vb-cp-reset:hover { border-color: rgba(255,255,255,.30); color: rgba(255,255,255,.80); }
.vb-cp-done { background: rgba(82,176,0,.22); border: 1px solid rgba(82,176,0,.45); border-radius: 6px; padding: 7px 18px; color: rgba(180,255,80,.95); font-size: 11px; font-weight: 700; letter-spacing: 2px; text-transform: uppercase; cursor: pointer; font-family: inherit; transition: background .15s; }
.vb-cp-done:hover { background: rgba(82,176,0,.36); }

/* ── Profile privacy row ──────────────────────────────────────────────────── */
.vb-privacy-row {
  display: flex; align-items: flex-start; gap: 10px; padding: 9px 12px; border-radius: 7px;
  background: rgba(255,255,255,.08); border: 1px solid rgba(255,255,255,.12); cursor: pointer;
}
.vb-privacy-row input[type="checkbox"] { margin-top: 2px; accent-color: #52b000; flex-shrink: 0; }

/* ═══════════════════════════════════════════════════════════════════════════
   MAIN SITE — Dashboard + Profile + Library v2
   ═══════════════════════════════════════════════════════════════════════════ */

/* ── Dashboard ─────────────────────────────────────────────────────────── */
#vc-dashboard-body { display: flex; flex-direction: column; gap: 20px; }

.vc-dash-stats-row { display: none; }
.vc-dash-stat { padding: 14px 16px; background: var(--panel,rgba(255,255,255,.04)); border: 1px solid var(--border,rgba(255,255,255,.10)); border-radius: 8px; text-align: center; }
.vc-dash-stat-n { font-size: 28px; font-weight: 700; color: var(--gold,#c9973a); font-family: var(--font-vhs,'Share Tech Mono',monospace); }
.vc-dash-stat-l { font-size: 9px; letter-spacing: 3px; text-transform: uppercase; color: var(--fog,rgba(255,255,255,.40)); margin-top: 3px; }

/* ════════════════════════════════════════════════════════════════
   LOCKER-STYLE CARDS — base styles (required for library grid)
   ════════════════════════════════════════════════════════════════ */
.locker-grid { display:grid; grid-template-columns:repeat(auto-fill, minmax(140px, 1fr)); gap:16px; margin-top:16px; align-items:start; }
.locker-card { position:relative; background:var(--deep,#0d0c14); border:1px solid var(--border,rgba(255,255,255,.10)); border-radius:8px; overflow:hidden; transition:border-color .18s ease, box-shadow .18s ease; cursor:pointer; width:100%; }
.locker-card:hover { border-color:rgba(201,151,58,.55); box-shadow:0 10px 24px rgba(0,0,0,.45); }
.locker-card:hover .locker-card-info, .locker-card:focus-within .locker-card-info { transform:translateY(0); opacity:1; pointer-events:auto; }
.locker-card:hover .locker-card-poster::after, .locker-card:focus-within .locker-card-poster::after { opacity:1; }
.locker-card-poster { position:relative; width:100%; aspect-ratio:3/4; display:block; overflow:hidden; background:rgba(255,255,255,.04); }
.locker-card-poster::after { content:''; position:absolute; inset:0; background:linear-gradient(180deg,rgba(5,4,7,0) 45%,rgba(5,4,7,.38) 72%,rgba(5,4,7,.75) 100%); opacity:0; transition:opacity .18s ease; pointer-events:none; }
.locker-card-poster img { width:100%; height:100%; object-fit:cover; display:block; }
.locker-card-info { position:absolute; left:0; right:0; bottom:0; z-index:2; padding:10px; background:linear-gradient(180deg,rgba(5,4,7,0) 0%,rgba(5,4,7,.90) 22%,rgba(5,4,7,.98) 100%); transform:translateY(100%); opacity:0; transition:transform .18s ease, opacity .18s ease; pointer-events:none; }
.locker-card-title { font-family:var(--font-occult,'Cinzel',serif); font-size:12px; font-weight:600; color:#e8e4dc; margin-bottom:4px; line-height:1.25; text-shadow:0 1px 2px rgba(0,0,0,.55); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.locker-card-actions { display:flex; gap:4px; justify-content:flex-end; pointer-events:auto; }
.locker-version-badge { display:inline-flex; align-items:center; gap:3px; padding:2px 6px; background:rgba(201,151,58,.10); border:1px solid rgba(201,151,58,.22); border-radius:4px; font-family:var(--font-vhs,monospace); font-size:9px; color:#d4aa6e; letter-spacing:.5px; white-space:nowrap; }
.btn-icon { width:28px; height:28px; border-radius:4px; border:1px solid var(--border,rgba(255,255,255,.10)); background:rgba(255,255,255,.06); cursor:pointer; display:flex; align-items:center; justify-content:center; transition:all 0.15s; font-size:13px; color:#e8e4dc; }
.btn-icon:hover { border-color:var(--gold,#c9973a); background:rgba(201,151,58,.10); }
@media (hover:none) {
  .locker-card-info { transform:translateY(0); opacity:1; }
  .locker-card-poster::after { opacity:1; }
}

/* ════════════════════════════════════════════════════════════════
   DASHBOARD — Shelf row panels (Recently Added + Wishlist)
   ════════════════════════════════════════════════════════════════ */
.vc-dash-top-row { display:flex; flex-direction:column; gap:14px; margin-bottom:28px; }
.vc-dash-shelf-row { display:grid; grid-template-columns:1fr 1fr; gap:14px; margin-bottom:28px; }
.vc-dash-panel { background:var(--panel,rgba(255,255,255,.03)); border:1px solid var(--border,rgba(255,255,255,.10)); border-radius:10px; padding:14px 14px 12px; display:flex; flex-direction:column; gap:10px; }
.vc-dash-panel-hdr { display:flex; align-items:center; justify-content:space-between; }
.vc-dash-panel-label { font-size:9px; font-weight:700; letter-spacing:4px; text-transform:uppercase; color:var(--fog,rgba(255,255,255,.40)); }
.vc-dash-panel-empty { font-size:11px; color:var(--fog,rgba(255,255,255,.30)); font-style:italic; text-align:center; padding:12px 0; }
.vc-dash-mini-grid { display:grid; grid-template-columns:repeat(auto-fill, minmax(72px, 1fr)); gap:8px; }
.vc-dash-mini-card { cursor:pointer; border-radius:8px; overflow:hidden; transition:transform .15s, box-shadow .15s; display:flex; flex-direction:column; gap:4px; position:relative; }
.vc-dash-mini-card-badges { position:absolute; top:4px; left:4px; display:flex; flex-direction:column; gap:2px; z-index:2; }
.vc-dash-mini-card:hover { transform:translateY(-3px); box-shadow:0 8px 24px rgba(0,0,0,.55); }
.vc-dash-mini-card img { width:100%; aspect-ratio:3/4 !important; object-fit:cover; display:block; border-radius:8px !important; border:1px solid rgba(255,255,255,.08); }
.vc-dash-mini-card-empty { width:100%; aspect-ratio:3/4 !important; border-radius:8px !important; background:rgba(255,255,255,.05); border:1px solid rgba(255,255,255,.08); }
.vc-dash-mini-card-name { font-size:8px; color:rgba(255,255,255,.45); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; padding:0 2px; }
@media (max-width:600px) { .vc-dash-shelf-row { grid-template-columns:1fr; } }

/* ════════════════════════════════════════════════════════════════
   DASHBOARD — Now Playing hero + copy badges
   ════════════════════════════════════════════════════════════════ */
.vc-dash-now-playing {
  position: relative; overflow: hidden; border-radius: 14px;
  background: var(--panel, rgba(255,255,255,.04));
  border: 1px solid var(--border, rgba(255,255,255,.12));
  height: 300px;
  transition: border-color .2s, box-shadow .2s;
}
.vc-dash-now-playing:hover {
  border-color: rgba(201,151,58,.55);
  box-shadow: 0 0 32px rgba(201,151,58,.09);
}
.vc-dash-now-bg {
  position: absolute; inset: 0;
  background-size: cover; background-position: center 20%;
  z-index: 0; filter: blur(22px) brightness(.55) saturate(1.3); transform: scale(1.12);
}
.vc-dash-now-overlay {
  position: absolute; inset: 0; z-index: 1;
  background: linear-gradient(105deg, rgba(0,0,0,.08) 0%, rgba(0,0,0,.60) 42%, rgba(0,0,0,.85) 100%);
}
.vc-dash-now-content {
  position: relative; z-index: 2;
  display: flex !important; flex-direction: row !important; align-items: stretch;
  width: 100%; height: 100%;
}
.vc-dash-now-poster-wrap {
  flex-shrink: 0; display: flex; align-items: center; padding: 14px 0 14px 16px;
}
.vc-dash-now-poster {
  width: 200px; aspect-ratio: 3/4; object-fit: cover; object-position: center top;
  display: block; border-radius: 10px;
  box-shadow: 0 8px 40px rgba(0,0,0,.80), 0 2px 12px rgba(0,0,0,.50);
  border: 1px solid rgba(255,255,255,.12);
}
.vc-dash-now-poster--empty {
  width: 200px; aspect-ratio: 3/4; border-radius: 10px;
  background: rgba(255,255,255,.05); border: 1px solid rgba(255,255,255,.08);
}
.vc-dash-now-info {
  flex: 1; display: flex; flex-direction: column;
  justify-content: flex-end; gap: 9px;
  padding: 20px 20px 22px 22px; min-width: 0;
}
.vc-dash-now-badges { display: flex; flex-wrap: wrap; gap: 5px; }
.vc-dash-now-badge {
  display: inline-flex; align-items: center; gap: 4px;
  font-family: var(--font-mono, monospace);
  font-size: 8px; font-weight: 700; letter-spacing: 2px;
  text-transform: uppercase; padding: 3px 9px; border-radius: 3px;
  background: rgba(6,4,10,.75); backdrop-filter: blur(8px);
  border: 1px solid rgba(255,255,255,.14);
  color: rgba(255,255,255,.5);
}
.vc-dash-now-badge--playing  { border-color: rgba(82,176,0,.5); color: #7de040; }
.vc-dash-now-badge--recent   { border-color: rgba(201,151,58,.4); color: #c9973a; }
.vc-dash-now-badge--locker   { border-color: rgba(255,255,255,.18); color: rgba(255,255,255,.5); }
.vc-dash-now-badge--wishlist { border-color: rgba(160,100,240,.38); color: #b070ee; }
.vc-dash-now-title {
  font-family: var(--font-display, 'Cinzel', serif);
  font-size: 32px; font-weight: 700; color: #fff; line-height: 1.1; margin: 0;
  text-shadow: 0 2px 24px rgba(0,0,0,.9);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.vc-dash-now-year {
  font-family: var(--font-vhs, monospace);
  font-size: 10px; letter-spacing: 2.5px; color: rgba(255,255,255,.42); text-transform: uppercase;
}
.vc-dash-now-stars { display: flex; align-items: center; gap: 6px; }
.vc-dash-now-stars-lbl {
  font-family: var(--font-vhs, monospace); font-size: 8px; letter-spacing: 2px;
  color: rgba(255,255,255,.32); text-transform: uppercase;
}
.vc-dash-now-star  { font-size: 15px; color: rgba(255,255,255,.18); }
.vc-dash-now-star.filled { color: var(--gold, #c9973a); text-shadow: 0 0 8px rgba(201,151,58,.5); }
.vc-dash-now-desc {
  font-family: var(--font-body, 'Crimson Text', serif); font-style: italic;
  font-size: 12px; color: rgba(255,255,255,.50); line-height: 1.55;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
  max-width: 480px;
}
.vc-dash-now-copies { display: flex; flex-wrap: wrap; gap: 8px; }
.vc-np-copy-badge {
  display: inline-flex; flex-direction: column;
  background: rgba(0,0,0,.55); border: 1px solid rgba(255,255,255,.14);
  border-radius: 8px; padding: 7px 12px; gap: 2px; backdrop-filter: blur(8px);
}
.vc-np-copy-plat { font-size: 12px; font-weight: 600; color: rgba(255,255,255,.85); line-height: 1.2; }
.vc-np-copy-fmt {
  font-family: var(--font-vhs, monospace);
  font-size: 8px; letter-spacing: 1px; color: rgba(255,255,255,.38);
  text-transform: uppercase; display: flex; align-items: center; gap: 4px;
}
.vc-np-fmt-ico { width: 11px; height: 11px; flex-shrink: 0; color: rgba(255,255,255,.65); vertical-align: middle; }
.vc-np-copy-more {
  font-family: var(--font-vhs, monospace); font-size: 9px; letter-spacing: 1px;
  color: rgba(255,255,255,.32); padding: 4px 6px; align-self: center;
}
.vc-dash-now-dots { display: flex; gap: 5px; margin-top: 2px; }
.vc-dash-now-dot  { width: 6px; height: 6px; border-radius: 50%; background: rgba(255,255,255,.25); cursor: pointer; transition: background .15s; }
.vc-dash-now-dot.active { background: var(--gold, #c9973a); }
.vc-dash-now-empty { align-items: center; justify-content: center; display: flex; min-height: 240px; }
.vc-dash-now-empty-msg { color: rgba(255,255,255,.30); font-size: 12px; letter-spacing: 1px; text-align: center; padding: 24px; }
.vc-dash-np-coven {
  width: 240px; flex-shrink: 0;
  display: flex; flex-direction: column; justify-content: center; gap: 12px;
  padding: 18px 18px 18px 14px; border-left: 1px solid rgba(255,255,255,.07);
}
.vc-dash-np-coven-hdr { display: flex; align-items: center; justify-content: center; }
.vc-dash-np-coven-lbl {
  font-family: var(--font-vhs, monospace); font-size: 8px; font-weight: 800; letter-spacing: 4px;
  text-transform: uppercase; color: rgba(255,255,255,.32);
}
.vc-dash-np-coven-grid { display: flex; flex-direction: column; gap: 5px; overflow: hidden; }
.vc-dash-np-coven-card { position: relative; cursor: pointer; border-radius: 7px; overflow: hidden; transition: transform .15s; }
.vc-dash-np-coven-card:hover { transform: translateY(-2px); }
.vc-dash-np-coven-card img { width: 100%; aspect-ratio: 3/4; object-fit: cover; display: block; border-radius: 7px; border: 1px solid rgba(255,255,255,.09); transition: border-color .15s; }
.vc-dash-np-coven-card:hover img { border-color: rgba(196,154,255,.50); }
.vc-dash-np-coven-cover-empty { width: 100%; aspect-ratio: 3/4; border-radius: 7px; background: rgba(255,255,255,.05); border: 1px solid rgba(255,255,255,.07); }
.vc-dash-np-coven-avatar { position: absolute; top: 3px; right: 3px; font-size: 10px; background: rgba(0,0,0,.82); border-radius: 50%; width: 16px; height: 16px; display: flex; align-items: center; justify-content: center; }
.vc-dash-np-coven-playing-dot { position: absolute; top: 3px; left: 3px; width: 5px; height: 5px; border-radius: 50%; background: #52b000; box-shadow: 0 0 4px #52b000; }
.vc-dash-np-coven-name { font-size: 7px; color: rgba(255,255,255,.45); margin-top: 2px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; text-align: center; }
.vc-dash-np-coven-member { font-size: 7px; color: #c49aff; text-align: center; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.vc-dash-np-coven-skel { width: 100%; height: 28px; border-radius: 5px; background: rgba(255,255,255,.05); animation: vcDashSkeleton 1.6s ease-in-out infinite; }
.vc-dash-np-coven-empty { color: rgba(255,255,255,.26); font-size: 10px; font-style: italic; padding: 8px 0; grid-column: 1/-1; text-align: center; }
.vc-np-coven-row { display: flex; align-items: center; gap: 8px; padding: 5px 2px; cursor: pointer; border-radius: 6px; transition: background .12s; min-width: 0; }
.vc-np-coven-row:hover { background: rgba(255,255,255,.05); padding-left: 4px; padding-right: 4px; }
.vc-np-coven-row--featured { gap: 9px; padding: 6px 2px; }
.vc-np-coven-row-cover { width: 30px; flex-shrink: 0; border-radius: 4px; overflow: hidden; border: 1px solid rgba(255,255,255,.10); }
.vc-np-coven-row-cover img { width: 100%; aspect-ratio: 3/4; object-fit: cover; display: block; }
.vc-np-coven-row-cover-empty { width: 100%; aspect-ratio: 3/4; background: rgba(255,255,255,.05); }
.vc-np-coven-row-pulse { width: 6px; height: 6px; border-radius: 50%; flex-shrink: 0; background: #52b000; box-shadow: 0 0 6px #52b000; animation: vcNpPulse 2s ease-in-out infinite; }
@keyframes vcNpPulse { 0%,100%{opacity:1} 50%{opacity:.35} }
.vc-np-coven-row-info { display: flex; flex-direction: column; gap: 2px; min-width: 0; flex: 1; }
.vc-np-coven-row-member { font-size: 10px; font-weight: 700; color: rgba(255,255,255,.85); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.vc-np-coven-row-game { font-size: 9px; color: rgba(255,255,255,.45); font-style: italic; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.vc-np-coven-row-time { font-family: var(--font-vhs, monospace); font-size: 7px; letter-spacing: 1px; color: rgba(255,255,255,.28); text-transform: uppercase; }
.vc-np-coven-row--compact { padding: 4px 2px; gap: 6px; }
.vc-np-coven-row-avatar { font-size: 11px; flex-shrink: 0; }

.vc-dash-section-label { font-size: 9px; font-weight: 700; letter-spacing: 4px; text-transform: uppercase; color: var(--fog,rgba(255,255,255,.40)); display: flex; align-items: center; gap: 8px; }
.vc-dash-section-label::after { content:''; flex:1; height:1px; background: linear-gradient(90deg,var(--border,rgba(255,255,255,.12)),transparent); }

/* New Releases — horizontal scroll row of tall poster cards */
.vc-dash-hero-row { display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 12px; }
.vc-dash-hero-card {
  position: relative; overflow: hidden; border-radius: 10px; aspect-ratio: 3/4;
  background: var(--panel,rgba(255,255,255,.04)); border: 1px solid var(--border,rgba(255,255,255,.14));
  cursor: pointer; display: flex; align-items: flex-end; transition: border-color .15s, transform .15s;
}
.vc-dash-hero-card:hover { border-color: var(--gold,#c9973a); transform: translateY(-3px); }
.vc-dash-hero-bg { position: absolute; inset: 0; background-size: cover; background-position: center top; z-index: 0; transition: opacity .4s; }
.vc-dash-hero-overlay { position: absolute; inset: 0; background: linear-gradient(0deg, rgba(0,0,0,.88) 0%, rgba(0,0,0,.40) 45%, transparent 75%); z-index: 1; pointer-events: none; }
.vc-dash-hero-content { position: relative; z-index: 2; padding: 14px 14px 12px; display: flex; flex-direction: column; gap: 4px; width: 100%; }
.vc-dash-hero-eyebrow { font-size: 8px; font-weight: 700; letter-spacing: 3px; text-transform: uppercase; color: var(--gold,#c9973a); }
.vc-dash-hero-title { font-size: 14px; font-weight: 700; color: #fff; letter-spacing: .3px; text-shadow: 0 2px 8px rgba(0,0,0,.80); line-height: 1.25; }
.vc-dash-hero-meta { font-size: 9px; letter-spacing: 1.5px; text-transform: uppercase; color: rgba(255,255,255,.55); }
.vc-dash-hero-btn { align-self: flex-start; margin-top: 8px; }

/* Trending — poster grid (bg-image overlay, same pattern as Upcoming) */
.vc-dash-poster-grid {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 12px;
}
.vc-dash-poster-card {
  position: relative; overflow: hidden; border-radius: 8px; aspect-ratio: 3/4;
  background: var(--panel,rgba(255,255,255,.04)); border: 1px solid var(--border,rgba(255,255,255,.10));
  cursor: pointer; transition: border-color .15s, transform .15s; display: flex; align-items: flex-end;
}
.vc-dash-poster-card:hover { border-color: var(--gold,#c9973a); transform: translateY(-3px); }
.vc-dash-poster-cover {
  position: absolute; inset: 0; background-size: cover; background-position: center top; z-index: 0;
}
.vc-dash-poster-overlay {
  position: absolute; inset: 0;
  background: linear-gradient(0deg, rgba(0,0,0,.92) 0%, rgba(0,0,0,.28) 50%, transparent 80%);
  z-index: 1; pointer-events: none;
}
.vc-dash-poster-info { position: relative; z-index: 2; padding: 9px 9px 8px; width: 100%; }
.vc-dash-poster-score {
  display: inline-block; margin-bottom: 4px;
  background: var(--gold,#c9973a); color: #000; border-radius: 3px;
  padding: 2px 6px; font-size: 8px; font-weight: 700; letter-spacing: 2px; text-transform: uppercase;
}
.vc-dash-poster-name {
  font-size: 11px; font-weight: 700; color: #fff; line-height: 1.25;
  text-shadow: 0 1px 4px rgba(0,0,0,.80);
  overflow: hidden; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;
}
.vc-dash-poster-genre { font-size: 9px; letter-spacing: 1px; text-transform: uppercase; color: rgba(255,255,255,.45); margin-top: 2px; }

/* Upcoming — cover card grid */
.vc-dash-upcoming-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 12px; }
.vc-dash-upcoming-item {
  position: relative; overflow: hidden; border-radius: 8px; aspect-ratio: 3/4;
  background: var(--panel,rgba(255,255,255,.04)); border: 1px solid var(--border,rgba(255,255,255,.10));
  cursor: pointer; transition: border-color .15s, transform .15s; display: flex; align-items: flex-end;
}
.vc-dash-upcoming-item:hover { border-color: var(--gold,#c9973a); transform: translateY(-3px); }
.vc-dash-upcoming-cover { position: absolute; inset: 0; background-size: cover; background-position: center top; z-index: 0; }
.vc-dash-upcoming-overlay { position: absolute; inset: 0; background: linear-gradient(0deg, rgba(0,0,0,.90) 0%, rgba(0,0,0,.35) 50%, transparent 80%); z-index: 1; pointer-events: none; }
.vc-dash-upcoming-info { position: relative; z-index: 2; padding: 10px 10px 9px; width: 100%; }
.vc-dash-upcoming-date {
  display: inline-block; margin-bottom: 5px;
  background: var(--gold,#c9973a); color: #000; border-radius: 3px;
  padding: 2px 6px; font-size: 8px; font-weight: 700; letter-spacing: 2px; text-transform: uppercase;
}
.vc-dash-upcoming-name { font-size: 12px; font-weight: 700; color: #fff; line-height: 1.25; text-shadow: 0 1px 4px rgba(0,0,0,.80); }
.vc-dash-upcoming-meta { font-size: 9px; letter-spacing: 1px; text-transform: uppercase; color: rgba(255,255,255,.50); margin-top: 2px; }
.vc-dash-upcoming-ico { display: none; }

/* ── Profile ───────────────────────────────────────────────────────────── */
#vc-profile-body { display: flex; flex-direction: column; gap: 6px; }

.vc-prof-hero { display: flex; align-items: center; gap: 16px; padding: 16px; background: var(--panel,rgba(255,255,255,.04)); border: 1px solid var(--border,rgba(255,255,255,.10)); border-radius: 8px; margin-bottom: 6px; }
.vc-prof-avatar { width: 68px; height: 68px; border-radius: 10px; flex-shrink: 0; background: var(--panel2,rgba(255,255,255,.06)); border: 2px solid var(--border,rgba(255,255,255,.15)); display: flex; align-items: center; justify-content: center; font-size: 30px; }
.vc-prof-name { font-size: 20px; font-weight: 700; letter-spacing: 1px; color: var(--text,#e8e4dc); }
.vc-prof-gamertag { font-size: 11px; letter-spacing: 2px; color: var(--fog,rgba(255,255,255,.45)); margin-top: 2px; }
.vc-prof-email { font-size: 11px; color: var(--fog,rgba(255,255,255,.45)); margin-top: 2px; }
.vc-prof-gscore { font-size: 11px; font-weight: 700; letter-spacing: 2px; color: var(--gold,#c9973a); margin-top: 4px; }
.vc-prof-stats { display: grid; grid-template-columns: repeat(4,1fr); gap: 8px; margin-bottom: 6px; }
.vc-prof-stat { padding: 10px; background: var(--panel,rgba(255,255,255,.04)); border: 1px solid var(--border,rgba(255,255,255,.10)); border-radius: 6px; text-align: center; }
.vc-prof-stat-n { font-size: 22px; font-weight: 700; color: var(--gold,#c9973a); }
.vc-prof-stat-l { font-size: 8px; letter-spacing: 3px; text-transform: uppercase; color: var(--fog,rgba(255,255,255,.38)); margin-top: 2px; }
.vc-prof-field { display: flex; flex-direction: column; gap: 5px; margin-bottom: 10px; }
.vc-prof-field label { font-size: 9px; font-weight: 700; letter-spacing: 2px; text-transform: uppercase; color: var(--fog,rgba(255,255,255,.45)); }
.vc-prof-input { background: var(--panel,rgba(255,255,255,.04)); border: 1px solid var(--border,rgba(255,255,255,.12)); border-radius: 6px; padding: 8px 12px; color: var(--text,#e8e4dc); font-size: 14px; font-family: inherit; outline: none; transition: border-color .15s; }
.vc-prof-input:focus { border-color: var(--gold,#c9973a); }
.vc-prof-textarea { min-height: 64px; resize: vertical; }
.vc-prof-save-row { display: flex; align-items: center; gap: 12px; margin-bottom: 6px; }
.vc-prof-msg { font-size: 11px; letter-spacing: 1px; color: var(--gold,#c9973a); }
.vc-prof-privacy-row { display: flex; align-items: flex-start; gap: 10px; padding: 10px 12px; background: var(--panel,rgba(255,255,255,.04)); border: 1px solid var(--border,rgba(255,255,255,.10)); border-radius: 6px; cursor: pointer; margin-bottom: 10px; }
.vc-prof-privacy-row input[type="checkbox"] { margin-top: 3px; accent-color: var(--gold,#c9973a); }
.vc-prof-priv-label { font-size: 13px; font-weight: 600; color: var(--text,#e8e4dc); }
.vc-prof-priv-desc { font-size: 10px; color: var(--fog,rgba(255,255,255,.42)); margin-top: 2px; }
.vc-prof-ach-grid { display: flex; flex-direction: column; gap: 4px; margin-bottom: 14px; }
.vc-prof-ach-row { display: flex; align-items: center; gap: 10px; padding: 7px 10px; border-radius: 6px; background: var(--panel,rgba(255,255,255,.03)); border: 1px solid var(--border,rgba(255,255,255,.07)); opacity: .45; }
.vc-prof-ach-row.unlocked { opacity: 1; background: var(--panel2,rgba(255,255,255,.06)); border-color: var(--border,rgba(255,255,255,.12)); }
.vc-prof-ach-icon { font-size: 16px; width: 24px; text-align: center; }
.vc-prof-ach-name { flex: 1; font-size: 13px; font-weight: 700; color: var(--text,#e8e4dc); }
.vc-prof-ach-g { font-size: 11px; font-weight: 700; color: var(--fog,rgba(255,255,255,.25)); }
.vc-prof-ach-g.earned { color: var(--gold,#c9973a); }
.vc-prof-signout { margin-bottom: 20px; }
.vc-prof-signin { display: flex; flex-direction: column; gap: 16px; align-items: flex-start; padding: 20px 0; }
.vc-prof-signin-msg { font-size: 14px; color: var(--fog,rgba(255,255,255,.55)); max-width: 380px; line-height: 1.6; }

/* ── Library v2 ────────────────────────────────────────────────────────── */
.vc-lib-filters { display: flex; flex-wrap: wrap; gap: 6px; padding: 10px 0 4px; }
.vc-lib-filter-btn { background: var(--panel,rgba(255,255,255,.04)); border: 1px solid var(--border,rgba(255,255,255,.10)); border-radius: 20px; padding: 4px 12px; font-size: 11px; font-weight: 600; letter-spacing: .5px; color: var(--fog,rgba(255,255,255,.55)); cursor: pointer; font-family: inherit; transition: all .15s; }
.vc-lib-filter-btn.active, .vc-lib-filter-btn:hover { background: var(--gold-pale,rgba(201,151,58,.15)); border-color: var(--gold,#c9973a); color: var(--gold,#c9973a); }
.vc-lib-platform-row { padding-top: 2px; }
.vc-lib-pf-btn { background: var(--panel,rgba(255,255,255,.03)); border: 1px solid var(--border,rgba(255,255,255,.08)); border-radius: 4px; padding: 3px 9px; font-size: 10px; font-weight: 600; letter-spacing: .5px; color: var(--fog,rgba(255,255,255,.45)); cursor: pointer; font-family: inherit; transition: all .15s; }
.vc-lib-pf-btn.active, .vc-lib-pf-btn:hover { background: var(--gold-pale,rgba(201,151,58,.12)); border-color: var(--gold,#c9973a); color: var(--gold,#c9973a); }
.vc-lib-sort-row { display: flex; align-items: center; gap: 10px; padding: 6px 0 8px; border-bottom: 1px solid var(--border,rgba(255,255,255,.08)); margin-bottom: 4px; }
.vc-lib-count { font-size: 10px; font-weight: 600; letter-spacing: 2px; text-transform: uppercase; color: var(--fog,rgba(255,255,255,.40)); flex: 1; }
.vc-lib-sort-sel { background: var(--panel,rgba(255,255,255,.04)) !important; border: 1px solid var(--border,rgba(255,255,255,.12)) !important; border-radius: 5px; padding: 4px 8px; font-size: 11px; color: var(--text,#e8e4dc) !important; font-family: inherit; cursor: pointer; }
.vc-lib-plat-tags { display: flex; flex-wrap: wrap; gap: 3px; margin-top: 3px; }
.vc-lib-plat-tag { font-size: 8px; letter-spacing: .5px; padding: 1px 5px; border-radius: 3px; background: var(--gold-pale,rgba(201,151,58,.12)); border: 1px solid var(--gold,rgba(201,151,58,.28)); color: var(--gold,#c9973a); font-weight: 600; }
.vc-lib-edit-btn { background: rgba(0,0,0,.55) !important; color: rgba(255,255,255,.75) !important; font-size: 12px !important; }
.vc-lib-shelf-badges { position: absolute; top: 4px; left: 4px; display: flex; flex-direction: column; gap: 2px; }
.lb { font-size: 9px; font-weight: 700; padding: 1px 4px; border-radius: 3px; line-height: 1.4; }
.lb-playing  { background: rgba(255,210,80,.85); color: #2a1800; }
.lb-done     { background: rgba(130,200,140,.85); color: #0a1f0d; }
.lb-backlog  { background: rgba(160,140,255,.85); color: #100d28; }
.lb-wish     { background: rgba(255,160,80,.85);  color: #2a1200; }
.lb-drop     { background: rgba(180,80,80,.85);   color: #200808; }

/* Platform edit modal */
.vc-plat-grid { display: grid; grid-template-columns: repeat(3,1fr); gap: 6px; max-height: 280px; overflow-y: auto; margin: 10px 0; }
.vc-plat-label { display: flex; align-items: center; gap: 6px; font-size: 12px; color: var(--text,#e8e4dc); cursor: pointer; padding: 4px 6px; border-radius: 4px; }
.vc-plat-label:hover { background: var(--panel2,rgba(255,255,255,.06)); }
.vc-plat-label input { accent-color: var(--gold,#c9973a); }

/* ── Xbox 360 blade mode — game modal text fix ───────────────────────────── */
body.vc-blade-mode #vc-game-modal,
body.vc-blade-mode .vc-game-modal-overlay {
  --text: #f0ece4;
  --fog:  rgba(240,236,228,.75);
  --dust: rgba(240,236,228,.55);
  --static: rgba(240,236,228,.40);
  color: #f0ece4;
}
body.vc-blade-mode .vc-game-modal-title    { color: #fff; }
body.vc-blade-mode .vc-game-modal-meta     { color: rgba(255,255,255,.70); }
body.vc-blade-mode .vc-game-modal-summary-text { color: rgba(240,236,228,.82); }
body.vc-blade-mode .vc-game-modal-facts-label  { color: rgba(255,255,255,.50); }
body.vc-blade-mode .vc-game-modal-facts-value  { color: rgba(255,255,255,.85); }
body.vc-blade-mode .vc-game-modal-section-label { color: rgba(255,255,255,.50); }
body.vc-blade-mode .rb { color: #fff; }

/* ── Game modal: Owned On ───────────────────────────────────────── */
.vc-modal-owned-row { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; padding: 10px 0 2px; border-top: 1px solid var(--border,rgba(255,255,255,.10)); margin-top: 6px; }
.vc-modal-owned-label { font-size: 9px; font-weight: 700; letter-spacing: 3px; text-transform: uppercase; color: var(--fog,rgba(255,255,255,.40)); flex-shrink: 0; }
.vc-modal-owned-chips { display: flex; flex-wrap: wrap; gap: 5px; flex: 1; }
.vc-owned-chip { display: inline-flex; align-items: center; gap: 6px; padding: 5px 10px; background: rgba(0,0,0,.45); backdrop-filter: blur(8px); border: 1px solid rgba(255,255,255,.1); border-radius: var(--radius); cursor: pointer; transition: all .15s; font-size: 11px; }

/* ── Owned Copies modal ─────────────────────────────────────────── */
.vc-copy-modal-backdrop {
  position: fixed; inset: 0;
  background: rgba(0,0,0,.82); backdrop-filter: blur(12px);
  z-index: 10100;
  display: none; align-items: center; justify-content: center;
  padding: 20px;
}
.vc-copy-modal-backdrop[style*="flex"] { display: flex !important; }

.vc-copy-modal {
  background: rgba(13,11,24,.97);
  border: 1px solid rgba(255,255,255,.13);
  border-radius: 14px;
  width: 960px; max-width: 96vw;
  max-height: 88vh; overflow-y: auto;
  box-shadow: 0 24px 80px rgba(0,0,0,.8), inset 0 1px 0 rgba(255,255,255,.06);
  display: flex; flex-direction: column;
  outline: none; scrollbar-width: thin;
}
.vc-copy-modal-topline {
  height: 2px;
  background: linear-gradient(90deg, transparent 0%, var(--gold,#c9973a) 40%, rgba(196,154,255,.6) 70%, transparent 100%);
  border-radius: 14px 14px 0 0; flex-shrink: 0;
}
.vc-copy-modal-header {
  display: flex; align-items: flex-start; justify-content: space-between;
  padding: 18px 22px 0; flex-shrink: 0;
}
.vc-copy-modal-header-text { display: flex; flex-direction: column; gap: 3px; }
.vc-copy-modal-eyebrow {
  font-family: var(--font-vhs, monospace); font-size: 9px; font-weight: 800;
  letter-spacing: 3px; text-transform: uppercase; color: var(--gold, #c9973a);
}
.vc-copy-modal-subtitle {
  font-family: var(--font-display, 'Cinzel', serif); font-size: 17px;
  font-weight: 700; color: var(--text, #e8e4dc); line-height: 1.2;
}
.vc-copy-modal-x {
  width: 28px; height: 28px; border-radius: 6px;
  border: 1px solid rgba(255,255,255,.12); background: rgba(255,255,255,.04);
  color: rgba(255,255,255,.45); cursor: pointer; font-size: 15px;
  display: flex; align-items: center; justify-content: center;
  transition: all .15s; flex-shrink: 0; margin-top: 2px;
}
.vc-copy-modal-x:hover { border-color: rgba(255,80,80,.4); color: #e07070; }
.vc-copy-modal-body {
  padding: 16px 26px 22px;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0 32px;
  align-items: start;
}
/* Platform + Format span full width, everything else 1 col each */
.vc-copy-modal-section { margin-bottom: 18px; }
.vc-copy-modal-section.full-width { grid-column: 1 / -1; }
.vc-copy-modal-actions { grid-column: 1 / -1; display: flex; gap: 10px; margin-top: 4px; padding-top: 12px; border-top: 1px solid rgba(255,255,255,.06); }
#vc-copies-list { grid-column: 1 / -1; }

.vc-copy-modal-label {
  display: block; font-family: var(--font-vhs, monospace);
  font-size: 9px; font-weight: 700; letter-spacing: 2.5px; text-transform: uppercase;
  color: rgba(255,255,255,.38); margin-bottom: 10px;
}
.vc-copy-modal-two-col { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.vc-copy-modal-input {
  width: 100%; box-sizing: border-box;
  background: rgba(255,255,255,.05); border: 1px solid rgba(255,255,255,.11);
  border-radius: 8px; color: var(--text, #e8e4dc); font-size: 12px;
  padding: 9px 12px; font-family: inherit; outline: none;
  transition: border-color .14s;
}
.vc-copy-modal-input:focus { border-color: var(--gold, #c9973a); }
.vc-copy-modal-input::placeholder { color: rgba(255,255,255,.25); }

/* ── Platform grid: neat icon + label buttons ── */
.vc-copy-plat-grid {
  display: flex; flex-direction: column; gap: 12px;
  max-height: 320px; overflow-y: auto; scrollbar-width: thin; padding-right: 2px;
}
.vc-copy-plat-grid::-webkit-scrollbar { width: 3px; }
.vc-copy-plat-grid::-webkit-scrollbar-thumb { background: rgba(255,255,255,.15); border-radius: 2px; }
.vc-copy-plat-group-label {
  font-family: var(--font-vhs, monospace); font-size: 8px; font-weight: 800;
  letter-spacing: 2px; text-transform: uppercase;
  color: var(--grp-color, rgba(255,255,255,.35)); margin-bottom: 6px;
}
.vc-copy-plat-group-items {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(100px, 1fr)); gap: 8px;
}
.vc-copy-plat-btn {
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 7px; padding: 14px 8px 11px;
  background: rgba(255,255,255,.04); border: 1px solid rgba(255,255,255,.10);
  border-radius: 10px; cursor: pointer; transition: all .14s;
  min-width: 0;
}
.vc-copy-plat-btn:hover {
  background: rgba(255,255,255,.08); border-color: rgba(255,255,255,.22);
}
.vc-copy-plat-btn.active {
  background: rgba(var(--grp-color-rgb, 201,151,58),.15);
  border-color: var(--grp-color, rgba(201,151,58,.60));
  box-shadow: 0 0 14px rgba(201,151,58,.12);
}
.vc-plat-icon {
  display: flex; align-items: center; justify-content: center;
  width: 36px; height: 36px; flex-shrink: 0;
}
.vc-plat-icon svg, .vc-plat-icon img { width: 28px; height: 28px; object-fit: contain; display: block; }
.vc-plat-label {
  font-family: var(--font-vhs, monospace); font-size: 9px; font-weight: 800;
  letter-spacing: .8px; text-align: center; color: rgba(255,255,255,.65);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 100%;
  line-height: 1.2; text-transform: uppercase;
}
.vc-copy-plat-btn.active .vc-plat-label { color: rgba(255,255,255,.95); }
.vc-plat-gen {
  display: block; font-size: 8px; color: rgba(255,255,255,.35);
  letter-spacing: 0; font-weight: 400; margin-top: 1px;
}
.vc-copy-plat-custom {
  margin-top: 10px; width: 100%; box-sizing: border-box;
  background: rgba(255,255,255,.05); border: 1px solid rgba(255,255,255,.11);
  border-radius: 8px; color: var(--text,#e8e4dc); font-size: 12px; padding: 9px 12px;
  font-family: inherit; outline: none;
}
.vc-copy-plat-custom:focus { border-color: var(--gold,#c9973a); }

/* ── Format cards — big visual selector ── */
.vc-copy-fmt-row {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px;
}
.vc-copy-fmt-btn {
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 8px; padding: 16px 10px 12px;
  background: rgba(255,255,255,.04); border: 1px solid rgba(255,255,255,.10);
  border-radius: 10px; cursor: pointer; transition: all .15s; text-align: center;
}
.vc-copy-fmt-btn:hover { background: rgba(255,255,255,.08); border-color: rgba(255,255,255,.22); }
.vc-copy-fmt-btn.active {
  background: rgba(201,151,58,.14); border-color: rgba(201,151,58,.55);
  box-shadow: 0 0 14px rgba(201,151,58,.15);
}
.vc-fmt-icon { display: flex; align-items: center; justify-content: center; }
.vc-fmt-icon svg { width: 36px; height: 36px; color: rgba(255,255,255,.55); }
.vc-copy-fmt-btn.active .vc-fmt-icon svg { color: var(--gold, #c9973a); }
.vc-fmt-label {
  font-family: var(--font-vhs, monospace); font-size: 10px; font-weight: 800;
  letter-spacing: 1px; text-transform: uppercase; color: rgba(255,255,255,.75);
}
.vc-copy-fmt-desc { font-size: 10px; color: rgba(255,255,255,.35); line-height: 1.3; }

/* ── Edition & Franchise chips ── */
.vc-copy-edition-presets {
  display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 0;
}
.vc-copy-edition-chip, .vc-copy-franchise-chip {
  display: inline-flex; align-items: center; gap: 5px;
  padding: 5px 10px; border-radius: 20px;
  background: rgba(255,255,255,.05); border: 1px solid rgba(255,255,255,.12);
  color: rgba(255,255,255,.65); font-family: var(--font-vhs, monospace);
  font-size: 10px; letter-spacing: .5px; cursor: pointer; transition: all .14s;
  white-space: nowrap;
}
.vc-copy-edition-chip:hover, .vc-copy-franchise-chip:hover {
  background: rgba(255,255,255,.09); border-color: rgba(255,255,255,.25); color: rgba(255,255,255,.9);
}
.vc-copy-edition-chip.active, .vc-copy-franchise-chip.active {
  background: rgba(201,151,58,.14); border-color: rgba(201,151,58,.55); color: var(--gold, #c9973a);
}

/* ── Condition buttons ── */
.vc-copy-cond-row { display: flex; gap: 8px; flex-wrap: wrap; }
.vc-copy-cond-btn {
  padding: 7px 16px; border-radius: 8px; border: 1px solid rgba(255,255,255,.12);
  background: rgba(255,255,255,.05); color: rgba(255,255,255,.65);
  font-family: var(--font-vhs, monospace); font-size: 10px; letter-spacing: .5px;
  cursor: pointer; transition: all .14s;
}
.vc-copy-cond-btn:hover { background: rgba(255,255,255,.09); border-color: rgba(255,255,255,.25); color: rgba(255,255,255,.9); }
.vc-copy-cond-btn.active { background: rgba(201,151,58,.14); border-color: rgba(201,151,58,.55); color: var(--gold, #c9973a); }

/* ── Purchase toggle ── */
.vc-copy-purchase-toggle {
  display: inline-flex; align-items: center; gap: 6px; background: none; border: none;
  color: rgba(255,255,255,.45); font-family: var(--font-vhs, monospace);
  font-size: 9px; letter-spacing: 2px; text-transform: uppercase; cursor: pointer;
  padding: 0; transition: color .14s;
}
.vc-copy-purchase-toggle:hover { color: var(--gold, #c9973a); }

/* legacy selects kept for other uses */
/* legacy copy modal title/sub/row classes kept for other uses */
.vc-copy-modal-title { font-size: 15px; font-weight: 700; color: var(--text,#e8e4dc); margin-bottom: 4px; }
.vc-copy-modal-sub { font-size: 11px; color: var(--fog,rgba(255,255,255,.40)); margin-bottom: 14px; }
.vc-copy-row { display: flex; align-items: flex-start; gap: 8px; padding: 8px 10px; background: var(--panel,rgba(255,255,255,.04)); border: 1px solid var(--border,rgba(255,255,255,.10)); border-radius: 8px; margin-bottom: 6px; }
.vc-copy-fields { display: flex; flex-wrap: wrap; gap: 6px; flex: 1; }
.vc-copy-plat, .vc-copy-fmt { flex: 1; min-width: 140px; background: var(--panel2,rgba(255,255,255,.06)); border: 1px solid var(--border,rgba(255,255,255,.14)); border-radius: 6px; color: var(--text,#e8e4dc); font-size: 12px; padding: 5px 8px; font-family: inherit; }
.vc-copy-notes { width: 100%; background: var(--panel2,rgba(255,255,255,.06)); border: 1px solid var(--border,rgba(255,255,255,.14)); border-radius: 6px; color: var(--text,#e8e4dc); font-size: 12px; padding: 5px 8px; font-family: inherit; }
.vc-copy-plat:focus, .vc-copy-fmt:focus, .vc-copy-notes:focus { outline: none; border-color: var(--gold,#c9973a); }
.vc-copy-remove { background: rgba(255,80,80,.12); border: 1px solid rgba(255,80,80,.25); border-radius: 5px; color: rgba(255,100,100,.80); font-size: 11px; cursor: pointer; padding: 4px 8px; flex-shrink: 0; font-family: inherit; transition: background .15s; }
.vc-copy-remove:hover { background: rgba(255,80,80,.28); }

/* ═══════════════════════════════════════════════════════════════════════════
   OWNERSHIP + COVEN LIBRARY — v4 styles
   ═══════════════════════════════════════════════════════════════════════════ */

/* ── Library v3 ─────────────────────────────────────────────────────────── */

/* ════════════════════════════════════════════════════════════════
   LIBRARY — locker-style grid (matches main site)
   ════════════════════════════════════════════════════════════════ */

/* Stats strip */
.vc-lib-stats-row {
  display: flex; flex-wrap: wrap; gap: 6px; padding: 0 0 14px; margin-bottom: 4px;
  border-bottom: 1px solid var(--border, rgba(255,255,255,.08));
}
.vc-lib-stat {
  display: flex; flex-direction: column; align-items: center; gap: 3px;
  padding: 8px 14px; border-radius: 8px; cursor: pointer;
  border: 1px solid var(--border, rgba(255,255,255,.08));
  background: var(--panel, rgba(255,255,255,.03));
  transition: background .15s, border-color .15s;
}
.vc-lib-stat:hover  { background: rgba(255,255,255,.07); border-color: rgba(255,255,255,.14); }
.vc-lib-stat.active { background: rgba(201,151,58,.10); border-color: rgba(201,151,58,.40); }
.vc-lib-stat-n { font-size: 18px; font-weight: 700; color: var(--text, #e8e4dc); line-height: 1; }
.vc-lib-stat-l { font-size: 9px; letter-spacing: 1.5px; text-transform: uppercase; color: var(--fog, rgba(255,255,255,.40)); }
.vc-lib-stat.active .vc-lib-stat-n { color: var(--gold, #c9973a); }
.vc-lib-stat.active .vc-lib-stat-l { color: var(--gold-pale, #d4aa6e); }

/* Sort toolbar */
.vc-lib-toolbar {
  padding: 10px 0 14px; display: flex; flex-direction: column; gap: 8px;
}
.vc-lib-sort-pills {
  display: flex; flex-wrap: wrap; gap: 5px;
}
.vc-lib-sort-pill {
  background: var(--panel, rgba(255,255,255,.04));
  border: 1px solid var(--border, rgba(255,255,255,.10));
  border-radius: 20px; padding: 4px 12px;
  font-size: 10px; font-weight: 700; letter-spacing: .5px;
  color: var(--fog, rgba(255,255,255,.50)); cursor: pointer;
  font-family: var(--font-vhs, monospace); text-transform: uppercase;
  transition: all .15s;
}
.vc-lib-sort-pill:hover { color: var(--text, #e8e4dc); border-color: rgba(255,255,255,.22); }
.vc-lib-sort-pill.active {
  background: rgba(201,151,58,.12); border-color: var(--gold, #c9973a);
  color: var(--gold, #c9973a);
}
.vc-lib-toolbar-right {
  display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
}
.vc-lib-count {
  font-family: var(--font-vhs, monospace); font-size: 9px; letter-spacing: 1px;
  color: var(--fog, rgba(255,255,255,.35)); text-transform: uppercase;
  margin-left: auto;
}
.vc-lib-drag-hint {
  font-family: var(--font-vhs, monospace); font-size: 9px; letter-spacing: 2px;
  color: var(--gold, #c9973a); text-align: center; opacity: .65;
  animation: vcDragHintPulse 2s ease-in-out infinite;
}
@keyframes vcDragHintPulse { 0%,100%{opacity:.45} 50%{opacity:.85} }

/* Locker-style grid for games library — always gapless poster mode */
.vc-lib-locker-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
  gap: 1px;
  margin-top: var(--space-lg, 16px);
  align-items: start;
}
.vc-lib-poster-only.vc-lib-locker-grid {
  grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
  gap: 1px;
}
.vc-lib-poster-only .locker-card-info { display: none !important; }
/* No border-radius on cards in gapless mode */
.vc-lib-locker-grid .locker-card { border-radius: 0; border-color: transparent; background: transparent; }
.vc-lib-locker-grid .locker-card:hover { border-color: rgba(201,151,58,.55); border-radius: 3px; z-index: 2; position: relative; }

/* Override for games cards — use 2:3 poster ratio */
.vc-lib-lcard.locker-card { width: 100%; }
.vc-lib-lcard .locker-card-poster { aspect-ratio: 3/4; }

/* Badges row (shelf status) */
.vc-lib-card-badges {
  position: absolute; top: 5px; left: 5px; display: flex; flex-direction: column; gap: 3px; z-index: 2;
}
.vc-lb {
  display: inline-flex; align-items: center; justify-content: center;
  width: 20px; height: 20px; border-radius: 4px;
  font-family: var(--font-mono, monospace);
  font-size: 9px; font-weight: 700; line-height: 1; letter-spacing: 0;
  backdrop-filter: blur(8px);
  border: 1px solid rgba(255,255,255,.12);
  color: rgba(255,255,255,.55);
  text-transform: uppercase;
  padding: 0;
}
.vc-lb-playing  { border-color: rgba(82,176,0,.55);   color: #7de040; background: rgba(82,176,0,.32); }
.vc-lb-done     { border-color: rgba(201,151,58,.55); color: #c9973a; background: rgba(201,151,58,.30); }
.vc-lb-backlog  { border-color: rgba(180,130,0,.45);  color: #c49a30; background: rgba(180,130,0,.28); }
.vc-lb-wish     { border-color: rgba(160,100,240,.5); color: #b070ee; background: rgba(160,100,240,.28); }
.vc-lb-drop     { border-color: rgba(180,60,60,.5);   color: #c06060; background: rgba(180,60,60,.28); }
.vc-lb-locker   { border-color: rgba(255,255,255,.2); color: rgba(255,255,255,.5); background: rgba(255,255,255,.14); }

/* Rarity badge */
.vc-lib-card-rarity-badge {
  position: absolute; bottom: 5px; left: 5px; z-index: 3;
  font-size: 8px; font-weight: 900; letter-spacing: 2px;
  text-transform: uppercase; padding: 3px 8px; border-radius: 4px;
}
.vc-rarity-badge--uncommon { background: rgba(201,151,58,.25); color: #f0c060; border: 1px solid rgba(201,151,58,.50); }
.vc-rarity-badge--rare     { background: rgba(80,160,255,.25); color: #80b8ff; border: 1px solid rgba(80,160,255,.50); }
.vc-rarity-badge--epic     { background: rgba(180,80,255,.25); color: #d080ff; border: 1px solid rgba(180,80,255,.55); }
.vc-rarity-badge--legendary {
  background: linear-gradient(90deg, rgba(255,60,60,.20), rgba(255,200,60,.22), rgba(60,255,120,.20));
  color: #ffe080; border: 1px solid rgba(255,200,60,.55);
}

/* Format/platform icon pills on poster */
.locker-card-format-stack {
  position: absolute; top: 6px; right: 6px; z-index: 4;
  display: flex; flex-direction: column; gap: 3px; align-items: flex-end;
}
.locker-format-icon-pill {
  display: inline-flex; align-items: center; justify-content: center;
  width: 26px; height: 26px; border-radius: 6px;
  background: rgba(5,4,7,.85); border: 1px solid rgba(201,151,58,.30);
  box-shadow: 0 2px 6px rgba(0,0,0,.40);
}
.locker-format-icon-pill img { width: 16px; height: 16px; object-fit: contain; }

/* Empty state */
.vc-lib-empty { padding: 32px; text-align: center; opacity: .4; font-size: 13px; }

/* Groups section */
.vc-lib-groups-section { margin-top: 24px; border-top: 1px solid var(--border, rgba(255,255,255,.08)); padding-top: 18px; }
.vc-lib-section-hdr { display: flex; align-items: center; justify-content: space-between; margin-bottom: 12px; font-size: 11px; font-weight: 700; letter-spacing: 2px; text-transform: uppercase; color: var(--fog, rgba(255,255,255,.40)); }
.vc-lib-group-card { background: var(--panel, rgba(255,255,255,.03)); border: 1px solid var(--border, rgba(255,255,255,.07)); border-radius: 10px; padding: 12px 14px; margin-bottom: 10px; }
.vc-lib-group-hdr { display: flex; align-items: center; gap: 8px; margin-bottom: 10px; }
.vc-lib-group-name { font-size: 13px; font-weight: 700; color: var(--text, #e8e4dc); flex: 1; }
.vc-lib-group-count { font-size: 10px; background: rgba(255,255,255,.08); border-radius: 20px; padding: 2px 8px; color: var(--fog, rgba(255,255,255,.40)); }
.vc-lib-group-covers { display: flex; flex-wrap: wrap; gap: 5px; }
.vc-lib-group-cover { width: 40px; height: 54px; object-fit: cover; border-radius: 4px; border: 1px solid rgba(255,255,255,.08); }
.vc-lib-group-cover-blank { background: rgba(255,255,255,.05); display: flex; align-items: center; justify-content: center; font-size: 10px; color: rgba(255,255,255,.20); }

/* View button (poster toggle) */
.vc-lib-view-btn {
  width: 28px; height: 28px; display: flex; align-items: center; justify-content: center;
  border: 1px solid var(--border, rgba(255,255,255,.12));
  background: var(--panel, rgba(255,255,255,.04)); border-radius: 6px; cursor: pointer;
  color: var(--fog, rgba(255,255,255,.45)); transition: all .15s;
}
.vc-lib-view-btn.active, .vc-lib-view-btn:hover {
  border-color: var(--gold, #c9973a); color: var(--gold, #c9973a);
  background: rgba(201,151,58,.10);
}

/* Responsive */
@media (max-width: 600px) {
  .vc-lib-locker-grid { grid-template-columns: repeat(auto-fill, minmax(110px, 1fr)); gap: 1px; }
  .vc-lib-sort-pill { font-size: 9px; padding: 3px 8px; }
}

/* ── Site scale (UI zoom slider in Settings) ── */
.vc-games-scaled .vc-main { zoom: var(--vc-games-zoom, 1); }
.vc-games-scaled .sidebar { zoom: min(var(--vc-games-zoom, 1), 1.25); }
.vc-games-scaled .vc-game-modal { zoom: var(--vc-games-zoom, 1); }


/* ── legendary ── full rainbow foil, sweeping shimmer, permanent outer glow ── */
.vc-lib-card[data-rarity="legendary"] {
  border-color: rgba(255,200,60,.50);
  box-shadow: 0 0 16px rgba(255,200,60,.22), 0 0 4px rgba(255,120,30,.18);
  animation: vcRarityPulse 2.5s ease-in-out infinite;
}
.vc-lib-card[data-rarity="legendary"]:hover {
  box-shadow: 0 0 40px rgba(255,200,60,.50), 0 0 16px rgba(255,100,200,.30), 0 8px 28px rgba(0,0,0,.70);
  --rarity-shimmer: rgba(255,220,100,.45);
}
.vc-lib-card[data-rarity="legendary"]:hover::after {
  opacity: 1; animation: vcRarityShimmer .5s ease-out 1;
}
.vc-lib-card[data-rarity="legendary"]::before {
  content: '';
  position: absolute; inset: 0; border-radius: inherit; pointer-events: none; z-index: 1;
  background: linear-gradient(135deg,
    rgba(255,60,60,.06) 0%, rgba(255,200,60,.08) 25%,
    rgba(60,255,120,.06) 50%, rgba(60,160,255,.07) 75%,
    rgba(200,60,255,.06) 100%);
  animation: vcRarityRainbow 4s linear infinite;
}

/* ── Rarity tuner panel ── */
.vc-rarity-tuner {
  background: var(--panel, rgba(255,255,255,.04));
  border: 1px solid var(--border, rgba(255,255,255,.10));
  border-radius: 10px; padding: 14px 16px; margin-bottom: 14px;
}
.vc-rarity-tuner-hdr {
  font-size: 9px; font-weight: 800; letter-spacing: 4px; text-transform: uppercase;
  color: var(--fog, rgba(255,255,255,.40)); margin-bottom: 10px;
  display: flex; align-items: center; justify-content: space-between;
}
.vc-rarity-tuner-grid {
  display: grid; grid-template-columns: 1fr 1fr; gap: 8px;
}
.vc-rarity-row {
  display: flex; align-items: center; gap: 8px;
}
.vc-rarity-swatch {
  width: 10px; height: 10px; border-radius: 50%; flex-shrink: 0;
}
.vc-rarity-swatch--uncommon { background: #c9973a; }
.vc-rarity-swatch--rare     { background: #50a0ff; }
.vc-rarity-swatch--epic     { background: #b450ff; }
.vc-rarity-swatch--legendary{ background: linear-gradient(90deg, #ff3c3c, #ffc83c, #3cff78, #3ca0ff, #c83cff); }
.vc-rarity-label { font-size: 9px; font-weight: 700; color: rgba(255,255,255,.55); letter-spacing: 1px; min-width: 72px; }
.vc-rarity-select {
  flex: 1; background: rgba(255,255,255,.06); border: 1px solid rgba(255,255,255,.10);
  border-radius: 5px; padding: 3px 6px; font-size: 9px;
  color: rgba(255,255,255,.70); cursor: pointer;
}

/* ── Platform file icon colour filters ────────────────────────────────────
   img tags can't use fill/color, so we use filter to recolour them.
   brightness(0) makes the whole image black first, then we tint from there.
   ─────────────────────────────────────────────────────────────────────── */
.vc-plat-file-icon { display:inline-block; vertical-align:middle; }

/* PlayStation → PlayStation blue (#003087 / #00439C) */
.vc-plat-file-icon--ps {
  filter: brightness(0) saturate(100%)
    invert(14%) sepia(98%) saturate(1600%) hue-rotate(210deg) brightness(90%) contrast(110%);
}

/* Xbox, Nintendo, Steam, Epic, GOG — use as-is, no filter */

/* ── Collapse copies toggle button ── */
.vc-lib-collapse-btn {
  display: inline-flex; align-items: center; gap: 5px;
  padding: 4px 10px; border-radius: 20px;
  background: rgba(255,255,255,.05); border: 1px solid rgba(255,255,255,.14);
  color: rgba(255,255,255,.55); font-family: var(--font-vhs, monospace);
  font-size: 9px; letter-spacing: 1px; text-transform: uppercase;
  cursor: pointer; transition: all .14s; flex-shrink: 0;
}
.vc-lib-collapse-btn:hover { background: rgba(255,255,255,.09); border-color: rgba(255,255,255,.25); color: rgba(255,255,255,.9); }
.vc-lib-collapse-btn.active { background: rgba(201,151,58,.12); border-color: rgba(201,151,58,.45); color: var(--gold, #c9973a); }

/* ── Copy number badge (e.g. "2/3" — shown on each copy in expanded mode) ── */
.vc-lib-copy-num-badge {
  position: absolute; top: 5px; left: 5px; z-index: 5;
  font-family: var(--font-vhs, monospace); font-size: 9px; font-weight: 800;
  letter-spacing: .5px; padding: 2px 6px; border-radius: 4px;
  background: rgba(5,4,7,.90); border: 1px solid rgba(255,255,255,.18);
  color: rgba(255,255,255,.70);
}
/* Edition label — small text at bottom-left of poster */
.vc-lib-edition-badge {
  position: absolute; bottom: 5px; left: 5px; z-index: 4;
  font-family: var(--font-vhs, monospace); font-size: 8px; font-weight: 700;
  letter-spacing: .5px; padding: 2px 7px; border-radius: 4px;
  background: rgba(5,4,7,.88); border: 1px solid rgba(201,151,58,.35);
  color: rgba(201,151,58,.85); white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  max-width: calc(100% - 10px);
}
/* Copy count pill (×N) in collapsed mode */
.vc-lib-copy-count {
  font-family: var(--font-vhs, monospace); font-size: 10px; font-weight: 800;
  color: var(--gold, #c9973a); letter-spacing: .5px;
}

/* ── Franchise badge system (games locker) ── */
.vc-franchise-badge {
  display: inline-flex; align-items: center; gap: 4px;
  padding: 2px 8px; border-radius: 999px;
  background: rgba(201,151,58,.10); border: 1px solid rgba(201,151,58,.3);
  font-family: var(--font-vhs); font-size: 9px; color: var(--gold);
  letter-spacing: .5px; cursor: default;
  white-space: nowrap; max-width: 150px; overflow: hidden; text-overflow: ellipsis;
  pointer-events: auto;
}
.vc-franchise-badge-clickable {
  cursor: pointer !important; transition: background .15s, border-color .15s;
}
.vc-franchise-badge-clickable:hover {
  background: rgba(201,151,58,.22) !important; border-color: var(--gold) !important;
}
.vc-badge-remove {
  display: inline-block; margin-left: 2px; cursor: pointer;
  opacity: .45; font-size: 8px; line-height: 1; vertical-align: middle;
  pointer-events: auto; transition: opacity .15s, color .15s;
  background: none; border: none; padding: 0; color: inherit;
}
.vc-badge-remove:hover { opacity: 1; color: #e05; }
.vc-add-franchise-btn {
  display: inline-flex; align-items: center;
  padding: 2px 7px; border-radius: 999px;
  background: transparent; border: 1px dashed rgba(201,151,58,.3);
  font-family: var(--font-vhs); font-size: 9px; color: var(--dust);
  letter-spacing: .5px; cursor: pointer;
  transition: border-color .15s, color .15s; white-space: nowrap;
  pointer-events: auto;
}
.vc-add-franchise-btn:hover { border-color: var(--gold); color: var(--gold-pale); }

/* Franchise row inside locker card info panel */
.vc-lib-card-franchise-row {
  display: flex; flex-wrap: wrap; gap: 4px; margin-bottom: 5px;
  min-height: 14px; pointer-events: auto;
}
/* Hide + franchise btn until hover, always show if tags exist */
.vc-lib-card-franchise-row .vc-add-franchise-btn { opacity: 0; transition: opacity .15s; }
.locker-card:hover .vc-lib-card-franchise-row .vc-add-franchise-btn,
.locker-card:focus-within .vc-lib-card-franchise-row .vc-add-franchise-btn { opacity: 1; }
.vc-lib-card-franchise-row .vc-franchise-badge ~ .vc-add-franchise-btn { opacity: 1; }

/* ── Per-copy played badge (poster overlay) ── */
.vc-lib-copy-played-badge {
  position: absolute; top: 5px; right: 5px; z-index: 6;
  font-family: var(--font-vhs); font-size: 8px; font-weight: 800; letter-spacing: 1px;
  padding: 2px 6px; border-radius: 4px;
  background: rgba(60,200,100,.18); border: 1px solid rgba(60,200,100,.50);
  color: rgb(100,230,140);
}
/* ── Per-copy played toggle button (in card actions) ── */
.lib-copy-played-btn {
  display: inline-flex; align-items: center; justify-content: center;
  width: 22px; height: 22px; border-radius: 50%;
  background: rgba(255,255,255,.05); border: 1px solid rgba(255,255,255,.18);
  color: rgba(255,255,255,.4); font-size: 11px; cursor: pointer;
  transition: all .14s; flex-shrink: 0;
}
.lib-copy-played-btn:hover { background: rgba(60,200,100,.15); border-color: rgba(60,200,100,.5); color: rgb(100,230,140); }
.lib-copy-played-btn.played { background: rgba(60,200,100,.18); border-color: rgba(60,200,100,.55); color: rgb(100,230,140); }

/* Subtle green tint on played copy cards */
.vc-lib-lcard.copy-played .locker-card-poster::before {
  content: ''; position: absolute; inset: 0; z-index: 1; pointer-events: none;
  background: linear-gradient(135deg, rgba(40,180,80,.08) 0%, transparent 60%);
  border-radius: inherit;
}

/* ── Drag-sort handle ── */
.vc-lib-card[draggable="true"] { cursor: grab; }
.vc-lib-card[draggable="true"]:active { cursor: grabbing; }
.vc-lib-card.vc-drag-over {
  border-color: var(--gold, #c9973a) !important;
  box-shadow: 0 0 0 2px var(--gold, #c9973a) !important;
  opacity: .75;
}
.vc-lib-card.vc-drag-ghost { opacity: .3; }

/* ── Rarity badges on cards ── */
.vc-lib-card-rarity-badge {
  position: absolute; bottom: 5px; left: 5px; z-index: 3;
  font-size: 7px; font-weight: 900; letter-spacing: 2px;
  text-transform: uppercase; padding: 2px 6px; border-radius: 3px;
}
.vc-rarity-badge--uncommon { background: rgba(201,151,58,.25); color: #f0c060; border: 1px solid rgba(201,151,58,.50); }
.vc-rarity-badge--rare     { background: rgba(80,160,255,.25); color: #80b8ff; border: 1px solid rgba(80,160,255,.50); }
.vc-rarity-badge--epic     { background: rgba(180,80,255,.25); color: #d080ff; border: 1px solid rgba(180,80,255,.55); }
.vc-rarity-badge--legendary {
  background: linear-gradient(90deg, rgba(255,60,60,.20), rgba(255,200,60,.22), rgba(60,255,120,.20));
  color: #ffe080; border: 1px solid rgba(255,200,60,.55);
  animation: vcRarityRainbow 3s linear infinite;
}
/* ── Existing coven-related classes (keep for compatibility) ── */
.vc-coven-header { padding: 0 0 16px; border-bottom: 1px solid var(--border); margin-bottom: 20px; }
.vc-coven-name { font-family: var(--font-display,'Cinzel',serif); font-size: 20px; font-weight: 700; color: var(--text); }
.vc-coven-code { font-family: var(--font-mono,'Share Tech Mono',monospace); font-size: 10px; color: var(--gold); opacity: .6; margin-top: 4px; letter-spacing: 2px; }
/* old coven card rules removed — superseded by identity cards section below */
.vc-coven-member-sub { font-size: 10px; color: var(--dust); }
.vc-coven-you { font-size: 9px; color: var(--gold); opacity: .7; }
.vc-coven-tabs { display: flex; gap: 4px; margin-bottom: 16px; flex-wrap: wrap; }
.vc-coven-tab { font-family: var(--font-mono,'Share Tech Mono',monospace); font-size: 10px; color: var(--fog); background: rgba(255,255,255,.04); border: 1px solid var(--border); border-radius: 5px; padding: 5px 11px; cursor: pointer; transition: all .15s; }
.vc-coven-tab.active { background: rgba(201,151,58,.12); color: var(--gold); border-color: rgba(201,151,58,.3); }
.vc-coven-tab-count { opacity: .6; margin-left: 3px; }
.vc-coven-detail { padding-top: 20px; }
.vc-coven-detail-hdr { display: flex; align-items: center; gap: 12px; margin-bottom: 16px; }
.vc-coven-detail-name { font-family: var(--font-display,'Cinzel',serif); font-size: 16px; font-weight: 700; color: var(--text); }
.vc-coven-detail-grid { display: grid; grid-template-columns: repeat(auto-fill,minmax(110px,1fr)); gap: 10px; }
.vc-coven-game-card { cursor: pointer; transition: transform .12s; }
.vc-coven-game-card:hover { transform: translateY(-2px); }
.vc-coven-game-cover { aspect-ratio: 3/4; border-radius: 5px; overflow: hidden; background: var(--panel2); border: 1px solid var(--border); position: relative; }
.vc-coven-game-cover img { width: 100%; height: 100%; object-fit: cover; display: block; }
.vc-coven-game-rating { position: absolute; bottom: 4px; right: 4px; font-size: 9px; background: rgba(0,0,0,.75); color: var(--gold); padding: 1px 4px; border-radius: 3px; font-family: var(--font-mono,'Share Tech Mono',monospace); }
.vc-coven-game-info { padding: 5px 2px 0; }
.vc-coven-game-name { font-family: var(--font-display,'Cinzel',serif); font-size: 10px; font-weight: 600; color: var(--text); line-height: 1.3; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.vc-coven-game-year { font-family: var(--font-mono,'Share Tech Mono',monospace); font-size: 9px; color: var(--dust); margin-top: 2px; }
.vc-coven-member-shimmer { position: absolute; inset: 0; background: linear-gradient(90deg,transparent,rgba(255,255,255,.03),transparent); pointer-events: none; }


/* ═══════════════════════════════════════════════════════════════════════
   FULL-PAGE AUTH SPLASH
   ═══════════════════════════════════════════════════════════════════════ */
#vc-auth-splash {
  position: fixed; inset: 0; z-index: 99999;
  display: flex; align-items: center; justify-content: center;
  opacity: 0; transition: opacity .45s ease;
  pointer-events: none;
}
#vc-auth-splash.vcsp-visible { opacity: 1; pointer-events: all; }
#vc-auth-splash.vcsp-out { opacity: 0; pointer-events: none; }

.vcsp-bg {
  position: absolute; inset: 0;
  background: radial-gradient(ellipse at 30% 40%, rgba(50,10,80,.85) 0%, rgba(8,6,14,.98) 60%),
              radial-gradient(ellipse at 75% 70%, rgba(139,26,26,.3) 0%, transparent 55%);
}
.vcsp-noise {
  position: absolute; inset: 0;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.04'/%3E%3C/svg%3E");
  opacity: .5;
  pointer-events: none;
}

.vcsp-content {
  position: relative; z-index: 1;
  display: flex; flex-direction: column; align-items: center;
  text-align: center; padding: 40px 24px;
  max-width: 460px; width: 100%;
}

.vcsp-sigil {
  font-size: 42px;
  color: var(--gold, #c9973a);
  opacity: .7;
  margin-bottom: 16px;
  animation: vcspFloat 4s ease-in-out infinite;
}
@keyframes vcspFloat {
  0%, 100% { transform: translateY(0); opacity: .7; }
  50% { transform: translateY(-6px); opacity: 1; }
}

.vcsp-wordmark {
  font-family: var(--font-display, 'Cinzel', serif);
  font-size: 28px;
  font-weight: 900;
  letter-spacing: 4px;
  color: var(--text, #e8e4dc);
  margin-bottom: 6px;
}
.vcsp-accent { color: var(--gold, #c9973a); }

.vcsp-sub {
  font-family: var(--font-mono, 'Share Tech Mono', monospace);
  font-size: 10px;
  letter-spacing: 5px;
  text-transform: uppercase;
  color: rgba(201,151,58,.6);
  margin-bottom: 0;
}

.vcsp-divider {
  width: 60px; height: 1px;
  background: linear-gradient(90deg, transparent, var(--gold, #c9973a), transparent);
  margin: 24px auto;
  opacity: .5;
}

.vcsp-desc {
  font-family: var(--font-body, 'Crimson Text', serif);
  font-size: 16px;
  color: rgba(232,228,220,.55);
  line-height: 1.6;
  margin-bottom: 32px;
}

.vcsp-btns {
  display: flex; flex-direction: column; gap: 10px; width: 100%; max-width: 280px;
}

.vcsp-btn {
  font-family: var(--font-display, 'Cinzel', serif);
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 1.5px;
  padding: 14px 28px;
  border-radius: 8px;
  cursor: pointer;
  transition: all .2s;
  border: 1px solid transparent;
}
.vcsp-btn--primary {
  background: linear-gradient(135deg, rgba(201,151,58,.25), rgba(139,26,139,.2));
  border-color: rgba(201,151,58,.5);
  color: var(--gold, #c9973a);
  box-shadow: 0 0 24px rgba(201,151,58,.12), inset 0 1px 0 rgba(201,151,58,.15);
}
.vcsp-btn--primary:hover {
  background: linear-gradient(135deg, rgba(201,151,58,.35), rgba(139,26,139,.3));
  border-color: rgba(201,151,58,.75);
  box-shadow: 0 0 40px rgba(201,151,58,.2), inset 0 1px 0 rgba(201,151,58,.25);
  transform: translateY(-1px);
}
.vcsp-btn--ghost {
  background: rgba(255,255,255,.04);
  border-color: rgba(255,255,255,.12);
  color: rgba(232,228,220,.55);
}
.vcsp-btn--ghost:hover {
  background: rgba(255,255,255,.08);
  border-color: rgba(255,255,255,.22);
  color: rgba(232,228,220,.85);
}

.vcsp-features {
  display: flex;
  gap: 18px;
  margin-top: 36px;
  flex-wrap: wrap;
  justify-content: center;
}
.vcsp-feat {
  display: flex; flex-direction: column; align-items: center; gap: 5px;
  font-family: var(--font-mono, 'Share Tech Mono', monospace);
  font-size: 9px;
  letter-spacing: 1.5px;
  text-transform: uppercase;
  color: rgba(232,228,220,.3);
  transition: color .2s;
}
.vcsp-feat span:first-child { font-size: 18px; opacity: .5; }
.vcsp-feat:hover { color: rgba(201,151,58,.6); }


/* ═══════════════════════════════════════════════════════════════════════
   SHELF BADGE STACK — overlay positioning container for card badges
   ═══════════════════════════════════════════════════════════════════════ */
.vc-lb-stack {
  position: absolute;
  top: 6px; left: 6px;
  z-index: 4;
  display: flex;
  flex-direction: column;
  gap: 3px;
  pointer-events: none;
}
/* Dashboard hero cards need relative positioning for badge overlay */
.vc-dash-hero-card,
.vc-dash-poster-card,
.vc-dash-upcoming-item {
  position: relative;
}

/* ═══════════════════════════════════════════════════════════════════════
   QUICK-ADD MODAL
   ═══════════════════════════════════════════════════════════════════════ */
#vc-quick-add-modal {
  position: fixed; inset: 0; z-index: 20000;
  opacity: 0; transition: opacity .22s ease;
  pointer-events: none;
}
#vc-quick-add-modal.vc-qa-visible  { opacity: 1; pointer-events: all; }
#vc-quick-add-modal.vc-qa-out      { opacity: 0; pointer-events: none; }

.vc-qa-backdrop {
  position: absolute; inset: 0;
  background: rgba(0,0,0,.80); backdrop-filter: blur(10px);
  display: flex; align-items: flex-start; justify-content: center;
  padding-top: clamp(60px, 10vh, 120px);
}

.vc-qa-dialog {
  background: rgba(13,11,24,.97);
  border: 1px solid rgba(255,255,255,.13);
  border-radius: 14px;
  width: min(540px, 94vw);
  box-shadow: 0 28px 80px rgba(0,0,0,.85), inset 0 1px 0 rgba(255,255,255,.06);
  display: flex; flex-direction: column;
  overflow: hidden;
  transform: translateY(-8px); transition: transform .22s ease;
}
#vc-quick-add-modal.vc-qa-visible .vc-qa-dialog { transform: translateY(0); }

.vc-qa-topline {
  height: 2px; flex-shrink: 0;
  background: linear-gradient(90deg, transparent, var(--gold,#c9973a) 40%, rgba(196,154,255,.5) 75%, transparent);
}
.vc-qa-header {
  display: flex; align-items: flex-start; justify-content: space-between;
  padding: 16px 20px 0; flex-shrink: 0;
}
.vc-qa-eyebrow {
  font-family: var(--font-vhs,monospace); font-size: 9px; font-weight: 800;
  letter-spacing: 2.5px; text-transform: uppercase; color: var(--gold,#c9973a);
  margin-bottom: 3px;
}
.vc-qa-subtitle {
  font-family: var(--font-display,'Cinzel',serif); font-size: 15px;
  font-weight: 700; color: var(--text,#e8e4dc);
}
.vc-qa-close {
  width: 28px; height: 28px; border-radius: 6px;
  border: 1px solid rgba(255,255,255,.12); background: rgba(255,255,255,.04);
  color: rgba(255,255,255,.45); cursor: pointer; font-size: 14px;
  display: flex; align-items: center; justify-content: center;
  transition: all .14s; flex-shrink: 0;
}
.vc-qa-close:hover { border-color: rgba(255,80,80,.4); color: #e07070; }

.vc-qa-search-row {
  position: relative; padding: 14px 20px 12px; flex-shrink: 0;
}
.vc-qa-input {
  width: 100%; box-sizing: border-box;
  background: rgba(255,255,255,.06); border: 1px solid rgba(255,255,255,.13);
  border-radius: 9px; color: var(--text,#e8e4dc);
  font-family: var(--font-body,'Crimson Text',serif); font-size: 15px;
  padding: 11px 44px 11px 16px; outline: none;
  transition: border-color .14s;
}
.vc-qa-input:focus { border-color: rgba(201,151,58,.45); }
.vc-qa-input::placeholder { color: rgba(255,255,255,.3); font-style: italic; }
.vc-qa-spinner {
  position: absolute; right: 34px; top: 50%; transform: translateY(-50%);
  color: var(--gold,#c9973a); display: flex; align-items: center;
}

.vc-qa-results {
  max-height: 360px; overflow-y: auto; scrollbar-width: thin;
  padding: 0 12px 8px;
}
.vc-qa-hint {
  text-align: center; padding: 24px 0;
  font-family: var(--font-body,'Crimson Text',serif); font-style: italic;
  font-size: 13px; color: rgba(255,255,255,.3);
}
.vc-qa-row {
  display: flex; align-items: center; gap: 12px;
  padding: 8px 10px; border-radius: 8px; cursor: pointer;
  transition: background .12s;
}
.vc-qa-row:hover, .vc-qa-row:focus { background: rgba(255,255,255,.06); outline: none; }
.vc-qa-cover {
  width: 42px; height: 56px; flex-shrink: 0;
  border-radius: 5px; overflow: hidden; position: relative;
  background: rgba(255,255,255,.05); border: 1px solid rgba(255,255,255,.08);
}
.vc-qa-cover img { width: 100%; height: 100%; object-fit: cover; display: block; }
.vc-qa-cover-empty {
  width: 100%; height: 100%; display: flex; align-items: center; justify-content: center;
  font-size: 16px; color: rgba(255,255,255,.3);
}
.vc-qa-cover .vc-lb-stack { top: 2px; left: 2px; }
.vc-qa-cover .vc-lb { font-size: 6px; padding: 1px 4px; letter-spacing: .5px; }
.vc-qa-info { flex: 1; min-width: 0; }
.vc-qa-name {
  font-family: var(--font-display,'Cinzel',serif); font-size: 12.5px;
  font-weight: 600; color: var(--text,#e8e4dc);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
  margin-bottom: 3px;
}
.vc-qa-meta {
  font-family: var(--font-mono,'Share Tech Mono',monospace); font-size: 9px;
  color: rgba(255,255,255,.35); letter-spacing: .5px;
}
.vc-qa-arrow { font-size: 18px; color: rgba(255,255,255,.25); flex-shrink: 0; }
.vc-qa-row:hover .vc-qa-arrow { color: var(--gold,#c9973a); }

.vc-qa-footer {
  padding: 10px 20px 14px; border-top: 1px solid rgba(255,255,255,.06); flex-shrink: 0;
}
.vc-qa-footer-note {
  font-size: 10.5px; color: rgba(255,255,255,.3); font-style: italic;
  font-family: var(--font-body,'Crimson Text',serif);
}
.vc-qa-footer-note strong { color: rgba(255,255,255,.5); font-style: normal; }

/* ═══════════════════════════════════════════════════════════════════════
   FRANCHISE MANAGER MODAL
   ═══════════════════════════════════════════════════════════════════════ */
#vc-franchise-manager-modal {
  position: fixed; inset: 0; z-index: 20000;
  opacity: 0; transition: opacity .22s ease;
  pointer-events: none;
}
#vc-franchise-manager-modal.vc-fm-visible { opacity: 1; pointer-events: all; }
#vc-franchise-manager-modal.vc-fm-out     { opacity: 0; pointer-events: none; }

.vc-fm-backdrop {
  position: absolute; inset: 0;
  background: rgba(0,0,0,.80); backdrop-filter: blur(10px);
  display: flex; align-items: center; justify-content: center;
  padding: 24px;
}
.vc-fm-dialog {
  background: rgba(13,11,24,.97);
  border: 1px solid rgba(255,255,255,.13);
  border-radius: 14px;
  width: min(820px, 96vw); max-height: 88vh;
  box-shadow: 0 28px 80px rgba(0,0,0,.85), inset 0 1px 0 rgba(255,255,255,.06);
  display: flex; flex-direction: column;
  overflow: hidden;
  transform: translateY(6px); transition: transform .22s ease;
}
#vc-franchise-manager-modal.vc-fm-visible .vc-fm-dialog { transform: translateY(0); }

.vc-fm-topline {
  height: 2px; flex-shrink: 0;
  background: linear-gradient(90deg, transparent, rgba(160,100,240,.7) 40%, var(--gold,#c9973a) 75%, transparent);
}
.vc-fm-header {
  display: flex; align-items: flex-start; justify-content: space-between;
  padding: 16px 22px 14px; border-bottom: 1px solid rgba(255,255,255,.06); flex-shrink: 0;
}
.vc-fm-eyebrow {
  font-family: var(--font-vhs,monospace); font-size: 9px; font-weight: 800;
  letter-spacing: 2.5px; text-transform: uppercase; color: var(--gold,#c9973a); margin-bottom: 3px;
}
.vc-fm-subtitle {
  font-family: var(--font-display,'Cinzel',serif); font-size: 15px;
  font-weight: 700; color: var(--text,#e8e4dc);
}
.vc-fm-close {
  width: 28px; height: 28px; border-radius: 6px;
  border: 1px solid rgba(255,255,255,.12); background: rgba(255,255,255,.04);
  color: rgba(255,255,255,.45); cursor: pointer; font-size: 14px;
  display: flex; align-items: center; justify-content: center;
  transition: all .14s;
}
.vc-fm-close:hover { border-color: rgba(255,80,80,.4); color: #e07070; }

.vc-fm-body {
  display: grid; grid-template-columns: 1fr 280px;
  gap: 0; flex: 1; overflow: hidden;
}
.vc-fm-col {
  padding: 18px 22px;
  overflow-y: auto; scrollbar-width: thin;
}
.vc-fm-col + .vc-fm-col { border-left: 1px solid rgba(255,255,255,.06); }
.vc-fm-col-label {
  font-family: var(--font-vhs,monospace); font-size: 8px; font-weight: 800;
  letter-spacing: 2.5px; text-transform: uppercase;
  color: rgba(255,255,255,.3); margin-bottom: 12px;
}
.vc-fm-empty {
  font-family: var(--font-body,'Crimson Text',serif); font-style: italic;
  font-size: 13px; color: rgba(255,255,255,.3); padding: 12px 0;
}

/* Tagged games list */
.vc-fm-game-list { display: flex; flex-direction: column; gap: 8px; }
.vc-fm-game-row {
  display: flex; align-items: center; gap: 12px;
  padding: 10px 12px; border-radius: 8px;
  background: rgba(255,255,255,.03); border: 1px solid rgba(255,255,255,.06);
  transition: border-color .12s;
}
.vc-fm-game-row:hover { border-color: rgba(255,255,255,.10); }
.vc-fm-cover {
  width: 34px; height: 46px; border-radius: 4px; object-fit: cover;
  flex-shrink: 0; border: 1px solid rgba(255,255,255,.08);
}
.vc-fm-cover-empty {
  width: 34px; height: 46px; border-radius: 4px; flex-shrink: 0;
  background: rgba(255,255,255,.05); border: 1px solid rgba(255,255,255,.08);
  display: flex; align-items: center; justify-content: center;
  font-size: 14px; color: rgba(255,255,255,.3);
}
.vc-fm-game-info { flex: 1; min-width: 0; }
.vc-fm-game-name {
  font-family: var(--font-display,'Cinzel',serif); font-size: 11.5px;
  font-weight: 600; color: var(--text,#e8e4dc);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis; margin-bottom: 6px;
}
.vc-fm-tags { display: flex; flex-wrap: wrap; gap: 5px; align-items: center; }
.vc-fm-add-tag-btn {
  font-family: var(--font-vhs,monospace); font-size: 8px; font-weight: 700;
  letter-spacing: 1px; text-transform: uppercase;
  background: rgba(255,255,255,.04); border: 1px dashed rgba(255,255,255,.18);
  border-radius: 20px; color: rgba(255,255,255,.4);
  padding: 3px 8px; cursor: pointer; transition: all .12s;
}
.vc-fm-add-tag-btn:hover { border-color: var(--gold,#c9973a); color: var(--gold,#c9973a); background: rgba(201,151,58,.07); }

/* Custom presets list */
.vc-fm-custom-list { display: flex; flex-direction: column; gap: 5px; margin-bottom: 4px; }
.vc-fm-preset-row {
  display: flex; align-items: center; gap: 9px;
  padding: 7px 10px; border-radius: 7px;
  background: rgba(255,255,255,.03); border: 1px solid rgba(255,255,255,.06);
}
.vc-fm-preset-icon { font-size: 16px; flex-shrink: 0; }
.vc-fm-preset-label {
  font-family: var(--font-display,'Cinzel',serif); font-size: 12px; font-weight: 600;
  color: var(--text,#e8e4dc); flex: 1;
}
.vc-fm-preset-del {
  background: none; border: none; color: rgba(255,255,255,.3); cursor: pointer;
  font-size: 12px; padding: 0 2px; transition: color .12s; line-height: 1; flex-shrink: 0;
}
.vc-fm-preset-del:hover { color: #e07070; }

/* Create new section */
.vc-fm-create-section {}
.vc-fm-create-row { display: flex; gap: 8px; margin-bottom: 8px; }
.vc-fm-icon-input {
  width: 48px; flex-shrink: 0;
  background: rgba(255,255,255,.05); border: 1px solid rgba(255,255,255,.11);
  border-radius: 8px; color: var(--text,#e8e4dc); font-size: 18px;
  text-align: center; padding: 7px 4px; outline: none;
  transition: border-color .14s;
}
.vc-fm-icon-input:focus { border-color: var(--gold,#c9973a); }
.vc-fm-label-input {
  flex: 1;
  background: rgba(255,255,255,.05); border: 1px solid rgba(255,255,255,.11);
  border-radius: 8px; color: var(--text,#e8e4dc); font-size: 12px;
  padding: 9px 12px; font-family: inherit; outline: none;
  transition: border-color .14s;
}
.vc-fm-label-input:focus { border-color: var(--gold,#c9973a); }
.vc-fm-label-input::placeholder { color: rgba(255,255,255,.25); }
.vc-fm-create-btn { width: 100%; }


/* ═══════════════════════════════════════════════════════════════════════
   COPY LIST — edit + delete actions
   ═══════════════════════════════════════════════════════════════════════ */
.vc-copies-list-inner { display: flex; flex-direction: column; gap: 6px; margin-top: 10px; }
.vc-copy-list-row {
  display: flex; align-items: center; gap: 10px; padding: 9px 12px;
  background: rgba(255,255,255,.03); border: 1px solid rgba(255,255,255,.07);
  border-radius: 8px; transition: border-color .12s;
}
.vc-copy-list-row:hover { border-color: rgba(255,255,255,.12); }
.vc-copy-list-main { flex: 1; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; min-width: 0; }
.vc-copy-list-plat { font-family: var(--font-display,'Cinzel',serif); font-size: 12px; font-weight: 600; color: var(--text,#e8e4dc); }
.vc-copy-list-fmt  { font-size: 11px; color: rgba(255,255,255,.5); }
.vc-copy-list-cond { font-size: 10px; color: rgba(255,255,255,.4); }
.vc-copy-list-ed   { font-size: 10px; color: var(--gold,#c9973a); font-style: italic; }
.vc-copy-list-notes { font-size: 10px; color: rgba(255,255,255,.35); font-style: italic; padding: 2px 0 0; width: 100%; }
.vc-copy-list-actions {
  display: flex; gap: 4px; flex-shrink: 0;
}
.vc-copy-list-edit {
  background: rgba(255,255,255,.06); border: 1px solid rgba(255,255,255,.12);
  color: rgba(255,255,255,.45); border-radius: 5px;
  width: 26px; height: 26px; cursor: pointer; font-size: 13px;
  display: flex; align-items: center; justify-content: center;
  transition: all .12s;
}
.vc-copy-list-edit:hover { border-color: var(--gold,#c9973a); color: var(--gold,#c9973a); background: rgba(201,151,58,.1); }
/* Ensure del button still works alongside */
.vc-copy-list-del {
  background: rgba(255,255,255,.06); border: 1px solid rgba(255,255,255,.12);
  color: rgba(255,255,255,.35); border-radius: 5px;
  width: 26px; height: 26px; cursor: pointer; font-size: 13px;
  display: flex; align-items: center; justify-content: center;
  transition: all .12s;
}
.vc-copy-list-del:hover { border-color: rgba(200,60,60,.5); color: #e07070; background: rgba(200,60,60,.08); }

/* ═══════════════════════════════════════════════════════════════════════
   COPY EDIT MODAL
   ═══════════════════════════════════════════════════════════════════════ */
#vc-copy-edit-modal {
  position: fixed; inset: 0; z-index: 30000;
  opacity: 0; transition: opacity .22s ease; pointer-events: none;
}
#vc-copy-edit-modal.vc-ced-visible { opacity: 1; pointer-events: all; }
#vc-copy-edit-modal.vc-ced-out     { opacity: 0; pointer-events: none; }
.vc-ced-backdrop {
  position: absolute; inset: 0;
  background: rgba(0,0,0,.75); backdrop-filter: blur(8px);
  display: flex; align-items: center; justify-content: center; padding: 24px;
}
.vc-ced-dialog {
  background: rgba(13,11,24,.98);
  border: 1px solid rgba(255,255,255,.13); border-radius: 12px;
  width: min(400px, 94vw);
  box-shadow: 0 24px 70px rgba(0,0,0,.85), inset 0 1px 0 rgba(255,255,255,.06);
  overflow: hidden;
  transform: translateY(6px); transition: transform .22s ease;
}
#vc-copy-edit-modal.vc-ced-visible .vc-ced-dialog { transform: translateY(0); }
.vc-ced-topline {
  height: 2px;
  background: linear-gradient(90deg, transparent, var(--gold,#c9973a) 50%, transparent);
}
.vc-ced-header {
  display: flex; align-items: center; gap: 10px;
  padding: 14px 18px 10px; border-bottom: 1px solid rgba(255,255,255,.06);
}
.vc-ced-eyebrow {
  font-family: var(--font-vhs,monospace); font-size: 8px; font-weight: 800;
  letter-spacing: 2px; text-transform: uppercase; color: var(--gold,#c9973a);
}
.vc-ced-plat {
  font-family: var(--font-display,'Cinzel',serif); font-size: 14px;
  font-weight: 700; color: var(--text,#e8e4dc); flex: 1;
}
.vc-ced-x {
  background: none; border: none; color: rgba(255,255,255,.4);
  font-size: 16px; cursor: pointer; padding: 0; line-height: 1; flex-shrink: 0;
}
.vc-ced-x:hover { color: #e07070; }
.vc-ced-body { padding: 16px 18px; display: flex; flex-direction: column; gap: 10px; }
.vc-ced-label {
  font-family: var(--font-vhs,monospace); font-size: 8px; font-weight: 800;
  letter-spacing: 2px; text-transform: uppercase; color: rgba(255,255,255,.35);
  margin-bottom: 4px; display: block;
}
.vc-ced-select, .vc-ced-input, .vc-ced-textarea {
  width: 100%; box-sizing: border-box;
  background: rgba(255,255,255,.05); border: 1px solid rgba(255,255,255,.11);
  border-radius: 7px; color: var(--text,#e8e4dc); font-family: inherit;
  font-size: 12px; padding: 9px 12px; outline: none;
  transition: border-color .14s;
}
.vc-ced-select:focus, .vc-ced-input:focus, .vc-ced-textarea:focus { border-color: var(--gold,#c9973a); }
.vc-ced-textarea { resize: vertical; min-height: 70px; }
.vc-ced-footer {
  display: flex; gap: 8px; justify-content: flex-end;
  padding: 12px 18px 16px; border-top: 1px solid rgba(255,255,255,.06);
}

/* ═══════════════════════════════════════════════════════════════════════
   COVEN HUB — Full redesign
   ═══════════════════════════════════════════════════════════════════════ */
.vc-coven-gate {
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  min-height: 280px; gap: 10px; text-align: center; padding: 40px;
}
.vc-coven-gate-sigil { font-size: 36px; margin-bottom: 4px; }
.vc-coven-gate-title { font-family: var(--font-display,'Cinzel',serif); font-size: 17px; font-weight: 700; color: var(--text,#e8e4dc); }
.vc-coven-gate-sub { font-size: 12px; color: rgba(255,255,255,.4); margin-bottom: 8px; }
.vc-coven-loading {
  display: flex; align-items: center; gap: 10px; justify-content: center;
  padding: 40px; font-family: var(--font-vhs,monospace); font-size: 10px;
  letter-spacing: 2px; text-transform: uppercase; color: rgba(255,255,255,.35);
}
.vc-coven-loading-sigil { font-size: 20px; animation: vc-sigil-spin 3s linear infinite; }
@keyframes vc-sigil-spin { from{transform:rotate(0deg)} to{transform:rotate(360deg)} }

.vc-hub { display: flex; flex-direction: column; gap: 0; }
.vc-hub-head {
  display: flex; align-items: center; justify-content: space-between;
  padding: 18px 0 14px; border-bottom: 1px solid rgba(255,255,255,.06);
  margin-bottom: 0;
}
.vc-hub-head-left { display: flex; flex-direction: column; gap: 4px; }
.vc-hub-coven-name {
  font-family: var(--font-display,'Cinzel',serif); font-size: 20px;
  font-weight: 700; color: var(--text,#e8e4dc);
}
.vc-hub-coven-code {
  font-family: var(--font-vhs,monospace); font-size: 9px; font-weight: 700;
  letter-spacing: 2px; text-transform: uppercase; color: rgba(255,255,255,.3);
}
.vc-hub-members-avatars { display: flex; gap: 4px; }
.vc-hub-avatar {
  width: 32px; height: 32px; border-radius: 7px;
  background: linear-gradient(135deg, var(--blood, #5a0a0a), var(--panel, #1a1218));
  border: 1px solid rgba(201,151,58,.3);
  display: flex; align-items: center; justify-content: center;
  font-size: 18px; line-height: 1; flex-shrink: 0;
  color: var(--gold, #c9973a);
}

/* Tabs */
.vc-hub-tabs {
  display: flex; gap: 2px; padding: 12px 0 0; border-bottom: 1px solid rgba(255,255,255,.07);
  overflow-x: auto; scrollbar-width: none;
}
.vc-hub-tab {
  font-family: var(--font-vhs,monospace); font-size: 9px; font-weight: 700;
  letter-spacing: 1.5px; text-transform: uppercase;
  padding: 8px 16px; border-radius: 6px 6px 0 0; border: none;
  background: rgba(255,255,255,.03); color: rgba(255,255,255,.4);
  cursor: pointer; transition: all .14s; white-space: nowrap;
  border-bottom: 2px solid transparent; margin-bottom: -1px;
}
.vc-hub-tab:hover { color: rgba(255,255,255,.7); background: rgba(255,255,255,.06); }
.vc-hub-tab.active { color: var(--gold,#c9973a); background: rgba(201,151,58,.07); border-bottom-color: var(--gold,#c9973a); }

.vc-hub-panel { display: none; padding: 18px 0; }
.vc-hub-panel.active { display: block; }
.vc-hub-empty {
  padding: 40px 0; text-align: center;
  font-family: var(--font-body,'Crimson Text',serif); font-style: italic;
  font-size: 14px; color: rgba(255,255,255,.35);
}

/* Sort bar */
.vc-hub-sortbar {
  display: flex; align-items: center; gap: 6px; margin-bottom: 16px;
  flex-wrap: wrap;
}
.vc-hub-sortbar-label {
  font-family: var(--font-vhs,monospace); font-size: 8px; font-weight: 700;
  letter-spacing: 1.5px; text-transform: uppercase; color: rgba(255,255,255,.3);
  margin-right: 4px;
}
.vc-hub-sortbtn {
  font-family: var(--font-vhs,monospace); font-size: 8px; font-weight: 700;
  letter-spacing: 1px; text-transform: uppercase;
  padding: 5px 12px; border-radius: 20px;
  border: 1px solid rgba(255,255,255,.12); background: rgba(255,255,255,.04);
  color: rgba(255,255,255,.4); cursor: pointer; transition: all .12s;
}
.vc-hub-sortbtn:hover { border-color: rgba(255,255,255,.25); color: rgba(255,255,255,.7); }
.vc-hub-sortbtn.active { border-color: var(--gold,#c9973a); color: var(--gold,#c9973a); background: rgba(201,151,58,.09); }

/* Activity feed */
.vc-act-day-sep {
  font-family: var(--font-vhs,monospace); font-size: 8px; font-weight: 700;
  letter-spacing: 2px; text-transform: uppercase; color: rgba(255,255,255,.25);
  padding: 14px 0 8px; border-bottom: 1px solid rgba(255,255,255,.05); margin-bottom: 4px;
}
.vc-act-row {
  display: flex; align-items: center; gap: 10px; padding: 8px 10px;
  border-radius: 8px; cursor: pointer; transition: background .12s;
}
.vc-act-row:hover { background: rgba(255,255,255,.04); }
.vc-act-avatar {
  flex-shrink: 0; width: 36px; height: 36px;
  border-radius: 50%; background: rgba(201,151,58,.15); border: 1px solid rgba(201,151,58,.25);
  display: flex; align-items: center; justify-content: center;
  font-size: 15px; font-weight: 700; font-family: var(--font-display,'Cinzel',serif);
  color: var(--gold,#c9973a); overflow: hidden; text-align: center;
}
.vc-act-avatar img { width: 100%; height: 100%; object-fit: cover; border-radius: 50%; }
.vc-act-cover {
  width: 34px; height: 46px; border-radius: 4px; overflow: hidden;
  flex-shrink: 0; background: rgba(255,255,255,.04); border: 1px solid rgba(255,255,255,.07);
}
.vc-act-cover img { width: 100%; height: 100%; object-fit: cover; display: block; }
.vc-act-cover-empty { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; font-size: 14px; color: rgba(255,255,255,.3); }
.vc-act-body { flex: 1; min-width: 0; }
.vc-act-top { display: flex; align-items: center; gap: 6px; margin-bottom: 2px; flex-wrap: nowrap; overflow: hidden; }
.vc-act-member { font-family: var(--font-vhs,monospace); font-size: 10px; font-weight: 700; letter-spacing: .5px; color: rgba(255,255,255,.7); white-space: nowrap; flex-shrink: 0; }
.vc-act-member.vc-act-me { color: var(--gold,#c9973a); }
.vc-act-badge { font-family: var(--font-vhs,monospace); font-size: 8px; font-weight: 700; letter-spacing: 1px; text-transform: uppercase; padding: 2px 6px; border-radius: 3px; background: rgba(255,255,255,.06); }
.vc-act-badge--playing { color: #7de040; }
.vc-act-badge--done    { color: #c9973a; }
.vc-act-badge--locker  { color: rgba(255,255,255,.5); }
.vc-act-badge--wish    { color: #b070ee; }
.vc-act-badge--backlog { color: #c49a30; }
.vc-act-badge--drop      { color: #c06060; }
.vc-act-badge--witnessed { color: #78b4ff; }

/* ── Witness button active state ─────────────────────────────── */
.vc-lm-witness-btn.active {
  color: #78b4ff;
  border-color: rgba(120,180,255,.4);
  background: rgba(120,180,255,.08);
}

/* ── Witness Panel ───────────────────────────────────────────── */
.vc-wit-shared-block {
  margin-bottom: 18px;
  padding: 12px 14px;
  border: 1px solid rgba(120,180,255,.18);
  border-radius: 8px;
  background: rgba(120,180,255,.04);
}
.vc-wit-shared-label {
  font-family: var(--font-vhs, monospace);
  font-size: 9px;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: #78b4ff;
  margin-bottom: 10px;
}
.vc-wit-shared-row {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.vc-wit-shared-card {
  width: 72px;
  cursor: pointer;
  position: relative;
}
.vc-wit-shared-card img {
  width: 100%;
  aspect-ratio: 3/4;
  object-fit: cover;
  border-radius: 5px;
  border: 1px solid rgba(120,180,255,.3);
  display: block;
}
.vc-wit-shared-viewers {
  font-family: var(--font-vhs, monospace);
  font-size: 7px;
  color: #78b4ff;
  text-align: center;
  margin-top: 3px;
}
.vc-wit-members {
  display: flex;
  flex-direction: column;
  gap: 18px;
}
.vc-wit-member-section {}
.vc-wit-member-header {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 10px;
}
.vc-wit-avatar { font-size: 16px; }
.vc-wit-member-name {
  font-family: var(--font-occult, serif);
  font-size: 13px;
  color: var(--static, #ddd);
  flex: 1;
}
.vc-wit-role-badge {
  font-family: var(--font-vhs, monospace);
  font-size: 7px;
  letter-spacing: 1.5px;
  text-transform: uppercase;
  color: #78b4ff;
  padding: 2px 6px;
  border: 1px solid rgba(120,180,255,.3);
  border-radius: 3px;
  background: rgba(120,180,255,.08);
}
.vc-wit-count {
  font-family: var(--font-vhs, monospace);
  font-size: 8px;
  color: var(--dust, #888);
}
.vc-wit-game-row {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.vc-wit-game-card {
  width: 68px;
  cursor: pointer;
  position: relative;
  transition: transform .15s;
}
.vc-wit-game-card:hover { transform: translateY(-2px); }
.vc-wit-game-card img {
  width: 100%;
  aspect-ratio: 3/4;
  object-fit: cover;
  border-radius: 5px;
  border: 1px solid rgba(255,255,255,.1);
  display: block;
}
.vc-wit-game-card--shared img {
  border-color: rgba(120,180,255,.4);
  box-shadow: 0 0 8px rgba(120,180,255,.2);
}
.vc-wit-shared-pip {
  position: absolute;
  top: 4px; right: 4px;
  font-size: 10px;
  background: rgba(0,0,0,.7);
  border-radius: 50%;
  width: 18px; height: 18px;
  display: flex; align-items: center; justify-content: center;
  line-height: 1;
}
.vc-wit-card-name {
  font-family: var(--font-vhs, monospace);
  font-size: 7px;
  color: var(--dust, #888);
  text-align: center;
  margin-top: 3px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.vc-wit-cover-empty {
  width: 100%;
  aspect-ratio: 3/4;
  background: var(--chamber, #111);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 20px;
  border-radius: 5px;
}
.vc-act-game { font-family: var(--font-display,'Cinzel',serif); font-size: 12px; font-weight: 600; color: var(--text,#e8e4dc); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.vc-act-time { font-size: 10px; color: rgba(255,255,255,.25); margin-top: 2px; }

/* Now Playing grid */
.vc-np-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); gap: 12px; }
.vc-np-card {
  border-radius: 10px; overflow: hidden;
  background: rgba(255,255,255,.03); border: 1px solid rgba(255,255,255,.08);
  cursor: pointer; transition: all .15s;
}
.vc-np-card:hover { border-color: rgba(82,176,0,.4); background: rgba(82,176,0,.05); transform: translateY(-2px); }
.vc-np-cover { position: relative; aspect-ratio: 3/4; background: rgba(255,255,255,.04); }
.vc-np-cover img { width: 100%; height: 100%; object-fit: cover; display: block; }
.vc-np-cover-empty { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; font-size: 32px; color: rgba(255,255,255,.2); }
.vc-np-pulse {
  position: absolute; top: 8px; right: 8px; width: 8px; height: 8px;
  border-radius: 50%; background: #52b000;
  box-shadow: 0 0 0 0 rgba(82,176,0,.6);
  animation: vc-pulse 2s infinite;
}
@keyframes vc-pulse { 0%{box-shadow:0 0 0 0 rgba(82,176,0,.6)} 70%{box-shadow:0 0 0 8px rgba(82,176,0,0)} 100%{box-shadow:0 0 0 0 rgba(82,176,0,0)} }
.vc-np-info { padding: 10px 12px 12px; }
.vc-np-avatar { font-size: 18px; margin-bottom: 4px; }
.vc-np-member { font-family: var(--font-vhs,monospace); font-size: 8px; font-weight: 700; letter-spacing: 1px; text-transform: uppercase; color: rgba(255,255,255,.4); margin-bottom: 3px; }
.vc-np-game { font-family: var(--font-display,'Cinzel',serif); font-size: 11px; font-weight: 600; color: var(--text,#e8e4dc); }
.vc-np-since { font-size: 9px; color: rgba(82,176,0,.7); margin-top: 4px; font-family: var(--font-vhs,monospace); letter-spacing: .5px; }

/* Ranks */
.vc-lb-list { display: flex; flex-direction: column; gap: 6px; }
.vc-lb-row {
  display: flex; align-items: center; gap: 12px; padding: 12px 16px;
  border-radius: 8px; background: rgba(255,255,255,.03); border: 1px solid rgba(255,255,255,.06);
  transition: border-color .12s;
}
.vc-lb-row:hover { border-color: rgba(255,255,255,.12); }
.vc-lb-row--me { border-color: rgba(201,151,58,.25); background: rgba(201,151,58,.04); }
.vc-lb-medal { font-size: 20px; flex-shrink: 0; width: 28px; text-align: center; }
.vc-lb-rank-num { font-family: var(--font-vhs,monospace); font-size: 12px; color: rgba(255,255,255,.3); }
.vc-lb-avatar { font-size: 20px; flex-shrink: 0; }
.vc-lb-name { flex: 1; font-family: var(--font-display,'Cinzel',serif); font-size: 13px; font-weight: 600; color: var(--text,#e8e4dc); display: flex; align-items: center; gap: 6px; }
.vc-lb-stats { display: flex; gap: 10px; }
.vc-lb-stats span { font-family: var(--font-mono,'Share Tech Mono',monospace); font-size: 10px; color: rgba(255,255,255,.45); }
.vc-lb-score { font-family: var(--font-vhs,monospace); font-size: 13px; font-weight: 700; color: var(--gold,#c9973a); min-width: 48px; text-align: right; }
.vc-lb-note { font-size: 10px; color: rgba(255,255,255,.2); font-style: italic; margin-top: 10px; text-align: center; }

/* Members */
.vc-members-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 16px; }

.vc-member-card {
  padding: 20px 16px 14px;
  border-radius: 12px;
  background: rgba(255,255,255,.03);
  border: 1px solid rgba(255,255,255,.07);
  cursor: pointer;
  transition: transform .14s, border-color .14s, box-shadow .14s;
  text-align: center;
  position: relative;
  overflow: visible;
  display: flex; flex-direction: column; align-items: center;
  min-height: 220px;
}
.vc-member-card:hover { border-color: rgba(255,255,255,.15); transform: translateY(-2px); }
.vc-member-card--me { border-color: rgba(201,151,58,.25) !important; }

/* Avatar wrapper — clips overflow for rarity effects without clipping the edit button */
.vc-member-avatar-wrap {
  position: relative; margin-bottom: 10px;
}
.vc-member-avatar {
  width: 72px; height: 72px;
  border-radius: 50%;
  background: linear-gradient(135deg, var(--blood, #5a0a0a), var(--panel, #1a1218));
  border: 2px solid rgba(201,151,58,.3);
  display: flex; align-items: center; justify-content: center;
  font-size: 26px; line-height: 1;
  color: var(--gold, #c9973a);
  overflow: hidden;
  margin: 0 auto;
}
.vc-member-avatar img { width:100%; height:100%; object-fit:cover; border-radius:50%; display:block; }

.vc-member-name { font-family: var(--font-display,'Cinzel',serif); font-size: 12px; font-weight: 700; color: var(--text,#e8e4dc); margin-bottom: 4px; display: flex; align-items: center; justify-content: center; gap: 5px; }
.vc-member-quote { font-size: 10px; color: var(--dust); font-style: italic; margin: 0 0 10px; line-height: 1.4; opacity: .8; }
.vc-member-stats { display: flex; justify-content: center; gap: 12px; margin-bottom: 8px; }
.vc-member-stat { display: flex; flex-direction: column; align-items: center; gap: 2px; }
.vc-member-stat-val { font-family: var(--font-vhs,monospace); font-size: 18px; font-weight: 700; color: var(--text,#e8e4dc); }
.vc-member-stat-lbl { font-family: var(--font-vhs,monospace); font-size: 7px; font-weight: 700; letter-spacing: 1px; text-transform: uppercase; color: rgba(255,255,255,.3); }
.vc-member-common { font-size: 9px; color: rgba(255,255,255,.35); font-style: italic; font-family: var(--font-body,'Crimson Text',serif); margin-bottom: 6px; }

/* Pinned games */
.vc-member-pinned { display: flex; gap: 6px; justify-content: center; margin-top: auto; padding-top: 8px; }
.vc-member-pinned-cover { width: 36px; height: 48px; border-radius: 4px; overflow: hidden; border: 1px solid rgba(255,255,255,.1); background: rgba(255,255,255,.05); position: relative; flex-shrink: 0; }
.vc-member-pinned-cover img { width:100%; height:100%; object-fit:cover; display:block; }
.vc-member-pinned-empty { width:100%; height:100%; display:flex; align-items:center; justify-content:center; font-size:12px; }

/* Edit button */
.vc-member-edit-btn {
  position: absolute; top: -6px; right: -6px;
  background: rgba(201,151,58,.25); border: 1px solid rgba(201,151,58,.6);
  color: var(--gold); border-radius: 5px;
  font-size: 10px; padding: 3px 9px; cursor: pointer;
  opacity: 0; transition: opacity .15s;
  font-family: var(--font-mono,monospace); letter-spacing: .5px;
  z-index: 20; pointer-events: all;
  white-space: nowrap;
}
.vc-member-card:hover .vc-member-edit-btn { opacity: 1; }

/* Rarity effects applied via ::before/::after clipped inside card */
.vc-member-card::before,
.vc-member-card::after {
  content: ''; position: absolute; inset: 0;
  pointer-events: none; border-radius: inherit; z-index: 0;
  overflow: hidden;
}

/* Shimmer */
.vc-card-shimmer::before { background: linear-gradient(105deg, transparent 40%, rgba(255,255,255,.06) 50%, transparent 60%); background-size: 200% 100%; animation: vc-shimmer 2.5s infinite; }
/* Holo */
.vc-card-holo::before { background: linear-gradient(125deg, rgba(255,0,128,.07) 0%, rgba(255,200,0,.07) 25%, rgba(0,255,128,.07) 50%, rgba(0,128,255,.07) 75%, rgba(200,0,255,.07) 100%); background-size: 300% 300%; animation: vc-holo 4s ease infinite; }
.vc-card-holo { border-color: rgba(180,120,255,.4) !important; }
/* Pulse */
.vc-card-pulse { animation: vc-pulse-glow 2.5s ease-in-out infinite; border-color: rgba(201,151,58,.5) !important; }
/* Foil */
.vc-card-foil::before { background: conic-gradient(rgba(255,0,0,.08),rgba(255,165,0,.08),rgba(255,255,0,.08),rgba(0,255,0,.08),rgba(0,0,255,.08),rgba(238,130,238,.08),rgba(255,0,0,.08)); animation: vc-foil-spin 6s linear infinite; }
.vc-card-foil { border-color: rgba(238,130,238,.5) !important; }
/* Particles */
.vc-card-particles::after { background-image: radial-gradient(circle, rgba(201,151,58,.6) 1px, transparent 1px), radial-gradient(circle, rgba(201,151,58,.4) 1px, transparent 1px); background-size: 60px 60px, 40px 40px; background-position: 0 0, 20px 20px; animation: vc-particles-drift 8s linear infinite; opacity: .4; }
/* Scanlines */
.vc-card-scanlines::before { background: repeating-linear-gradient(0deg, transparent, transparent 2px, rgba(0,0,0,.15) 2px, rgba(0,0,0,.15) 4px); }

/* Accent colors */
.vc-card-accent-gold   { border-color: rgba(201,151,58,.5) !important; background: linear-gradient(160deg, rgba(201,151,58,.07) 0%, rgba(255,255,255,.03) 60%) !important; }
.vc-card-accent-blood  { border-color: rgba(160,30,30,.6) !important; background: linear-gradient(160deg, rgba(160,30,30,.12) 0%, rgba(255,255,255,.03) 60%) !important; }
.vc-card-accent-arcane { border-color: rgba(120,80,200,.5) !important; background: linear-gradient(160deg, rgba(120,80,200,.09) 0%, rgba(255,255,255,.03) 60%) !important; }
.vc-card-accent-toxic  { border-color: rgba(80,200,80,.4) !important; background: linear-gradient(160deg, rgba(80,200,80,.07) 0%, rgba(255,255,255,.03) 60%) !important; }
.vc-card-accent-void   { border-color: rgba(60,60,80,.8) !important; background: linear-gradient(160deg, rgba(20,20,30,.5) 0%, rgba(255,255,255,.03) 60%) !important; }
.vc-card-accent-frost  { border-color: rgba(100,180,255,.4) !important; background: linear-gradient(160deg, rgba(100,180,255,.07) 0%, rgba(255,255,255,.03) 60%) !important; }
.vc-card-accent-rose   { border-color: rgba(220,80,150,.4) !important; background: linear-gradient(160deg, rgba(220,80,150,.08) 0%, rgba(255,255,255,.03) 60%) !important; }

/* Wishlists */
/* Wishlist filter pills */
.vc-wish-filters {
  display: flex; flex-wrap: wrap; gap: 6px;
  margin-bottom: 18px;
}
.vc-wish-pill {
  display: inline-flex; align-items: center; gap: 5px;
  padding: 5px 11px; border-radius: 20px; cursor: pointer;
  font-family: var(--font-vhs, monospace); font-size: 10px; font-weight: 700;
  letter-spacing: .5px; text-transform: uppercase;
  background: rgba(255,255,255,.05); border: 1px solid rgba(255,255,255,.1);
  color: rgba(255,255,255,.5);
  transition: all .15s;
}
.vc-wish-pill:hover {
  border-color: rgba(201,151,58,.4); color: rgba(255,255,255,.8);
  background: rgba(201,151,58,.07);
}
.vc-wish-pill.active {
  background: rgba(201,151,58,.15); border-color: rgba(201,151,58,.5);
  color: var(--gold, #c9973a);
  box-shadow: 0 0 8px rgba(201,151,58,.15);
}
.vc-wish-pill--member { gap: 6px; }
.vc-wish-pill-av { font-size: 13px; line-height: 1; }
.vc-wish-pill-count {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 16px; height: 16px; padding: 0 4px; border-radius: 8px;
  background: rgba(255,255,255,.1); font-size: 9px;
  color: rgba(255,255,255,.5);
}
.vc-wish-pill.active .vc-wish-pill-count {
  background: rgba(201,151,58,.25); color: var(--gold, #c9973a);
}

.vc-wish-page { display: flex; flex-direction: column; gap: 24px; }
.vc-wish-member-section {}
.vc-wish-member-header { display: flex; align-items: center; gap: 8px; margin-bottom: 10px; }
.vc-wish-avatar { font-size: 20px; }
.vc-wish-member-name { font-family: var(--font-display,'Cinzel',serif); font-size: 13px; font-weight: 700; color: var(--text,#e8e4dc); flex: 1; }
.vc-wish-count { font-family: var(--font-vhs,monospace); font-size: 8px; font-weight: 700; letter-spacing: 1px; color: rgba(255,255,255,.3); text-transform: uppercase; }
.vc-wish-row { display: flex; gap: 8px; overflow-x: auto; scrollbar-width: thin; padding-bottom: 4px; }
.vc-wish-card {
  flex-shrink: 0; width: 90px; border-radius: 6px; overflow: hidden; cursor: pointer;
  background: rgba(255,255,255,.04); border: 1px solid rgba(255,255,255,.08);
  transition: all .13s;
}
.vc-wish-card:hover { border-color: rgba(160,100,240,.4); transform: translateY(-2px); }
.vc-wish-card img { width: 90px; height: 120px; object-fit: cover; display: block; }
.vc-wish-cover-empty { width: 90px; height: 120px; display: flex; align-items: center; justify-content: center; font-size: 24px; color: rgba(255,255,255,.2); }
.vc-wish-card-name { font-size: 8px; font-family: var(--font-vhs,monospace); color: rgba(255,255,255,.4); padding: 4px 5px; line-height: 1.3; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

/* ═══════════════════════════════════════════════════════════════════════
   COVEN VIEW LAYOUT FIX
   Hub renders its own header — give the page container top padding
   so content isn't flush against the top edge.
   ═══════════════════════════════════════════════════════════════════════ */
.vc-coven-page {
  padding-top: 28px !important;
  padding-bottom: 80px;
}
/* Coven hub head acts as the page header */
.vc-hub-head {
  padding-top: 4px;
}


/* ═══════════════════════════════════════════════════════════════════════
   LOCKER CARD MODAL
   ═══════════════════════════════════════════════════════════════════════ */

/* ── Overlay ── */
.vc-locker-modal {
  position: fixed; inset: 0; z-index: 9000;
  display: flex; align-items: center; justify-content: center;
  pointer-events: none; opacity: 0;
  transition: opacity .2s ease;
}
.vc-locker-modal.open { opacity: 1; pointer-events: auto; }

.vc-locker-modal-backdrop {
  position: absolute; inset: 0;
  background: rgba(0,0,0,.72);
  backdrop-filter: blur(4px);
}

/* ── Dialog ── */
.vc-locker-modal-dialog {
  position: relative; z-index: 1;
  width: calc(100% - 48px); max-width: 1000px;
  min-width: 0;
  max-height: 90vh;
  background: var(--bg, #0d0c14);
  border: 1px solid var(--border-bright, rgba(201,151,58,.35));
  border-radius: 16px;
  overflow-y: auto;
  display: flex; flex-direction: column;
  transform: scale(.97) translateY(12px);
  transition: transform .22s cubic-bezier(.22,1,.36,1);
  box-shadow: 0 24px 80px rgba(0,0,0,.75);
}
.vc-locker-modal.open .vc-locker-modal-dialog { transform: scale(1) translateY(0); }

/* ── Banner strip ── */
.vc-lm-banner {
  height: 110px;
  background: var(--void, #08070f) no-repeat center/cover;
  position: relative;
  flex-shrink: 0;
}
.vc-lm-banner::after {
  content: '';
  position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,.15) 0%, var(--bg, #0d0c14) 100%);
}
.vc-lm-close {
  position: absolute; top: 10px; right: 12px; z-index: 2;
  background: rgba(0,0,0,.55); border: 1px solid rgba(255,255,255,.15);
  color: rgba(255,255,255,.7); border-radius: 999px;
  width: 28px; height: 28px; font-size: 11px;
  display: flex; align-items: center; justify-content: center;
  cursor: pointer; transition: background .15s, color .15s;
}
.vc-lm-close:hover { background: rgba(255,255,255,.12); color: #fff; }

/* ── Hero ── */
.vc-lm-hero {
  display: flex; gap: 16px;
  padding: 0 18px 16px;
  margin-top: -72px;
  position: relative; z-index: 1;
}
.vc-lm-cover {
  width: 180px; flex-shrink: 0;
  aspect-ratio: 3/4;
  border-radius: 6px; overflow: hidden;
  border: 1px solid var(--border-bright, rgba(201,151,58,.3));
  box-shadow: 0 4px 16px rgba(0,0,0,.55);
  background: var(--chamber, #1a1424);
}
.vc-lm-cover img { width: 100%; height: 100%; object-fit: cover; display: block; }
.vc-lm-cover-fallback {
  width: 100%; height: 100%;
  display: flex; align-items: center; justify-content: center;
  font-size: 28px; opacity: .4;
}

.vc-lm-hero-info { flex: 1; min-width: 0; max-width: 100%; overflow: hidden; padding-top: 68px; }
.vc-lm-title {
  font-family: var(--font-occult, 'Cinzel', serif);
  font-size: 16px; font-weight: 700;
  color: var(--text, #e8e4dc);
  margin: 0 0 4px; line-height: 1.2;
}
.vc-lm-year {
  font-family: var(--font-vhs, monospace);
  font-size: 10px; color: var(--gold, #c9973a);
  letter-spacing: .5px; margin-bottom: 6px;
}
.vc-lm-status-pill {
  display: inline-flex; align-items: center; gap: 5px;
  padding: 3px 9px; border-radius: 999px;
  border: 1px solid var(--pill-color);
  background: color-mix(in srgb, var(--pill-color) 12%, transparent);
  color: var(--pill-color);
  font-family: var(--font-vhs, monospace);
  font-size: 9px; letter-spacing: .6px;
  text-transform: uppercase; margin-bottom: 8px;
}
.vc-lm-status-dot {
  width: 5px; height: 5px; border-radius: 50%;
  background: var(--pill-color);
}
.vc-lm-franchise-row {
  display: flex; flex-wrap: wrap; gap: 5px; align-items: center;
  margin-bottom: 10px;
}
.vc-lm-summary {
  font-family: var(--font-body, 'Crimson Text', serif);
  font-size: 13px; line-height: 1.55;
  color: var(--fog, rgba(232,228,220,.55));
  margin: 0;
  min-height: 3lh;
  display: -webkit-box; -webkit-line-clamp: 4; -webkit-box-orient: vertical;
  overflow: hidden;
}

/* ── Sections ── */
.vc-lm-section {
  padding: 14px 18px;
  border-top: 1px solid var(--border, rgba(255,255,255,.07));
}
.vc-lm-section-hdr {
  display: flex; align-items: center; justify-content: space-between;
  margin-bottom: 10px;
}
.vc-lm-section-title {
  font-family: var(--font-vhs, monospace);
  font-size: 9px; letter-spacing: 2px; text-transform: uppercase;
  color: var(--dust, rgba(232,228,220,.35));
}
.vc-lm-add-copy-btn {
  font-family: var(--font-vhs, monospace);
  font-size: 9px; letter-spacing: 1px; text-transform: uppercase;
  background: rgba(201,151,58,.1); border: 1px solid rgba(201,151,58,.3);
  color: var(--gold, #c9973a); border-radius: 5px;
  padding: 4px 10px; cursor: pointer;
  transition: background .15s, border-color .15s;
}
.vc-lm-add-copy-btn:hover { background: rgba(201,151,58,.2); border-color: rgba(201,151,58,.55); }

/* ── Copy rows ── */
.vc-lm-copy-row {
  display: flex; align-items: center; justify-content: space-between;
  padding: 9px 10px;
  background: var(--panel, rgba(255,255,255,.03));
  border: 1px solid var(--border, rgba(255,255,255,.07));
  border-radius: 8px; margin-bottom: 6px;
  transition: border-color .15s;
}
.vc-lm-copy-row:last-child { margin-bottom: 0; }
.vc-lm-copy-row:hover { border-color: rgba(201,151,58,.28); }

.vc-lm-copy-left { display: flex; align-items: center; gap: 10px; min-width: 0; }
.vc-lm-fmt-icon { font-size: 15px; flex-shrink: 0; }
.vc-lm-plat-icon { display: flex; align-items: center; flex-shrink: 0; opacity: .75; }
.vc-lm-copy-info { display: flex; flex-wrap: wrap; align-items: center; gap: 5px; min-width: 0; }
.vc-lm-copy-plat {
  font-family: var(--font-vhs, monospace);
  font-size: 10px; color: var(--text, #e8e4dc);
  letter-spacing: .3px;
}
.vc-lm-copy-edition {
  font-family: var(--font-vhs, monospace);
  font-size: 9px; color: var(--gold, #c9973a);
  padding: 1px 6px; border-radius: 999px;
  background: rgba(201,151,58,.1); border: 1px solid rgba(201,151,58,.25);
}
.vc-lm-copy-cond { display: inline-flex; }
.vc-lm-copy-notes {
  font-size: 10px; color: var(--fog, rgba(232,228,220,.45));
  font-style: italic; width: 100%;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}

.vc-lm-copy-actions { display: flex; gap: 5px; flex-shrink: 0; }
.vc-lm-copy-btn {
  width: 26px; height: 26px;
  background: rgba(255,255,255,.04); border: 1px solid rgba(255,255,255,.1);
  color: rgba(255,255,255,.45); border-radius: 5px; font-size: 11px;
  display: flex; align-items: center; justify-content: center;
  cursor: pointer; transition: background .15s, color .15s, border-color .15s;
}
.vc-lm-copy-btn:hover { background: rgba(255,255,255,.1); color: #fff; border-color: rgba(255,255,255,.25); }
.vc-lm-copy-btn--danger:hover { background: rgba(192,57,43,.2); border-color: rgba(192,57,43,.5); color: #ff8080; }

.vc-lm-no-copies {
  font-size: 12px; color: var(--fog, rgba(232,228,220,.4));
  padding: 8px 0; text-align: center;
}
.vc-lm-inline-link {
  background: none; border: none;
  color: var(--gold, #c9973a); cursor: pointer;
  font-size: 12px; text-decoration: underline; padding: 0;
}

/* ── Dupe banner ── */
.vc-lm-dupe-banner {
  background: rgba(240,180,40,.08);
  border: 1px solid rgba(240,180,40,.3);
  border-radius: 7px; padding: 9px 12px;
  font-size: 12px; color: #f0d080;
  margin-bottom: 10px;
}

/* ── Coven members ── */
.vc-lm-coven-members { display: flex; flex-direction: column; gap: 7px; }
.vc-lm-coven-member-row {
  display: flex; align-items: center; gap: 10px;
  padding: 7px 10px;
  background: var(--panel, rgba(255,255,255,.03));
  border: 1px solid var(--border, rgba(255,255,255,.07));
  border-radius: 7px;
}
.vc-lm-coven-av {
  width: 28px; height: 28px; border-radius: 50%;
  background: var(--chamber, #1a1424);
  border: 1px solid var(--border-bright, rgba(201,151,58,.3));
  display: flex; align-items: center; justify-content: center;
  font-family: var(--font-occult, 'Cinzel', serif);
  font-size: 12px; color: var(--gold, #c9973a);
  overflow: hidden; flex-shrink: 0;
}
.vc-lm-coven-av img { width: 100%; height: 100%; object-fit: cover; }
.vc-lm-coven-name {
  font-size: 13px; color: var(--text, #e8e4dc);
}

/* ── Action bar ── */
.vc-lm-action-bar {
  position: sticky; bottom: 0;
  display: flex; gap: 7px; flex-wrap: wrap;
  padding: 12px 18px 16px;
  background: linear-gradient(0deg, var(--bg, #0d0c14) 80%, transparent);
  border-top: 1px solid var(--border, rgba(255,255,255,.07));
}
.vc-lm-action-btn { flex-shrink: 0; }
.vc-lm-log-session-btn {
  margin-left: auto;
  border-color: var(--blood, #b35640) !important;
  color: var(--blood-bright, #e07040) !important;
}
.vc-lm-log-session-btn:hover {
  background: rgba(179,86,64,.15) !important;
  border-color: var(--blood-bright, #e07040) !important;
}
.vc-lm-action-btn.active {
  background: rgba(201,151,58,.14);
  border-color: rgba(201,151,58,.45);
  color: var(--gold, #c9973a);
}

/* ── Light theme ── */
:root[data-vc-theme="light_academia"] .vc-locker-modal-dialog,
:root[data-vc-theme="hedgerow"] .vc-locker-modal-dialog {
  border-color: rgba(0,0,0,.18);
}
:root[data-vc-theme="light_academia"] .vc-lm-copy-row,
:root[data-vc-theme="hedgerow"] .vc-lm-copy-row {
  background: rgba(0,0,0,.04);
  border-color: rgba(0,0,0,.1);
}



/* ═══════════════════════════════════════════════════════════════════════
   GAME DETAILS MODAL — center offset for sidebar
   ═══════════════════════════════════════════════════════════════════════ */
/* game modal — no sidebar offset, center across full viewport */
#vc-game-modal {
  padding-left: 0;
}

/* ═══════════════════════════════════════════════════════════════════════
   FRANCHISE PICKER  (.vc-gfp-*)
   ═══════════════════════════════════════════════════════════════════════ */
.vc-gfp-dialog {
  background: var(--chamber, #120f1e);
  border: 1px solid var(--border-bright, rgba(201,151,58,.3));
  border-radius: 14px;
  width: min(600px, 94vw);
  max-height: 82vh;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  box-shadow: 0 24px 64px rgba(0,0,0,.88);
}

.vc-gfp-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 10px;
  padding: 14px 16px 12px;
  border-bottom: 1px solid var(--border, rgba(255,255,255,.07));
  flex-shrink: 0;
}
.vc-gfp-active-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px;
  flex: 1;
  min-width: 0;
}
.vc-gfp-no-tags {
  font-family: var(--font-vhs, monospace);
  font-size: 9px;
  color: var(--dust, rgba(232,228,220,.3));
  letter-spacing: 1px;
}
.vc-gfp-clear-btn {
  background: none;
  border: none;
  color: var(--dust, rgba(232,228,220,.35));
  font-family: var(--font-vhs, monospace);
  font-size: 9px;
  letter-spacing: .5px;
  cursor: pointer;
  padding: 0;
  flex-shrink: 0;
  transition: color .14s;
}
.vc-gfp-clear-btn:hover { color: var(--fog, rgba(232,228,220,.6)); }
.vc-gfp-x {
  background: none;
  border: none;
  color: var(--fog, rgba(232,228,220,.4));
  font-size: 15px;
  cursor: pointer;
  padding: 0;
  line-height: 1;
  flex-shrink: 0;
  transition: color .14s;
}
.vc-gfp-x:hover { color: var(--text, #e8e4dc); }

.vc-gfp-scroll {
  flex: 1;
  overflow-y: auto;
  padding: 14px 16px;
  scrollbar-width: thin;
  scrollbar-color: var(--border) transparent;
}

.vc-gfp-pills {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-bottom: 14px;
}
.vc-gfp-pill {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 5px 12px;
  border-radius: 999px;
  border: 1px solid var(--border, rgba(255,255,255,.1));
  background: var(--deep, #0d0c14);
  color: var(--fog, rgba(232,228,220,.6));
  font-family: var(--font-vhs, monospace);
  font-size: 11px;
  cursor: pointer;
  transition: border-color .14s, color .14s, background .14s;
}
.vc-gfp-pill:hover {
  border-color: rgba(201,151,58,.4);
  color: var(--text, #e8e4dc);
}
.vc-gfp-pill--active {
  background: rgba(201,151,58,.13);
  border-color: rgba(201,151,58,.55);
  color: var(--gold, #c9973a);
}

.vc-gfp-add-section {
  border-top: 1px solid var(--border, rgba(255,255,255,.07));
  padding-top: 14px;
  margin-top: 4px;
}
.vc-gfp-section-label {
  font-family: var(--font-vhs, monospace);
  font-size: 8px;
  font-weight: 800;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: var(--dust, rgba(232,228,220,.3));
  margin-bottom: 10px;
}
.vc-gfp-add-row {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 10px;
}
.vc-gfp-icon-btn {
  width: 40px;
  height: 38px;
  flex-shrink: 0;
  background: var(--deep, #0d0c14);
  border: 1px solid var(--border-bright, rgba(201,151,58,.25));
  border-radius: 8px;
  font-size: 18px;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: border-color .14s, background .14s;
}
.vc-gfp-icon-btn:hover {
  border-color: var(--gold, #c9973a);
  background: rgba(201,151,58,.08);
}
.vc-gfp-icon-btn--right {
  width: 40px;
}
.vc-gfp-input {
  flex: 1;
  height: 38px;
  padding: 0 12px;
  background: var(--deep, #0d0c14);
  border: 1px solid var(--border, rgba(255,255,255,.1));
  border-radius: 8px;
  color: var(--text, #e8e4dc);
  font-family: var(--font-body, 'Crimson Text', serif);
  font-size: 13px;
  transition: border-color .14s;
}
.vc-gfp-input:focus {
  outline: none;
  border-color: rgba(201,151,58,.45);
}
.vc-gfp-input::placeholder { color: var(--dust, rgba(232,228,220,.3)); }
.vc-gfp-add-btn { width: 100%; }

/* ═══════════════════════════════════════════════════════════════════════
   ICON PICKER  (.vc-ip-*)
   ═══════════════════════════════════════════════════════════════════════ */
#vc-icon-picker-modal {
  position: fixed;
  inset: 0;
  z-index: 100000;
  opacity: 0;
  transition: opacity .18s ease;
  pointer-events: none;
}
#vc-icon-picker-modal.vc-ip-visible {
  opacity: 1;
  pointer-events: auto;
}

.vc-ip-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(0,0,0,.78);
  backdrop-filter: blur(8px);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 24px;
}

.vc-ip-dialog {
  background: var(--chamber, #120f1e);
  border: 1px solid var(--border, rgba(255,255,255,.1));
  border-radius: 14px;
  width: min(680px, 96vw);
  max-height: 88vh;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  box-shadow: 0 28px 80px rgba(0,0,0,.9);
}

.vc-ip-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  padding: 18px 22px 14px;
  border-bottom: 1px solid var(--border, rgba(255,255,255,.07));
  flex-shrink: 0;
}
.vc-ip-title {
  font-family: var(--font-occult, 'Cinzel', serif);
  font-size: 18px;
  font-weight: 700;
  color: var(--text, #e8e4dc);
  margin-bottom: 3px;
}
.vc-ip-sub {
  font-family: var(--font-vhs, monospace);
  font-size: 9px;
  letter-spacing: 1.5px;
  text-transform: uppercase;
  color: var(--dust, rgba(232,228,220,.35));
}
.vc-ip-close {
  background: none;
  border: none;
  color: var(--fog, rgba(232,228,220,.4));
  font-size: 18px;
  cursor: pointer;
  line-height: 1;
  transition: color .14s;
}
.vc-ip-close:hover { color: var(--text, #e8e4dc); }

.vc-ip-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  padding: 12px 22px;
  border-bottom: 1px solid var(--border, rgba(255,255,255,.07));
  flex-shrink: 0;
}
.vc-ip-tab {
  padding: 5px 14px;
  border-radius: 999px;
  border: 1px solid var(--border, rgba(255,255,255,.1));
  background: var(--deep, #0d0c14);
  color: var(--fog, rgba(232,228,220,.55));
  font-family: var(--font-vhs, monospace);
  font-size: 10px;
  letter-spacing: .5px;
  cursor: pointer;
  transition: border-color .14s, color .14s, background .14s;
}
.vc-ip-tab:hover {
  color: var(--text, #e8e4dc);
  border-color: rgba(201,151,58,.3);
}
.vc-ip-tab.active {
  background: rgba(201,151,58,.14);
  border-color: rgba(201,151,58,.55);
  color: var(--gold, #c9973a);
}

.vc-ip-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(56px, 1fr));
  gap: 8px;
  padding: 16px 22px;
  overflow-y: auto;
  flex: 1;
  scrollbar-width: thin;
  scrollbar-color: var(--border) transparent;
}
.vc-ip-icon {
  width: 100%;
  aspect-ratio: 1;
  background: var(--deep, #0d0c14);
  border: 1px solid var(--border, rgba(255,255,255,.08));
  border-radius: 10px;
  font-size: 24px;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: border-color .14s, background .14s, transform .1s;
}
.vc-ip-icon:hover {
  border-color: rgba(201,151,58,.5);
  background: rgba(201,151,58,.1);
  transform: scale(1.08);
}

.vc-ip-upload-section {
  padding: 14px 22px 18px;
  border-top: 1px solid var(--border, rgba(255,255,255,.07));
  flex-shrink: 0;
}
.vc-ip-upload-label {
  font-family: var(--font-vhs, monospace);
  font-size: 8px;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: var(--dust, rgba(232,228,220,.3));
  margin-bottom: 10px;
}
.vc-ip-upload-btn {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  padding: 8px 16px;
  background: var(--deep, #0d0c14);
  border: 1px dashed var(--border-bright, rgba(201,151,58,.3));
  border-radius: 8px;
  color: var(--fog, rgba(232,228,220,.55));
  font-family: var(--font-vhs, monospace);
  font-size: 10px;
  cursor: pointer;
  transition: border-color .14s, color .14s;
}
.vc-ip-upload-btn:hover {
  border-color: var(--gold, #c9973a);
  color: var(--text, #e8e4dc);
}

/* ═══════════════════════════════════════════════════════════════════════
   FRANCHISE MANAGER v2  (.vc-fm2-*)
   ═══════════════════════════════════════════════════════════════════════ */
#vc-franchise-manager-modal {
  position: fixed;
  inset: 0;
  z-index: 9500;
}

.vc-fm2-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(0,0,0,.82);
  backdrop-filter: blur(10px);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 24px;
}

.vc-fm2-dialog {
  background: var(--chamber, #120f1e);
  border: 1px solid rgba(255,255,255,.12);
  border-radius: 14px;
  width: min(780px, 96vw);
  max-height: 88vh;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  box-shadow: 0 28px 80px rgba(0,0,0,.88), inset 0 1px 0 rgba(255,255,255,.05);
  opacity: 0;
  transform: translateY(8px) scale(.98);
  transition: opacity .22s ease, transform .22s ease;
}
#vc-franchise-manager-modal.vc-fm2-visible .vc-fm2-dialog {
  opacity: 1;
  transform: translateY(0) scale(1);
}
#vc-franchise-manager-modal.vc-fm2-out .vc-fm2-dialog {
  opacity: 0;
  transform: translateY(8px) scale(.98);
}

.vc-fm2-topline {
  height: 2px;
  flex-shrink: 0;
  background: linear-gradient(90deg, transparent, rgba(160,100,240,.7) 40%, var(--gold, #c9973a) 75%, transparent);
}

.vc-fm2-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  padding: 16px 24px 14px;
  border-bottom: 1px solid rgba(255,255,255,.06);
  flex-shrink: 0;
}
.vc-fm2-eyebrow {
  font-family: var(--font-occult, 'Cinzel', serif);
  font-size: 18px;
  font-weight: 700;
  color: var(--text, #e8e4dc);
  margin-bottom: 3px;
}
.vc-fm2-subtitle {
  font-family: var(--font-vhs, monospace);
  font-size: 9px;
  letter-spacing: 1.5px;
  color: var(--dust, rgba(232,228,220,.35));
}
.vc-fm2-close {
  width: 30px;
  height: 30px;
  border-radius: 6px;
  border: 1px solid rgba(255,255,255,.1);
  background: rgba(255,255,255,.04);
  color: var(--fog, rgba(232,228,220,.4));
  font-size: 14px;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: border-color .14s, color .14s;
}
.vc-fm2-close:hover { border-color: rgba(255,100,100,.4); color: #e07070; }

.vc-fm2-body {
  flex: 1;
  overflow-y: auto;
  padding: 22px 24px 28px;
  scrollbar-width: thin;
  scrollbar-color: var(--border) transparent;
}

.vc-fm2-section-label {
  font-family: var(--font-vhs, monospace);
  font-size: 8px;
  font-weight: 800;
  letter-spacing: 2.5px;
  text-transform: uppercase;
  color: var(--dust, rgba(232,228,220,.3));
  margin-bottom: 12px;
}

/* Custom badge chips */
.vc-fm2-custom-list {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 16px;
}
.vc-fm2-badge-row {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  padding: 6px 10px 6px 12px;
  background: var(--deep, #0d0c14);
  border: 1px solid var(--border, rgba(255,255,255,.1));
  border-radius: 999px;
  transition: border-color .14s;
}
.vc-fm2-badge-row:hover { border-color: rgba(201,151,58,.3); }
.vc-fm2-badge-icon { font-size: 15px; line-height: 1; }
.vc-fm2-badge-label {
  font-family: var(--font-vhs, monospace);
  font-size: 11px;
  color: var(--text, #e8e4dc);
}
.vc-fm2-badge-actions { display: flex; gap: 4px; }
.vc-fm2-icon-action {
  width: 22px;
  height: 22px;
  border-radius: 4px;
  border: 1px solid transparent;
  background: rgba(255,255,255,.04);
  color: var(--fog, rgba(232,228,220,.4));
  font-size: 11px;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background .13s, border-color .13s, color .13s;
}
.vc-fm2-icon-action:hover {
  background: rgba(255,255,255,.1);
  border-color: rgba(255,255,255,.18);
  color: var(--text, #e8e4dc);
}
.vc-fm2-icon-action--del:hover {
  background: rgba(192,57,43,.2);
  border-color: rgba(192,57,43,.45);
  color: #ff8080;
}

/* Create/edit form */
.vc-fm2-create-row {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 10px;
}
.vc-fm2-icon-btn {
  width: 48px;
  height: 44px;
  flex-shrink: 0;
  background: var(--deep, #0d0c14);
  border: 1px solid var(--border-bright, rgba(201,151,58,.28));
  border-radius: 10px;
  font-size: 20px;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: border-color .14s, background .14s;
}
.vc-fm2-icon-btn:hover {
  border-color: var(--gold, #c9973a);
  background: rgba(201,151,58,.08);
}
.vc-fm2-input {
  flex: 1;
  height: 44px;
  padding: 0 14px;
  background: var(--deep, #0d0c14);
  border: 1px solid var(--border, rgba(255,255,255,.1));
  border-radius: 10px;
  color: var(--text, #e8e4dc);
  font-family: var(--font-body, 'Crimson Text', serif);
  font-size: 14px;
  transition: border-color .14s;
}
.vc-fm2-input:focus {
  outline: none;
  border-color: rgba(201,151,58,.45);
}
.vc-fm2-input::placeholder { color: var(--dust, rgba(232,228,220,.3)); }
.vc-fm2-add-btn {
  width: 100%;
  margin-bottom: 4px;
}

/* Edit form inline card */
.vc-fm2-edit-form {
  background: rgba(201,151,58,.06);
  border: 1px solid rgba(201,151,58,.22);
  border-radius: 10px;
  padding: 14px;
  margin-bottom: 16px;
}

/* Built-in badges */
.vc-fm2-builtin-list {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
}

/* Cleanup */
.vc-fm2-cleanup-desc {
  font-size: 13px;
  color: var(--fog, rgba(232,228,220,.5));
  margin-bottom: 12px;
  line-height: 1.5;
}
.vc-fm2-cleanup-btn {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 10px 18px;
  background: rgba(179,86,64,.08);
  border: 1px solid rgba(179,86,64,.4);
  border-radius: 8px;
  color: var(--blood-bright, #e07040);
  font-family: var(--font-vhs, monospace);
  font-size: 10px;
  font-weight: 800;
  letter-spacing: 2px;
  text-transform: uppercase;
  cursor: pointer;
  transition: background .14s, border-color .14s;
  width: 100%;
  justify-content: center;
}
.vc-fm2-cleanup-btn:hover {
  background: rgba(179,86,64,.18);
  border-color: rgba(179,86,64,.7);
}

.vc-fm2-empty {
  font-size: 12px;
  color: var(--dust, rgba(232,228,220,.3));
  padding: 6px 0;
}



/* platform glow — see FX PANEL section below */


/* ═══════════════════════════════════════════════════════════════════════
   FX PANEL + PLATFORM GLOW SYSTEM
   ═══════════════════════════════════════════════════════════════════════ */

/* Gold FX button */
#lib-fx-btn {
  border-color: var(--gold-dim);
  background: rgba(201,151,58,.1);
  color: var(--gold);
  transition: background .15s, border-color .15s, box-shadow .15s;
}
#lib-fx-btn:hover {
  background: rgba(201,151,58,.2);
  border-color: var(--gold);
  box-shadow: 0 0 14px var(--gold-glow, rgba(201,151,58,.25));
}
#lib-fx-btn.active {
  background: rgba(201,151,58,.18);
  border-color: var(--gold);
}

/* Panel */
.vc-lib-fx-panel {
  position: fixed;
  z-index: 9999;
  width: 290px;
  background: color-mix(in srgb, var(--void, #0d0b14) 96%, transparent);
  border: 1px solid var(--gold-dim, rgba(201,151,58,.35));
  border-radius: 14px;
  box-shadow: 0 12px 50px rgba(0,0,0,.75), 0 0 24px rgba(201,151,58,.07);
  overflow: hidden;
  animation: vcFxPanelIn .18s cubic-bezier(.22,.68,0,1.2) forwards;
}
.vc-lib-fx-panel.vc-lfx-closing {
  animation: vcFxPanelOut .16s ease forwards;
}
@keyframes vcFxPanelIn {
  from { opacity:0; transform: translateY(-8px) scale(.96); }
  to   { opacity:1; transform: translateY(0)    scale(1); }
}
@keyframes vcFxPanelOut {
  from { opacity:1; transform: translateY(0)    scale(1); }
  to   { opacity:0; transform: translateY(-6px) scale(.97); }
}

.vc-lfx-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 13px 16px 11px;
  border-bottom: 1px solid rgba(201,151,58,.15);
  background: rgba(201,151,58,.04);
}
.vc-lfx-title {
  font-family: var(--font-vhs, monospace);
  font-size: 10px;
  letter-spacing: 2.5px;
  text-transform: uppercase;
  color: var(--gold);
}
.vc-lfx-close {
  background: none; border: none; cursor: pointer;
  color: var(--fog, rgba(255,255,255,.35));
  font-size: 12px; padding: 2px 4px; line-height: 1;
  border-radius: 4px;
  transition: color .15s, background .15s;
}
.vc-lfx-close:hover { color: var(--text, #e8e4dc); background: rgba(255,255,255,.07); }

.vc-lfx-body { padding: 14px 16px 18px; display: flex; flex-direction: column; gap: 2px; }

.vc-lfx-section-label {
  font-family: var(--font-vhs, monospace);
  font-size: 8.5px;
  letter-spacing: 2px;
  text-transform: uppercase;
  color: var(--dust, rgba(255,255,255,.3));
  margin-bottom: 8px;
}

/* Per-platform block */
.vc-lfx-plat-block {
  border: 1px solid rgba(255,255,255,.05);
  border-radius: 8px;
  padding: 8px 10px;
  margin-bottom: 6px;
  background: rgba(255,255,255,.02);
  transition: border-color .2s, background .2s;
}
.vc-lfx-plat-block:hover { background: rgba(255,255,255,.035); }

.vc-lfx-plat-header {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 8px;
}
.vc-lfx-plat-dot {
  width: 8px; height: 8px;
  border-radius: 50%;
  flex-shrink: 0;
  transition: opacity .2s;
}
.vc-lfx-plat-name {
  flex: 1;
  font-size: 12px;
  font-weight: 600;
  color: var(--text, #e8e4dc);
}

/* Toggle switch */
.vc-lfx-toggle { position: relative; display: inline-block; width: 36px; height: 20px; flex-shrink: 0; }
.vc-lfx-toggle input { opacity:0; width:0; height:0; position:absolute; }
.vc-lfx-toggle-track {
  position: absolute; inset: 0;
  background: rgba(255,255,255,.08);
  border: 1px solid rgba(255,255,255,.1);
  border-radius: 20px;
  cursor: pointer;
  transition: background .2s, border-color .2s;
}
.vc-lfx-toggle-track::after {
  content: '';
  position: absolute;
  left: 3px; top: 50%; transform: translateY(-50%);
  width: 12px; height: 12px;
  border-radius: 50%;
  background: rgba(255,255,255,.35);
  transition: left .2s cubic-bezier(.34,1.56,.64,1), background .2s;
}
.vc-lfx-toggle input:checked + .vc-lfx-toggle-track {
  background: rgba(201,151,58,.22);
  border-color: var(--gold-dim, rgba(201,151,58,.45));
}
.vc-lfx-toggle input:checked + .vc-lfx-toggle-track::after {
  left: 19px;
  background: var(--gold, #c9973a);
}

/* Strength slider row */
.vc-lfx-plat-slider-row {
  display: flex;
  align-items: center;
  gap: 8px;
  transition: opacity .25s ease;
}
.vc-lfx-plat-slider-row.vc-lfx-disabled {
  opacity: .3;
  pointer-events: none;
}

.vc-lfx-slider {
  flex: 1;
  -webkit-appearance: none;
  height: 3px;
  border-radius: 3px;
  background: rgba(255,255,255,.1);
  outline: none;
  cursor: pointer;
}
.vc-lfx-slider::-webkit-slider-thumb {
  -webkit-appearance: none;
  width: 13px; height: 13px;
  border-radius: 50%;
  background: var(--thumb-color, var(--gold, #c9973a));
  border: 2px solid rgba(0,0,0,.5);
  cursor: pointer;
  box-shadow: 0 0 6px var(--thumb-color, rgba(201,151,58,.5));
  transition: transform .1s;
}
.vc-lfx-slider::-webkit-slider-thumb:hover { transform: scale(1.2); }

.vc-lfx-slider-val {
  font-family: var(--font-vhs, monospace);
  font-size: 9px;
  color: var(--fog, rgba(255,255,255,.4));
  min-width: 32px;
  text-align: right;
}

/* ── Keyframes ── */

/* Breathe: gently pulses the glow opacity */
@keyframes vcPlatBreathe {
  0%   { opacity: var(--plat-breathe-lo); }
  50%  { opacity: var(--plat-breathe-hi); }
  100% { opacity: var(--plat-breathe-lo); }
}

/* Shimmer: a bright diagonal streak sweeps across on hover */
@keyframes vcPlatShimmer {
  0%   { transform: translateX(-130%) skewX(-12deg); opacity: 0; }
  15%  { opacity: 1; }
  85%  { opacity: 1; }
  100% { transform: translateX(230%)  skewX(-12deg); opacity: 0; }
}

/* ── Per-platform CSS vars ── */
:root {
  --vc-plat-str-ps: 1;
  --vc-plat-str-xb: 1;
  --vc-plat-str-ni: 1;
  --vc-plat-str-pc: 1;
}

/* ── Base glow pseudo (::before) — breathe animation at idle ── */
.vc-lib-lcard[data-plat] .locker-card-poster::before {
  content: '';
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  border-radius: inherit;
  /* breathe vars set per-platform below */
  animation: vcPlatBreathe 4s ease-in-out infinite;
}

/* Per-platform glows + breathe ranges */
.vc-lib-lcard[data-plat="playstation"] .locker-card-poster::before {
  background: radial-gradient(ellipse 80% 55% at 85% 0%,
    rgba(0,112,232,.28) 0%, rgba(0,60,180,.10) 50%, transparent 100%);
  --plat-breathe-lo: calc(0.6 * var(--vc-plat-str-ps));
  --plat-breathe-hi: calc(1.1 * var(--vc-plat-str-ps));
  animation-duration: 4.2s;
}
.vc-lib-lcard[data-plat="xbox"] .locker-card-poster::before {
  background: radial-gradient(ellipse 80% 55% at 85% 0%,
    rgba(16,180,40,.28) 0%, rgba(10,120,20,.10) 50%, transparent 100%);
  --plat-breathe-lo: calc(0.6 * var(--vc-plat-str-xb));
  --plat-breathe-hi: calc(1.1 * var(--vc-plat-str-xb));
  animation-duration: 3.8s;
}
.vc-lib-lcard[data-plat="nintendo"] .locker-card-poster::before {
  background: radial-gradient(ellipse 80% 55% at 85% 0%,
    rgba(228,0,15,.28) 0%, rgba(160,0,10,.10) 50%, transparent 100%);
  --plat-breathe-lo: calc(0.6 * var(--vc-plat-str-ni));
  --plat-breathe-hi: calc(1.1 * var(--vc-plat-str-ni));
  animation-duration: 4.5s;
}
.vc-lib-lcard[data-plat="pc"] .locker-card-poster::before {
  background: radial-gradient(ellipse 80% 55% at 85% 0%,
    rgba(200,210,230,.22) 0%, rgba(150,160,180,.08) 50%, transparent 100%);
  --plat-breathe-lo: calc(0.6 * var(--vc-plat-str-pc));
  --plat-breathe-hi: calc(1.1 * var(--vc-plat-str-pc));
  animation-duration: 5s;
}

/* ── Shimmer sweep on hover (lives on .locker-card::after via overflow:hidden clip) ── */
.vc-lib-lcard[data-plat] {
  overflow: hidden; /* clip the shimmer */
  position: relative;
}
.vc-lib-lcard[data-plat]::after {
  content: '';
  position: absolute;
  inset: 0;
  z-index: 3;
  pointer-events: none;
  /* shimmer streak — narrow bright band */
  background: linear-gradient(
    105deg,
    transparent 40%,
    rgba(255,255,255,0) 42%,
    rgba(255,255,255,.13) 50%,
    rgba(255,255,255,0) 58%,
    transparent 60%
  );
  transform: translateX(-130%) skewX(-12deg);
  opacity: 0;
}
/* Colour-tint the shimmer per platform */
.vc-lib-lcard[data-plat="playstation"]::after {
  background: linear-gradient(105deg, transparent 35%,
    rgba(0,112,232,0) 40%, rgba(100,180,255,.22) 50%,
    rgba(0,112,232,0) 60%, transparent 65%);
}
.vc-lib-lcard[data-plat="xbox"]::after {
  background: linear-gradient(105deg, transparent 35%,
    rgba(16,180,40,0) 40%, rgba(100,255,130,.22) 50%,
    rgba(16,180,40,0) 60%, transparent 65%);
}
.vc-lib-lcard[data-plat="nintendo"]::after {
  background: linear-gradient(105deg, transparent 35%,
    rgba(228,0,15,0) 40%, rgba(255,120,120,.22) 50%,
    rgba(228,0,15,0) 60%, transparent 65%);
}
.vc-lib-lcard[data-plat="pc"]::after {
  background: linear-gradient(105deg, transparent 35%,
    rgba(200,210,230,0) 40%, rgba(220,230,255,.20) 50%,
    rgba(200,210,230,0) 60%, transparent 65%);
}
/* Trigger shimmer on hover */
.vc-lib-lcard[data-plat]:hover::after {
  animation: vcPlatShimmer .7s ease forwards;
}
/* Strengthen breathe glow on hover */
.vc-lib-lcard[data-plat="playstation"]:hover .locker-card-poster::before { --plat-breathe-lo: calc(1.0 * var(--vc-plat-str-ps)); --plat-breathe-hi: calc(1.6 * var(--vc-plat-str-ps)); }
.vc-lib-lcard[data-plat="xbox"]:hover        .locker-card-poster::before { --plat-breathe-lo: calc(1.0 * var(--vc-plat-str-xb)); --plat-breathe-hi: calc(1.6 * var(--vc-plat-str-xb)); }
.vc-lib-lcard[data-plat="nintendo"]:hover    .locker-card-poster::before { --plat-breathe-lo: calc(1.0 * var(--vc-plat-str-ni)); --plat-breathe-hi: calc(1.6 * var(--vc-plat-str-ni)); }
.vc-lib-lcard[data-plat="pc"]:hover          .locker-card-poster::before { --plat-breathe-lo: calc(1.0 * var(--vc-plat-str-pc)); --plat-breathe-hi: calc(1.6 * var(--vc-plat-str-pc)); }

/* ── Hover border tints ── */
.vc-lib-lcard[data-plat="playstation"]:hover { border-color: rgba(0,112,232,.55)   !important; }
.vc-lib-lcard[data-plat="xbox"]:hover        { border-color: rgba(16,180,40,.55)   !important; }
.vc-lib-lcard[data-plat="nintendo"]:hover    { border-color: rgba(228,0,15,.55)    !important; }
.vc-lib-lcard[data-plat="pc"]:hover          { border-color: rgba(200,210,230,.45) !important; }

/* ── Per-platform off overrides ── */
body.vc-fx-plat-ps-off .vc-lib-lcard[data-plat="playstation"] .locker-card-poster::before,
body.vc-fx-plat-ps-off .vc-lib-lcard[data-plat="playstation"]::after { opacity: 0 !important; animation: none !important; }
body.vc-fx-plat-xb-off .vc-lib-lcard[data-plat="xbox"] .locker-card-poster::before,
body.vc-fx-plat-xb-off .vc-lib-lcard[data-plat="xbox"]::after { opacity: 0 !important; animation: none !important; }
body.vc-fx-plat-ni-off .vc-lib-lcard[data-plat="nintendo"] .locker-card-poster::before,
body.vc-fx-plat-ni-off .vc-lib-lcard[data-plat="nintendo"]::after { opacity: 0 !important; animation: none !important; }
body.vc-fx-plat-pc-off .vc-lib-lcard[data-plat="pc"] .locker-card-poster::before,
body.vc-fx-plat-pc-off .vc-lib-lcard[data-plat="pc"]::after { opacity: 0 !important; animation: none !important; }
/* restore default border when off */
body.vc-fx-plat-ps-off .vc-lib-lcard[data-plat="playstation"]:hover { border-color: rgba(201,151,58,.55) !important; }
body.vc-fx-plat-xb-off .vc-lib-lcard[data-plat="xbox"]:hover        { border-color: rgba(201,151,58,.55) !important; }
body.vc-fx-plat-ni-off .vc-lib-lcard[data-plat="nintendo"]:hover    { border-color: rgba(201,151,58,.55) !important; }
body.vc-fx-plat-pc-off .vc-lib-lcard[data-plat="pc"]:hover          { border-color: rgba(201,151,58,.55) !important; }



/* ═══════════════════════════════════════════════════════════════════════
   GAME TAGS — Replaying, Lapsed, Cult Pick
   ═══════════════════════════════════════════════════════════════════════ */
.vc-gametag-badge {
  display: inline-flex; align-items: center; gap: 4px;
  font-family: var(--font-vhs, monospace);
  font-size: 7px; letter-spacing: 1px; text-transform: uppercase;
  padding: 2px 6px; border-radius: 3px;
  background: rgba(94,206,200,.12);
  border: 1px solid rgba(94,206,200,.28);
  color: #5ecec8;
  margin-right: 3px; margin-bottom: 2px;
  vertical-align: middle;
}
.vc-gametag-badge .vc-badge-remove {
  font-size: 8px; line-height: 1; opacity: .6; cursor: pointer;
  background: none; border: none; padding: 0; color: inherit;
}
.vc-gametag-badge .vc-badge-remove:hover { opacity: 1; }

.vc-lm-gametags-row { margin: 4px 0 6px; min-height: 4px; }

/* Tag popover */
.vc-gametag-popover {
  position: absolute; z-index: 9999;
  background: var(--panel, #111); border: 1px solid var(--border);
  border-radius: 8px; padding: 10px; min-width: 200px;
  box-shadow: 0 8px 32px rgba(0,0,0,.5);
  animation: vcFxPanelIn .18s cubic-bezier(.22,.68,0,1.2) both;
}
.vc-gtp-title {
  font-family: var(--font-vhs, monospace); font-size: 8px;
  letter-spacing: 2px; text-transform: uppercase;
  color: var(--dust); margin-bottom: 8px;
}
.vc-gtp-row {
  display: flex; align-items: center; gap: 8px;
  width: 100%; padding: 7px 8px; border-radius: 5px;
  cursor: pointer; border: 1px solid transparent;
  background: none; text-align: left; margin-bottom: 3px;
  transition: background .12s, border-color .12s;
}
.vc-gtp-row:hover { background: rgba(94,206,200,.08); border-color: rgba(94,206,200,.2); }
.vc-gtp-row.active { background: rgba(94,206,200,.12); border-color: rgba(94,206,200,.3); }
.vc-gtp-icon { font-size: 14px; }
.vc-gtp-label { font-family: var(--font-occult, serif); font-size: 12px; color: var(--static); flex: 1; }
.vc-gtp-cult-votes { font-family: var(--font-vhs, monospace); font-size: 8px; color: #5ecec8; }
.vc-gtp-check { color: #5ecec8; font-size: 12px; }

/* Tag filter pills in library stats strip */
.vc-lib-tag-pills {
  display: flex; align-items: center; gap: 6px;
  padding: 6px 0 2px; flex-wrap: wrap;
}
.vc-lib-tag-pill-label {
  font-family: var(--font-vhs, monospace); font-size: 8px;
  letter-spacing: 1px; color: var(--dust); text-transform: uppercase;
}
.vc-lib-tag-pill {
  display: inline-flex; align-items: center; gap: 4px;
  font-family: var(--font-vhs, monospace); font-size: 8px;
  letter-spacing: 1px; text-transform: uppercase;
  padding: 3px 8px; border-radius: 20px; cursor: pointer;
  border: 1px solid rgba(94,206,200,.25);
  background: none; color: #5ecec8;
  transition: background .12s, border-color .12s;
}
.vc-lib-tag-pill span { opacity: .7; }
.vc-lib-tag-pill:hover { background: rgba(94,206,200,.08); }
.vc-lib-tag-pill.active { background: rgba(94,206,200,.15); border-color: rgba(94,206,200,.5); }

/* ═══════════════════════════════════════════════════════════════════════
   RECOMMENDATIONS
   ═══════════════════════════════════════════════════════════════════════ */
/* Sidebar nav badge */
.vc-nav-rec-badge {
  display: inline-flex; align-items: center; justify-content: center;
  width: 16px; height: 16px; border-radius: 50%;
  background: var(--gold, #c9973a); color: #000;
  font-family: var(--font-vhs, monospace); font-size: 8px; font-weight: 700;
  margin-left: 6px; vertical-align: middle; flex-shrink: 0;
}
/* Coven hub tab badge */
.vc-hub-tab-badge {
  display: inline-flex; align-items: center; justify-content: center;
  width: 14px; height: 14px; border-radius: 50%;
  background: var(--gold, #c9973a); color: #000;
  font-size: 8px; font-weight: 700;
  margin-left: 5px; vertical-align: middle;
}
/* Recs page */
.vc-recs-page { padding: 4px 0; }
.vc-recs-send-btn { margin-bottom: 16px; }
.vc-recs-section-label {
  font-family: var(--font-vhs, monospace); font-size: 8px;
  letter-spacing: 2px; text-transform: uppercase;
  color: var(--dust); margin-bottom: 10px; padding-bottom: 4px;
  border-bottom: 1px solid var(--border);
}
.vc-recs-list { display: flex; flex-direction: column; gap: 10px; }
.vc-rec-row {
  display: flex; gap: 12px; align-items: flex-start;
  padding: 10px; border-radius: 8px;
  border: 1px solid var(--border);
  background: rgba(255,255,255,.02);
  cursor: pointer; position: relative;
  transition: background .12s;
}
.vc-rec-row:hover { background: rgba(255,255,255,.04); }
.vc-rec-row--new {
  border-color: rgba(201,151,58,.3);
  background: rgba(201,151,58,.04);
}
.vc-rec-row--sent { opacity: .75; cursor: default; }
.vc-rec-cover { width: 48px; flex-shrink: 0; }
.vc-rec-cover img { width: 100%; aspect-ratio: 3/4; object-fit: cover; border-radius: 4px; display: block; }
.vc-rec-cover-empty {
  width: 100%; aspect-ratio: 3/4; background: var(--chamber, #111);
  border-radius: 4px; display: flex; align-items: center; justify-content: center; font-size: 18px;
}
.vc-rec-body { flex: 1; min-width: 0; }
.vc-rec-sender {
  font-family: var(--font-vhs, monospace); font-size: 8px;
  color: var(--dust); letter-spacing: 1px; text-transform: uppercase; margin-bottom: 4px;
}
.vc-rec-sender strong { color: var(--static); font-weight: 700; }
.vc-rec-avatar { font-size: 14px; }
.vc-rec-game {
  font-family: var(--font-occult, serif); font-size: 13px;
  color: var(--static); margin-bottom: 5px;
}
.vc-rec-message {
  font-family: var(--font-grimoire, serif); font-size: 11px;
  font-style: italic; color: var(--dust); margin-bottom: 7px;
}
.vc-rec-actions { display: flex; gap: 6px; flex-wrap: wrap; }
.vc-rec-new-pip {
  position: absolute; top: 8px; right: 8px;
  font-family: var(--font-vhs, monospace); font-size: 7px; letter-spacing: 1px;
  color: var(--gold); border: 1px solid rgba(201,151,58,.4);
  padding: 1px 5px; border-radius: 2px; background: rgba(201,151,58,.08);
}

/* Send rec modal game result hover */
.vc-srm-result:hover { background: rgba(255,255,255,.05) !important; }

/* ── Coven Locker panel ─────────────────────────────────────────── */
.vc-cl-status-filters {
  display: flex; flex-wrap: wrap; gap: 5px;
  margin: 6px 0 16px;
}
.vc-cl-status-pill {
  padding: 4px 10px; border-radius: 14px; cursor: pointer;
  font-family: var(--font-vhs, monospace); font-size: 9px; font-weight: 700;
  letter-spacing: .5px; text-transform: uppercase;
  background: rgba(255,255,255,.04); border: 1px solid rgba(255,255,255,.09);
  color: rgba(255,255,255,.4);
  transition: all .15s;
}
.vc-cl-status-pill:hover { border-color: rgba(201,151,58,.35); color: rgba(255,255,255,.7); }
.vc-cl-status-pill.active {
  background: rgba(201,151,58,.12); border-color: rgba(201,151,58,.45);
  color: var(--gold, #c9973a);
}
.vc-cl-grid {
  display: flex; flex-wrap: wrap; gap: 8px;
  margin-top: 4px;
}
.vc-cl-card {
  width: 90px; cursor: pointer;
  border-radius: 5px; overflow: hidden;
  border: 1px solid rgba(255,255,255,.07);
  background: rgba(255,255,255,.03);
  transition: transform .15s, border-color .15s;
  position: relative;
}
.vc-cl-card:hover { transform: translateY(-2px); border-color: rgba(160,100,240,.4); }
.vc-cl-card img { width: 90px; height: 120px; object-fit: cover; display: block; }
.vc-cl-cover-empty { width: 90px; height: 120px; display: flex; align-items: center; justify-content: center; font-size: 22px; color: rgba(255,255,255,.15); }
.vc-cl-card-footer {
  position: absolute; bottom: 20px; left: 0; right: 0;
  display: flex; align-items: center; justify-content: space-between;
  padding: 2px 4px;
  background: rgba(0,0,0,.55);
}
.vc-cl-card-av { font-size: 11px; line-height: 1; }
.vc-cl-card-status { font-size: 9px; }
.vc-cl-card-name {
  font-size: 8px; font-family: var(--font-vhs, monospace);
  color: rgba(255,255,255,.4); padding: 3px 5px;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.vc-cl-count {
  margin-top: 12px; font-family: var(--font-vhs, monospace);
  font-size: 9px; color: rgba(255,255,255,.25); letter-spacing: 1px;
}

/* ══════════════════════════════════════════════════════════════════
   WITNESS SYSTEM CSS — Tiers 1-3 + Token Queue
   ══════════════════════════════════════════════════════════════════ */

/* ── Witness Prompt (post-witness floating panel) ─────────────── */
.vc-witness-prompt {
  position: fixed; bottom: -220px; right: 20px; width: 340px;
  background: #1a1020; border: 1px solid rgba(160,100,240,.5);
  border-radius: 10px; padding: 16px;
  box-shadow: 0 8px 32px rgba(0,0,0,.7), 0 0 0 1px rgba(160,100,240,.15);
  z-index: 9999; transition: bottom .35s cubic-bezier(.2,.8,.3,1);
}
.vc-witness-prompt.visible { bottom: 20px; }
.vc-wp-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 12px; }
.vc-wp-title { font-size: 13px; color: rgba(255,255,255,.9); }
.vc-wp-title em { color: #c084fc; font-style: normal; }
.vc-wp-close { background: none; border: none; color: rgba(255,255,255,.4); cursor: pointer; font-size: 14px; padding: 2px 5px; }
.vc-wp-close:hover { color: rgba(255,255,255,.8); }
.vc-wp-score-row { display: flex; align-items: center; gap: 6px; margin-bottom: 10px; }
.vc-wp-score-label { font-size: 11px; color: rgba(255,255,255,.5); margin-right: 4px; }
.vc-wp-star {
  background: none; border: none; cursor: pointer;
  font-size: 22px; color: rgba(255,255,255,.2); padding: 0 2px;
  transition: color .1s, transform .1s;
}
.vc-wp-star.lit, .vc-wp-star:hover { color: rgba(255,200,50,.7); }
.vc-wp-star.active { color: #ffc832; transform: scale(1.1); }
.vc-wp-note-row { margin-bottom: 12px; }
.vc-wp-note {
  width: 100%; background: rgba(255,255,255,.06); border: 1px solid rgba(255,255,255,.1);
  border-radius: 6px; color: #e2d8f0; font-size: 12px; padding: 7px 10px;
  outline: none; box-sizing: border-box;
}
.vc-wp-note:focus { border-color: rgba(160,100,240,.6); }
.vc-wp-actions { display: flex; justify-content: flex-end; gap: 8px; }

/* ── Modal Witness Zone ────────────────────────────────────────── */
.vc-modal-witness-zone {
  margin: 12px 0 0 0;
  display: flex; flex-direction: column; gap: 12px;
}

/* ── Witness Presence Row ──────────────────────────────────────── */
.vc-modal-witnesses {
  background: rgba(120,80,200,.08); border: 1px solid rgba(120,80,200,.2);
  border-radius: 8px; padding: 10px 14px;
}
.vc-mw-label { font-size: 11px; color: rgba(160,120,220,.8); text-transform: uppercase; letter-spacing: .06em; margin-bottom: 8px; }
.vc-mw-members { display: flex; flex-wrap: wrap; gap: 10px; }
.vc-mw-member { display: flex; flex-direction: column; align-items: center; gap: 3px; cursor: default; }
.vc-mw-avatar { width: 28px; height: 28px; border-radius: 5px; overflow: hidden; background: rgba(160,100,240,.2); font-size: 14px; display: flex; align-items: center; justify-content: center; }
.vc-mw-name { font-size: 10px; color: rgba(255,255,255,.6); text-align: center; max-width: 60px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.vc-mw-score { font-size: 10px; color: #ffc832; }
.vc-mw-note { font-size: 10px; color: rgba(255,255,255,.45); font-style: italic; max-width: 80px; text-align: center; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* ── Session card in activity feed ────────────────────────────── */
.vc-act-row--session { border-left: 2px solid rgba(120,80,200,.5); background: rgba(120,80,200,.06); }
.vc-act-session-witnesses {
  display: flex; align-items: center; gap: 5px; margin-top: 4px;
  font-size: 11px; color: rgba(180,140,255,.8);
}
.vc-sess-eye { font-size: 12px; }
.vc-sess-wit-av { width: 20px; height: 20px; border-radius: 3px; overflow: hidden; display: inline-flex; align-items: center; justify-content: center; background: rgba(120,80,200,.2); font-size: 11px; vertical-align: middle; }
.vc-sess-wit-label { font-size: 11px; color: rgba(180,140,255,.7); }

/* ── Witness Panel — Most Watched shelf ───────────────────────── */
.vc-wit-most-shelf { margin-bottom: 18px; }
.vc-wit-shelf-label { font-size: 11px; text-transform: uppercase; letter-spacing: .08em; color: rgba(160,120,220,.8); margin-bottom: 10px; }
.vc-wit-shelf-row { display: flex; gap: 10px; overflow-x: auto; padding-bottom: 6px; }
.vc-wit-shelf-row::-webkit-scrollbar { height: 3px; }
.vc-wit-shelf-row::-webkit-scrollbar-thumb { background: rgba(160,100,240,.3); border-radius: 3px; }
.vc-wit-shared-card {
  flex-shrink: 0; width: 80px; cursor: pointer; border-radius: 6px; overflow: hidden;
  border: 1px solid rgba(160,100,240,.25); background: rgba(255,255,255,.03);
  transition: transform .15s, border-color .15s; position: relative;
}
.vc-wit-shared-card:hover { transform: translateY(-3px); border-color: rgba(160,100,240,.6); }
.vc-wit-shared-card img { width: 80px; height: 107px; object-fit: cover; display: block; }
.vc-wit-cover-empty { width: 80px; height: 107px; display: flex; align-items: center; justify-content: center; font-size: 20px; color: rgba(255,255,255,.15); }
.vc-wit-shared-viewers {
  position: absolute; bottom: 18px; left: 0; right: 0; text-align: center;
  background: rgba(0,0,0,.65); font-size: 9px; color: rgba(180,140,255,.9); padding: 2px;
}
.vc-wit-card-name { font-size: 9px; color: rgba(255,255,255,.55); padding: 3px 4px 4px; line-height: 1.2; overflow: hidden; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; }

/* ── Witness Leaderboard ───────────────────────────────────────── */
.vc-wit-lb { margin-bottom: 22px; }
.vc-wit-lb-title { font-size: 13px; font-weight: 600; color: rgba(200,170,255,.9); margin-bottom: 10px; }
.vc-wit-lb-rows { display: flex; flex-direction: column; gap: 6px; }
.vc-wit-lb-row {
  display: flex; align-items: center; gap: 10px; padding: 8px 12px;
  background: rgba(255,255,255,.03); border: 1px solid rgba(255,255,255,.06);
  border-radius: 7px; cursor: default;
}
.vc-wit-lb-row.vc-lb-row--me { border-color: rgba(160,100,240,.35); background: rgba(160,100,240,.07); }
.vc-wit-lb-medal { font-size: 18px; width: 22px; text-align: center; flex-shrink: 0; }
.vc-lb-rank-num { font-size: 12px; color: rgba(255,255,255,.4); }
.vc-wit-lb-av { width: 24px; height: 24px; border-radius: 4px; overflow: hidden; background: rgba(160,100,240,.2); font-size: 12px; display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
.vc-wit-lb-info { flex: 1; display: flex; flex-direction: column; gap: 1px; }
.vc-wit-lb-name { font-size: 12px; color: rgba(255,255,255,.85); }
.vc-wit-rank-title { font-size: 10px; color: rgba(160,120,220,.75); font-style: italic; }
.vc-wit-lb-stats { display: flex; gap: 10px; font-size: 11px; color: rgba(255,255,255,.5); }
.vc-wit-lb-stats span { display: flex; align-items: center; gap: 2px; }

/* ── Per-member sections ───────────────────────────────────────── */
.vc-wit-members { display: flex; flex-direction: column; gap: 20px; }
.vc-wit-member-section { }
.vc-wit-member-header {
  display: flex; align-items: flex-start; gap: 10px;
  padding: 10px 12px; background: rgba(255,255,255,.03);
  border: 1px solid rgba(255,255,255,.07); border-radius: 8px 8px 0 0;
  margin-bottom: 0;
}
.vc-wit-avatar { width: 28px; height: 28px; border-radius: 5px; overflow: hidden; background: rgba(160,100,240,.2); font-size: 14px; display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
.vc-wit-member-info { flex: 1; display: flex; flex-direction: column; gap: 2px; }
.vc-wit-member-name { font-size: 13px; color: rgba(255,255,255,.85); font-weight: 500; }
.vc-wit-member-meta { display: flex; flex-direction: column; align-items: flex-end; gap: 3px; font-size: 11px; }
.vc-wit-role-badge { background: rgba(120,80,200,.25); border: 1px solid rgba(120,80,200,.4); border-radius: 4px; padding: 1px 7px; font-size: 10px; color: rgba(180,140,255,.9); }
.vc-wit-count { color: rgba(255,255,255,.4); }
.vc-wit-tokens { color: rgba(200,160,100,.8); }
.vc-wit-faithful-row { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 2px; }
.vc-wit-faithful-badge {
  font-size: 10px; background: rgba(200,150,50,.15); border: 1px solid rgba(200,150,50,.3);
  border-radius: 20px; padding: 2px 8px; color: rgba(220,180,80,.9);
}
.vc-wit-game-row {
  display: flex; flex-wrap: wrap; gap: 8px; padding: 10px 12px;
  background: rgba(255,255,255,.02); border: 1px solid rgba(255,255,255,.05);
  border-top: none; border-radius: 0 0 8px 8px;
}
.vc-wit-game-card {
  width: 70px; cursor: pointer; border-radius: 5px; overflow: hidden;
  border: 1px solid rgba(255,255,255,.06); background: rgba(255,255,255,.03);
  transition: transform .15s, border-color .15s; position: relative;
}
.vc-wit-game-card:hover { transform: translateY(-2px); border-color: rgba(160,100,240,.5); }
.vc-wit-game-card img { width: 70px; height: 93px; object-fit: cover; display: block; }
.vc-wit-game-card--shared { border-color: rgba(160,100,240,.35); }
.vc-wit-shared-pip {
  position: absolute; top: 3px; right: 3px; width: 16px; height: 16px;
  background: rgba(120,80,200,.85); border-radius: 3px; font-size: 9px;
  display: flex; align-items: center; justify-content: center;
}

/* ── Witness Record (in game modal) ────────────────────────────── */
.vc-witness-record-wrap { padding: 0; }
.vc-wr-title { font-size: 12px; text-transform: uppercase; letter-spacing: .08em; color: rgba(160,120,220,.8); margin-bottom: 10px; }
.vc-wr-card {
  border: 1px solid rgba(255,255,255,.08); border-radius: 8px;
  padding: 12px; margin-bottom: 10px; background: rgba(255,255,255,.03);
}
.vc-wr-card--sealed {
  border-color: rgba(180,120,60,.4);
  background: linear-gradient(135deg, rgba(80,40,0,.15), rgba(120,60,20,.08));
}
.vc-wr-card-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 8px; }
.vc-wr-card-date { font-size: 11px; color: rgba(255,255,255,.45); }
.vc-wr-sealed-badge { font-size: 10px; background: rgba(180,120,50,.2); border: 1px solid rgba(180,120,50,.4); border-radius: 4px; padding: 1px 7px; color: rgba(220,170,80,.9); }
.vc-wr-open-badge { font-size: 10px; color: rgba(120,200,120,.6); }
.vc-wr-players { font-size: 11px; color: rgba(255,255,255,.5); margin-bottom: 10px; }
.vc-wr-reactions { display: flex; flex-direction: column; gap: 6px; margin-bottom: 10px; }
.vc-wr-reaction { display: flex; align-items: flex-start; gap: 7px; font-size: 11px; }
.vc-wr-react-av { width: 18px; height: 18px; border-radius: 3px; overflow: hidden; background: rgba(160,100,240,.2); font-size: 10px; display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
.vc-wr-react-name { color: rgba(255,255,255,.6); flex-shrink: 0; }
.vc-wr-react-content { color: rgba(255,255,255,.45); font-style: italic; }
.vc-wr-empty-reactions { font-size: 11px; color: rgba(255,255,255,.25); font-style: italic; margin-bottom: 10px; }
.vc-wr-sigs { display: flex; align-items: center; gap: 6px; font-size: 11px; color: rgba(220,170,80,.8); margin-bottom: 8px; flex-wrap: wrap; }
.vc-wr-seal-icon { font-size: 14px; }
.vc-wr-sig { background: rgba(180,120,50,.15); border: 1px solid rgba(180,120,50,.3); border-radius: 10px; padding: 1px 8px; }
.vc-wr-actions { display: flex; gap: 8px; margin-top: 4px; }

/* ── Witness Reviews ────────────────────────────────────────────── */
.vc-witness-review-section {
  background: rgba(255,255,255,.03); border: 1px solid rgba(255,255,255,.07);
  border-radius: 8px; padding: 12px;
}
.vc-wrev-title { font-size: 12px; text-transform: uppercase; letter-spacing: .07em; color: rgba(160,120,220,.8); margin-bottom: 10px; display: flex; align-items: center; gap: 8px; }
.vc-wrev-avg { font-size: 11px; color: #ffc832; text-transform: none; letter-spacing: 0; }
.vc-wrev-entry { display: flex; gap: 8px; margin-bottom: 10px; }
.vc-wrev-av { width: 20px; height: 20px; border-radius: 3px; overflow: hidden; background: rgba(160,100,240,.2); font-size: 10px; display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
.vc-wrev-body { flex: 1; }
.vc-wrev-name { font-size: 11px; color: rgba(255,255,255,.65); font-weight: 500; display: block; margin-bottom: 3px; }
.vc-wrev-text { font-size: 12px; color: rgba(255,255,255,.55); margin: 0; line-height: 1.5; }
.vc-wrev-empty { font-size: 11px; color: rgba(255,255,255,.25); font-style: italic; margin-bottom: 10px; }
.vc-wrev-compose { margin-top: 10px; display: flex; flex-direction: column; gap: 6px; }
.vc-wrev-input {
  width: 100%; background: rgba(255,255,255,.05); border: 1px solid rgba(255,255,255,.1);
  border-radius: 6px; color: #e2d8f0; font-size: 12px; padding: 8px 10px;
  resize: vertical; outline: none; box-sizing: border-box; font-family: inherit;
}
.vc-wrev-input:focus { border-color: rgba(160,100,240,.5); }
.vc-wrev-submit { align-self: flex-end; }

/* ── Curiosity Nudge ────────────────────────────────────────────── */
.vc-wit-curiosity-nudge {
  background: rgba(80,160,100,.1); border: 1px solid rgba(80,200,120,.25);
  border-radius: 8px; padding: 10px 14px; font-size: 12px; color: rgba(160,230,180,.85);
  display: flex; align-items: center; flex-wrap: wrap; gap: 6px;
}
.vc-wit-curiosity-nudge strong { color: rgba(200,240,200,.9); }

/* ── Watch Queue Panel ──────────────────────────────────────────── */
.vc-wv-header { margin-bottom: 16px; }
.vc-wv-title { font-size: 15px; font-weight: 600; color: rgba(200,170,255,.95); margin-bottom: 4px; }
.vc-wv-subtitle { font-size: 11px; color: rgba(255,255,255,.4); margin-bottom: 8px; }
.vc-wv-my-tokens { font-size: 12px; color: rgba(220,180,80,.85); }
.vc-wv-list { display: flex; flex-direction: column; gap: 8px; }
.vc-wv-item {
  display: flex; align-items: center; gap: 12px;
  background: rgba(255,255,255,.03); border: 1px solid rgba(255,255,255,.07);
  border-radius: 8px; padding: 10px; cursor: pointer;
  transition: border-color .15s, background .15s;
}
.vc-wv-item:hover { border-color: rgba(160,100,240,.35); background: rgba(160,100,240,.06); }
.vc-wv-item--top { border-color: rgba(160,100,240,.4); background: rgba(160,100,240,.08); }
.vc-wv-cover { width: 44px; height: 58px; object-fit: cover; border-radius: 4px; flex-shrink: 0; }
.vc-wv-cover-empty { width: 44px; height: 58px; background: rgba(255,255,255,.06); border-radius: 4px; display: flex; align-items: center; justify-content: center; font-size: 18px; flex-shrink: 0; }
.vc-wv-info { flex: 1; }
.vc-wv-top-badge { font-size: 10px; color: rgba(180,140,255,.9); background: rgba(120,80,200,.2); border: 1px solid rgba(120,80,200,.3); border-radius: 4px; padding: 1px 6px; display: inline-block; margin-bottom: 4px; }
.vc-wv-game-name { font-size: 13px; color: rgba(255,255,255,.85); font-weight: 500; }
.vc-wv-nominator { font-size: 11px; color: rgba(255,255,255,.4); margin-top: 2px; }
.vc-wv-vote-col { display: flex; flex-direction: column; align-items: flex-end; gap: 6px; flex-shrink: 0; }
.vc-wv-token-count { font-size: 14px; font-weight: 600; color: rgba(200,160,80,.9); }
.vc-wv-no-tokens { font-size: 10px; color: rgba(255,255,255,.3); }
.vc-wv-loading { color: rgba(255,255,255,.4); font-size: 12px; padding: 20px; text-align: center; }

/* ══════════════════════════════════════════════════════════════════
   IDENTITY CARDS — coven member cards v2
   ══════════════════════════════════════════════════════════════════ */

/* Grid — wider cards */
.vc-coven-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: 16px;
}

/* Base card */
.vc-coven-member-card {
  background: var(--panel);
  border: 1px solid var(--border);
  border-radius: 12px;
  padding: 20px 16px 14px;
  cursor: pointer;
  text-align: center;
  transition: transform .15s, box-shadow .15s, border-color .15s;
  position: relative;
  overflow: visible;
  min-height: 200px;
  display: flex; flex-direction: column; align-items: center;
}
.vc-coven-member-card:hover { transform: translateY(-3px); }

/* ── Avatar ── */
.vc-coven-member-avatar {
  width: 64px; height: 64px;
  border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-size: 28px;
  margin: 0 auto 10px;
  background: rgba(201,151,58,.1);
  border: 2px solid rgba(201,151,58,.25);
  overflow: hidden;
  flex-shrink: 0;
}
.vc-coven-member-avatar img { width:100%; height:100%; object-fit:cover; border-radius:50%; display:block; }

/* ── Name ── */
.vc-coven-member-name {
  font-family: var(--font-display,'Cinzel',serif);
  font-size: 13px; font-weight: 700;
  color: var(--text); margin-bottom: 3px;
}
.vc-coven-you { font-size: 9px; color: var(--gold); opacity: .7; }

/* ── Quote ── */
.vc-coven-member-quote {
  font-size: 10px; color: var(--dust);
  font-style: italic; margin: 4px 0 8px;
  line-height: 1.4; opacity: .8;
  max-width: 180px;
}

/* ── Stats sub ── */
.vc-coven-member-sub {
  font-size: 10px; color: var(--dust);
  margin-bottom: 10px; line-height: 1.5;
}

/* ── Pinned games ── */
.vc-coven-pinned-games {
  display: flex; gap: 6px; justify-content: center;
  margin-top: auto; padding-top: 8px;
}
.vc-coven-pinned-cover {
  width: 36px; height: 48px; border-radius: 4px; overflow: hidden;
  border: 1px solid rgba(255,255,255,.1); background: rgba(255,255,255,.05);
  flex-shrink: 0; position: relative;
}
.vc-coven-pinned-cover img { width:100%; height:100%; object-fit:cover; display:block; }
.vc-coven-pinned-cover-empty { width:100%; height:100%; display:flex; align-items:center; justify-content:center; font-size:12px; }
.vc-coven-pinned-cover[title]:hover::after {
  content: attr(title);
  position: absolute; bottom: calc(100% + 4px); left: 50%; transform: translateX(-50%);
  background: rgba(10,8,16,.95); color: var(--text); font-size: 9px;
  padding: 3px 6px; border-radius: 4px; white-space: nowrap;
  pointer-events: none; z-index: 10;
  font-family: var(--font-mono, monospace);
}

/* ── Edit button (own card only) ── */
.vc-coven-card-edit-btn {
  position: absolute; top: 8px; right: 8px;
  background: rgba(201,151,58,.2); border: 1px solid rgba(201,151,58,.5);
  color: var(--gold); border-radius: 5px;
  font-size: 10px; padding: 3px 9px; cursor: pointer;
  opacity: 0; transition: opacity .15s;
  font-family: var(--font-mono,monospace); letter-spacing: .5px;
  z-index: 10; pointer-events: all;
}
.vc-coven-member-card:hover .vc-coven-card-edit-btn { opacity: 1; }

/* ════════════════════════════════════
   RARITY EFFECTS
   clip-path on fx-layer prevents ANY bleed outside card border
   CSS variables per-card control intensity/speed from JS
   ════════════════════════════════════ */

/* fx-layer: strictly clipped to card shape using clip-path (clips transforms too) */
.vc-member-card .vc-card-fx-layer {
  position: absolute; inset: 0; border-radius: inherit;
  overflow: hidden;
  /* contain:paint is the definitive fix — creates a paint containment boundary
     that clips ALL painting (including transformed children) to the element's box */
  contain: paint;
  pointer-events: none; z-index: 1;
}
.vc-member-card .vc-card-fx-layer::before,
.vc-member-card .vc-card-fx-layer::after {
  content: ''; position: absolute;
  /* Stay strictly inside — never negative offsets */
  inset: 0;
  pointer-events: none;
}
/* Card content above fx-layer */
.vc-member-card > *:not(.vc-card-fx-layer):not(.vc-member-edit-btn) { position: relative; z-index: 2; }
.vc-member-edit-btn { z-index: 20; }

/* CSS variable defaults (overridden inline per card) */
.vc-member-card {
  --fx-shimmer-opacity: .5; --fx-shimmer-duration: 4s;
  --fx-holo-opacity: .5;    --fx-holo-duration: 4s;
  --fx-pulse-opacity: .5;   --fx-pulse-duration: 4s; --fx-pulse-scale: .8;
  --fx-foil-opacity: .5;    --fx-foil-duration: 4s;
  --fx-particles-opacity: .5; --fx-particles-duration: 4s;
  --fx-scanlines-opacity: .5;
}

/* ── Shimmer — diagonal light sweep ── */
.vc-card-shimmer .vc-card-fx-layer::before {
  background: linear-gradient(105deg,
    transparent 25%, rgba(255,255,255,.0) 40%,
    rgba(255,255,255,.35) 50%, rgba(255,255,255,.0) 60%, transparent 75%);
  background-size: 300% 100%;
  opacity: var(--fx-shimmer-opacity);
  animation: vc-shimmer var(--fx-shimmer-duration) ease-in-out infinite;
}
@keyframes vc-shimmer {
  0%   { background-position: 250% 0; }
  100% { background-position: -250% 0; }
}

/* ── Holo — colour-cycling gradient ── */
.vc-card-holo .vc-card-fx-layer::before {
  background: linear-gradient(125deg,
    rgba(255,0,128,1) 0%, rgba(255,210,0,1) 20%,
    rgba(0,255,160,1) 40%, rgba(0,120,255,1) 65%,
    rgba(210,0,255,1) 85%, rgba(255,0,128,1) 100%);
  background-size: 400% 400%;
  opacity: calc(var(--fx-holo-opacity) * 0.35);
  mix-blend-mode: screen;
  animation: vc-holo var(--fx-holo-duration) ease infinite;
}
.vc-card-holo { border-color: rgba(180,120,255,.5) !important; box-shadow: none !important; }
@keyframes vc-holo {
  0%,100% { background-position: 0% 50%; }
  50%     { background-position: 100% 50%; }
}

/* ── Pulse — glow breathe ── */
.vc-card-pulse {
  animation: vc-pulse-glow var(--fx-pulse-duration) ease-in-out infinite;
  border-color: rgba(201,151,58,.55) !important;
}
@keyframes vc-pulse-glow {
  0%,100% { box-shadow: 0 0 2px rgba(201,151,58,.1); }
  50%     { box-shadow:
      0 0 calc(8px * var(--fx-pulse-scale)) rgba(201,151,58, calc(var(--fx-pulse-opacity) * .7)),
      inset 0 0 calc(12px * var(--fx-pulse-scale)) rgba(201,151,58, calc(var(--fx-pulse-opacity) * .08)); }
}

/* ── Foil — prismatic spin INSIDE clip ── */
.vc-card-foil .vc-card-fx-layer::before {
  /* inset:0 keeps element inside overflow:hidden boundary */
  /* scale via transform — overflow:hidden clips the result correctly */
  background: conic-gradient(
    rgba(255,0,80,1), rgba(255,200,0,1), rgba(0,255,120,1),
    rgba(0,150,255,1), rgba(200,0,255,1), rgba(255,0,80,1));
  opacity: calc(var(--fx-foil-opacity) * 0.28);
  transform-origin: 50% 50%;
  animation: vc-foil-spin var(--fx-foil-duration) linear infinite;
}
.vc-card-foil .vc-card-fx-layer::after {
  background: linear-gradient(135deg,
    transparent 25%, rgba(255,255,255,.25) 45%,
    rgba(255,255,255,.35) 50%, rgba(255,255,255,.25) 55%, transparent 75%);
  background-size: 300% 300%;
  opacity: calc(var(--fx-foil-opacity) * 0.7);
  animation: vc-foil-shine calc(var(--fx-foil-duration) * 0.6) ease infinite;
}
.vc-card-foil { border-color: rgba(220,120,255,.6) !important; box-shadow: none !important; }
@keyframes vc-foil-spin {
  from { transform: rotate(0deg); }
  to   { transform: rotate(360deg); }
}
@keyframes vc-foil-shine {
  0%,100% { background-position: -100% -100%; }
  50%     { background-position: 100% 100%; }
}

/* ── Particles — ember drift upward ── */
.vc-card-particles .vc-card-fx-layer::after {
  background-image:
    radial-gradient(circle, rgba(255,180,60,1) 1.5px, transparent 1.5px),
    radial-gradient(circle, rgba(201,151,58,1) 1px,   transparent 1px),
    radial-gradient(circle, rgba(255,220,80,1) 2px,   transparent 2px),
    radial-gradient(circle, rgba(255,140,30,1) 1px,   transparent 1px),
    radial-gradient(circle, rgba(201,151,58,1) 1.5px, transparent 1.5px),
    radial-gradient(circle, rgba(255,200,50,1) 1px,   transparent 1px);
  background-size:
    33% 40%, 28% 35%, 40% 50%,
    25% 30%, 35% 45%, 30% 38%;
  background-position:
    15% 95%, 55% 90%, 30% 98%,
    72% 92%, 85% 96%, 48% 93%;
  background-repeat: no-repeat;
  opacity: var(--fx-particles-opacity);
  animation: vc-embers var(--fx-particles-duration) ease-in-out infinite;
  filter: blur(0.4px);
}
.vc-card-particles .vc-card-fx-layer::before {
  background-image:
    radial-gradient(circle, rgba(255,160,40,1) 1.5px, transparent 1.5px),
    radial-gradient(circle, rgba(201,151,58,1) 1px,   transparent 1px),
    radial-gradient(circle, rgba(255,210,70,1) 2px,   transparent 2px),
    radial-gradient(circle, rgba(255,120,20,1) 1px,   transparent 1px),
    radial-gradient(circle, rgba(201,151,58,1) 1.5px, transparent 1.5px);
  background-size:
    30% 38%, 25% 32%, 38% 48%, 22% 28%, 32% 42%;
  background-position:
    40% 95%, 20% 92%, 65% 98%, 80% 90%, 10% 94%;
  background-repeat: no-repeat;
  opacity: var(--fx-particles-opacity);
  animation: vc-embers var(--fx-particles-duration) ease-in-out infinite;
  animation-delay: calc(var(--fx-particles-duration) * -0.5);
  filter: blur(0.4px);
}
@keyframes vc-embers {
  0%   { background-position-y: 95%, 90%, 98%, 92%, 96%, 93%; opacity: 0; }
  8%   { opacity: var(--fx-particles-opacity); }
  85%  { opacity: calc(var(--fx-particles-opacity) * 0.4); }
  100% { background-position-y: -20%, -15%, -25%, -18%, -22%, -10%; opacity: 0; }
}

/* ── Scanlines — CRT ── */
/* Scanlines use a dedicated child element so they never conflict with ::before/::after */
.vc-card-scanlines .vc-card-fx-layer .vc-scanlines-overlay {
  position: absolute; inset: 0; pointer-events: none; z-index: 3;
  background: repeating-linear-gradient(
    0deg, transparent, transparent 3px,
    rgba(0,0,0,1) 3px, rgba(0,0,0,1) 4px);
  opacity: calc(var(--fx-scanlines-opacity) * 0.25);
  border-radius: inherit;
}

/* ── Color accent themes ── */
.vc-card-accent-gold   { border-color: rgba(201,151,58,.5) !important; background: linear-gradient(160deg, rgba(201,151,58,.06) 0%, var(--panel) 60%) !important; }
.vc-card-accent-blood  { border-color: rgba(160,30,30,.6) !important; background: linear-gradient(160deg, rgba(160,30,30,.1) 0%, var(--panel) 60%) !important; }
.vc-card-accent-arcane { border-color: rgba(120,80,200,.5) !important; background: linear-gradient(160deg, rgba(120,80,200,.08) 0%, var(--panel) 60%) !important; }
.vc-card-accent-toxic  { border-color: rgba(80,200,80,.4) !important; background: linear-gradient(160deg, rgba(80,200,80,.06) 0%, var(--panel) 60%) !important; }
.vc-card-accent-void   { border-color: rgba(60,60,80,.8) !important; background: linear-gradient(160deg, rgba(20,20,30,.5) 0%, var(--panel) 60%) !important; }
.vc-card-accent-frost  { border-color: rgba(100,180,255,.4) !important; background: linear-gradient(160deg, rgba(100,180,255,.06) 0%, var(--panel) 60%) !important; }
.vc-card-accent-rose   { border-color: rgba(220,80,150,.4) !important; background: linear-gradient(160deg, rgba(220,80,150,.07) 0%, var(--panel) 60%) !important; }

/* ════════════════════════════════════
   CARD EDITOR MODAL
   ════════════════════════════════════ */
.vc-card-editor-overlay {
  position: fixed; inset: 0; z-index: 9000;
  background: rgba(4,3,9,.85); backdrop-filter: blur(6px);
  display: flex; align-items: center; justify-content: center;
}
.vc-card-editor {
  background: var(--panel); border: 1px solid var(--border);
  border-radius: 14px; padding: 28px; width: 480px; max-width: 95vw;
  max-height: 90vh; overflow-y: auto;
  box-shadow: 0 24px 64px rgba(0,0,0,.6);
}
.vc-card-editor-title {
  font-family: var(--font-display,'Cinzel',serif);
  font-size: 15px; font-weight: 700; color: var(--text);
  margin-bottom: 20px; letter-spacing: 1px;
}
.vc-card-editor-section {
  margin-bottom: 18px;
}
.vc-card-editor-label {
  font-size: 10px; font-family: var(--font-mono,monospace);
  letter-spacing: 1px; color: var(--gold); opacity: .8;
  margin-bottom: 8px; text-transform: uppercase;
}
.vc-card-editor-row {
  display: flex; flex-wrap: wrap; gap: 6px;
}
.vcce-effects-list { display: flex; flex-direction: column; gap: 8px; }
.vcce-effect-row { display: flex; flex-direction: column; gap: 6px; }
.vcce-sliders { padding: 8px 10px; background: rgba(255,255,255,.03); border: 1px solid rgba(255,255,255,.06); border-radius: 6px; display: flex; flex-direction: column; gap: 6px; }
.vcce-slider-row { display: flex; align-items: center; gap: 8px; }
.vcce-slider-row label { font-family: var(--font-mono,monospace); font-size: 9px; color: var(--dust); letter-spacing: .5px; width: 54px; flex-shrink: 0; text-transform: uppercase; }
.vcce-slider { flex: 1; height: 3px; -webkit-appearance: none; appearance: none; background: rgba(255,255,255,.12); border-radius: 2px; outline: none; cursor: pointer; }
.vcce-slider::-webkit-slider-thumb { -webkit-appearance: none; width: 12px; height: 12px; border-radius: 50%; background: var(--gold,#c9973a); cursor: pointer; border: none; }
.vcce-slider::-moz-range-thumb { width: 12px; height: 12px; border-radius: 50%; background: var(--gold,#c9973a); cursor: pointer; border: none; }
.vcce-slider-val { font-family: var(--font-mono,monospace); font-size: 9px; color: var(--gold); width: 22px; text-align: right; flex-shrink: 0; }

.vc-card-editor-chip {
  font-size: 10px; font-family: var(--font-mono,monospace);
  padding: 4px 10px; border-radius: 5px;
  border: 1px solid var(--border); background: rgba(255,255,255,.04);
  color: var(--dust); cursor: pointer; transition: all .12s;
  letter-spacing: .3px;
}
.vc-card-editor-chip:hover { border-color: rgba(201,151,58,.4); color: var(--gold); }
.vc-card-editor-chip.active { background: rgba(201,151,58,.15); border-color: rgba(201,151,58,.5); color: var(--gold); }
.vc-card-editor-chip.danger.active { background: rgba(160,30,30,.2); border-color: rgba(200,60,60,.5); color: #e06060; }
.vc-card-editor-chip.arcane.active { background: rgba(120,80,200,.15); border-color: rgba(120,80,200,.5); color: #b090ff; }
.vc-card-editor-chip.toxic.active { background: rgba(80,200,80,.1); border-color: rgba(80,200,80,.4); color: #80e080; }
.vc-card-editor-chip.frost.active { background: rgba(100,180,255,.1); border-color: rgba(100,180,255,.4); color: #90d0ff; }
.vc-card-editor-chip.rose.active { background: rgba(220,80,150,.12); border-color: rgba(220,80,150,.4); color: #f080c0; }
.vc-card-editor-input {
  width: 100%; background: rgba(255,255,255,.05); border: 1px solid var(--border);
  border-radius: 6px; padding: 8px 10px; color: var(--text);
  font-family: var(--font-mono,monospace); font-size: 11px;
  box-sizing: border-box; outline: none;
  transition: border-color .15s;
}
.vc-card-editor-input:focus { border-color: rgba(201,151,58,.4); }
.vc-card-editor-game-list { display: flex; flex-direction: column; gap: 4px; max-height: 150px; overflow-y: auto; }
.vc-card-editor-game-item {
  display: flex; align-items: center; gap: 8px; padding: 5px 8px;
  border-radius: 5px; border: 1px solid transparent;
  cursor: pointer; font-size: 11px; color: var(--dust);
  transition: all .12s;
}
.vc-card-editor-game-item:hover { background: rgba(255,255,255,.04); border-color: var(--border); }
.vc-card-editor-game-item.pinned { background: rgba(201,151,58,.1); border-color: rgba(201,151,58,.3); color: var(--gold); }
.vc-card-editor-game-mini-cover { width: 24px; height: 32px; border-radius: 3px; object-fit: cover; background: rgba(255,255,255,.05); flex-shrink:0; }
.vc-card-editor-actions { display: flex; gap: 8px; margin-top: 20px; justify-content: flex-end; }
.vc-card-editor-preview { 
  border: 1px dashed rgba(201,151,58,.2); border-radius: 10px;
  padding: 12px; margin-bottom: 18px; text-align: center;
  font-size: 9px; font-family: var(--font-mono,monospace);
  color: var(--dust); letter-spacing: 1px; opacity: .6;
}

/* ═══════════════════════════════════════════════════════════════════════════
   WITNESS LIVE FEED PANEL
   ═══════════════════════════════════════════════════════════════════════════ */

.vc-live-feed {
  position: fixed;
  bottom: -620px;
  right: 20px;
  width: 380px;
  max-height: 560px;
  display: flex;
  flex-direction: column;
  background: #110d1e;
  border: 1px solid rgba(120,80,240,.5);
  border-radius: 14px;
  box-shadow: 0 16px 60px rgba(0,0,0,.85), 0 0 0 1px rgba(120,80,240,.12);
  z-index: 10000;
  transition: bottom .38s cubic-bezier(.2,.8,.3,1);
  overflow: hidden;
}
.vc-live-feed.visible { bottom: 20px; }
.vc-live-feed.minimized { max-height: 48px; }
.vc-live-feed.minimized > *:not(.vc-lf-header) { display: none !important; }

/* ── Header ── */
.vc-lf-header {
  display: flex;
  align-items: center;
  gap: 7px;
  padding: 10px 12px 9px;
  border-bottom: 1px solid rgba(120,80,240,.2);
  background: rgba(120,80,240,.09);
  flex-shrink: 0;
}
.vc-lf-eye { font-size: 14px; flex-shrink: 0; }
.vc-lf-header-mid {
  flex: 1;
  display: flex;
  align-items: center;
  gap: 8px;
  min-width: 0;
  overflow: hidden;
}
.vc-lf-title {
  font-size: 11.5px;
  font-weight: 600;
  color: rgba(220,200,255,.9);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  letter-spacing: .02em;
}
.vc-lf-title em { color: #c084fc; font-style: normal; }
.vc-lf-witness-count {
  font-size: 10px;
  color: rgba(180,140,255,.55);
  white-space: nowrap;
  flex-shrink: 0;
}
.vc-lf-live-dot {
  width: 7px; height: 7px;
  border-radius: 50%;
  background: #4ade80;
  box-shadow: 0 0 6px #4ade80;
  animation: vc-lf-pulse 2s ease-in-out infinite;
  flex-shrink: 0;
}
@keyframes vc-lf-pulse {
  0%,100% { opacity:1; box-shadow: 0 0 6px #4ade80; }
  50%      { opacity:.5; box-shadow: 0 0 2px #4ade80; }
}
.vc-lf-minimize, .vc-lf-close {
  background: none; border: none;
  color: rgba(255,255,255,.3); cursor: pointer;
  font-size: 13px; padding: 2px 5px; line-height: 1;
  border-radius: 4px;
  transition: color .15s, background .15s;
  flex-shrink: 0;
}
.vc-lf-minimize:hover, .vc-lf-close:hover {
  color: rgba(255,255,255,.8);
  background: rgba(255,255,255,.08);
}

/* ── Stamp area ── */
.vc-lf-stamp-area {
  border-bottom: 1px solid rgba(255,255,255,.05);
  background: rgba(0,0,0,.18);
  flex-shrink: 0;
}
.vc-lf-stamp-tabs {
  display: flex;
  gap: 2px;
  padding: 6px 8px 4px;
  overflow-x: auto;
  scrollbar-width: none;
}
.vc-lf-stamp-tabs::-webkit-scrollbar { display: none; }
.vc-lf-stamp-tab {
  background: none;
  border: 1px solid rgba(255,255,255,.08);
  border-radius: 5px;
  color: rgba(200,180,255,.55);
  cursor: pointer;
  font-size: 10px;
  font-weight: 600;
  padding: 3px 8px;
  white-space: nowrap;
  transition: background .12s, color .12s, border-color .12s;
  flex-shrink: 0;
}
.vc-lf-stamp-tab:hover { background: rgba(120,80,240,.12); color: rgba(200,180,255,.8); }
.vc-lf-stamp-tab.active {
  background: rgba(120,80,240,.22);
  border-color: rgba(120,80,240,.5);
  color: #c084fc;
}
.vc-lf-gif-tab { color: rgba(100,220,160,.6) !important; }
.vc-lf-gif-tab.active { color: #4ade80 !important; border-color: rgba(74,222,128,.5) !important; background: rgba(74,222,128,.12) !important; }

.vc-lf-stamp-grid {
  display: none;
  flex-wrap: wrap;
  gap: 3px;
  padding: 5px 8px 7px;
}
.vc-lf-stamp-grid.active { display: flex; }
.vc-lf-stamp {
  background: rgba(255,255,255,.04);
  border: 1px solid rgba(255,255,255,.07);
  border-radius: 6px;
  cursor: pointer;
  font-size: 17px;
  padding: 3px 5px;
  line-height: 1;
  transition: transform .1s, background .1s, border-color .1s;
  user-select: none;
}
.vc-lf-stamp:hover {
  background: rgba(120,80,240,.2);
  border-color: rgba(120,80,240,.4);
  transform: scale(1.2);
}
.vc-lf-stamp.bounced { animation: vc-stamp-bounce .4s cubic-bezier(.36,.07,.19,.97); }
@keyframes vc-stamp-bounce {
  0%   { transform: scale(1); }
  30%  { transform: scale(1.5) rotate(-8deg); }
  60%  { transform: scale(.88) rotate(4deg); }
  100% { transform: scale(1); }
}

/* GIF panel */
.vc-lf-gif-panel { flex-direction: column; gap: 6px; max-height: 170px; }
.vc-lf-gif-panel.active { display: flex; }
.vc-lf-gif-search-row { padding: 0 2px 2px; }
.vc-lf-gif-input {
  width: 100%;
  background: rgba(255,255,255,.06);
  border: 1px solid rgba(74,222,128,.2);
  border-radius: 6px;
  color: #e2f5ea;
  font-size: 11px;
  padding: 5px 9px;
  outline: none;
  transition: border-color .15s;
  box-sizing: border-box;
}
.vc-lf-gif-input:focus { border-color: rgba(74,222,128,.5); }
.vc-lf-gif-input::placeholder { color: rgba(255,255,255,.3); }
.vc-lf-gif-results {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 4px;
  overflow-y: auto;
  max-height: 120px;
  padding-bottom: 4px;
}
.vc-lf-gif-results::-webkit-scrollbar { width: 3px; }
.vc-lf-gif-results::-webkit-scrollbar-thumb { background: rgba(74,222,128,.3); border-radius: 3px; }
.vc-lf-gif-hint {
  grid-column: 1/-1;
  text-align: center;
  font-size: 10px;
  color: rgba(255,255,255,.25);
  padding: 10px 0 4px;
  font-style: italic;
}
.vc-lf-gif-thumb {
  width: 100%;
  aspect-ratio: 1;
  object-fit: cover;
  border-radius: 5px;
  cursor: pointer;
  border: 1px solid rgba(255,255,255,.07);
  transition: border-color .12s, transform .1s;
}
.vc-lf-gif-thumb:hover { border-color: rgba(74,222,128,.5); transform: scale(1.04); }

/* ── Feed area ── */
.vc-lf-feed {
  flex: 1;
  overflow-y: auto;
  padding: 10px 10px 6px;
  display: flex;
  flex-direction: column;
  gap: 6px;
  min-height: 0;
  scroll-behavior: smooth;
}
.vc-lf-feed::-webkit-scrollbar { width: 3px; }
.vc-lf-feed::-webkit-scrollbar-thumb { background: rgba(120,80,240,.3); border-radius: 3px; }
.vc-lf-empty {
  font-size: 11px; color: rgba(255,255,255,.28);
  text-align: center; padding: 20px 10px; font-style: italic;
}

/* ── Message rows ── */
.vc-lf-row {
  position: relative;
  display: flex;
  align-items: flex-start;
  gap: 8px;
  padding: 6px 8px;
  border-radius: 8px;
  background: rgba(255,255,255,.025);
  border: 1px solid rgba(255,255,255,.045);
  transition: opacity .3s, background .15s;
}
.vc-lf-row:hover { background: rgba(255,255,255,.045); }
.vc-lf-row--mine {
  background: rgba(120,80,240,.1);
  border-color: rgba(120,80,240,.22);
}
.vc-lf-row--stamp {
  background: rgba(255,255,255,.018);
  border-style: dashed;
}
.vc-lf-row--milestone {
  background: rgba(255,190,50,.07);
  border-color: rgba(255,190,50,.3);
  border-radius: 8px;
}
.vc-lf-row--spoiler .vc-lf-row-text { display: none; } /* handled via class */
.vc-lf-row--new { animation: vc-lf-row-pop .3s ease-out; }
@keyframes vc-lf-row-pop {
  from { transform: translateY(8px); opacity: 0; }
  to   { transform: translateY(0);   opacity: 1; }
}
.vc-lf-row-av { flex-shrink: 0; width: 22px; height: 22px; margin-top: 2px; }
.vc-lf-row-body { display: flex; flex-direction: column; gap: 3px; min-width: 0; flex: 1; }
.vc-lf-row-meta {
  display: flex;
  align-items: center;
  gap: 6px;
  line-height: 1;
}
.vc-lf-row-name {
  font-size: 10px; font-weight: 700;
  color: rgba(180,140,255,.9); letter-spacing: .02em;
}
.vc-lf-row--mine .vc-lf-row-name { color: #c084fc; }
.vc-lf-row-time { font-size: 9px; color: rgba(255,255,255,.22); }
.vc-lf-reply-btn, .vc-lf-row-del {
  background: none; border: none;
  color: rgba(255,255,255,.2); cursor: pointer;
  font-size: 10px; padding: 1px 3px; border-radius: 3px;
  opacity: 0; transition: opacity .15s, color .15s, background .15s;
  line-height: 1;
}
.vc-lf-row:hover .vc-lf-reply-btn,
.vc-lf-row:hover .vc-lf-row-del { opacity: 1; }
.vc-lf-reply-btn:hover { color: #c084fc; background: rgba(120,80,240,.15); }
.vc-lf-row-del:hover { color: #ff7a7a; background: rgba(255,80,80,.12); }

/* Message content types */
.vc-lf-row-text {
  font-size: 12.5px; color: rgba(230,220,255,.88);
  line-height: 1.45; word-break: break-word;
}
.vc-lf-row-stamp-emoji { font-size: 22px; line-height: 1; }
.vc-lf-gif-msg {
  max-width: 200px; max-height: 150px;
  border-radius: 7px; display: block;
  border: 1px solid rgba(255,255,255,.08);
  cursor: pointer;
}

/* Milestone */
.vc-lf-milestone-inner {
  display: flex; align-items: center;
  justify-content: center; gap: 8px;
  width: 100%; padding: 2px 0;
}
.vc-lf-milestone-text {
  font-size: 12px; font-weight: 700;
  color: rgba(255,210,80,.9); text-align: center;
  letter-spacing: .03em;
}

/* Spoiler */
.vc-lf-spoiler-text {
  font-size: 12.5px; line-height: 1.45; word-break: break-word;
  background: rgba(120,80,240,.35);
  border-radius: 4px; padding: 2px 6px;
  cursor: pointer; user-select: none;
  color: transparent; filter: blur(4px);
  transition: filter .25s, color .25s, background .25s;
}
.vc-lf-spoiler-text.revealed {
  color: rgba(230,220,255,.88);
  filter: none; background: rgba(120,80,240,.12);
}
.vc-lf-spoiler-text::before { content: '🙈 Spoiler — click to reveal'; color: rgba(200,160,255,.7); }
.vc-lf-spoiler-text.revealed::before { display: none; }

/* Reply quote */
.vc-lf-quote {
  display: flex; gap: 5px; align-items: baseline;
  padding: 3px 7px; border-left: 2px solid rgba(120,80,240,.5);
  background: rgba(120,80,240,.08); border-radius: 0 5px 5px 0;
  margin-bottom: 2px;
}
.vc-lf-quote-name { font-size: 9px; font-weight: 700; color: #c084fc; flex-shrink: 0; }
.vc-lf-quote-text { font-size: 10px; color: rgba(200,180,255,.55); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* Message reactions */
.vc-lf-msg-reacts {
  display: flex; flex-wrap: wrap; gap: 4px;
  margin-top: 3px; min-height: 0;
}
.vc-lf-react-pill {
  display: inline-flex; align-items: center; gap: 2px;
  background: rgba(255,255,255,.06);
  border: 1px solid rgba(255,255,255,.1);
  border-radius: 10px; cursor: pointer;
  font-size: 11px; padding: 1px 6px;
  color: rgba(220,210,255,.7);
  transition: background .12s, border-color .12s;
  line-height: 1.3;
}
.vc-lf-react-pill:hover { background: rgba(120,80,240,.2); border-color: rgba(120,80,240,.4); }
.vc-lf-react-pill.mine { background: rgba(120,80,240,.22); border-color: rgba(120,80,240,.55); color: #c084fc; }
.vc-lf-react-add {
  background: none; border: 1px solid rgba(255,255,255,.08);
  border-radius: 10px; cursor: pointer;
  font-size: 11px; padding: 1px 6px;
  color: rgba(255,255,255,.25);
  transition: background .12s, color .12s;
  line-height: 1.3;
}
.vc-lf-react-add:hover { background: rgba(255,255,255,.07); color: rgba(255,255,255,.6); }

/* Reaction picker popup */
.vc-lf-react-picker {
  background: #1a1030;
  border: 1px solid rgba(120,80,240,.45);
  border-radius: 10px;
  box-shadow: 0 8px 28px rgba(0,0,0,.7);
  display: flex; gap: 3px;
  padding: 6px 8px;
  z-index: 10100;
}
.vc-lf-react-opt {
  background: none; border: none; cursor: pointer;
  font-size: 18px; padding: 3px 4px; border-radius: 5px;
  transition: background .1s, transform .1s;
  line-height: 1;
}
.vc-lf-react-opt:hover { background: rgba(120,80,240,.2); transform: scale(1.25); }

/* ── Typing indicator ── */
.vc-lf-typing {
  font-size: 10px; color: rgba(180,140,255,.5);
  padding: 0 12px 4px; min-height: 14px;
  font-style: italic; flex-shrink: 0;
}

/* ── Reply bar ── */
.vc-lf-reply-bar {
  display: flex; align-items: center; gap: 6px;
  padding: 5px 10px;
  background: rgba(120,80,240,.1);
  border-top: 1px solid rgba(120,80,240,.2);
  flex-shrink: 0;
}
.vc-lf-reply-label { font-size: 10px; color: rgba(180,140,255,.6); flex-shrink: 0; }
.vc-lf-reply-name { font-size: 10px; font-weight: 700; color: #c084fc; flex-shrink: 0; }
.vc-lf-reply-preview {
  font-size: 10px; color: rgba(200,180,255,.5);
  flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.vc-lf-reply-cancel {
  background: none; border: none; color: rgba(255,255,255,.3);
  cursor: pointer; font-size: 11px; padding: 2px 4px;
  border-radius: 3px; flex-shrink: 0;
  transition: color .12s;
}
.vc-lf-reply-cancel:hover { color: rgba(255,255,255,.7); }

/* ── Compose bar ── */
.vc-lf-compose {
  display: flex; align-items: center; gap: 6px;
  padding: 8px 10px 10px;
  border-top: 1px solid rgba(255,255,255,.06);
  background: rgba(0,0,0,.22);
  flex-shrink: 0;
}
.vc-lf-milestone-btn, .vc-lf-spoiler-btn {
  background: rgba(255,255,255,.04);
  border: 1px solid rgba(255,255,255,.08);
  border-radius: 6px; cursor: pointer;
  font-size: 14px; padding: 5px 6px; line-height: 1;
  flex-shrink: 0;
  transition: background .12s, border-color .12s, transform .1s;
}
.vc-lf-milestone-btn:hover { background: rgba(255,190,50,.15); border-color: rgba(255,190,50,.3); }
.vc-lf-milestone-btn.active { background: rgba(255,190,50,.2); border-color: rgba(255,190,50,.5); }
.vc-lf-spoiler-btn:hover { background: rgba(120,80,240,.15); border-color: rgba(120,80,240,.3); }
.vc-lf-spoiler-btn.active { background: rgba(120,80,240,.25); border-color: rgba(120,80,240,.55); }

.vc-lf-input {
  flex: 1; min-width: 0;
  background: rgba(255,255,255,.06);
  border: 1px solid rgba(120,80,240,.22);
  border-radius: 8px; color: #e2d8f0;
  font-size: 12px; padding: 7px 10px;
  outline: none; transition: border-color .15s;
}
.vc-lf-input:focus { border-color: rgba(160,100,240,.55); }
.vc-lf-input::placeholder { color: rgba(255,255,255,.28); }
.vc-lf-send {
  background: rgba(120,80,240,.25);
  border: 1px solid rgba(120,80,240,.45);
  border-radius: 7px; color: #c084fc;
  font-size: 14px; font-weight: 700;
  padding: 6px 10px; cursor: pointer;
  transition: background .15s, border-color .15s;
  flex-shrink: 0; line-height: 1;
}
.vc-lf-send:hover { background: rgba(120,80,240,.4); border-color: rgba(160,100,240,.7); }

/* ── Witness prompt / record buttons ── */
.vc-wp-livefeed-btn {
  color: rgba(180,140,255,.8) !important;
  border-color: rgba(120,80,240,.3) !important;
}
.vc-wp-livefeed-btn:hover { background: rgba(120,80,240,.12) !important; }
.vc-wr-livefeed-btn {
  color: rgba(180,140,255,.8) !important;
  border-color: rgba(120,80,240,.3) !important;
}
.vc-wr-livefeed-btn:hover { background: rgba(120,80,240,.12) !important; }

/* ── Mobile ── */
@media (max-width: 480px) {
  .vc-live-feed {
    width: calc(100vw - 16px);
    right: 8px;
    max-height: 65vh;
  }
}

/* ── Live Feed: Now Playing card button ─────────────────────────── */
.vc-np-livefeed-btn {
  margin-top: 6px;
  background: rgba(120,80,240,.15);
  border: 1px solid rgba(120,80,240,.35);
  border-radius: 6px;
  color: rgba(180,140,255,.9);
  font-size: 11px;
  font-weight: 600;
  padding: 4px 10px;
  cursor: pointer;
  transition: background .15s, border-color .15s;
  width: 100%;
  letter-spacing: .02em;
}
.vc-np-livefeed-btn:hover {
  background: rgba(120,80,240,.3);
  border-color: rgba(160,100,240,.6);
  color: #c084fc;
}

/* ── Live Feed: Dashboard featured row button ───────────────────── */
.vc-dash-livefeed-btn {
  display: inline-block;
  margin-top: 4px;
  background: rgba(120,80,240,.12);
  border: 1px solid rgba(120,80,240,.3);
  border-radius: 5px;
  color: rgba(180,140,255,.85);
  font-size: 10px;
  font-weight: 600;
  padding: 3px 8px;
  cursor: pointer;
  transition: background .15s, border-color .15s;
  letter-spacing: .02em;
}
.vc-dash-livefeed-btn:hover {
  background: rgba(120,80,240,.25);
  border-color: rgba(160,100,240,.55);
  color: #c084fc;
}

/* ── Live Feed: Active session notification banner ──────────────── */
.vc-livefeed-notif {
  position: fixed;
  top: -70px;
  left: 50%;
  transform: translateX(-50%);
  display: flex;
  align-items: center;
  gap: 10px;
  background: #1a1030;
  border: 1px solid rgba(120,80,240,.55);
  border-radius: 10px;
  padding: 10px 14px;
  box-shadow: 0 8px 32px rgba(0,0,0,.7), 0 0 0 1px rgba(120,80,240,.1);
  z-index: 10001;
  transition: top .38s cubic-bezier(.2,.8,.3,1);
  max-width: min(480px, 92vw);
  white-space: nowrap;
}
.vc-livefeed-notif.visible { top: 16px; }

.vc-lfn-eye { font-size: 16px; flex-shrink: 0; }
.vc-lfn-text {
  font-size: 12px;
  color: rgba(220,200,255,.85);
  flex: 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
}
.vc-lfn-text strong { color: #c084fc; }
.vc-lfn-open {
  background: rgba(120,80,240,.25);
  border: 1px solid rgba(120,80,240,.5);
  border-radius: 6px;
  color: #c084fc;
  font-size: 11px;
  font-weight: 700;
  padding: 4px 12px;
  cursor: pointer;
  transition: background .15s;
  flex-shrink: 0;
  letter-spacing: .02em;
}
.vc-lfn-open:hover { background: rgba(120,80,240,.4); }
.vc-lfn-dismiss {
  background: none;
  border: none;
  color: rgba(255,255,255,.3);
  cursor: pointer;
  font-size: 12px;
  padding: 2px 4px;
  flex-shrink: 0;
  transition: color .15s;
}
.vc-lfn-dismiss:hover { color: rgba(255,255,255,.7); }

/* ── Now Playing: Witness + Chat action buttons ─────────────────── */
.vc-np-witness-actions {
  display: flex;
  gap: 6px;
  margin-top: 8px;
}
.vc-np-witness-btn,
.vc-np-chat-btn {
  flex: 1;
  border-radius: 6px;
  font-size: 11px;
  font-weight: 700;
  padding: 5px 8px;
  cursor: pointer;
  border: 1px solid;
  transition: background .15s, border-color .15s, transform .1s;
  letter-spacing: .02em;
  line-height: 1;
}
.vc-np-witness-btn {
  background: rgba(120,80,240,.18);
  border-color: rgba(120,80,240,.45);
  color: #c084fc;
}
.vc-np-witness-btn:hover {
  background: rgba(120,80,240,.32);
  border-color: rgba(160,100,255,.7);
  transform: translateY(-1px);
}
.vc-np-witness-btn.active {
  background: rgba(120,80,240,.35);
  border-color: #c084fc;
  color: #e0c0ff;
}
.vc-np-chat-btn {
  background: rgba(255,255,255,.05);
  border-color: rgba(255,255,255,.14);
  color: rgba(220,210,255,.7);
}
.vc-np-chat-btn:hover {
  background: rgba(255,255,255,.1);
  border-color: rgba(255,255,255,.25);
  color: #e2d8f0;
}

/* ── Live feed row: delete button ───────────────────────────────── */
.vc-lf-row-del {
  position: absolute;
  top: 5px; right: 5px;
  background: none;
  border: none;
  color: rgba(255,255,255,.2);
  cursor: pointer;
  font-size: 10px;
  padding: 2px 4px;
  border-radius: 3px;
  opacity: 0;
  transition: opacity .15s, color .15s, background .15s;
  line-height: 1;
}
.vc-lf-row:hover .vc-lf-row-del { opacity: 1; }
.vc-lf-row-del:hover {
  color: #ff7a7a;
  background: rgba(255,80,80,.12);
}

/* ── Witness Record: Live feed history block ────────────────────── */
.vc-wr-feed-block {
  margin: 8px 0 4px;
}
.vc-wr-feed-toggle {
  background: rgba(120,80,240,.08);
  border: 1px solid rgba(120,80,240,.2);
  border-radius: 6px;
  color: rgba(180,140,255,.8);
  font-size: 11px;
  font-weight: 600;
  padding: 5px 10px;
  cursor: pointer;
  width: 100%;
  text-align: left;
  display: flex;
  align-items: center;
  justify-content: space-between;
  transition: background .15s;
  letter-spacing: .02em;
}
.vc-wr-feed-toggle:hover {
  background: rgba(120,80,240,.16);
  color: #c084fc;
}
.vc-wr-feed-chevron {
  font-size: 9px;
  color: rgba(180,140,255,.5);
  transition: transform .2s;
}
.vc-wr-feed-history {
  display: none;
  flex-direction: column;
  gap: 5px;
  padding: 8px 6px 4px;
  max-height: 260px;
  overflow-y: auto;
  border: 1px solid rgba(120,80,240,.12);
  border-top: none;
  border-radius: 0 0 6px 6px;
  background: rgba(0,0,0,.15);
}
.vc-wr-feed-history.open { display: flex; }
.vc-wr-feed-history::-webkit-scrollbar { width: 3px; }
.vc-wr-feed-history::-webkit-scrollbar-thumb { background: rgba(120,80,240,.3); border-radius: 3px; }

.vc-wr-feed-row {
  display: flex;
  align-items: baseline;
  gap: 6px;
  padding: 3px 4px;
  border-radius: 4px;
  font-size: 11px;
}
.vc-wr-feed-row:hover { background: rgba(255,255,255,.03); }
.vc-wr-feed-av { flex-shrink: 0; }
.vc-wr-feed-name { color: rgba(180,140,255,.85); font-weight: 600; flex-shrink: 0; }
.vc-wr-feed-text { color: rgba(220,210,255,.75); flex: 1; word-break: break-word; }
.vc-wr-feed-stamp { font-size: 16px; line-height: 1; }
.vc-wr-feed-time { color: rgba(255,255,255,.2); font-size: 9px; flex-shrink: 0; margin-left: auto; }

/* ── Live Feed History button (on witness record card) ───────────── */
.vc-wr-feed-history-btn {
  display: flex;
  align-items: center;
  gap: 6px;
  width: 100%;
  margin-top: 8px;
  background: rgba(120,80,240,.1);
  border: 1px solid rgba(120,80,240,.25);
  border-radius: 7px;
  color: rgba(180,140,255,.85);
  font-size: 12px;
  font-weight: 600;
  padding: 7px 12px;
  cursor: pointer;
  text-align: left;
  transition: background .15s, border-color .15s;
  letter-spacing: .02em;
}
.vc-wr-feed-history-btn:hover {
  background: rgba(120,80,240,.22);
  border-color: rgba(160,100,255,.5);
  color: #c084fc;
}
.vc-wr-feed-history-btn:disabled {
  opacity: .5;
  cursor: wait;
}

/* ── Live Feed History Modal ─────────────────────────────────────── */
.vc-fh-modal {
  position: fixed;
  inset: 0;
  z-index: 10100;
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 0;
  transition: opacity .25s;
}
.vc-fh-modal.visible { opacity: 1; }

.vc-fh-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(0,0,0,.75);
  backdrop-filter: blur(6px);
}

.vc-fh-panel {
  position: relative;
  background: #150e24;
  border: 1px solid rgba(120,80,240,.35);
  border-radius: 14px;
  box-shadow: 0 24px 80px rgba(0,0,0,.8), 0 0 0 1px rgba(120,80,240,.1);
  width: min(600px, 94vw);
  max-height: 80vh;
  display: flex;
  flex-direction: column;
  transform: translateY(20px);
  transition: transform .28s cubic-bezier(.2,.8,.3,1);
}
.vc-fh-modal.visible .vc-fh-panel { transform: translateY(0); }

.vc-fh-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 16px 18px 14px;
  border-bottom: 1px solid rgba(255,255,255,.07);
  flex-shrink: 0;
}
.vc-fh-header-info {
  display: flex;
  align-items: center;
  gap: 12px;
}
.vc-fh-eye { font-size: 22px; }
.vc-fh-title {
  font-size: 15px;
  font-weight: 700;
  color: #e2d8f5;
  letter-spacing: .01em;
}
.vc-fh-subtitle {
  font-size: 11px;
  color: rgba(180,140,255,.6);
  margin-top: 2px;
}
.vc-fh-close {
  background: rgba(255,255,255,.06);
  border: 1px solid rgba(255,255,255,.1);
  border-radius: 6px;
  color: rgba(255,255,255,.5);
  cursor: pointer;
  font-size: 13px;
  padding: 4px 9px;
  transition: background .15s, color .15s;
  flex-shrink: 0;
}
.vc-fh-close:hover { background: rgba(255,255,255,.12); color: #fff; }

.vc-fh-feed {
  flex: 1;
  overflow-y: auto;
  padding: 12px 14px;
  display: flex;
  flex-direction: column;
  gap: 6px;
  scroll-behavior: smooth;
}
.vc-fh-feed::-webkit-scrollbar { width: 4px; }
.vc-fh-feed::-webkit-scrollbar-track { background: transparent; }
.vc-fh-feed::-webkit-scrollbar-thumb { background: rgba(120,80,240,.3); border-radius: 4px; }

.vc-fh-empty {
  text-align: center;
  color: rgba(255,255,255,.25);
  font-size: 13px;
  padding: 40px 0;
}

.vc-fh-row {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding: 7px 10px;
  border-radius: 8px;
  background: rgba(255,255,255,.03);
  border: 1px solid rgba(255,255,255,.05);
}
.vc-fh-row:hover { background: rgba(255,255,255,.055); }
.vc-fh-row--stamp {
  background: rgba(120,80,240,.06);
  border-color: rgba(120,80,240,.15);
}

.vc-fh-av { flex-shrink: 0; }
.vc-fh-body {
  flex: 1;
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 6px;
  min-width: 0;
}
.vc-fh-name {
  font-size: 12px;
  font-weight: 700;
  color: #c084fc;
  flex-shrink: 0;
}
.vc-fh-text {
  font-size: 13px;
  color: rgba(225,215,255,.85);
  word-break: break-word;
  flex: 1;
  min-width: 100px;
}
.vc-fh-stamp { font-size: 20px; line-height: 1; }
.vc-fh-time {
  font-size: 10px;
  color: rgba(255,255,255,.22);
  flex-shrink: 0;
  margin-left: auto;
  white-space: nowrap;
}

@media (max-width: 480px) {
  .vc-fh-panel { max-height: 90vh; border-radius: 14px 14px 0 0; }
}

/* ═══════════════════════════════════════════════════════════════════
   COVEN CHAT HUB PANEL
   ═══════════════════════════════════════════════════════════════════ */

.vc-coven-chat {
  position: fixed;
  bottom: -900px;
  right: 20px;
  min-width: 320px;
  min-height: 350px;
  max-width: 800px;
  max-height: 900px;
  display: flex;
  flex-direction: column;
  background: #110d1e;
  border: 1px solid rgba(120,80,240,.45);
  border-radius: 14px;
  box-shadow: 0 20px 70px rgba(0,0,0,.88), 0 0 0 1px rgba(120,80,240,.1);
  z-index: 9999;
  transition: bottom .38s cubic-bezier(.2,.8,.3,1);
  overflow: hidden;
}
.vc-coven-chat.visible { bottom: 20px; }
.vc-coven-chat.minimized { min-height: unset; height: 48px !important; overflow: hidden; }
.vc-coven-chat.minimized .vc-cc-body { display: none; }
.vc-coven-chat.minimized .vc-cc-tabs { display: none; }

/* Header */
.vc-cc-header {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 11px 13px 10px;
  border-bottom: 1px solid rgba(120,80,240,.2);
  background: rgba(120,80,240,.1);
  flex-shrink: 0;
  cursor: grab;
}
.vc-cc-icon { font-size: 15px; flex-shrink: 0; }
.vc-cc-coven-name {
  font-size: 12px;
  font-weight: 700;
  color: rgba(220,200,255,.9);
  letter-spacing: .04em;
  text-transform: uppercase;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* Channel tabs */
.vc-cc-tabs {
  display: flex;
  gap: 2px;
  padding: 6px 10px 4px;
  border-bottom: 1px solid rgba(255,255,255,.05);
  background: rgba(0,0,0,.15);
  overflow-x: auto;
  flex-shrink: 0;
  scrollbar-width: none;
}
.vc-cc-tabs::-webkit-scrollbar { display: none; }
.vc-cc-tab {
  background: rgba(255,255,255,.04);
  border: 1px solid rgba(255,255,255,.08);
  border-radius: 5px;
  color: rgba(200,180,255,.5);
  cursor: pointer;
  font-size: 10.5px;
  font-weight: 600;
  padding: 4px 10px;
  white-space: nowrap;
  flex-shrink: 0;
  transition: background .12s, color .12s, border-color .12s;
  position: relative;
}
.vc-cc-tab:hover { background: rgba(120,80,240,.12); color: rgba(200,180,255,.8); }
.vc-cc-tab.active {
  background: rgba(120,80,240,.22);
  border-color: rgba(120,80,240,.5);
  color: #c084fc;
}
.vc-cc-tab-unread {
  display: inline-block;
  margin-left: 5px;
  background: #c084fc;
  color: #1a0a30;
  border-radius: 999px;
  font-size: 9px;
  font-weight: 700;
  padding: 0 5px;
  line-height: 1.5;
  vertical-align: middle;
}

/* Body (stamp area + feed + compose) */
.vc-cc-body {
  flex: 1;
  display: flex;
  flex-direction: column;
  min-height: 0;
  overflow: hidden;
}
.vc-cc-stamp-area { border-bottom: 1px solid rgba(255,255,255,.05); }

/* Feed inside coven chat inherits .vc-lf-feed styles */
.vc-cc-feed { flex: 1; }

/* ── Resize handles ── */
.vc-cc-resize-e {
  position: absolute;
  top: 0; right: 0; bottom: 0;
  width: 5px;
  cursor: ew-resize;
  z-index: 10;
}
.vc-cc-resize-n {
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 5px;
  cursor: ns-resize;
  z-index: 10;
}
.vc-cc-resize-ne {
  position: absolute;
  top: 0; right: 0;
  width: 14px; height: 14px;
  cursor: nesw-resize;
  z-index: 11;
}
.vc-cc-resize-ne::after {
  content: '';
  position: absolute;
  top: 2px; right: 2px;
  width: 6px; height: 6px;
  border-top: 2px solid rgba(120,80,240,.35);
  border-right: 2px solid rgba(120,80,240,.35);
}

/* ── Sidebar chat button ── */
.vc-chat-sidebar-btn {
  width: 100%;
  text-align: left;
  background: none;
  font-family: var(--font-vhs);
  font-size: 10px;
  letter-spacing: 2px;
  text-transform: uppercase;
}
.vc-chat-sidebar-btn:hover {
  background: rgba(120,80,240,.1);
  color: #c084fc !important;
  border-color: rgba(120,80,240,.3) !important;
}
.vc-chat-unread-pip {
  background: #c084fc !important;
  color: #1a0a30 !important;
  font-weight: 700;
}

@media (max-width: 600px) {
  .vc-coven-chat {
    width: calc(100vw - 16px) !important;
    right: 8px;
    max-height: 80vh;
  }
}

/* ── Live feed hub button ── */
.vc-lf-hub-btn {
  background: none; border: 1px solid rgba(120,80,240,.25);
  border-radius: 5px; color: rgba(180,140,255,.6);
  cursor: pointer; font-size: 13px; padding: 2px 6px;
  line-height: 1; transition: all .15s; flex-shrink: 0;
}
.vc-lf-hub-btn:hover { background: rgba(120,80,240,.15); color: #c084fc; border-color: rgba(120,80,240,.5); }

/* ── Edit players picker ── */
.vc-wr-edit-players-btn {
  background: none; border: none; color: rgba(180,140,255,.45);
  cursor: pointer; font-size: 11px; padding: 1px 4px;
  border-radius: 3px; transition: color .12s, background .12s;
  vertical-align: middle; line-height: 1;
}
.vc-wr-edit-players-btn:hover { color: #c084fc; background: rgba(120,80,240,.12); }

.vc-wr-player-picker {
  background: #1a1030;
  border: 1px solid rgba(120,80,240,.35);
  border-radius: 8px;
  padding: 10px 12px;
  margin-top: 6px;
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.vc-wr-pp-title {
  font-size: 10px; font-weight: 700;
  color: rgba(180,140,255,.7);
  letter-spacing: .05em; text-transform: uppercase;
  margin-bottom: 2px;
}
.vc-wr-pp-row {
  display: flex; align-items: center; gap: 7px;
  font-size: 12px; color: rgba(220,210,255,.8);
  cursor: pointer; padding: 2px 0;
}
.vc-wr-pp-row input { accent-color: #c084fc; cursor: pointer; }
.vc-wr-pp-actions { display: flex; gap: 6px; margin-top: 4px; }

/* ── Coven chat header ticker ── */
.vc-cc-ticker-wrap {
  flex: 1;
  min-width: 0;
  overflow: hidden;
  margin: 0 8px;
  mask-image: linear-gradient(to right, transparent, black 12%, black 88%, transparent);
  -webkit-mask-image: linear-gradient(to right, transparent, black 12%, black 88%, transparent);
}
.vc-cc-ticker {
  display: flex;
  gap: 6px;
  align-items: center;
  white-space: nowrap;
  animation: vc-cc-ticker-scroll 18s linear infinite;
}
.vc-cc-ticker:empty { animation: none; }
@keyframes vc-cc-ticker-scroll {
  0%   { transform: translateX(0); }
  100% { transform: translateX(-50%); }
}
.vc-cc-tick-item {
  display: inline-flex;
  align-items: center;
  font-size: 14px;
  opacity: .7;
  flex-shrink: 0;
}
.vc-cc-tick-text {
  font-size: 9.5px;
  color: rgba(200,180,255,.55);
  background: rgba(120,80,240,.1);
  border-radius: 4px;
  padding: 1px 5px;
  font-family: var(--font-vhs, monospace);
  letter-spacing: .03em;
}

/* ── Sealed/archive tab ── */
.vc-cc-tab--sealed {
  opacity: .6;
  font-style: italic;
}
.vc-cc-tab--sealed.active {
  opacity: 1;
  border-color: rgba(200,160,80,.5);
  color: #c9973a;
}

/* ── Archive dropdown tab ── */
.vc-cc-archive-wrap {
  position: relative;
  display: inline-flex;
}
.vc-cc-tab--archive {
  opacity: .7;
  font-style: italic;
  letter-spacing: .01em;
}
.vc-cc-tab--archive.active { opacity: 1; color: #c9973a; border-color: rgba(200,160,80,.45); }

.vc-cc-archive-dropdown {
  display: none;
  position: absolute;
  top: calc(100% + 4px);
  left: 0;
  min-width: 180px;
  background: #1a1030;
  border: 1px solid rgba(120,80,240,.35);
  border-radius: 8px;
  padding: 5px;
  z-index: 9999;
  box-shadow: 0 8px 28px rgba(0,0,0,.5);
  flex-direction: column;
  gap: 2px;
}
.vc-cc-archive-dropdown.open { display: flex; }

.vc-cc-archive-item {
  background: none;
  border: none;
  border-radius: 6px;
  color: rgba(220,210,255,.75);
  cursor: pointer;
  font-size: 12px;
  font-family: var(--font-vhs, monospace);
  padding: 7px 10px;
  text-align: left;
  transition: background .12s, color .12s;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.vc-cc-archive-item:hover { background: rgba(120,80,240,.15); color: #c084fc; }
.vc-cc-archive-item.active { color: #c9973a; background: rgba(200,160,80,.1); }
