/* ═══════════════════════════════════════════════════════════════
   GENRE LANDING PAGES / The Machine, The Label, The Work.
   One stylesheet, themed per page. Set on <body>:
     data-theme="dark"|"light"   ground and type colour
     data-accent="red"|"steel"|"esp"   the one accent colour
   Structure is shared with The Vow; only the palette moves, so the
   pages read as a family rather than five unrelated microsites.
   ═══════════════════════════════════════════════════════════════ */

:root {
  --ink: #0B0B0C; --ink-2: #131315;
  --bone: #EAE6DE;
  --cream: #F2EAE0; --cream-2: #E9DFD1; --paper: #FBF7F2;
  --esp: #2B211B;
  --red: #E22B2B; --gold: #B98F5E; --steel: #AEB6BD;

  --anton: "Anton", Impact, sans-serif;
  --serif: "Cormorant Garamond", Georgia, serif;
  --grot: "Space Grotesk", sans-serif;
  --caps: "Jost", sans-serif;
  --mono: "IBM Plex Mono", ui-monospace, monospace;
  --pad: clamp(1.25rem, 4vw, 4.5rem);
}

/* ── themes ── */
body[data-theme="dark"] {
  --bg: var(--ink); --bg-2: var(--ink-2); --fg: var(--bone);
  --fg-dim: rgba(234,230,222,.58); --fg-faint: rgba(234,230,222,.34);
  --hair: rgba(234,230,222,.14); --tile: rgba(19,19,21,.72);
  --wash-a: rgba(11,11,12,.62); --wash-b: rgba(11,11,12,.06); --wash-c: rgba(11,11,12,.88);
  --btn-fg: #0B0B0C;
}
body[data-theme="light"] {
  --bg: var(--cream); --bg-2: var(--paper); --fg: var(--esp);
  --fg-dim: rgba(43,33,27,.62); --fg-faint: rgba(43,33,27,.34);
  --hair: rgba(43,33,27,.16); --tile: rgba(251,247,242,.8);
  --wash-a: rgba(242,234,224,.5); --wash-b: rgba(242,234,224,.08); --wash-c: rgba(242,234,224,.8);
  --btn-fg: #FBF7F2;
}
body[data-accent="red"]   { --accent: var(--red);   --accent-ink: #0B0B0C; }
body[data-accent="steel"] { --accent: var(--steel); --accent-ink: #0B0B0C; }
body[data-accent="esp"]   { --accent: #7A6A5C;      --accent-ink: #FBF7F2; }

* { margin: 0; padding: 0; box-sizing: border-box; }
html { overflow-x: hidden; scroll-behavior: smooth; }
body.genre-page {
  background: var(--bg); color: var(--fg);
  font-family: var(--grot); font-weight: 300; -webkit-font-smoothing: antialiased;
}
img { display: block; width: 100%; height: 100%; object-fit: cover; }
a { color: inherit; text-decoration: none; }
li { list-style: none; }
::selection { background: var(--accent); color: var(--accent-ink); }

.kicker {
  font-family: var(--grot); font-size: .66rem; letter-spacing: .4em;
  text-transform: uppercase; color: var(--accent); font-weight: 500;
  display: inline-flex; align-items: center; gap: .9em;
}
.kicker i { display: block; width: 34px; height: 1px; background: var(--accent); }

/* ══════════════ NAV ══════════════ */
.nav {
  position: fixed; top: 0; left: 0; right: 0; z-index: 200;
  display: flex; align-items: center; justify-content: space-between; gap: 1rem;
  padding: .9rem var(--pad);
  background: color-mix(in srgb, var(--bg) 86%, transparent);
  backdrop-filter: blur(14px); border-bottom: 1px solid var(--hair);
}
.nav__logo { font-family: var(--anton); font-size: .95rem; letter-spacing: .05em; white-space: nowrap; }
.nav__logo span { color: var(--fg-faint); font-weight: 400; }
.nav__links { display: flex; gap: 1.35rem; font-size: .64rem; letter-spacing: .18em; text-transform: uppercase; }
.nav__links a { position: relative; padding-bottom: 3px; white-space: nowrap; }
.nav__links a::after {
  content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 1px;
  background: var(--accent); transform: scaleX(0); transition: transform .35s cubic-bezier(.77,0,.18,1);
}
.nav__links a:hover::after, .nav__links a.is-here::after { transform: scaleX(1); }
.nav__links a.is-here { color: var(--accent); }
.nav__cta {
  font-size: .62rem; font-weight: 600; letter-spacing: .2em; text-transform: uppercase;
  background: var(--accent); color: var(--accent-ink) !important;
  padding: .85em 1.5em; border-radius: 100px; white-space: nowrap; transition: filter .35s;
}
.nav__cta:hover { filter: brightness(1.15); }
.nav__toggle { display: none; background: none; border: none; cursor: pointer; padding: .5rem; }
.nav__toggle span { display: block; width: 22px; height: 1px; background: var(--fg); margin: 5px 0; transition: transform .3s; }
.nav.is-open .nav__toggle span:nth-child(1) { transform: translateY(3px) rotate(45deg); }
.nav.is-open .nav__toggle span:nth-child(2) { transform: translateY(-3px) rotate(-45deg); }

@media (max-width: 1080px) {
  .nav__toggle { display: block; }
  .nav__logo span { display: none; }
  .nav__links {
    position: absolute; top: 100%; left: 0; right: 0; flex-direction: column; gap: 0;
    background: var(--bg-2); border-bottom: 1px solid var(--hair);
    max-height: 0; overflow: hidden; transition: max-height .45s cubic-bezier(.16,1,.3,1);
  }
  .nav.is-open .nav__links { max-height: 75vh; }
  .nav__links a { padding: 1rem var(--pad); border-top: 1px solid var(--hair); }
}

/* ══════════════ HERO ══════════════ */
.ghero { position: relative; min-height: 92svh; display: flex; align-items: flex-end; overflow: hidden; }
.ghero__bed { position: absolute; inset: 0; }
.ghero__bed img { transform: scale(1.05); animation: drift 24s ease-in-out infinite alternate; }
@keyframes drift { to { transform: scale(1.12) translate(-1.2%, -1%); } }
.ghero__veil {
  position: absolute; inset: 0;
  background:
    linear-gradient(180deg, var(--wash-a) 0%, var(--wash-b) 34%, var(--wash-c) 94%),
    radial-gradient(68% 62% at 16% 76%, var(--wash-c), transparent 78%);
}
.ghero__inner { position: relative; z-index: 2; padding: 0 var(--pad) clamp(3rem, 9vh, 6rem); max-width: 1500px; }
.ghero__title {
  font-family: var(--anton); text-transform: uppercase;
  font-size: clamp(3rem, 12vw, 9rem); line-height: .9; letter-spacing: .01em; margin: 1.1rem 0 1.3rem;
}
.ghero__title b { display: block; font-weight: 400; font-size: .42em; letter-spacing: .12em; color: var(--fg-dim); }
.ghero__lede { font-size: clamp(1rem, 1.5vw, 1.2rem); line-height: 1.75; max-width: 48ch; color: var(--fg-dim); }
.ghero__lanes { display: flex; flex-wrap: wrap; gap: 1.4rem 2.6rem; margin-top: 2.2rem; }
.ghero__lanes li { font-family: var(--caps); font-size: .64rem; letter-spacing: .26em; text-transform: uppercase; }
.ghero__lanes b { display: block; font-family: var(--mono); font-size: 1.1rem; letter-spacing: 0; color: var(--accent); margin-bottom: .35rem; }

/* ══════════════ INTRO ══════════════ */
.gintro { padding: clamp(4rem, 12vh, 8rem) var(--pad); max-width: 1100px; margin: 0 auto; text-align: center; }
.gintro h2 { font-family: var(--anton); text-transform: uppercase; font-size: clamp(1.8rem, 5vw, 3.6rem); line-height: 1.04; margin: 1.2rem 0 1.5rem; }
.gintro h2 em { font-family: var(--serif); font-style: italic; text-transform: none; color: var(--accent); }
.gintro p { color: var(--fg-dim); font-size: 1.02rem; line-height: 1.9; max-width: 62ch; margin: 0 auto; }

/* ══════════════ SETS ══════════════ */
.gset { padding: 0 var(--pad) clamp(3rem, 8vh, 5rem); max-width: 1600px; margin: 0 auto; }
.gset__head { display: flex; flex-wrap: wrap; align-items: baseline; gap: .6rem 1.4rem;
  margin-bottom: 1.4rem; padding-top: clamp(2rem, 5vh, 3.2rem); border-top: 1px solid var(--hair); }
.gset__name { font-family: var(--anton); text-transform: uppercase; font-size: clamp(1.4rem, 3vw, 2.3rem); }
.gset__lane { font-family: var(--mono); font-size: .6rem; letter-spacing: .24em; text-transform: uppercase; color: var(--accent); }
.gset__blurb { margin-left: auto; font-size: .88rem; color: var(--fg-dim); }

.grow { display: flex; gap: clamp(.4rem, 1vw, .8rem); margin-bottom: clamp(.4rem, 1vw, .8rem); }
.gfig { position: relative; overflow: hidden; background: var(--bg-2); cursor: zoom-in; min-width: 0; }
.gfig img { transition: transform 1.1s cubic-bezier(.2,.8,.2,1); }
.gfig:hover img { transform: scale(1.04); }
@media (max-width: 640px) { .grow { flex-wrap: wrap; } }

/* ══════════════ OUTRO ══════════════ */
.goutro { padding: clamp(4.5rem, 12vh, 8rem) var(--pad); text-align: center; border-top: 1px solid var(--hair); }
.goutro h2 { font-family: var(--anton); text-transform: uppercase; font-size: clamp(2rem, 7vw, 4.6rem); line-height: 1.02; margin: 1.2rem 0 1.5rem; }
.goutro p { color: var(--fg-dim); max-width: 48ch; margin: 0 auto 2.3rem; line-height: 1.8; }
.goutro__cta { display: inline-block; background: var(--accent); color: var(--accent-ink) !important;
  font-family: var(--caps); font-size: .68rem; letter-spacing: .26em; text-transform: uppercase;
  padding: 1.25em 2.8em; border-radius: 100px; transition: filter .35s; }
.goutro__cta:hover { filter: brightness(1.15); }

/* sibling pages, so one genre leads to the next */
.gmore { display: flex; flex-wrap: wrap; gap: .8rem; justify-content: center; margin-top: 2.4rem; }
.gmore a { font-family: var(--caps); font-size: .62rem; letter-spacing: .22em; text-transform: uppercase;
  border: 1px solid var(--hair); padding: .9em 1.6em; border-radius: 100px; transition: border-color .3s, color .3s; }
.gmore a:hover { border-color: var(--accent); color: var(--accent); }

.gfoot { padding: 2rem var(--pad) 2.6rem; border-top: 1px solid var(--hair);
  display: flex; flex-wrap: wrap; gap: 1rem; justify-content: space-between;
  font-size: .66rem; letter-spacing: .2em; text-transform: uppercase; color: var(--fg-dim); }
.gfoot a:hover { color: var(--accent); }

/* ══════════════ LIGHTBOX ══════════════ */
.glb { position: fixed; inset: 0; z-index: 400; background: rgba(6,6,8,.95); backdrop-filter: blur(16px);
  display: grid; grid-template-columns: auto 1fr auto; align-items: center;
  gap: clamp(.5rem,2vw,2rem); padding: clamp(1rem,4vw,3rem);
  opacity: 0; visibility: hidden; transition: opacity .35s, visibility .35s; }
.glb.open { opacity: 1; visibility: visible; }
.glb__fig { display: flex; flex-direction: column; align-items: center; gap: 1rem; min-width: 0; }
.glb__fig img { max-width: 100%; max-height: 84vh; width: auto; height: auto; object-fit: contain;
  box-shadow: 0 30px 90px rgba(0,0,0,.55); }
.glb__cap { font-family: var(--caps); font-size: .62rem; letter-spacing: .28em; text-transform: uppercase; color: rgba(234,230,222,.7); }
.glb__nav, .glb__x { border-radius: 50%; cursor: pointer; background: rgba(234,230,222,.08);
  border: 1px solid rgba(234,230,222,.28); color: var(--bone); display: grid; place-items: center;
  transition: background .3s, border-color .3s, color .3s; }
.glb__nav { width: clamp(44px,5vw,58px); height: clamp(44px,5vw,58px); font-size: 1.6rem; line-height: 1; flex: none; }
.glb__x { position: absolute; top: 1.3rem; right: 1.5rem; width: 44px; height: 44px; font-size: 1rem; z-index: 2; }
.glb__nav:hover, .glb__x:hover { background: var(--accent); border-color: var(--accent); color: var(--accent-ink); }
.glb__count { position: absolute; bottom: 1.5rem; left: 50%; transform: translateX(-50%);
  font-family: var(--mono); font-size: .62rem; letter-spacing: .2em; color: rgba(234,230,222,.6); }
@media (max-width: 700px) {
  .glb { grid-template-columns: 1fr; }
  .glb__nav { position: absolute; top: 50%; transform: translateY(-50%); }
  .glb__prev { left: .5rem; } .glb__next { right: .5rem; }
}

.grain { position: fixed; inset: -100%; z-index: 300; pointer-events: none; opacity: .04;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='300' height='300'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.75' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  animation: grain .9s steps(4) infinite; }
@keyframes grain { 0%{transform:translate(0,0)} 25%{transform:translate(-2%,3%)} 50%{transform:translate(3%,-2%)} 75%{transform:translate(-1%,-3%)} 100%{transform:translate(2%,2%)} }

[data-rv] { opacity: 0; transform: translateY(22px); transition: opacity .9s cubic-bezier(.2,.8,.2,1), transform .9s cubic-bezier(.2,.8,.2,1); }
[data-rv].in { opacity: 1; transform: none; }

@media (prefers-reduced-motion: reduce) {
  .grain, .ghero__bed img { animation: none !important; }
  *, *::before, *::after { transition-duration: .01ms !important; }
  [data-rv] { opacity: 1; transform: none; }
}
