/*
Theme Name: ZynVue Box Office
Template: twentytwentyfive
Description: Box-office ticket-stub skin for ZynVue, adapted from the docs/box-office-tiers-pitch.html pitch artifact.
Version: 1.1.0
*/

:root {
  --paper: #E6DFC9;
  --paper-2: #DBD2B4;
  --paper-3: #D2C6A0;
  --ink: #221B12;
  --ink-soft: #5B4E38;
  --gold: #96650F;
  --stamp: #93291B;
  --rider: #574474;
  --brass: #7C6339;
  --line: #B9AD87;
  --shadow: rgba(34,27,18,0.18);
}
@media (prefers-color-scheme: dark) {
  :root {
    --paper: #16120D; --paper-2: #211A12; --paper-3: #2A2116;
    --ink: #F1E7D2; --ink-soft: #C2B393; --gold: #F2A93B;
    --stamp: #E56A4E; --rider: #BBA0DD; --brass: #C9A968;
    --line: #4A3C28; --shadow: rgba(0,0,0,0.5);
  }
}

*, *::before, *::after { box-sizing: border-box; }
html { overflow-x: hidden; }
body {
  background: var(--paper);
  color: var(--ink);
  font-family: 'Courier Prime', ui-monospace, 'Courier New', monospace;
  overflow-x: hidden;
}
a { color: var(--gold); }

.display, h1, h2, h3 {
  font-family: 'Bebas Neue', 'Courier Prime', sans-serif;
  letter-spacing: 0.02em;
}
.stamp-label { font-family: 'Special Elite', 'Courier Prime', monospace; letter-spacing: 0.06em; }

/* ---------- Header: match the marquee's box-office identity ---------- */
.wp-block-template-part.header {
  background: #0C0A07 !important;
  border-bottom: none;
}
.wp-block-template-part.header .wp-block-navigation-item a {
  font-family: 'Special Elite', monospace;
  letter-spacing: 0.04em;
  color: #E9DEC2 !important;
}
.wp-block-template-part.header .wp-block-navigation-item a:hover {
  color: var(--gold) !important;
}
/* Redundant on the homepage — the marquee already carries the ZYNVUE identity */
body.home .wp-block-site-title,
body.home .wp-block-post-title {
  display: none;
}
/* The default page template stacks two spacing rules above the title —
   main's own margin-top AND the title-wrapping group's padding-top —
   which is redundant everywhere, not just on the homepage (which hides
   the title entirely, so gets zero instead of a single modest gap). */
main.wp-block-group {
  margin-top: 0 !important;
}
main.wp-block-group > .wp-block-group.alignfull {
  padding-top: 1.75rem !important;
}
body.home main.wp-block-group > .wp-block-group.alignfull {
  padding-top: 0 !important;
}
body.home .entry-content.alignfull {
  margin-block-start: 0 !important;
}

/* ---------- Hero & closing: shaped like an actual ticket, not a full-bleed
   banner — contained the same way the rack cards are, deliberately, since
   the vw-based full-bleed trick proved unreliable across Firefox/mobile. */
.hero-wrap, .closing-wrap {
  max-width: 100rem;
  margin: 1rem auto 0;
  padding: 0 clamp(1.25rem, 4vw, 3rem);
}
.marquee {
  background: #0C0A07;
  color: #F2E9D6;
  padding: clamp(2.5rem, 7vw, 4.5rem) 1.5rem clamp(2rem, 5vw, 3rem);
  text-align: center;
  border-bottom: 6px solid #3A2C16;
}
.eyebrow {
  font-family: 'Special Elite', monospace;
  font-size: 0.72rem;
  letter-spacing: 0.28em;
  text-transform: uppercase;
  color: #C9A968;
  margin: 0 0 0.9rem;
}
.marquee h1 {
  font-family: 'Bebas Neue', sans-serif;
  font-size: clamp(3rem, 11vw, 6.5rem);
  line-height: 0.92;
  margin: 0;
  letter-spacing: 0.03em;
  color: #F7EFDD;
  text-shadow: 0 0 28px rgba(242,169,59,0.35), 0 2px 0 #0c0a07;
}
.punches { display: flex; justify-content: center; gap: clamp(4px, 1.4vw, 9px); margin: 1.1rem auto 1.3rem; flex-wrap: wrap; max-width: 640px; }
.punches span { width: 9px; height: 9px; border-radius: 50%; background: #4a3d28; box-shadow: inset 0 0 0 1px rgba(0,0,0,0.3); animation: flicker 2.6s ease-in-out infinite; }
.punches span:nth-child(odd) { animation-delay: 0s; }
.punches span:nth-child(even) { animation-delay: 1.3s; }
@keyframes flicker {
  0%, 40% { background: #4a3d28; box-shadow: inset 0 0 0 1px rgba(0,0,0,0.3); }
  50%, 90% { background: #F2A93B; box-shadow: 0 0 7px 2px rgba(242,169,59,0.75); }
  100% { background: #4a3d28; }
}
@media (prefers-reduced-motion: reduce) {
  .punches span { animation: none; }
  .punches span:nth-child(odd) { background: #F2A93B; box-shadow: 0 0 7px 2px rgba(242,169,59,0.6); }
}
.marquee p.tagline { font-family: 'Special Elite', monospace; font-size: clamp(0.85rem, 2.4vw, 1.05rem); color: #D9CCA8; max-width: 34rem; margin: 0 auto; line-height: 1.7; }

/* ---------- Ticket rack: 1 / 2 / 4 abreast, full-width on desktop ---------- */
.rack {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1.6rem;
  margin: 2.4rem auto;
  max-width: 100rem;
  padding: 0 clamp(1.25rem, 4vw, 3rem);
  align-items: start;
}
@media (min-width: 40rem) {
  .rack { grid-template-columns: repeat(2, 1fr); }
}
@media (min-width: 68rem) {
  .rack { grid-template-columns: repeat(4, 1fr); }
}
.ticket {
  background: var(--paper-2);
  border: 1.5px solid var(--brass);
  border-radius: 3px;
  box-shadow: 0 6px 18px -6px var(--shadow);
  position: relative;
  padding: 1.3rem 1.3rem 1.5rem;
  display: flex; flex-direction: column; gap: 0.7rem;
  text-decoration: none;
  color: inherit;
  transition: transform 0.15s ease, box-shadow 0.15s ease;
}
a.ticket:hover { transform: translateY(-3px); box-shadow: 0 10px 22px -6px var(--shadow); }
.ticket.plus { background: var(--paper-3); border-color: var(--gold); border-width: 2px; }
@media (min-width: 68rem) {
  .ticket.plus { transform: translateY(-0.4rem); }
  a.ticket.plus:hover { transform: translateY(-0.7rem); }
}
.ticket.rider, .ticket.companion { border-style: dashed; }
.ticket .kicker { display: flex; justify-content: space-between; align-items: center; font-family: 'Special Elite', monospace; font-size: 0.68rem; letter-spacing: 0.05em; color: var(--ink-soft); }
.ticket .kicker .serial::before { content: "No. "; }
.ticket .name { font-family: 'Bebas Neue', sans-serif; font-size: clamp(1.7rem, 4vw, 2.1rem); line-height: 0.95; }
.ticket .name small { display: block; font-family: 'Special Elite', monospace; font-size: 0.62rem; letter-spacing: 0.14em; color: var(--ink-soft); margin-top: 0.3rem; }
.ticket .stub-line { position: relative; height: 1px; border-top: 2px dashed var(--brass); margin: 0.3rem -1.3rem; }
.ticket .stub-line::before, .ticket .stub-line::after { content: ""; position: absolute; top: -8px; width: 16px; height: 16px; border-radius: 50%; background: var(--paper); }
.ticket .stub-line::before { left: -8px; }
.ticket .stub-line::after { right: -8px; }
.ticket ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 0.38rem; font-size: 0.86rem; }
.ticket ul li { padding-left: 1.1rem; position: relative; }
.ticket ul li::before { content: "•"; position: absolute; left: 0; color: var(--gold); }
.ticket .note { font-family: 'Special Elite', monospace; font-size: 0.72rem; color: var(--ink-soft); line-height: 1.6; margin-top: auto; padding-top: 0.6rem; border-top: 1px solid var(--line); }
.ticket .badge { align-self: flex-start; font-family: 'Special Elite', monospace; font-size: 0.62rem; letter-spacing: 0.1em; text-transform: uppercase; padding: 0.22rem 0.55rem; border: 1.5px solid currentColor; border-radius: 999px; transform: rotate(-3deg); }
.ticket.free .badge { color: var(--ink-soft); }
.ticket.plus .badge { color: var(--gold); }
.ticket.rider .badge { color: var(--rider); }
.ticket.companion .badge { color: var(--stamp); }

/* ---------- Closing ---------- */
.closing {
  background: #0C0A07;
  color: #E9DEC2;
  text-align: center;
  padding: clamp(2.2rem, 6vw, 3.5rem) 1.5rem;
  margin-bottom: 2.4rem;
}
.closing p.close-line { font-family: 'Bebas Neue', sans-serif; font-size: clamp(1.5rem, 4.5vw, 2.4rem); margin: 0 0 0.6rem; }
.closing p.fine { font-family: 'Special Elite', monospace; font-size: 0.72rem; color: #B9A67F; max-width: 34rem; margin: 0 auto; line-height: 1.7; }
