/* TTURP — neon / CRT phosphor lab theme
   Activate: <body data-theme="neon"> */
[data-theme="neon"] {
  --bg: #070b14;
  --bg-alt: #0c1220;
  --ink: #e6f1ff;
  --ink-soft: #8b9bb8;
  --paper: #0e1628;
  --line: #1e2d4a;
  --accent: #00e5ff;
  --accent-soft: #5af0ff;
  --gold: #ff2d95;
  --neon-cyan: #00e5ff;
  --neon-magenta: #ff2d95;
  --neon-violet: #a855f7;
  --neon-lime: #b8ff3c;
  --glow-cyan: 0 0 8px rgba(0, 229, 255, .55), 0 0 24px rgba(0, 229, 255, .25);
  --glow-magenta: 0 0 8px rgba(255, 45, 149, .5), 0 0 22px rgba(255, 45, 149, .22);
  --shadow: 0 0 0 1px rgba(0, 229, 255, .06), 0 8px 28px rgba(0, 0, 0, .55);
  color: var(--ink);
  background-color: var(--bg);
  background-image:
    linear-gradient(rgba(0, 229, 255, .03) 1px, transparent 1px),
    linear-gradient(90deg, rgba(0, 229, 255, .03) 1px, transparent 1px),
    radial-gradient(ellipse 900px 480px at 70% -8%, rgba(255, 45, 149, .14), transparent 55%),
    radial-gradient(ellipse 700px 420px at 10% 20%, rgba(0, 229, 255, .10), transparent 50%),
    radial-gradient(ellipse 600px 500px at 90% 90%, rgba(168, 85, 247, .08), transparent 50%);
  background-size:
    48px 48px,
    48px 48px,
    auto,
    auto,
    auto;
  background-attachment: fixed;
}

/* CRT scanline overlay — atmosphere only, never on text layers */
[data-theme="neon"]::before {
  content: "";
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 9999;
  background: repeating-linear-gradient(
    to bottom,
    transparent 0,
    transparent 2px,
    rgba(0, 0, 0, .12) 2px,
    rgba(0, 0, 0, .12) 3px
  );
  opacity: .35;
  mix-blend-mode: multiply;
}

/* Soft phosphor flicker on the page wash (disabled under reduced-motion) */
[data-theme="neon"]::after {
  content: "";
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 9998;
  background: radial-gradient(ellipse at center, transparent 50%, rgba(0, 0, 0, .35) 100%);
  opacity: .7;
  animation: neon-vignette-breathe 7s ease-in-out infinite alternate;
}

@keyframes neon-vignette-breathe {
  from { opacity: .55; }
  to   { opacity: .78; }
}

@keyframes neon-grid-drift {
  from { background-position: 0 0, 0 0, 0 0, 0 0, 0 0; }
  to   { background-position: 48px 48px, 48px 48px, 0 0, 0 0, 0 0; }
}

@keyframes neon-pulse {
  0%, 100% { opacity: 1; filter: brightness(1); }
  50%      { opacity: .85; filter: brightness(1.15); }
}

@keyframes neon-border-flow {
  0%   { background-position: 0% 50%; }
  100% { background-position: 200% 50%; }
}

[data-theme="neon"] {
  animation: neon-grid-drift 28s linear infinite;
}

/* ——— Links ——— */
[data-theme="neon"] a {
  color: var(--neon-cyan);
  text-shadow: 0 0 10px rgba(0, 229, 255, .25);
  transition: color .15s ease, text-shadow .15s ease;
}
[data-theme="neon"] a:hover {
  color: #b8f9ff;
  text-shadow: var(--glow-cyan);
  text-decoration: none;
}

/* ——— Header ——— */
[data-theme="neon"] .site-head {
  background: rgba(8, 12, 22, .88);
  border-bottom: 1px solid rgba(0, 229, 255, .22);
  backdrop-filter: blur(12px) saturate(1.3);
  box-shadow: 0 1px 0 rgba(255, 45, 149, .12), 0 8px 32px rgba(0, 0, 0, .4);
}
[data-theme="neon"] .brand { color: var(--ink); }
[data-theme="neon"] .brand:hover { text-shadow: var(--glow-cyan); }
[data-theme="neon"] .brand-crest {
  background: #000;
  box-shadow:
    0 0 0 1px rgba(0, 229, 255, .35),
    0 0 12px rgba(0, 229, 255, .45),
    0 0 26px rgba(255, 45, 149, .25);
}
[data-theme="neon"] .brand-text em { color: var(--ink-soft); }
[data-theme="neon"] .main-nav a {
  color: var(--ink-soft);
  text-shadow: none;
}
[data-theme="neon"] .main-nav a:hover {
  color: var(--neon-cyan);
  text-shadow: var(--glow-cyan);
}

/* ——— Hero ——— */
[data-theme="neon"] .hero {
  background:
    linear-gradient(105deg, rgba(0, 229, 255, .0) 0%, rgba(0, 229, 255, .06) 42%, rgba(255, 45, 149, .0) 58%, rgba(255, 45, 149, .07) 100%),
    radial-gradient(ellipse 900px 420px at 85% 0%, rgba(255, 45, 149, .22), transparent 55%),
    radial-gradient(ellipse 700px 380px at 15% 30%, rgba(0, 229, 255, .16), transparent 50%),
    linear-gradient(165deg, #0a1020 0%, #070b14 55%, #0c0820 100%);
  border-bottom: 1px solid transparent;
  border-image: linear-gradient(90deg, transparent, var(--neon-cyan), var(--neon-magenta), transparent) 1;
  position: relative;
  isolation: isolate;
}
/* Thin chromatic edge strip along hero bottom */
[data-theme="neon"] .hero::after {
  content: "";
  position: absolute;
  left: 0; right: 0; bottom: 0;
  height: 2px;
  background: linear-gradient(
    90deg,
    transparent 0%,
    #00e5ff 18%,
    #ffffff 48%,
    #ff2d95 72%,
    transparent 100%
  );
  box-shadow:
    0 0 12px rgba(0, 229, 255, .7),
    0 0 12px rgba(255, 45, 149, .5),
    0 1px 0 rgba(255, 255, 255, .25);
  pointer-events: none;
  z-index: 2;
}
/* Chromatic fringe on left/right of hero */
[data-theme="neon"] .hero::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: 0;
  box-shadow:
    inset 3px 0 0 rgba(0, 229, 255, .35),
    inset -3px 0 0 rgba(255, 45, 149, .35),
    inset 6px 0 18px rgba(0, 229, 255, .08),
    inset -6px 0 18px rgba(255, 45, 149, .08);
  opacity: .85;
}
[data-theme="neon"] .hero .wrap { position: relative; z-index: 1; }
[data-theme="neon"] .hero .kicker {
  color: var(--neon-magenta);
  text-shadow: var(--glow-magenta);
  letter-spacing: .2em;
}
[data-theme="neon"] .hero h1 {
  color: var(--ink);
  text-shadow:
    0 0 20px rgba(0, 229, 255, .15),
    0 2px 0 rgba(0, 0, 0, .4);
}
[data-theme="neon"] .hero h1 .t {
  color: var(--neon-cyan);
  text-shadow:
    0 0 8px rgba(0, 229, 255, .7),
    0 0 28px rgba(0, 229, 255, .4),
    0 0 48px rgba(0, 229, 255, .2),
    1px 0 0 rgba(255, 45, 149, .45),
    -1px 0 0 rgba(0, 229, 255, .35);
}
[data-theme="neon"] .hero p.sub { color: var(--ink-soft); }
[data-theme="neon"] .hero-stats .stat .n {
  color: var(--ink);
  text-shadow: 0 0 16px rgba(0, 229, 255, .25);
}
[data-theme="neon"] .hero-stats .stat .l { color: var(--ink-soft); }
[data-theme="neon"] .hero-map-slot {
  border: 1px dashed rgba(0, 229, 255, .35);
  background: rgba(0, 229, 255, .04);
  color: var(--ink-soft);
  box-shadow: inset 0 0 24px rgba(0, 229, 255, .05);
}

/* ——— Sections ——— */
[data-theme="neon"] .sec.alt {
  background:
    linear-gradient(180deg, rgba(0, 229, 255, .03), transparent 40%),
    var(--bg-alt);
  box-shadow: inset 0 1px 0 rgba(0, 229, 255, .08), inset 0 -1px 0 rgba(255, 45, 149, .06);
}
[data-theme="neon"] .section-head .kicker {
  color: var(--neon-magenta);
  text-shadow: 0 0 12px rgba(255, 45, 149, .4);
}
[data-theme="neon"] .section-head h2 {
  color: var(--ink);
  text-shadow: 0 0 18px rgba(0, 229, 255, .18);
}

/* ——— Culture cards ——— */
[data-theme="neon"] {
  /* culture card: flag fills the card, dark scrim, neon border */
  --card-scrim: linear-gradient(rgba(6,9,18,.42), rgba(6,9,18,.42));
  --card-scrim-hover: linear-gradient(rgba(6,9,18,.24), rgba(6,9,18,.24));
  --card-soft: #a9b6cc;
  --card-gold: #ffcf6b;
}
[data-theme="neon"] .culture-card {
  background-color: #0c1426;
  background-image: var(--cflag, none), var(--cflag-back, none);
  background-size: var(--cflag-size, cover), cover;
  background-position: center, center;
  background-repeat: no-repeat, no-repeat;
  border: 1px solid rgba(0, 229, 255, .28);
  box-shadow: var(--shadow);
  transition: transform .18s ease, box-shadow .22s ease, border-color .22s ease;
}
[data-theme="neon"] .culture-card h3 {
  color: #fff;
  text-shadow: 0 1px 2px rgba(0,0,0,.6), 0 0 18px rgba(0, 229, 255, .45);
}
[data-theme="neon"] .culture-card:hover {
  transform: translateY(-3px);
  border-color: var(--neon-cyan);
  /* LONGHAND only. The shorthand `background:` also resets background-image, and the card's flag
     artwork is a background-image set inline via --cflag — so hover used to erase the flag. */
  background-color: #122038;
  box-shadow:
    0 0 0 1px rgba(0, 229, 255, .45),
    0 0 18px rgba(0, 229, 255, .35),
    0 0 40px rgba(255, 45, 149, .18),
    0 12px 32px rgba(0, 0, 0, .55);
}
[data-theme="neon"] .culture-flag {
  opacity: .24;
  filter: saturate(1.35) brightness(1.08) drop-shadow(0 0 14px rgba(0, 229, 255, .45));
  transition: opacity .2s ease, filter .2s ease, transform .2s ease;
}
[data-theme="neon"] .culture-card:hover .culture-flag {
  opacity: .40;
  filter: saturate(1.8) brightness(1.3) drop-shadow(0 0 22px rgba(0, 229, 255, .7));
  transform: scale(1.04);
}
[data-theme="neon"] .culture-card h3 {
  color: var(--ink);
  text-shadow: 0 0 8px var(--paper), 0 0 3px var(--paper),
    0 0 18px rgba(0, 229, 255, .35);
}
[data-theme="neon"] .culture-card .cnt {
  color: var(--ink-soft);
  text-shadow: 0 0 8px var(--paper), 0 0 3px var(--paper);
}
[data-theme="neon"] .culture-card .sub {
  color: var(--neon-magenta);
  text-shadow: 0 0 8px var(--paper), 0 0 3px var(--paper),
    0 0 12px rgba(255, 45, 149, .45);
}

/* ——— Track cards ——— */
[data-theme="neon"] .track-card {
  background: linear-gradient(135deg, #101a30, #0c1426);
  border: 1px solid rgba(0, 229, 255, .16);
  box-shadow: var(--shadow);
  transition: border-color .18s ease, box-shadow .18s ease;
}
[data-theme="neon"] .track-card:hover {
  border-color: var(--neon-cyan);
  box-shadow:
    0 0 0 1px rgba(0, 229, 255, .35),
    0 0 20px rgba(0, 229, 255, .22),
    0 8px 24px rgba(0, 0, 0, .5);
}
[data-theme="neon"] .track-card .thumb {
  background: #152038;
  box-shadow: 0 0 0 1px rgba(0, 229, 255, .15), 0 0 12px rgba(0, 229, 255, .08);
}
[data-theme="neon"] .track-card .tc-title { color: var(--ink); }
[data-theme="neon"] .track-card .tc-meta { color: var(--ink-soft); }

/* Era chips — neon-tinted pills, still readable */
[data-theme="neon"] .era-pd {
  background: rgba(184, 255, 60, .12);
  color: #d4ff8a;
  border: 1px solid rgba(184, 255, 60, .35);
  box-shadow: 0 0 10px rgba(184, 255, 60, .15);
}
[data-theme="neon"] .era-gray {
  background: rgba(255, 200, 60, .10);
  color: #ffd56a;
  border: 1px solid rgba(255, 200, 60, .3);
  box-shadow: 0 0 10px rgba(255, 200, 60, .12);
}
[data-theme="neon"] .era-risk {
  background: rgba(255, 45, 149, .12);
  color: #ff8fc4;
  border: 1px solid rgba(255, 45, 149, .4);
  box-shadow: 0 0 10px rgba(255, 45, 149, .18);
}
[data-theme="neon"] .era-unk {
  background: rgba(139, 155, 184, .12);
  color: #b0bfd6;
  border: 1px solid rgba(139, 155, 184, .3);
}

/* ——— Live cards ——— */
[data-theme="neon"] .live-card {
  background: linear-gradient(180deg, #101a30, #0c1426);
  border: 1px solid rgba(0, 229, 255, .16);
  box-shadow: var(--shadow);
  transition: border-color .18s ease, box-shadow .18s ease;
}
[data-theme="neon"] .live-card:hover {
  border-color: rgba(255, 45, 149, .5);
  box-shadow:
    0 0 0 1px rgba(255, 45, 149, .3),
    0 0 24px rgba(255, 45, 149, .18),
    0 10px 28px rgba(0, 0, 0, .5);
}
[data-theme="neon"] .live-card h3 { color: var(--ink); }
[data-theme="neon"] .live-card .lc-culture { color: var(--ink-soft); }
[data-theme="neon"] .live-card .yt-badge {
  background: #e11d48;
  color: #fff;
  box-shadow: 0 0 12px rgba(225, 29, 72, .45);
}
[data-theme="neon"] .live-card .yt-badge.green {
  background: #16a34a;
  box-shadow: 0 0 12px rgba(22, 163, 74, .45);
}

/* ——— Page headers ——— */
[data-theme="neon"] .page-head {
  background:
    radial-gradient(ellipse 800px 300px at 70% 0%, rgba(255, 45, 149, .14), transparent 55%),
    radial-gradient(ellipse 600px 280px at 10% 40%, rgba(0, 229, 255, .10), transparent 50%),
    linear-gradient(165deg, #0a1020, var(--bg-alt));
  border-bottom: 1px solid rgba(0, 229, 255, .2);
  box-shadow: inset 3px 0 0 rgba(0, 229, 255, .3), inset -3px 0 0 rgba(255, 45, 149, .25);
}
/* A hearth page's head carries the place's period photograph via main.css .page-head.has-photo
   (background-image ... , var(--hero)). This rule has equal specificity but loads later, and the
   `background:` shorthand above was resetting background-image — so in neon the hero photo was
   wiped. Restate it with LONGHANDS and the gradients layered OVER the photo. */
[data-theme="neon"] .page-head.has-photo {
  background-image:
    radial-gradient(ellipse 800px 300px at 70% 0%, rgba(255, 45, 149, .20), transparent 55%),
    radial-gradient(ellipse 600px 280px at 10% 40%, rgba(0, 229, 255, .16), transparent 50%),
    linear-gradient(rgba(6, 10, 20, .62), rgba(6, 10, 20, .88)),
    var(--hero);
  background-size: auto, auto, cover, cover;
  background-position: center, center, center 32%, center 32%;
  background-repeat: no-repeat;
}
[data-theme="neon"] .page-head .crumbs,
[data-theme="neon"] .page-head .crumbs a { color: var(--ink-soft); }
[data-theme="neon"] .page-head .crumbs a:hover {
  color: var(--neon-cyan);
  text-shadow: var(--glow-cyan);
}
[data-theme="neon"] .page-head h1 {
  color: var(--ink);
  text-shadow:
    0 0 20px rgba(0, 229, 255, .2),
    1px 0 0 rgba(255, 45, 149, .25),
    -1px 0 0 rgba(0, 229, 255, .2);
}
[data-theme="neon"] .page-head .lede { color: var(--ink-soft); }
[data-theme="neon"] .page-head .stats-row { color: var(--ink-soft); }
[data-theme="neon"] .page-head .stats-row b {
  color: var(--neon-cyan);
  text-shadow: 0 0 10px rgba(0, 229, 255, .35);
  font-weight: 600;
}

/* ——— Detail layouts ——— */
[data-theme="neon"] .label-fig {
  background: linear-gradient(160deg, #101a30, #0c1426);
  border: 1px solid rgba(0, 229, 255, .2);
  box-shadow:
    var(--shadow),
    0 0 24px rgba(0, 229, 255, .08);
}
[data-theme="neon"] .label-fig img {
  background: #152038;
  box-shadow: 0 0 0 1px rgba(0, 229, 255, .12);
}
[data-theme="neon"] .label-fig figcaption { color: var(--ink-soft); }
/* markup is <dl class="meta-list"><div>…</div></dl>, so target the row div (was `li`, which never matched) */
[data-theme="neon"] .meta-list > div {
  border-bottom-color: rgba(0, 229, 255, .12);
}
[data-theme="neon"] .meta-list dt { color: var(--ink-soft); }
[data-theme="neon"] .meta-list dd { color: var(--ink); }
[data-theme="neon"] .embed-wrap {
  background: #000;
  box-shadow:
    0 0 0 1px rgba(0, 229, 255, .25),
    0 0 28px rgba(0, 229, 255, .12),
    0 0 48px rgba(255, 45, 149, .08);
}
[data-theme="neon"] .video-credit { color: var(--ink-soft); }
[data-theme="neon"] .audio-embed iframe {
  box-shadow: 0 0 0 1px rgba(0, 229, 255, .2), 0 0 16px rgba(0, 229, 255, .1);
}

/* ——— Buttons ——— */
[data-theme="neon"] .btn {
  background: transparent;
  color: #041018;
  background-image: linear-gradient(135deg, var(--neon-cyan) 0%, #5af0ff 45%, var(--neon-magenta) 100%);
  background-size: 160% 160%;
  border: 1px solid rgba(255, 255, 255, .25);
  box-shadow:
    0 0 12px rgba(0, 229, 255, .45),
    0 0 28px rgba(255, 45, 149, .25),
    inset 0 1px 0 rgba(255, 255, 255, .35);
  text-shadow: 0 1px 0 rgba(255, 255, 255, .25);
  transition: box-shadow .2s ease, transform .15s ease, background-position .3s ease, filter .15s ease;
  animation: neon-border-flow 6s linear infinite;
}
[data-theme="neon"] .btn:hover {
  filter: brightness(1.08);
  transform: translateY(-1px);
  box-shadow:
    0 0 18px rgba(0, 229, 255, .65),
    0 0 40px rgba(255, 45, 149, .35),
    inset 0 1px 0 rgba(255, 255, 255, .45);
  text-decoration: none;
  color: #031016;
}

/* ——— Related / prose ——— */
[data-theme="neon"] .related {
  border-top: 1px solid rgba(0, 229, 255, .18);
}
[data-theme="neon"] .related h2 {
  color: var(--ink);
  text-shadow: 0 0 14px rgba(0, 229, 255, .18);
}
[data-theme="neon"] .prose h1,
[data-theme="neon"] .prose h2,
[data-theme="neon"] .prose h3 {
  color: var(--ink);
  text-shadow: 0 0 16px rgba(0, 229, 255, .15);
}
[data-theme="neon"] .prose .lede { color: var(--ink-soft); }
[data-theme="neon"] .prose p,
[data-theme="neon"] .prose li { color: var(--ink); }
[data-theme="neon"] .prose blockquote {
  border-left: 3px solid var(--neon-magenta);
  color: var(--ink-soft);
  background: rgba(255, 45, 149, .05);
  box-shadow: -4px 0 16px rgba(255, 45, 149, .08);
}
[data-theme="neon"] .prose .divider {
  border-top-color: rgba(0, 229, 255, .2);
}

/* ——— Footer ——— */
[data-theme="neon"] .site-foot {
  background: #080e1a;
  border-top: 1px solid rgba(0, 229, 255, .2);
  box-shadow: 0 -8px 32px rgba(0, 0, 0, .35), inset 0 1px 0 rgba(255, 45, 149, .1);
}
[data-theme="neon"] .foot-brand strong {
  color: var(--ink);
  text-shadow: 0 0 12px rgba(0, 229, 255, .2);
}
[data-theme="neon"] .foot-brand p { color: var(--ink-soft); }
[data-theme="neon"] .foot-links a { color: var(--neon-cyan); }
[data-theme="neon"] .foot-legal {
  border-top-color: rgba(0, 229, 255, .14);
  color: var(--ink-soft);
}

/* Focus rings — accessibility, neon-visible */
[data-theme="neon"] a:focus-visible,
[data-theme="neon"] .btn:focus-visible,
[data-theme="neon"] .culture-card:focus-visible,
[data-theme="neon"] .track-card:focus-visible {
  outline: 2px solid var(--neon-cyan);
  outline-offset: 3px;
  box-shadow: 0 0 0 4px rgba(0, 229, 255, .25), var(--glow-cyan);
}

/* Selection */
[data-theme="neon"] ::selection {
  background: rgba(0, 229, 255, .35);
  color: #ffffff;
}

/* ——— Reduced motion: kill every neon animation ——— */
@media (prefers-reduced-motion: reduce) {
  [data-theme="neon"],
  [data-theme="neon"]::before,
  [data-theme="neon"]::after,
  [data-theme="neon"] .btn,
  [data-theme="neon"] .hero h1 .t,
  [data-theme="neon"] .culture-card,
  [data-theme="neon"] .culture-flag {
    animation: none !important;
    transition: none !important;
  }
  [data-theme="neon"] {
    background-attachment: scroll;
  }
  [data-theme="neon"]::before {
    opacity: .22;
  }
  [data-theme="neon"]::after {
    opacity: .65;
  }
}


/* ── 2026-09-10 — new browse surfaces (Library / Discs / Timeline / Search /
   Hear next door). Colours come from the variables above; this adds only the
   glow, and keeps image wells dark so a mid-century label scan doesn't blow out. */
[data-theme="neon"] .artist-card:hover,
[data-theme="neon"] .disc-card:hover,
[data-theme="neon"] .nbr-card:hover { border-color: var(--neon-cyan); box-shadow: var(--glow-cyan); }
[data-theme="neon"] .ac-media,
[data-theme="neon"] .dc-img { background: #0a1020; }
[data-theme="neon"] .ac-media .no-art-mark { color: #2b3b5c; }
[data-theme="neon"] .nbr-flag::after { background: rgba(6, 9, 18, .55); }
[data-theme="neon"] .nbr-name { color: #fff; text-shadow: 0 0 10px rgba(0, 229, 255, .35); }
[data-theme="neon"] .db-seg { background: var(--neon-cyan); opacity: .7; }
[data-theme="neon"] .db-seg:hover { opacity: 1; box-shadow: var(--glow-cyan); }
[data-theme="neon"] .db-n { color: #04121a; }
[data-theme="neon"] .disc-chip.is-on { color: #04121a; box-shadow: var(--glow-cyan); }
[data-theme="neon"] .disc-chip:hover { border-color: var(--neon-cyan); }
[data-theme="neon"] .tl-row:hover,
[data-theme="neon"] .sr-row:hover { background: rgba(0, 229, 255, .05); }
[data-theme="neon"] .tl-year { color: var(--neon-lime); }
[data-theme="neon"] .ac-count,
[data-theme="neon"] .nbr-count { color: var(--neon-lime); }
[data-theme="neon"] mark { background: rgba(255, 45, 149, .32); color: var(--ink); }
[data-theme="neon"] .search-form input:focus { box-shadow: var(--glow-cyan); }
[data-theme="neon"] .sr-thumb { border: 1px solid var(--line); }
[data-theme="neon"] .nav-search input { background: #0a1020; }
