/* ============================================================
   Angel x Devil — site styles
   White background, brand colors from the logo:
     ink   = #0a0a0a   (black strokes)
     red   = #d62828   (devil — horns, pitchfork)
     blue  = #2c5d8c   (angel — wing feathers)
     gold  = #d4a017   (halo)
     purple= #6a4c93   (wing/arrow shadows)
   Hand-painted asset accents (wing, horn, halo, arrow) live
   in /media/ and are placed as decorative imagery on most pages.
   ============================================================ */

:root {
  --bg: #ffffff;
  --bg-soft: #fafafa;
  --bg-tint: #f4f4f6;
  --ink: #0a0a0a;
  --ink-soft: #3a3a3a;
  --muted: #8a8a8a;
  --hairline: rgba(10, 10, 10, 0.10);
  --hairline-strong: rgba(10, 10, 10, 0.18);

  --red:    #d62828;
  --red-2:  #b41f23;
  --blue:   #2c5d8c;
  --blue-2: #1c3d7a;
  --gold:   #d4a017;
  --gold-2: #b88a13;
  --purple: #6a4c93;
}

* { box-sizing: border-box; }
html, body { margin: 0; padding: 0; background: var(--bg); }
body {
  color: var(--ink);
  font-family: 'Helvetica Neue', 'Inter', system-ui, -apple-system, 'Segoe UI', sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  line-height: 1.6;
}

img { display: block; max-width: 100%; }
a { color: var(--ink); text-decoration: none; transition: color 0.2s ease, opacity 0.2s ease; }
a:hover { color: var(--red); }
.muted { color: var(--muted); }

/* ---------- Header ---------- */
.site-header {
  position: sticky; top: 0; z-index: 200;
  display: flex; align-items: center; justify-content: space-between;
  padding: 14px 36px;
  background: rgba(255, 255, 255, 0.92);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  border-bottom: 1px solid var(--hairline);
  /* don't clip the centered logo that hangs below the bottom border */
  overflow: visible;
}
.brand {
  /* text wordmark only — logo is now its own element (.brand-logo) */
  display: inline-flex; align-items: center;
  font-weight: 700;
  font-size: 16px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--ink);
  white-space: nowrap;
}
.brand:hover { color: var(--ink); opacity: 0.7; }
.brand .brand-x { color: var(--gold); font-style: italic; font-weight: 400; }

/* Big centered logo. Sits in the middle of the header with about 1/3 of its
   height above the bottom border and ~2/3 hanging below, so it visually
   "drops" past the title bar and lays over the banner / brush divider. */
.brand-logo {
  position: absolute;
  left: 50%;
  top: 50%;
  width: 90px;          /* 2.5x the old 36px logo */
  height: 90px;
  /* translate -50% horizontally, +33% vertically so the logo's center sits
     ~1/3 of its height BELOW the header's vertical center, putting 1/3 of
     the logo above the bottom border and the rest hanging below. */
  transform: translate(-50%, -16%);
  z-index: 10;          /* above brand text + nav inside the header */
  pointer-events: auto;
  display: block;
  line-height: 0;
}
.brand-logo img {
  width: 100%; height: 100%;
  object-fit: contain;
  display: block;
  /* subtle drop shadow so it reads on top of the banner imagery below */
  filter: drop-shadow(0 4px 14px rgba(0,0,0,0.18));
  transition: transform 0.25s ease;
}
.brand-logo:hover img { transform: scale(1.04); }

/* On narrow viewports drop the "ANGEL X DEVIL" wordmark, leaving only
   the centered logo and the section nav. visibility:hidden keeps the
   layout slot so flex space-between still pushes nav to the right. */
@media (max-width: 720px) {
  .brand { visibility: hidden; }
  .brand-logo { width: 78px; height: 78px; }
}
@media (max-width: 420px) {
  .brand-logo { width: 64px; height: 64px; }
}

.nav { display: flex; gap: 30px; }
.nav a {
  font-size: 12px;
  letter-spacing: 0.24em;
  text-transform: uppercase;
  font-weight: 600;
  position: relative;
  padding: 6px 0;
  color: var(--ink-soft);
}
.nav a:hover { color: var(--ink); }
.nav a.active { color: var(--ink); }
.nav a.active::after {
  content: '';
  position: absolute; bottom: -2px; left: 0; right: 0;
  height: 2px; background: var(--gold);
}

/* ---------- Banner carousel (replaces old list-hero) ---------- */
.banner {
  position: relative;
  width: 100%;
  aspect-ratio: 16 / 9;
  max-height: 70vh;
  overflow: hidden;
  background: #fff;
}
.banner .slides { position: absolute; inset: 0; }
.banner .slide {
  position: absolute; inset: 0;
  background-size: cover; background-position: center;
  background-repeat: no-repeat;
  opacity: 0;
  transition: opacity 1.1s ease-in-out;
}
.banner .slide.active { opacity: 1; }

.banner .arrow {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 56px; height: 56px;
  border-radius: 999px;
  display: inline-flex; align-items: center; justify-content: center;
  background: rgba(255, 255, 255, 0.18);
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
  border: 1px solid rgba(255, 255, 255, 0.35);
  color: var(--ink);
  cursor: pointer;
  transition: background 0.2s ease, transform 0.2s ease;
  z-index: 2;
}
.banner .arrow:hover { background: rgba(255, 255, 255, 0.5); transform: translateY(-50%) scale(1.05); }
.banner .arrow.left  { left: 18px; }
.banner .arrow.right { right: 18px; }
.banner .arrow svg { width: 22px; height: 22px; }
@media (max-width: 600px) {
  .banner .arrow { width: 44px; height: 44px; }
  .banner .arrow.left  { left: 10px; }
  .banner .arrow.right { right: 10px; }
}

.banner .dots {
  position: absolute;
  left: 0; right: 0; bottom: 18px;
  display: flex; justify-content: center; gap: 10px;
  z-index: 2;
}
.banner .dot {
  width: 9px; height: 9px;
  border-radius: 999px;
  background: rgba(255,255,255,0.45);
  border: 1px solid rgba(0,0,0,0.18);
  cursor: pointer;
  transition: all 0.2s ease;
}
.banner .dot:hover { background: rgba(255,255,255,0.9); }
.banner .dot.active { background: var(--ink); border-color: var(--ink); width: 22px; }

/* ---------- Brush-stroke divider (two large strokes cup the banner) ---------- */
.brush-divider {
  position: relative;
  height: 200px;
  margin-top: -80px;       /* overlap into banner above */
  margin-bottom: -20px;    /* meets cards below */
  overflow-x: clip;        /* clip horizontally so off-screen tails don't scroll */
  overflow-y: visible;     /* let strokes spill vertically — banner + cards */
  pointer-events: none;
  z-index: 100;            /* on top of everything (header is 50, banner < that) */
}
.brush-divider .stroke {
  position: absolute;
  top: 50%;
  width: clamp(720px, 80vw, 1300px);
  height: auto;
}
/* Natural orientation (no flip needed — stroke_0004 already cups upward).
   7° symmetric tilts give a gentle asymmetric brushy feel. */
.brush-divider .stroke.left  { left:  -45%; transform: translateY(-100%) rotate(12deg);  }
.brush-divider .stroke.right { right: -45%; transform: translateY(-100%) rotate(-12deg); }
@media (max-width: 700px) {
  .brush-divider { height: 130px; margin-top: -50px; margin-bottom: -10px; }
  .brush-divider .stroke { width: 120vw; }
  .brush-divider .stroke.left  { left: -55%; }
  .brush-divider .stroke.right { right: -55%; }
}

/* ---------- Content section + ornaments attached to first row of cards ---------- */
.ornamented {
  position: relative;
  padding-bottom: 80px;
}
/* Make the grid the positioning anchor — ornaments sit on the card corners. */
.grid { position: relative; }
.grid .ornament {
  position: absolute;
  pointer-events: none;
  filter: drop-shadow(0 4px 18px rgba(0,0,0,0.10));
  z-index: 3;             /* above the cards so they overlap inward */
}
/* Wing — emerges from the top-left corner of the first card, sweeping outward.
   Top edge dips above the card so it touches the brush stroke divider above. */
.grid .ornament.wing {
  /* Center the image directly on the top-left corner of the first card.
     The grid has 36px horizontal padding, so the first card's left edge is at 36px. */
  top: 0;
  left: 36px;
  width: 180px;
  transform: translate(-50%, -50%);
}
/* Horn — mirror to the right, sweeping outward from the top-right card corner. */
.grid .ornament.horn {
  /* Center on the top-right corner of the last card in the first row.
     No rotation, no flipping — natural orientation. */
  top: 0;
  right: 36px;
  width: 140px;
  transform: translate(50%, -50%);
}
@media (max-width: 700px) {
  .grid .ornament.wing { width: 120px; left: 20px; top: 0; transform: translate(-50%, -50%); }
  .grid .ornament.horn { width:  90px; right: 20px; top: 0; transform: translate(50%, -50%); }
}

/* ---------- Legacy hero classes (kept for /privacy /terms etc.) ---------- */
.list-hero {
  position: relative;
  padding: 56px 24px 40px;
  text-align: center;
  overflow: hidden;
  background:
    radial-gradient(circle at 20% 30%, rgba(44, 93, 140, 0.06), transparent 60%),
    radial-gradient(circle at 80% 70%, rgba(214, 40, 40, 0.06), transparent 60%);
}
.hero-logo {
  width: clamp(160px, 18vw, 240px);
  margin: 0 auto 24px;
}
.hero-logo img { width: 100%; height: auto; }
.hero-wordmark {
  font-size: clamp(24px, 3vw, 36px);
  letter-spacing: 0.32em;
  text-transform: uppercase;
  font-weight: 800;
  margin: 0;
}
.hero-wordmark .x {
  color: var(--gold);
  font-weight: 400;
  font-style: italic;
  margin: 0 0.2em;
}
.hero-sub {
  font-size: 13px;
  letter-spacing: 0.32em;
  text-transform: uppercase;
  color: var(--muted);
  margin-top: 14px;
}
.hero-deco {
  position: absolute;
  pointer-events: none;
  opacity: 0.55;
  filter: drop-shadow(0 6px 20px rgba(0,0,0,0.08));
}
.hero-deco.wing { left: -40px; top: 50px;  width: 200px; transform: rotate(-8deg); }
.hero-deco.horn { right: 30px; top: 40px;  width: 110px; transform: rotate(8deg); }
.hero-deco.halo { left: 50%; top: 18px; width: 180px; transform: translateX(-50%); }
.hero-deco.arrow { right: -20px; bottom: -10px; width: 160px; transform: rotate(20deg); }
@media (max-width: 700px) {
  .hero-deco.wing { width: 130px; left: -30px; }
  .hero-deco.horn { width: 80px; right: -10px; }
  .hero-deco.arrow { display: none; }
}

/* ---------- Intro block ---------- */
.intro {
  max-width: 760px;
  margin: 30px auto 70px;
  padding: 0 24px;
  text-align: center;
}
.intro-title {
  font-size: clamp(34px, 5vw, 56px);
  letter-spacing: 0.22em;
  text-transform: uppercase;
  font-weight: 800;
  margin: 0 0 22px;
  color: var(--ink);
}
.intro-title .brand-x {
  color: var(--gold);
  font-style: italic;
  font-weight: 400;
  margin: 0 0.12em;
}
.intro p {
  font-size: 18px;
  line-height: 1.85;
  color: var(--ink-soft);
  margin: 0 0 14px;
}
.intro p + p { margin-top: 6px; }
.intro p:last-child { margin-bottom: 0; }
/* legacy attribution chip (still used on some pages if it shows up) */
.intro .attribution {
  margin-top: 22px;
  font-size: 11px;
  letter-spacing: 0.32em;
  text-transform: uppercase;
  font-weight: 700;
  color: var(--ink);
}
.intro .attribution::before,
.intro .attribution::after {
  content: '·';
  margin: 0 14px;
  color: var(--gold);
}

/* ---------- Spaced caps title (Pixar feel) ---------- */
.spaced-title {
  font-size: clamp(32px, 5vw, 56px);
  letter-spacing: 0.32em;
  text-transform: uppercase;
  font-weight: 800;
  text-align: center;
  margin: 0;
  color: var(--ink);
}
.spaced-title .accent { color: var(--red); }

/* ---------- Watch CTA ---------- */
.watch-cta {
  display: inline-flex; align-items: center; gap: 12px;
  margin: 24px auto;
  font-size: 12px;
  letter-spacing: 0.3em;
  text-transform: uppercase;
  font-weight: 700;
  color: var(--ink);
}
.watch-cta:hover { color: var(--red); }
.watch-cta .play {
  width: 42px; height: 42px; border-radius: 999px;
  border: 1.5px solid var(--ink);
  display: inline-flex; align-items: center; justify-content: center;
  transition: all 0.2s ease;
}
.watch-cta:hover .play { background: var(--ink); color: white; border-color: var(--ink); }
.watch-cta .play svg { width: 12px; height: 12px; }

/* ---------- Cards grid (content list) ---------- */
.grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 28px;
  max-width: 1240px;
  margin: 30px auto 100px;
  padding: 0 36px;
}
@media (max-width: 900px) { .grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 560px) { .grid { grid-template-columns: 1fr; padding: 0 20px; } }

.card {
  position: relative;
  display: block;
  border-radius: 4px;
  background: transparent;
  /* aspect ratio is on the inner .card-link so the meters can sit
     alongside the poster without distorting its 3/4 ratio */
  transition: transform 0.3s ease;
}
.card:hover { transform: translateY(-3px); }

.card-link {
  position: relative;
  display: block;
  border-radius: 4px;
  overflow: hidden;
  background: var(--bg-tint);
  border: 1px solid var(--hairline);
  aspect-ratio: 3 / 4;
  transition: border-color 0.2s ease;
}
.card:hover .card-link { border-color: var(--red); }
.card-link .poster {
  position: absolute; inset: 0;
  background-size: cover; background-position: center;
  transition: transform 0.6s ease;
}
.card-link:hover .poster { transform: scale(1.04); }
.card-link .veil {
  position: absolute; inset: 0;
  background: linear-gradient(to top, rgba(0,0,0,0.55) 0%, rgba(0,0,0,0) 60%);
}
.card-link .label {
  position: absolute; left: 0; right: 0; bottom: 18px;
  text-align: center;
  font-size: 13px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  font-weight: 700;
  color: white;
}

/* ---------- Vote meters (angel left, devil right of each card) ---------- */
/* Default tier-0 color is light grey. JS sets data-tier on each meter so
   the CSS variable cascade flips border colors as voting climbs. */
.vote-meter {
  position: absolute;
  top: 6px;
  bottom: 6px;
  width: 11px;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 4px;
  z-index: 4;
  pointer-events: auto;
  --tier-color: #cfcfd1;  /* tier 0: light grey */
}
.vote-meter[data-tier="1"] { --tier-color: #2ecc40; }  /* bright green   */
.vote-meter[data-tier="2"] { --tier-color: #1ea7ff; }  /* bright blue    */
.vote-meter[data-tier="3"] { --tier-color: #9b30ff; }  /* vibrant purple */
.vote-meter[data-tier="4"] { --tier-color: #ffc107; }  /* bright gold    */
.vote-meter[data-tier="5"] { --tier-color: #ff1744; }  /* vibrant red    */
/* tier 6 (rainbow prism) is applied via gradient borders below */

.vote-meter-angel { left: 6px; }
.vote-meter-devil { right: 6px; }

.vote-meter-track {
  flex: 1;
  position: relative;
  border: 1.5px solid var(--tier-color);
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.55);
  backdrop-filter: blur(2px);
  -webkit-backdrop-filter: blur(2px);
  overflow: hidden;
  box-shadow: 0 0 0 1px rgba(255,255,255,0.4) inset;
  transition: border-color 0.4s ease;
}
.vote-meter-fill {
  position: absolute;
  left: 0; right: 0; bottom: 0;
  height: 0%;
  transition: height 0.55s cubic-bezier(.5,0,.25,1);
  background: var(--blue);
}
.vote-meter-angel .vote-meter-fill { background: var(--blue); }
.vote-meter-devil .vote-meter-fill { background: var(--red); }

.vote-btn {
  flex-shrink: 0;
  width: 100%;
  height: 22px;
  border: 1.5px solid var(--tier-color);
  border-radius: 999px;
  background: rgba(255,255,255,0.92);
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  padding: 0;
  color: var(--ink);
  transition: transform 0.18s ease, background 0.18s ease, border-color 0.4s ease, color 0.18s ease;
}
.vote-btn:hover:not(:disabled) { transform: scale(1.1); }
.vote-btn svg { width: 11px; height: 11px; }
.vote-meter-angel .vote-btn { color: var(--blue); }
.vote-meter-devil .vote-btn { color: var(--red); }
.vote-btn.voted {
  background: currentColor;
}
.vote-btn.voted svg { color: white; fill: white; stroke: white; }
.vote-btn:disabled { cursor: default; }
.vote-btn:disabled:not(.voted) { opacity: 0.45; }

/* Tier 6 rainbow-prism: paint the border with a vertical spectrum gradient.
   Uses the padding-box / border-box double-background trick so the interior
   keeps its translucent fill while the border edge becomes the rainbow. */
.vote-meter[data-tier="6"] .vote-meter-track {
  border-color: transparent;
  background:
    linear-gradient(rgba(255,255,255,0.55), rgba(255,255,255,0.55)) padding-box,
    linear-gradient(180deg,
      #ff1744 0%, #ff9100 16%, #ffd600 33%, #00e676 50%,
      #00b0ff 66%, #6a1b9a 83%, #ff1744 100%) border-box;
}
.vote-meter[data-tier="6"] .vote-btn {
  border-color: transparent;
  background:
    linear-gradient(rgba(255,255,255,0.92), rgba(255,255,255,0.92)) padding-box,
    linear-gradient(180deg,
      #ff1744, #ff9100, #ffd600, #00e676, #00b0ff, #6a1b9a, #ff1744) border-box;
}
.vote-meter[data-tier="6"] .vote-btn.voted {
  background:
    linear-gradient(currentColor, currentColor) padding-box,
    linear-gradient(180deg,
      #ff1744, #ff9100, #ffd600, #00e676, #00b0ff, #6a1b9a, #ff1744) border-box;
}

@media (max-width: 560px) {
  .vote-meter { width: 9px; }
  .vote-btn { height: 18px; }
  .vote-btn svg { width: 9px; height: 9px; }
}

/* ---------- Detail page hero ---------- */
.detail-hero {
  position: relative;
  height: 70vh; min-height: 480px;
  display: flex; align-items: center; justify-content: center;
  overflow: hidden;
  background: var(--bg-tint);
}
.detail-hero .bg {
  position: absolute; inset: 0;
  background-size: cover; background-position: center;
  opacity: 0.85;
}
.detail-hero .gradient {
  position: absolute; inset: 0;
  background: linear-gradient(to bottom, rgba(255,255,255,0) 50%, var(--bg) 100%);
}
.detail-hero .logo {
  position: relative; z-index: 1;
  font-size: clamp(64px, 13vw, 160px);
  letter-spacing: 0.04em;
  font-weight: 800;
  font-style: italic;
  text-align: center;
  text-transform: lowercase;
  color: white;
  text-shadow:
    0 0 30px rgba(0,0,0,0.4),
    0 6px 30px rgba(0,0,0,0.5);
}

/* ---------- Detail body ---------- */
.detail-body {
  max-width: 720px;
  margin: 0 auto 70px;
  padding: 0 24px;
  text-align: center;
  position: relative;
}
.divider {
  width: 60px;
  height: 1px;
  background: var(--ink);
  margin: 40px auto;
  position: relative;
}
.divider::after {
  content: '';
  position: absolute; top: -3px; left: 50%; transform: translateX(-50%);
  width: 7px; height: 7px;
  border-radius: 50%; background: var(--gold);
}
.detail-title {
  font-size: 30px;
  margin: 14px 0 10px;
  font-weight: 800;
}
.detail-meta {
  font-size: 11px;
  letter-spacing: 0.32em;
  text-transform: uppercase;
  color: var(--muted);
  font-weight: 600;
}
.detail-description {
  font-size: 17px;
  line-height: 1.9;
  color: var(--ink-soft);
}

/* ---------- Platform links ---------- */
.platform-links {
  display: flex; justify-content: center; gap: 14px;
  margin: 36px 0;
  flex-wrap: wrap;
}
.plat {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 10px 18px;
  border: 1.5px solid var(--ink);
  font-size: 11px; letter-spacing: 0.25em;
  text-transform: uppercase;
  font-weight: 700;
  color: var(--ink);
  background: var(--bg);
  transition: all 0.2s ease;
}
.plat:hover { background: var(--ink); color: white; }
.plat svg { width: 14px; height: 14px; }

/* ---------- Section (merch / related) ---------- */
.merch-section {
  max-width: 1240px;
  margin: 0 auto 100px;
  padding: 60px 36px 0;
  border-top: 1px solid var(--hairline);
}
.merch-section header {
  display: flex; align-items: baseline; justify-content: space-between;
  margin-bottom: 26px;
  gap: 16px;
  flex-wrap: wrap;
}
.merch-section h2 {
  font-size: 14px;
  letter-spacing: 0.35em;
  text-transform: uppercase;
  font-weight: 800;
  margin: 0;
  color: var(--ink);
}
.merch-section h2 .accent { color: var(--gold); }
.merch-section .see-all {
  font-size: 11px;
  letter-spacing: 0.3em;
  text-transform: uppercase;
  color: var(--muted);
  font-weight: 600;
}
.merch-section .see-all:hover { color: var(--red); }
.merch-grid {
  display: grid; gap: 24px;
  grid-template-columns: repeat(4, 1fr);
}
@media (max-width: 900px) { .merch-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 480px) { .merch-grid { grid-template-columns: 1fr; } }

.merch-card { display: block; color: var(--ink); }
.merch-card .image {
  aspect-ratio: 1 / 1;
  background: var(--bg-tint);
  border: 1px solid var(--hairline);
  background-size: cover; background-position: center;
  margin-bottom: 12px;
  overflow: hidden;
  transition: border-color 0.2s ease;
}
.merch-card:hover .image { border-color: var(--red); }
.merch-card .name {
  font-size: 13px; letter-spacing: 0.16em; text-transform: uppercase;
  font-weight: 700;
}
.merch-card .price {
  font-size: 12px; color: var(--muted);
  margin-top: 4px;
}

/* ---------- Page hero (shop, contact, etc.) ---------- */
.page-hero {
  padding: 80px 24px 50px;
  text-align: center;
  position: relative;
  background:
    radial-gradient(circle at 20% 50%, rgba(212, 160, 23, 0.08), transparent 50%);
}
.page-hero .deco-asset {
  position: absolute;
  pointer-events: none;
  opacity: 0.5;
  width: 110px;
}
.page-hero .deco-asset.left  { left: 30px;  top: 30px; transform: rotate(-8deg); }
.page-hero .deco-asset.right { right: 30px; top: 30px; transform: rotate(8deg); }
@media (max-width: 700px) { .page-hero .deco-asset { display: none; } }

/* ---------- Contact form ---------- */
.contact {
  max-width: 560px;
  margin: 0 auto 100px;
  padding: 0 24px;
}
.contact form {
  display: flex; flex-direction: column; gap: 18px;
  margin-top: 36px;
}
.contact label {
  font-size: 11px; letter-spacing: 0.32em; text-transform: uppercase;
  font-weight: 700; color: var(--muted);
}
.contact input,
.contact textarea {
  background: transparent;
  border: none;
  border-bottom: 1.5px solid var(--hairline);
  color: var(--ink);
  font-size: 16px;
  padding: 10px 0;
  font-family: inherit;
}
.contact input:focus,
.contact textarea:focus { outline: none; border-color: var(--ink); }
.contact textarea { resize: vertical; min-height: 130px; }
.contact button {
  align-self: flex-start;
  margin-top: 14px;
  padding: 14px 28px;
  background: var(--ink);
  color: white;
  border: none;
  font-size: 11px; letter-spacing: 0.32em; text-transform: uppercase;
  font-weight: 800;
  cursor: pointer;
  transition: background 0.2s ease;
}
.contact button:hover { background: var(--red); }

/* ---------- Long-form legal docs ---------- */
.legal-doc {
  max-width: 740px;
  margin: 30px auto 90px;
  padding: 0 24px;
}
.legal-doc h1 {
  font-size: clamp(28px, 4vw, 40px);
  letter-spacing: 0.18em;
  text-transform: uppercase;
  text-align: center;
  margin: 0 0 8px;
}
.legal-doc .updated {
  text-align: center;
  font-size: 11px;
  letter-spacing: 0.3em;
  text-transform: uppercase;
  color: var(--muted);
  margin-bottom: 50px;
  font-weight: 700;
}
.legal-doc h2 {
  font-size: 14px;
  letter-spacing: 0.25em;
  text-transform: uppercase;
  margin: 40px 0 14px;
  padding-top: 28px;
  border-top: 1px solid var(--hairline);
  font-weight: 800;
}
.legal-doc h2:first-of-type { border-top: none; padding-top: 0; }
.legal-doc p, .legal-doc li {
  font-size: 15px;
  line-height: 1.85;
  color: var(--ink-soft);
}
.legal-doc ul { padding-left: 20px; }
.legal-doc li { margin-bottom: 8px; }
.legal-doc a { color: var(--blue); text-decoration: underline; text-underline-offset: 3px; }
.legal-doc a:hover { color: var(--red); }

/* ---------- Footer ---------- */
.site-footer {
  background: var(--bg-soft);
  border-top: 1px solid var(--hairline);
  padding: 50px 36px 32px;
  text-align: center;
}
.site-footer .footer-logo { width: 56px; margin: 0 auto 24px; }
.site-footer .footer-logo img { width: 100%; }
.site-footer .socials {
  display: flex; justify-content: center; gap: 16px; margin-bottom: 28px;
}
.site-footer .socials a {
  width: 36px; height: 36px;
  border: 1.5px solid var(--hairline-strong);
  border-radius: 999px;
  display: inline-flex; align-items: center; justify-content: center;
  color: var(--ink);
  transition: all 0.2s ease;
}
.site-footer .socials a:hover { border-color: var(--ink); background: var(--ink); color: white; opacity: 1; }
.site-footer .socials svg { width: 14px; height: 14px; }
.site-footer .columns {
  display: grid; grid-template-columns: repeat(3, 1fr);
  max-width: 720px; margin: 0 auto 28px; gap: 24px;
  text-align: center;
}
@media (max-width: 700px) { .site-footer .columns { grid-template-columns: 1fr; } }
.site-footer h4 {
  font-size: 11px; letter-spacing: 0.32em; text-transform: uppercase;
  font-weight: 800; margin: 0 0 10px; color: var(--ink);
}
.site-footer .links {
  display: flex; flex-direction: column; gap: 6px;
  font-size: 13px; color: var(--ink-soft);
}
.site-footer .links a { color: var(--ink-soft); }
.site-footer .links a:hover { color: var(--red); }
.site-footer .legal {
  font-size: 11px;
  color: var(--muted);
  letter-spacing: 0.04em;
}

/* ---------- Info bar (very bottom, legal) ---------- */
.info-bar {
  border-top: 1px solid var(--hairline);
  background: var(--bg);
  padding: 16px 36px;
  display: flex; flex-wrap: wrap;
  align-items: center; justify-content: space-between;
  gap: 16px;
  font-size: 11px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--muted);
  font-weight: 600;
}
.info-bar .links { display: flex; flex-wrap: wrap; gap: 22px; }
.info-bar a { color: var(--muted); }
.info-bar a:hover { color: var(--red); opacity: 1; }
@media (max-width: 600px) {
  .info-bar { flex-direction: column; align-items: flex-start; padding: 16px 20px; }
}

/* ---------- Placeholder posters (gradients tinted with brand colors) ---------- */
.poster-gradient-1 { background: linear-gradient(135deg, #2c5d8c 0%, #6a4c93 60%, #1c3d7a 100%); }
.poster-gradient-2 { background: linear-gradient(135deg, #d62828 0%, #6a4c93 70%, #1c3d7a 100%); }
.poster-gradient-3 { background: linear-gradient(135deg, #d4a017 0%, #d62828 80%); }
.poster-gradient-4 { background: linear-gradient(135deg, #0a0a0a 0%, #2c5d8c 60%); }
.poster-gradient-5 { background: linear-gradient(135deg, #2c5d8c 0%, #d4a017 100%); }
.poster-gradient-6 { background: linear-gradient(135deg, #6a4c93 0%, #d62828 100%); }
.poster-gradient-7 { background: linear-gradient(135deg, #1c3d7a 0%, #0a0a0a 100%); }
.poster-gradient-8 { background: linear-gradient(135deg, #d62828 0%, #d4a017 60%, #6a4c93 100%); }
.poster-gradient-9 { background: linear-gradient(135deg, #d4a017 0%, #2c5d8c 100%); }

.merch-gradient-1 { background: linear-gradient(135deg, #2c5d8c, #6a4c93); }
.merch-gradient-2 { background: linear-gradient(135deg, #d62828, #6a4c93); }
.merch-gradient-3 { background: linear-gradient(135deg, #0a0a0a, #2c5d8c); }
.merch-gradient-4 { background: linear-gradient(135deg, #d4a017, #d62828); }
