/*
 * Premier-family tenant design tokens.
 *
 * Shared by every Premier-family sister site — premiertributes,
 * allcountrytributes, bandastributos, legendsofgroove, 90stonow,
 * taylortributes, renovegas, yachtrockharbor. BOX OFFICE DARK is the current owner-approved
 * family chassis; this file is its single shared token contract.
 *
 * All tokens are gated on `body[data-theme-family="premier"]` so they
 * never leak into MZ or the default tenant. Per-tenant printed-ink roles
 * layer on top in `styles/sisters/*.css`.
 *
 * Component CSS reads these via `var(--premier-…)`; sister sheets only
 * replace brand-role tokens. Default-family rules stay untouched — the
 * Box Office Dark chassis is purely additive and Premier-scoped.
 */

body[data-theme-family="premier"] {
  /* ── BOX OFFICE DARK palette ─────────────────────────────────────────
   * A civic-program night chassis: ink-navy paper, one printed ink per
   * sister, flat plates, and no light-emitting chrome. The seven sister
   * sheets override the ink roles; the shared component-facing aliases
   * below keep the family implementation token-driven. */
  --premier-bg:                #0C1424;
  --premier-fg:                #EDF1F9;
  --premier-text-mid:          #8FA1C0;
  --premier-text-soft:         #C3D0E5;
  --premier-night-rgb:         12 20 36;
  --premier-scrim-ink-rgb:     10 22 46;
  --premier-scrim-mid-rgb:     11 20 40;
  --premier-scrim-top-rgb:     10 20 40;

  --premier-ink:               #7BA6EC;
  --premier-ink-edge:          #9BBCF2;
  --premier-accent-primary:    var(--premier-ink);
  --premier-accent-gold:       var(--premier-ink);
  --premier-accent-gold-edge:  var(--premier-ink-edge);

  --premier-cta-bg:            #2B62C4;
  --premier-cta-bg-hover:      #3B74D6;
  --premier-cta-fg:            #FFFFFF;
  --premier-footer-bg:         #1D4FA8;
  --premier-footer-fg:         #E4EBF7;
  --premier-photo-fg:          #FFFFFF;
  --premier-photo-copy:        #EDF2FB;
  --premier-photo-muted:       #E4EBF7;

  --premier-ink-wash-soft:     color-mix(in srgb, var(--premier-ink) 10%, transparent);
  --premier-ink-wash-medium:   color-mix(in srgb, var(--premier-ink) 16%, transparent);
  --premier-nav-bg:            rgb(var(--premier-night-rgb) / 0.96);
  --premier-nav-plate-bg:      rgb(var(--premier-night-rgb) / 0.78);
  --premier-field-bg:          rgb(var(--premier-night-rgb) / 0.88);
  --premier-field-panel-bg:    rgb(var(--premier-night-rgb) / 0.98);
  --premier-footer-edge:       rgb(255 255 255 / 0.28);
  --premier-footer-wash:       rgb(255 255 255 / 0.1);

  --premier-surface:           #121D33;
  --premier-surface-elevated:  #182742;
  --premier-card-bg:           #111B2F;
  --premier-page-backdrop-image: url("/brand/premier/background.webp");

  /* Flat plate contract: a card has a hairline, never a glow or shadow
   * stack. Text on solid plates needs no cinematic grounding. */
  --premier-shadow-card:       none;
  --premier-shadow-card-hover: none;
  --premier-shadow-text:       none;
  --premier-shadow-text-soft:  none;
  --premier-rule-accent:       var(--premier-ink);
  --premier-section-wash:      none;
  --premier-focus-color:       var(--premier-photo-fg);
  --premier-focus-outline:     2px solid var(--premier-focus-color);
  --premier-focus-offset:      3px;

  /* Section chaptering keeps the approved restrained two-stop program
   * plates: flat-reading linear fields with no radial light source. */
  --premier-surface-tinted-wash:
    linear-gradient(180deg, #131F38 0%, #101A30 100%);
  --premier-surface-duotone-tint: #121D33;
  --premier-surface-duotone-plate:
    linear-gradient(180deg, #101A2E 0%, #14203A 100%);
  --premier-surface-texture-base: #0F1829;
  --premier-surface-texture-plate:
    linear-gradient(180deg, #0C1424 0%, #121D33 100%);

  /* Center-fade hairline divider for section seams. */
  --premier-divider: linear-gradient(
    90deg,
    transparent 0%,
    var(--premier-border-strong) 50%,
    transparent 100%
  );
  /* Border alphas follow the sister's one printed ink. */
  --premier-border-soft:       color-mix(in oklab, var(--premier-accent-primary) 16%, transparent);
  --premier-border-strong:     color-mix(in oklab, var(--premier-accent-primary) 42%, transparent);

  /* Hero/photo scrims use the chassis hue, not a neutral-black veil. The
   * near-solid foot melts the full-bleed hero into the page while holding
   * the #179 AA text-protection floor against bright photography. */
  --premier-scrim-text: linear-gradient(
    180deg,
    rgb(var(--premier-scrim-ink-rgb) / 0.08) 0%,
    rgb(var(--premier-scrim-ink-rgb) / 0.18) 32%,
    rgb(var(--premier-scrim-mid-rgb) / 0.6) 55%,
    rgb(var(--premier-night-rgb) / 0.82) 70%,
    rgb(var(--premier-night-rgb) / 0.97) 100%
  );
  --premier-scrim-text-top: linear-gradient(
    180deg,
    rgb(var(--premier-scrim-top-rgb) / 0.6) 0%,
    rgb(var(--premier-scrim-top-rgb) / 0.22) 60%,
    rgb(var(--premier-scrim-top-rgb) / 0) 100%
  );
  --premier-scrim-text-side: linear-gradient(
    90deg,
    rgb(var(--premier-scrim-mid-rgb) / 0.2) 0%,
    rgb(var(--premier-scrim-mid-rgb) / 0.06) 35%,
    rgb(var(--premier-scrim-mid-rgb) / 0.06) 60%,
    rgb(var(--premier-scrim-mid-rgb) / 0.22) 100%
  );

  /* ── Typography ───────────────────────────────────────────────────────
   * Body: Roboto. Display/headings: Teko (tall condensed sans, very
   * different from MZ's Bebas Neue / Squada One). Modular scale 1.250. */
  --premier-font-body:    var(--font-premier-body), "Roboto", system-ui, sans-serif;
  --premier-font-display: var(--font-premier-display), "Teko", "Bebas Neue", "Impact", sans-serif;

  /* Band-card titles are a reading surface, not chrome. Sisters re-point
   * `--premier-font-display` to decorative faces (Rye, Italiana, Limelight…)
   * that work at hero scale but fail at ~30px over a photo, so card titles
   * pin to this dedicated token instead and never inherit a sister face.
   * Semibold because Teko 400 goes spindly on top of busy promo shots. */
  --premier-font-card-title:   var(--font-premier-display), "Teko", "Bebas Neue", "Impact", sans-serif;
  --premier-weight-card-title: 600;

  --premier-text-3xs:  0.75rem;    /* 12px — compact chrome taglines */
  --premier-text-2xs:  0.8125rem;  /* 13px — fine print */
  --premier-text-xs:   0.9375rem;  /* 15px — small labels, badges */
  --premier-text-sm:   1rem;       /* 16px — body default */
  --premier-text-md:   1.125rem;   /* 18px — lead body */
  --premier-text-lg:   1.4rem;     /* 22px — small heading */
  --premier-text-xl:   1.75rem;    /* 28px — sub-heading */
  --premier-text-2xl:  2.2rem;     /* 35px — card/section heading */
  --premier-text-3xl:  2.75rem;    /* 44px — large section heading */
  --premier-text-4xl:  3.5rem;     /* 56px — eyebrow / hero secondary */
  --premier-text-5xl:  5rem;       /* 80px — hero secondary */
  --premier-text-6xl:  6rem;       /* 96px — display ceiling */

  /* Font weights — Roboto carries 300/400/500/700/900. */
  --premier-weight-light:    300;
  --premier-weight-regular:  400;
  --premier-weight-medium:   500;
  --premier-weight-bold:     700;
  --premier-weight-black:    900;

  /* Line heights. Teko sits tight; Roboto body needs room. */
  --premier-leading-display:  0.8;   /* hero/Teko caps */
  --premier-leading-tight:    1.0;
  --premier-leading-heading:  1.15;
  --premier-leading-snug:     1.35;
  --premier-leading-body:     1.55;
  --premier-leading-relaxed:  1.7;

  --premier-tracking-tight:   -0.005em;
  --premier-tracking-normal:  0;
  --premier-tracking-wide:    0.04em;
  --premier-tracking-eyebrow: 0.2em;

  /* ── Spacing ──────────────────────────────────────────────────────────
   * Premier WP sections breathe at 100px vertical padding — much more
   * than BandHub's default ~32-48px. The scale here mirrors that
   * editorial cadence. */
  --premier-space-0-5:  0.125rem;
  --premier-space-1:    0.25rem;
  --premier-space-2:    0.5rem;
  --premier-space-3:    0.75rem;
  --premier-space-4:    1rem;
  --premier-space-5:    1.25rem;
  --premier-space-6:    1.5rem;
  --premier-space-7:    1.75rem;
  --premier-space-8:    2rem;     /* 32px — Premier column gap */
  --premier-space-10:   2.5rem;
  --premier-space-12:   3rem;
  --premier-space-16:   4rem;
  --premier-space-20:   5rem;
  --premier-space-24:   6rem;
  --premier-space-section: 6.25rem; /* 100px — section vertical padding */

  /* Reserve room for the full placeholder before focus; the phone moves to
   * a utility row on narrower desktops instead of competing with search. */
  --premier-header-search-width:       calc(var(--premier-space-24) * 2 + var(--premier-space-8));
  --premier-header-search-menu-width:  calc(var(--premier-space-24) * 5);
  --premier-header-search-height:      calc(var(--premier-space-8) + var(--premier-space-1));

  /* Section sizing.
   * Premier-family pages run noticeably wider than the BandHub default
   * — most of the viewport at any reasonable size, with only a small
   * gutter on each side. The `min(96vw, 100rem)` clamp keeps content
   * at ~96% width up to ultra-wide screens (1600px+), then caps at
   * 1600px so super-wide monitors don't read as a single huge column.
   * Premier WP itself sits at 1120px which felt narrow on modern
   * displays; this matches the visual presence the user expects. */
  --premier-section-pad-y:  clamp(3.25rem, 2rem + 3vw, 5rem);
                                                 /* Responsive 52→80px. Was a flat
                                                  * 3.75rem (60px); modern editorial
                                                  * sites breathe more on desktop
                                                  * while staying compact on mobile.
                                                  * Bumped 2026-05 as part of the
                                                  * Premier chassis modernisation. */
  --premier-section-max-w:  min(96vw, 100rem);   /* 96vw, capped at 1600px */
  --premier-column-gap:     2rem;                /* 32px */

  /* ── Motion ────────────────────────────────────────────────────────────
   * Premier uses slow 500ms transitions for a cinematic feel. The
   * "standard" tier matches BandHub's default for interactive primitives
   * that should feel responsive (buttons, links). */
  --premier-transition-cinematic: 500ms cubic-bezier(0.2, 0.6, 0.2, 1);
  --premier-transition-standard:  220ms cubic-bezier(0.2, 0.6, 0.2, 1);

  /* Radius — 2026-06 skin evolution (owner revisit of the "adopt
   * structure, never skin" call): the hard-square poster edges were the
   * single loudest "2015 WP theme" tell at a glance. Geometry softens to
   * a restrained editorial radius — well short of the pill-everything
   * SaaS look, but enough that cards, tiles, and inputs read as a
   * contemporary premium surface. Everything flows from these four
   * tokens, so the whole family (and any sister override) moves
   * together. Circles (avatars, play buttons) still use literal
   * `border-radius: 50%` outside the token system. */
  --premier-radius-sm:  0.375rem;
  --premier-radius-md:  0.625rem;
  --premier-radius-lg:  1rem;
  --premier-radius-xl:  1.25rem;
  --premier-radius-reference-card: 0.75rem;
  --premier-radius-pill: 0.5rem;
}
/*
 * Premier-family tenant style overrides.
 *
 * All selectors are gated on `body[data-theme-family="premier"]` so the
 * rules apply across every sister site in `PREMIER_SITE_KEYS` without
 * leaking into MZ or default. Per-sister ink roles live in the seven
 * `styles/sisters/*.css` sheets, loaded after this shared chassis.
 *
 * Mirror of `mz-overrides.css` in structure: body baseline, headings,
 * buttons, cards, then a tenant-accent stack. Component-level CSS
 * modules keep ownership of their own layout; this file only retints
 * + retypographs.
 */

/* ── Body baseline ───────────────────────────────────────────────────── */
body[data-theme-family="premier"] {
  background: var(--premier-bg);
  color: var(--premier-fg);
  font-family: var(--premier-font-body);
  font-weight: var(--premier-weight-regular);
  line-height: var(--premier-leading-body);
  /* BOX OFFICE DARK is a flat ink-navy program cover, not a lit void. */
  background-image: none;
}

/* ── Headings ─────────────────────────────────────────────────────────── */
body[data-theme-family="premier"] h1,
body[data-theme-family="premier"] h2,
body[data-theme-family="premier"] h3,
body[data-theme-family="premier"] h4,
body[data-theme-family="premier"] h5,
body[data-theme-family="premier"] h6 {
  font-family: var(--premier-font-display);
  font-weight: var(--premier-weight-regular);
  line-height: var(--premier-leading-tight);
  letter-spacing: var(--premier-tracking-normal);
  text-wrap: balance;
  text-transform: uppercase;
}

/* Premier WP's H1 token is `clamp(2.5rem, 2rem + 2.5vw, 4rem)` —
 * editorial scale, not poster. The display-sized hero headline lives
 * in `.heroHeadline` (homepage) and `.heroTitle` (band profile), which
 * override this with `!important` so they keep their poster-cap size. */
body[data-theme-family="premier"] h1 {
  font-size: clamp(2.25rem, 1.25rem + 3vw, var(--premier-text-4xl));
  line-height: var(--premier-leading-display);
}

body[data-theme-family="premier"] h2 {
  font-size: clamp(1.5rem, 1rem + 1.5vw, var(--premier-text-2xl));
  line-height: var(--premier-leading-display);
}

body[data-theme-family="premier"] h3 {
  font-size: var(--premier-text-lg);
}

/* ── Buttons ──────────────────────────────────────────────────────────── */
/* Primary actions use the sister's full-ink plate; secondary actions are
 * transparent stamps with a printed-ink border. Scoped to
 * `[data-component="button"]` so the
 * rule can't cascade into Card children that share data-variant tokens. */
/* Shared `.eyebrow` + Tailwind `text-primary` consume BandHub's root
 * `--primary` (a gold hsl) by default — that gold bleeds through every
 * SectionCard, ProtectedPanel, and tracked-caps eyebrow across the
 * Premier family regardless of the sister's accent. Repoint to the
 * Premier accent so each sister's eyebrow/primary text picks up its
 * own brand color (90stonow lavender, allcountrytributes amber, etc.) */
body[data-theme-family="premier"] .eyebrow,
body[data-theme-family="premier"] .text-primary {
  color: var(--premier-accent-primary);
}

body[data-theme-family="premier"] [data-component="button"] {
  font-family: var(--premier-font-body);
  font-weight: var(--premier-weight-medium);
  letter-spacing: var(--premier-tracking-wide);
  text-transform: uppercase;
  /* The former pills are now 8px civic stamps through the radius token. */
  border-radius: var(--premier-radius-pill);
  box-shadow: none;
  transition:
    background-color var(--premier-transition-cinematic),
    color var(--premier-transition-cinematic),
    border-color var(--premier-transition-cinematic),
    transform var(--premier-transition-cinematic);
}

body[data-theme-family="premier"] [data-component="button"]:focus-visible {
  outline: var(--premier-focus-outline);
  outline-offset: var(--premier-focus-offset);
  box-shadow: none;
}

body[data-theme-family="premier"] [data-component="button"][data-variant="gold"],
body[data-theme-family="premier"] [data-component="button"][data-variant="default"] {
  background: var(--premier-cta-bg);
  color: var(--premier-cta-fg);
  border-color: transparent;
}

body[data-theme-family="premier"] [data-component="button"][data-variant="gold"]:hover,
body[data-theme-family="premier"] [data-component="button"][data-variant="default"]:hover {
  background: var(--premier-cta-bg-hover);
  color: var(--premier-cta-fg);
  transform: none;
  box-shadow: none;
}

body[data-theme-family="premier"] [data-component="button"][data-variant="gold-outline"] {
  background: transparent;
  color: var(--premier-accent-primary);
  border: 1px solid var(--premier-accent-primary);
}

body[data-theme-family="premier"] [data-component="button"][data-variant="gold-outline"]:hover {
  background: var(--premier-ink-wash-medium);
  transform: none;
}

body[data-theme-family="premier"] [data-component="button"][data-variant="ghost"] {
  color: var(--premier-text-soft);
}

body[data-theme-family="premier"] [data-component="button"][data-variant="ghost"]:hover {
  background: var(--premier-ink-wash-soft);
  color: var(--premier-accent-primary);
}

/* ── Card chrome ──────────────────────────────────────────────────────── */
body[data-theme-family="premier"] [data-component="section-card"],
body[data-theme-family="premier"] [data-component="article-card"] {
  /* Flat program plate: one hairline, no lift or shadow stack. */
  background: var(--premier-card-bg);
  border: 1px solid var(--premier-border-soft);
  border-radius: var(--premier-radius-md);
  box-shadow: var(--premier-shadow-card);
  transition:
    border-color var(--premier-transition-cinematic),
    box-shadow var(--premier-transition-cinematic);
}

body[data-theme-family="premier"] [data-component="section-card"]:hover,
body[data-theme-family="premier"] [data-component="article-card"]:hover {
  transform: none;
  border-color: var(--premier-accent-primary);
  box-shadow: none;
}

/* ── Printed-ink kicker rule — family editorial signature ─────────────
 * Every ink section heading carries a short solid rule beneath it.
 * Promoted from the premiertributes-only
 * "magazine rule" to family chrome — each
 * sister tints it automatically via --premier-rule-accent /
 * --premier-ink. The whole selector is wrapped in `:where()`
 * so module CSS can re-anchor the bar (e.g. centered closing CTAs set
 * `margin-inline: auto`) without specificity fights. */
:where(body[data-theme-family="premier"] h2[data-premier-gold],
       body[data-theme-family="premier"] [data-premier-gold][class*="sectionHeading"])::after {
  content: "";
  display: block;
  width: 4rem;
  height: 3px;
  margin-top: 0.85rem;
  border-radius: var(--premier-radius-pill);
  background: var(--premier-rule-accent);
}

/* ── Discovery shortcuts band (sits between hero and grid) ──────────── */
/* The shortcut card uses Tailwind utility classes (`text-gold`,
 * `border-border/70`) for its eyebrow + chip styling. Retarget those
 * scoped to Premier so the section reads in the active sister ink. */

body[data-theme-family="premier"] section[aria-labelledby="directory-discovery-shortcuts-heading"] .text-gold,
body[data-theme-family="premier"] section[aria-labelledby="directory-discovery-shortcuts-heading"] a.text-gold {
  color: var(--premier-accent-primary);
}

body[data-theme-family="premier"] section[aria-labelledby="directory-discovery-shortcuts-heading"] {
  border-color: var(--premier-border-soft);
  background: var(--premier-card-bg);
  border-radius: var(--premier-radius-md);
}

body[data-theme-family="premier"] section[aria-labelledby="directory-discovery-shortcuts-heading"] h2 {
  font-family: var(--premier-font-display);
  text-transform: uppercase;
  letter-spacing: var(--premier-tracking-normal);
  color: var(--premier-fg);
}

body[data-theme-family="premier"] section[aria-labelledby="directory-discovery-shortcuts-heading"] a {
  font-family: var(--premier-font-body);
  letter-spacing: var(--premier-tracking-wide);
  text-transform: uppercase;
}

body[data-theme-family="premier"] section[aria-labelledby="directory-discovery-shortcuts-heading"] a:not(.text-gold):hover {
  border-color: var(--premier-accent-primary);
  color: var(--premier-accent-primary);
}

/* ── Site header — transparent over the duotone hero ───────────────────
 * The home-top header lets the program-cover photograph continue behind
 * the identity. Scroll state and the mobile drawer use flat night plates;
 * neither state blurs the page or emits a shadow. */
body[data-theme-family="premier"] nav.glass-strong {
  background: transparent;
  border-bottom: 0 solid transparent;
  backdrop-filter: none;
  transition:
    background-color var(--premier-transition-standard),
    border-color var(--premier-transition-standard),
    box-shadow var(--premier-transition-standard);
}

body[data-theme-family="premier"] nav.glass-strong[data-scrolled="true"] {
  background: var(--premier-nav-bg);
  border-bottom: 1px solid var(--premier-border-soft);
  backdrop-filter: none;
  box-shadow: none;
}

body[data-theme-family="premier"] #site-mobile-drawer.glass-strong {
  background: var(--premier-nav-bg);
  border-color: var(--premier-border-soft);
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
  box-shadow: none;
}

/* ── Hero-scale brand logo (home top, un-scrolled) ──────────────────────
 * On the home hero the header is transparent over the band collage, so the
 * brand logo reads as a large HERO lockup rather than a nav-bar mark: it
 * anchors to the TOP of the header row (align-self) and overflows downward
 * over the collage, clearing the hero headline below. On scroll it collapses
 * to the compact nav logo (the clamp further down). `PremierHeaderBrand`
 * stamps `data-prominent="true"` on the lockup only in this home-top state.
 *
 * Square sister marks (allcountry/bandas 1:1) fill ~15rem; the wide Premier
 * 2:1 wordmark is held by max-width so it doesn't sprawl across the nav —
 * both constraints with width/height:auto keep each mark's native aspect.
 * Sizing via max-height/-width (not height) so the shrink-on-scroll animates
 * through the transition declared below. */
body[data-theme-family="premier"] nav.glass-strong a[aria-label$="home"]:has([data-header-brand-lockup][data-prominent="true"]) {
  align-self: flex-start;
}

body[data-theme-family="premier"] nav.glass-strong [data-header-brand-lockup][data-prominent="true"] img {
  width: auto;
  height: auto;
  max-height: 6rem;
  max-width: 12.75rem;
}

@media (min-width: 1024px) {
  body[data-theme-family="premier"] nav.glass-strong [data-header-brand-lockup][data-prominent="true"] img {
    max-height: 11.25rem;
    max-width: 16.5rem;
  }
}

/* Logo + lockup shrink on scroll. Once the page scrolls past the hero photo,
 * the hero-scale logo would collide with the nav links and bleed over content
 * underneath, so it compresses to 3rem tall with a smooth 220ms transition.
 * We clamp via max-height + height:auto so the intrinsic size yields to the
 * scroll state; max-width is a safety cap for the widest (Premier 2:1) mark. */
body[data-theme-family="premier"] nav.glass-strong [data-header-brand-lockup] img {
  transition: max-width var(--premier-transition-standard), max-height var(--premier-transition-standard);
}

/* The image-less fallback previously carried a hard poster shadow. The
 * printed-ink wordmark must remain flat too. */
body[data-theme-family="premier"] nav.glass-strong [data-header-brand-lockup] > span {
  color: var(--premier-accent-primary);
  filter: none;
}

body[data-theme-family="premier"] nav.glass-strong[data-scrolled="true"] [data-header-brand-lockup] {
  gap: 0;
}

body[data-theme-family="premier"] nav.glass-strong[data-scrolled="true"] [data-header-brand-lockup] img {
  max-width: 9rem;
  max-height: 3rem;
  width: auto !important;
  height: auto;
}

/* Hide the optional tagline once scrolled — it sits below the logo and
 * just adds vertical bulk on the compressed header. */
body[data-theme-family="premier"] nav.glass-strong[data-scrolled="true"] [data-header-brand-tagline] {
  display: none;
}

/* Semi-transparent pill behind the primary nav-links group. With the
 * header itself transparent over the hero, the nav text would
 * otherwise sit directly on the band-collage photography and read
 * poorly. The pill gives the link row a defined surface — matching
 * the way Premier WP's nav lockup reads as a discrete element
 * against the photo behind it. */
body[data-theme-family="premier"] nav.glass-strong [role="navigation"] {
  background: var(--premier-nav-plate-bg);
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
  border: 1px solid var(--premier-border-soft);
  /* 2026-06 skin evolution: the nav group reads as a floating pill over
   * the hero photo, matching the unified CTA geometry. */
  border-radius: var(--premier-radius-pill);
  padding: 0.25rem 0.75rem;
  box-shadow: none;
}

/* When the header is scrolled (already painted near-opaque), drop
 * the pill background since the nav now sits on a solid surface. */
body[data-theme-family="premier"] nav.glass-strong[data-scrolled="true"] [role="navigation"] {
  background: transparent;
  border-color: transparent;
  box-shadow: none;
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
}

body[data-theme-family="premier"] nav.glass-strong [role="navigation"] a[data-variant="ghost"] {
  font-family: var(--premier-font-body);
  font-weight: var(--premier-weight-medium);
  letter-spacing: var(--premier-tracking-wide);
  text-transform: uppercase;
  font-size: var(--premier-text-sm);
  color: var(--premier-text-soft);
  transition: color var(--premier-transition-standard);
}

body[data-theme-family="premier"] nav.glass-strong:not([data-scrolled="true"]) [role="navigation"] a[data-variant="ghost"] {
  color: var(--premier-photo-muted);
}

body[data-theme-family="premier"] nav.glass-strong [role="navigation"] a[data-variant="ghost"]:hover,
body[data-theme-family="premier"] nav.glass-strong [role="navigation"] a[data-variant="ghost"]:focus-visible {
  color: var(--premier-photo-fg);
}

/* ── Header search — compact box-office lookup ─────────────────────────
 * The persistent field sits on the same flat night plate as Premier nav.
 * Its menu anchors inward from the right rail so the shared typeahead can
 * expand without clipping against the viewport or the sticky header layer. */
body[data-theme-family="premier"] [data-premier-header-search] {
  display: flex;
  align-items: center;
  gap: var(--premier-space-2);
  flex-shrink: 0;
}

body[data-theme-family="premier"] [data-premier-header-search="desktop"] [data-public-search-typeahead] {
  width: var(--premier-header-search-width);
}

body[data-theme-family="premier"] [data-premier-header-search="mobile"] [data-public-search-typeahead] {
  flex: 1;
}

body[data-theme-family="premier"] [data-premier-header-search] input[data-component="input"] {
  width: 100%;
  height: var(--premier-header-search-height);
  padding-inline-start: calc(var(--premier-space-8) + var(--premier-space-2));
  padding-inline-end: var(--premier-space-3);
  border: 1px solid var(--premier-border-soft);
  border-radius: var(--premier-radius-pill);
  background: var(--premier-field-bg);
  color: var(--premier-fg);
  box-shadow: none;
  font-family: var(--premier-font-body);
  font-size: var(--premier-text-2xs);
  font-weight: var(--premier-weight-regular);
  letter-spacing: var(--premier-tracking-wide);
  line-height: var(--premier-leading-snug);
}

body[data-theme-family="premier"] [data-premier-header-search] input[data-component="input"]::placeholder {
  color: var(--premier-text-mid);
}

body[data-theme-family="premier"] [data-premier-header-search] input[data-component="input"]:focus-visible {
  border-color: var(--premier-accent-primary);
  outline: var(--premier-focus-outline);
  outline-offset: var(--premier-focus-offset);
  box-shadow: none;
}

body[data-theme-family="premier"] [data-premier-header-search-icon] {
  position: absolute;
  z-index: 1;
  inset-inline-start: var(--premier-space-3);
  top: 50%;
  width: var(--premier-space-4);
  height: var(--premier-space-4);
  color: var(--premier-text-mid);
  pointer-events: none;
  transform: translateY(-50%);
}

body[data-theme-family="premier"] [data-premier-header-search] [role="listbox"] {
  z-index: 60;
  top: calc(100% + var(--premier-space-2));
  padding: var(--premier-space-2);
  border-color: var(--premier-border-strong);
  border-radius: var(--premier-radius-md);
  background: var(--premier-field-panel-bg);
  color: var(--premier-fg);
  box-shadow: none;
}

body[data-theme-family="premier"] [data-premier-header-search="desktop"] [role="listbox"] {
  right: 0;
  left: auto;
  width: min(
    var(--premier-header-search-menu-width),
    calc(100vw - var(--premier-space-8))
  );
}

body[data-theme-family="premier"] [data-premier-header-search] [role="listbox"] p,
body[data-theme-family="premier"] [data-premier-header-search] [role="listbox"] [role="option"] span:last-child {
  color: var(--premier-text-mid);
}

body[data-theme-family="premier"] [data-premier-header-search] [role="option"] {
  color: var(--premier-fg);
}

body[data-theme-family="premier"] [data-premier-header-search] [role="option"]:where(:hover, :focus-visible, [data-active]) {
  background: var(--premier-ink-wash-medium);
  color: var(--premier-photo-fg);
}

body[data-theme-family="premier"] [data-component="header-search-overlay"] {
  border-color: var(--premier-border-soft);
  background: var(--premier-nav-bg);
  box-shadow: none;
  backdrop-filter: none;
}

/* ── Public footer — full-ink bookend ───────────────────────────────── */
body[data-theme-family="premier"] footer {
  background: var(--premier-footer-bg);
  border-top: 0;
  color: var(--premier-footer-fg);
}

body[data-theme-family="premier"] footer .divider-glow {
  display: none;
}

body[data-theme-family="premier"] footer :where(a, p, li, h2, h3, label) {
  color: var(--premier-footer-fg);
}

body[data-theme-family="premier"] footer :where(a:hover, a:focus-visible),
body[data-theme-family="premier"] footer [data-premier-footer-heading],
body[data-theme-family="premier"] footer [data-premier-footer-section-label] {
  color: var(--premier-photo-fg);
}

body[data-theme-family="premier"] [data-component="footer-brand"] {
  font-family: var(--premier-font-display);
  font-weight: var(--premier-weight-regular);
  letter-spacing: var(--premier-tracking-normal);
  text-transform: uppercase;
  color: var(--premier-photo-fg);
}

/* ── Page header (editorial banner with printed-ink eyebrow) ─────────── */
/* Tighter padding-block — at desktop the prior 5vh + 4rem clamp opened up
 * roughly 140px of empty black above the eyebrow on /contact and other
 * page-header'd pages, which reads as wasted real estate. Pulling the
 * upper bound to 4rem and rebasing the clamp lower gives the header
 * enough breathing room without the dead zone. Refs UX audit P1-6. */
body[data-theme-family="premier"] [data-component="page-header"] {
  border: 0;
  background: none;
  box-shadow: none;
  padding-block: clamp(2rem, 4vh, 4rem);
}

body[data-theme-family="premier"] [data-component="page-header"] h1 {
  font-family: var(--premier-font-display);
  font-weight: var(--premier-weight-regular);
  letter-spacing: var(--premier-tracking-normal);
  line-height: var(--premier-leading-display);
  text-transform: uppercase;
  font-size: clamp(2.75rem, 6vw, var(--premier-text-5xl));
}

body[data-theme-family="premier"] [data-component="page-header"] .eyebrow {
  font-family: var(--premier-font-body);
  font-weight: var(--premier-weight-bold);
  letter-spacing: var(--premier-tracking-eyebrow);
  text-transform: uppercase;
  color: var(--premier-accent-primary);
  font-size: var(--premier-text-2xs);
}

/* ── BOX OFFICE DARK printed type ─────────────────────────────────────
 * The historical data hook remains the cross-module heading contract,
 * but the metallic treatment is retired. Every non-photo heading prints
 * in one solid sister ink, at regular display weight, with no glow. */
body[data-theme-family="premier"] [data-premier-gold] {
  background: none;
  background-image: none;
  color: var(--premier-accent-primary) !important;
  -webkit-background-clip: initial;
          background-clip: initial;
  -webkit-text-fill-color: var(--premier-accent-primary);
  text-shadow: none !important;
  font-weight: var(--premier-weight-regular) !important;
  -webkit-filter: none;
          filter: none;
  -webkit-text-stroke: 0;
}

/* Section headings use the same ink contract explicitly so later module
 * declarations cannot restore a legacy shadow or clipped fill. */
body[data-theme-family="premier"] [data-premier-gold]:where(h2),
body[data-theme-family="premier"] h2[data-premier-gold],
body[data-theme-family="premier"] [data-premier-gold][class*="sectionHeading"] {
  background-image: none;
  background: none;
  color: var(--premier-accent-gold) !important;
  -webkit-text-fill-color: var(--premier-accent-gold);
  -webkit-background-clip: initial;
          background-clip: initial;
  font-weight: var(--premier-weight-regular) !important;
  -webkit-filter: none;
          filter: none;
  text-shadow: none !important;
}

/* Photo-scale headings are paper-white over the sister-tinted night scrim.
 * The ink heading contract above remains for every non-photo section. */
body[data-theme-family="premier"] [data-premier-photo-title][data-premier-gold] {
  color: var(--premier-photo-fg) !important;
  -webkit-text-fill-color: var(--premier-photo-fg);
  text-shadow: none !important;
}

/* ── Site nav: active-page indicator ────────────────────────────────────
 * The shared site-header applies `text-gold` to the active nav link via
 * its activeNavHref logic. On the Premier family, `text-gold` reads as
 * MZ-yellow and doesn't match the sister-ink system; retint it and
 * add a subtle underline so the active state is unmistakable. Pulling
 * via `aria-current="page"` (which the header also stamps) keeps the
 * rule independent of utility-class drift. Refs UX audit P1-5. */
body[data-theme-family="premier"] nav.glass-strong a[aria-current="page"] {
  color: var(--premier-accent-primary) !important;
  font-weight: var(--premier-weight-bold);
  text-underline-offset: 6px;
  text-decoration: underline solid var(--premier-accent-primary) 2px;
}

body[data-theme-family="premier"] nav.glass-strong:not([data-scrolled="true"]) a[aria-current="page"] {
  color: var(--premier-photo-fg) !important;
  text-decoration-color: var(--premier-photo-fg);
}

/* Also kill the `text-gold` Tailwind utility on the Premier nav so the
 * default-tenant MZ-yellow doesn't bleed through before the active-link
 * rule resolves. */
body[data-theme-family="premier"] nav.glass-strong [role="navigation"] a.text-gold {
  color: var(--premier-accent-primary);
}

/* ── Discovery shortcuts: group eyebrows ────────────────────────────────
 * The directory's DirectoryDiscoveryShortcuts component already groups
 * chips by City/Event/Vibe/Era. On Premier we raise the visibility of
 * the per-group eyebrows so the section reads as four distinct lanes
 * rather than a wall of chips. Refs UX audit P1-11. */
body[data-theme-family="premier"] section[aria-labelledby="directory-discovery-shortcuts-heading"] .text-xs.uppercase.tracking-\[0\.18em\] {
  color: var(--premier-accent-primary);
  font-family: var(--premier-font-body);
  font-weight: var(--premier-weight-bold);
  letter-spacing: var(--premier-tracking-eyebrow);
  font-size: 0.72rem;
  padding-bottom: 0.25rem;
  border-bottom: 1px solid var(--premier-border-soft);
  margin-bottom: 0.5rem;
}

/* Add a touch more separation between the four group columns so they
 * read as distinct rows on narrow widths too. */
body[data-theme-family="premier"] section[aria-labelledby="directory-discovery-shortcuts-heading"] > .grid {
  row-gap: 1.25rem;
}

/* ── Directory card "View profile" affordance bump ──────────────────────
 * The Premier listing-card primary link reads small at the prior 13px;
 * bump to 14px and add a touch more letter-spacing so it telegraphs as
 * the CTA on the card. Arrow ships from the JSX so no extra glyph
 * needed. Refs UX audit P2-4. */

/* ── Premier footer additions (Featured Acts row + social + newsletter) ─
 * The PremierFooterContent component grew a featured-acts row, social
 * icon row, and newsletter signup beneath the existing four-column
 * link grid. These rules keep the additions on the same flat ink slab. */
body[data-theme-family="premier"] [data-premier-footer-featured-row] {
  border-top: 1px solid var(--premier-footer-edge);
  padding-top: 2rem;
  display: grid;
  gap: 1rem;
}

body[data-theme-family="premier"] [data-premier-footer-section-label] {
  font-family: var(--premier-font-body);
  font-weight: var(--premier-weight-bold);
  letter-spacing: var(--premier-tracking-eyebrow);
  text-transform: uppercase;
  color: var(--premier-photo-fg);
  font-size: 0.72rem;
}

body[data-theme-family="premier"] [data-premier-footer-featured-grid] {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(13rem, 1fr));
  gap: 1rem;
}

body[data-theme-family="premier"] [data-premier-featured-act] {
  display: inline-flex;
  align-items: center;
  gap: 0.75rem;
  padding: 0.5rem;
  border: 1px solid var(--premier-footer-edge);
  background: transparent;
  color: var(--premier-footer-fg);
  font-family: var(--premier-font-body);
  font-size: 0.875rem;
  font-weight: var(--premier-weight-medium);
  text-decoration: none;
  transition:
    border-color var(--premier-transition-standard),
    color var(--premier-transition-standard),
    background-color var(--premier-transition-standard);
}

body[data-theme-family="premier"] [data-premier-featured-act]:hover,
body[data-theme-family="premier"] [data-premier-featured-act]:focus-visible {
  border-color: var(--premier-photo-fg);
  color: var(--premier-photo-fg);
  background: var(--premier-footer-wash);
  outline: none;
}

body[data-theme-family="premier"] [data-premier-featured-act-thumb] {
  width: 3.25rem;
  height: 3.25rem;
  object-fit: cover;
  flex-shrink: 0;
  background: var(--premier-surface);
}

body[data-theme-family="premier"] [data-premier-footer-social-row] {
  border-top: 1px solid var(--premier-footer-edge);
  padding-top: 1.5rem;
  display: flex;
  align-items: center;
  gap: 1rem;
  flex-wrap: wrap;
}

body[data-theme-family="premier"] [data-premier-footer-social-link] {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2.5rem;
  height: 2.5rem;
  border: 1px solid var(--premier-footer-edge);
  color: var(--premier-footer-fg);
  transition:
    border-color var(--premier-transition-standard),
    color var(--premier-transition-standard),
    background-color var(--premier-transition-standard);
}

body[data-theme-family="premier"] [data-premier-footer-social-link]:hover,
body[data-theme-family="premier"] [data-premier-footer-social-link]:focus-visible {
  border-color: var(--premier-photo-fg);
  color: var(--premier-photo-fg);
  background: var(--premier-footer-wash);
  outline: none;
}

body[data-theme-family="premier"] [data-premier-footer-newsletter] {
  border-top: 1px solid var(--premier-footer-edge);
  padding-top: 1.75rem;
}

body[data-theme-family="premier"] footer [data-premier-footer-newsletter] [data-component="section-card"] {
  background: transparent;
  border: 0;
  box-shadow: none;
}

body[data-theme-family="premier"] footer [data-premier-footer-newsletter] label > span {
  color: var(--premier-footer-fg);
}

/* Newsletter placeholders are body copy, not decorative tint. This also
 * covers non-footer newsletter cards, where the component-local 55% ink
 * mix falls below the 4.5:1 placeholder floor. */
body[data-theme-family="premier"] [data-component="section-card"] form input[type="email"]::placeholder,
body[data-theme-family="premier"] [data-component="section-card"] form input[type="text"]::placeholder {
  color: var(--premier-text-soft);
  opacity: 1;
}

body[data-theme-family="premier"] footer [data-premier-footer-newsletter] input[type="email"],
body[data-theme-family="premier"] footer [data-premier-footer-newsletter] input[type="text"] {
  background: var(--premier-field-panel-bg);
  border-color: var(--premier-footer-fg);
  color: var(--premier-photo-fg);
}

body[data-theme-family="premier"] footer [data-premier-footer-newsletter] input[type="email"]::placeholder,
body[data-theme-family="premier"] footer [data-premier-footer-newsletter] input[type="text"]::placeholder {
  color: var(--premier-footer-fg);
  opacity: 1;
}

body[data-theme-family="premier"] footer [data-premier-footer-newsletter] input:focus-visible {
  border-color: var(--premier-photo-fg);
  box-shadow: 0 0 0 2px var(--premier-photo-fg);
}

body[data-theme-family="premier"] footer [data-premier-footer-newsletter] [data-component="button"] {
  background: var(--premier-photo-fg);
  border-color: var(--premier-photo-fg);
  color: var(--premier-footer-bg);
}

body[data-theme-family="premier"] footer [data-premier-footer-newsletter] [data-component="button"]:hover {
  background: var(--premier-footer-fg);
  border-color: var(--premier-footer-fg);
  color: var(--premier-footer-bg);
}

body[data-theme-family="premier"] footer [data-premier-footer-newsletter] [data-component="button"] span {
  color: inherit;
}

/* The persistent shortlist tray is another Premier chrome surface. Keep
 * it on a solid program plate even though its component-local baseline is
 * deliberately glassy for the previous direction. */
body[data-theme-family="premier"] .premier-lineup {
  background: var(--premier-surface);
  box-shadow: none;
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
}

/* Sister palette and font roles live in `styles/sisters/*.css`. Keeping
 * those declarations beside each brand prevents shared-chassis drift. */

/* latintributes — English-language Latin companion; keep the same Premier
 * typography for now, but give content pages their own teal/coral backdrop
 * instead of falling through to the Premier flagship stage plate. */
body[data-tenant="latintributes"] {
  --premier-page-backdrop-image: url("/brand/latintributes/background.webp");
}

/* ── Public footer (Premier branch) ──────────────────────────────────── */
/* Public footer: display-face wordmark and high-contrast ink-slab links. */
body[data-theme-family="premier"] [data-premier-footer-brand] {
  font-family: var(--premier-font-display);
  font-weight: var(--premier-weight-regular);
  letter-spacing: var(--premier-tracking-normal);
  line-height: var(--premier-leading-tight);
  color: var(--premier-photo-fg);
}

body[data-theme-family="premier"] [data-premier-footer-link] {
  transition: color var(--premier-transition-cinematic);
}

body[data-theme-family="premier"] [data-premier-footer-link]:hover,
body[data-theme-family="premier"] [data-premier-footer-link]:focus-visible {
  color: var(--premier-photo-fg);
}

/* Owner option B: both the standard EPK and editorial profile use Premier type. */
body[data-theme-family="premier"] [data-website-layout] {
  --public-website-tagline-long-size: var(--premier-text-md);
  --public-website-tagline-longer-size: var(--premier-text-sm);
}

body[data-theme-family="premier"] [data-component="public-band-hero"] {
  --public-band-tagline-long-size: clamp(var(--premier-text-sm), 1.4vw, var(--premier-text-md));
  --public-band-tagline-longer-size: clamp(var(--premier-text-2xs), 1.2vw, var(--premier-text-sm));
}

body[data-theme-family="premier"] [data-premier-profile-hero-tagline][data-tagline-length="long"] {
  font-size: var(--premier-text-sm);
  line-height: var(--premier-leading-snug);
  overflow-wrap: anywhere;
}

body[data-theme-family="premier"] [data-premier-profile-hero-tagline][data-tagline-length="longer"] {
  font-size: var(--premier-text-2xs);
  line-height: var(--premier-leading-snug);
  overflow-wrap: anywhere;
}

/* Directory zero-results card: the heading, the booking help and the actions
   are separate blocks, so space them on the Premier scale instead of letting
   them run together. */
body[data-theme-family="premier"] [data-directory-empty-state] {
  display: grid;
  justify-items: start;
  gap: var(--premier-space-4);
}

body[data-theme-family="premier"] [data-directory-empty-state] [data-directory-booking-help] {
  display: grid;
  justify-items: start;
  gap: var(--premier-space-3);
  padding-top: var(--premier-space-4);
}
/*
 * 90s to Now — BOX OFFICE DARK sister ink.
 *
 * Personality comes from one printed magenta and Audiowide, not neon
 * light. The aubergine chassis is the approved exception to the shared
 * ink-navy ground because it preserves the sister's own visual night.
 */
body[data-tenant="90stonow"] {
  --premier-page-backdrop-image: url("/brand/90stonow/background.webp");
  --premier-font-display: var(--font-sister-90stonow-display), "Audiowide", "Russo One", sans-serif;

  --premier-bg: #170D14;
  --premier-fg: #F3EDF2;
  --premier-text-mid: #B393AB;
  --premier-text-soft: #DCC8D8;
  --premier-night-rgb: 23 13 20;
  --premier-scrim-ink-rgb: 36 12 30;
  --premier-scrim-mid-rgb: 28 11 24;
  --premier-scrim-top-rgb: 28 11 24;
  --premier-surface: #211320;
  --premier-surface-elevated: #2A1A29;
  --premier-card-bg: #1F1220;

  --premier-ink: #EA6FB5;
  --premier-ink-edge: #F08CC6;
  --premier-cta-bg: #C2187E;
  --premier-cta-bg-hover: #AB146E;
  --premier-cta-fg: #FFFFFF;
  --premier-footer-bg: #C2187E;
  --premier-footer-fg: #E4EBF7;

  --premier-surface-tinted-wash:
    linear-gradient(180deg, #231424 0%, #1C101B 100%);
  --premier-surface-duotone-tint: #211320;
  --premier-surface-duotone-plate:
    linear-gradient(180deg, #1C101B 0%, #241323 100%);
  --premier-surface-texture-base: #1A0F18;
  --premier-surface-texture-plate:
    linear-gradient(180deg, #170D14 0%, #211320 100%);
}
/*
 * All Country Tributes — BOX OFFICE DARK sister ink.
 * Terracotta is re-exposed from the established country ramp for the
 * shared ink-navy press; the committed barn red carries action plates.
 */
body[data-tenant="allcountrytributes"] {
  --premier-page-backdrop-image: url("/brand/allcountrytributes/background.webp");
  --premier-font-display: var(--font-sister-allcountrytributes-display), "Rye", "Smokum", "Bevan", serif;
  --premier-scrim-ink-rgb: 43 24 13;
  --premier-scrim-mid-rgb: 28 22 25;
  --premier-scrim-top-rgb: 28 22 25;
  --premier-ink: #D98A5E;
  --premier-ink-edge: #E6A47D;
  --premier-cta-bg: #A6362A;
  --premier-cta-bg-hover: #C24A34;
  --premier-cta-fg: #FFFFFF;
  --premier-footer-bg: #A6362A;
  --premier-footer-fg: #E4EBF7;
}
/*
 * Bandas Tributos — BOX OFFICE DARK sister ink.
 * The existing flame orange becomes a single printed ink; its deeper
 * orange is reserved for CTA and footer plates on the navy chassis.
 */
body[data-tenant="bandastributos"] {
  --premier-page-backdrop-image: url("/brand/bandastributos/background.webp");
  --premier-font-display: var(--font-sister-bandastributos-display), "Alfa Slab One", "Bevan", serif;
  --premier-scrim-ink-rgb: 48 27 8;
  --premier-scrim-mid-rgb: 30 24 22;
  --premier-scrim-top-rgb: 30 24 22;
  --premier-ink: #FF8A2C;
  --premier-ink-edge: #FFA559;
  --premier-cta-bg: #A84400;
  --premier-cta-bg-hover: #BD5000;
  --premier-cta-fg: #FFFFFF;
  --premier-footer-bg: #A84400;
  --premier-footer-fg: #E4EBF7;
}

/* Alfa Slab distinguishes section display, while photo-scale titles keep
 * the family's condensed civic face so long act names remain readable. */
body[data-tenant="bandastributos"] [data-premier-photo-title] {
  font-family: var(--font-premier-display), "Teko", "Bebas Neue", "Impact", sans-serif;
}
/*
 * Legends of Groove — BOX OFFICE DARK sister ink.
 * Coral from the established soul/funk ramp is exposed as print rather
 * than light; vermillion carries action and footer plates.
 */
body[data-tenant="legendsofgroove"] {
  --premier-page-backdrop-image: url("/brand/legendsofgroove/background.webp");
  --premier-font-display: var(--font-sister-legendsofgroove-display), "Bungee", "Russo One", sans-serif;
  --premier-scrim-ink-rgb: 45 18 11;
  --premier-scrim-mid-rgb: 29 19 24;
  --premier-scrim-top-rgb: 29 19 24;
  --premier-ink: #FF8A6C;
  --premier-ink-edge: #FFA08A;
  --premier-cta-bg: #B43522;
  --premier-cta-bg-hover: #C7472D;
  --premier-cta-fg: #FFFFFF;
  --premier-footer-bg: #B43522;
  --premier-footer-fg: #E4EBF7;
}
/*
 * Premier Tributes — BOX OFFICE DARK flagship ink.
 *
 * Cobalt is treated as a single printed ink on the shared ink-navy
 * chassis. The flagship keeps its italic programme-note voice; luminous
 * and metallic effects are gone.
 */
body[data-tenant="premiertributes"] {
  --premier-page-backdrop-image: url("/brand/premier/background.webp");
  --premier-ink: #7BA6EC;
  --premier-ink-edge: #9BBCF2;
  --premier-cta-bg: #2B62C4;
  --premier-cta-bg-hover: #3B74D6;
  --premier-cta-fg: #FFFFFF;
  --premier-footer-bg: #1D4FA8;
  --premier-footer-fg: #E4EBF7;
}

/* The italic deck is the flagship's restrained programme-note voice.
 * clamp() is intentional so it scales with the civic section rhythm. */
body[data-tenant="premiertributes"] [class*="sectionDeck"] {
  font-size: clamp(var(--premier-text-md), 0.95rem + 0.5vw, var(--premier-text-lg));
  font-style: italic;
  font-weight: var(--premier-weight-regular);
  line-height: var(--premier-leading-body);
  letter-spacing: var(--premier-tracking-normal);
  max-width: 46rem;
  margin-top: clamp(var(--premier-space-3), 1.5vw, var(--premier-space-5));
  position: relative;
}
/*
 * Reno Vegas — moonlit BOX OFFICE DARK.
 * Steel stays the single printed ink, while compact type, flat chapter
 * plates, and a dark footer let the Reno/Vegas photography lead.
 */
body[data-tenant="renovegas"] {
  --premier-page-backdrop-image: url("/brand/renovegas/background.webp");
  --premier-font-display: var(--font-sister-renovegas-display), "Limelight", "Cinzel", serif;
  --premier-scrim-ink-rgb: 18 26 38;
  --premier-scrim-mid-rgb: 15 23 37;
  --premier-scrim-top-rgb: 15 23 37;
  --premier-ink: #AEBED9;
  --premier-ink-edge: #C6D1E3;
  --premier-cta-bg: #3F527F;
  --premier-cta-bg-hover: #536A9B;
  --premier-cta-fg: #FFFFFF;
  --premier-footer-bg: #121A26;
  --premier-footer-fg: #E4EBF7;
}

/* Public-only bridge. Generic public primitives still expose the old theme
 * roles, so Reno maps them onto its Premier tokens instead of leaking the
 * legacy orange palette into catalog controls and utility surfaces. */
body[data-tenant="renovegas"][data-theme-family="premier"]:not([data-console-tone]) {
  --premier-font-display: var(--font-premier-display), "Teko", "Bebas Neue", "Impact", sans-serif;

  --background: var(--premier-bg);
  --foreground: var(--premier-fg);
  --font-body: var(--premier-font-body);
  --font-display: var(--premier-font-display);
  --card: var(--premier-card-bg);
  --card-foreground: var(--premier-fg);
  --popover: var(--premier-field-panel-bg);
  --popover-foreground: var(--premier-fg);
  --primary: var(--premier-ink);
  --primary-foreground: var(--premier-bg);
  --secondary: var(--premier-surface);
  --secondary-foreground: var(--premier-text-soft);
  --muted: var(--premier-surface);
  --muted-foreground: var(--premier-text-soft);
  --accent: var(--premier-ink-wash-soft);
  --accent-foreground: var(--premier-fg);
  --border: var(--premier-border-soft);
  --input: var(--premier-border-strong);
  --ring: var(--premier-ink);
  --gold: var(--premier-ink);
  --gold-muted: var(--premier-text-mid);
  --surface-elevated: var(--premier-surface-elevated);
  --surface-sunken: var(--premier-bg);
  --control-background: var(--premier-field-bg);
  --placeholder-foreground: var(--premier-text-mid);
  --focus-ring: var(--premier-ink);
  --shadow-soft: none;
  --shadow-panel: none;

  --premier-card-bg: var(--premier-surface-elevated);
  --premier-surface-tinted-wash: none;
  --premier-surface-duotone-tint: var(--premier-bg);
  --premier-surface-duotone-plate: none;
  --premier-surface-texture-base: var(--premier-surface);
  --premier-surface-texture-plate: none;
  --premier-border-strong: color-mix(in oklab, var(--premier-ink) 50%, transparent);
  --premier-footer-edge: rgb(255 255 255 / 0.36);
  --premier-leading-display: var(--premier-leading-tight);

  /* Reno's ordinary controls should answer promptly; the shared cinematic
   * duration remains available to the image-led sister treatments. */
  --premier-transition-cinematic: var(--premier-transition-standard);

  /* Responsive chapter rhythm is the one deliberate fluid layout value. */
  --premier-section-pad-y: clamp(
    var(--premier-space-12),
    6vw,
    var(--premier-space-20)
  );

  --premier-header-search-width: calc(
    var(--premier-space-24) + var(--premier-space-12)
  );
  --premier-header-search-focus-width: calc(
    var(--premier-space-24) + var(--premier-space-20)
  );
}

/* Long public chapter titles use the clean display face at a readable
 * cadence; the illustrated brand mark now carries the vintage signature. */
body[data-tenant="renovegas"][data-theme-family="premier"]:not([data-console-tone]) :where(h1, h2) {
  line-height: var(--premier-leading-tight);
}

/* Compact inner-page branding needs enough presence to identify the partner;
 * the prominent home lockup and scrolled state keep their shared contracts. */
body[data-tenant="renovegas"][data-theme-family="premier"]:not([data-console-tone]) nav.glass-strong:not([data-scrolled="true"]) [data-header-brand-lockup]:not([data-prominent="true"]) img {
  width: auto;
  height: auto;
  max-width: calc(var(--premier-space-24) + var(--premier-space-24));
  max-height: var(--premier-space-16);
}

/* Flat cards separate through tone and one disciplined hairline. */
body[data-tenant="renovegas"][data-theme-family="premier"]:not([data-console-tone]) :where(
  [data-premier-featured-card],
  [data-directory-card-root],
  [data-component="card"],
  [data-component="section-card"],
  [data-component="article-card"]
) {
  background: var(--premier-card-bg);
  border-color: var(--premier-border-soft);
  box-shadow: none;
}

body[data-tenant="renovegas"][data-theme-family="premier"]:not([data-console-tone]) :where(
  [data-premier-featured-card],
  [data-directory-card-root],
  [data-component="card"],
  [data-component="section-card"],
  [data-component="article-card"]
):where(:hover, :focus-within) {
  border-color: var(--premier-border-strong);
  box-shadow: none;
}

/* ── Directory repair ─────────────────────────────────────────────────
 * Next's current CSS-module output no longer carries the older `_page__`
 * selector shape, so the shared rules no longer reach this page.
 * Keep the repair Reno-only and prefer the card's contract-tested hooks. */
body[data-tenant="renovegas"][data-theme-family="premier"]:not([data-console-tone]) [data-css-module~="directory-view-content"][class*="page"] {
  --background: var(--premier-bg);
  --card: var(--premier-card-bg);
  --foreground: var(--premier-fg);
  --muted-foreground: var(--premier-text-soft);
  --border: var(--premier-border-strong);
  --gold: var(--premier-ink);
  --radius: var(--premier-radius-md);
  --shadow-panel: none;
  --shadow-soft: none;
  background: var(--premier-bg);
  background-image: none;
}

body[data-tenant="renovegas"][data-theme-family="premier"]:not([data-console-tone]) section[data-css-module~="directory-view-content"][class*="hero"] {
  border-color: var(--premier-border-soft);
  background: var(--premier-bg);
}

body[data-tenant="renovegas"][data-theme-family="premier"]:not([data-console-tone]) :where(
  [data-css-module~="directory-view-content"][class*="heroBackdrop"],
  [data-css-module~="directory-view-content"][class*="heroMesh"]
) {
  background: none;
  opacity: 0;
}

body[data-tenant="renovegas"][data-theme-family="premier"]:not([data-console-tone]) [data-css-module~="directory-view-content"][class*="heroGrid"] {
  padding-block: var(--premier-section-pad-y);
}

body[data-tenant="renovegas"][data-theme-family="premier"]:not([data-console-tone]) [data-css-module~="directory-view-content"][class*="heroCopy"] {
  max-width: calc(var(--premier-space-24) * 10);
}

body[data-tenant="renovegas"][data-theme-family="premier"]:not([data-console-tone]) [data-css-module~="directory-view-content"][class*="eyebrow"] {
  color: var(--premier-accent-primary);
  font-family: var(--premier-font-body);
  font-size: var(--premier-text-2xs);
  font-weight: var(--premier-weight-bold);
  letter-spacing: var(--premier-tracking-eyebrow);
  text-transform: uppercase;
}

body[data-tenant="renovegas"][data-theme-family="premier"]:not([data-console-tone]) [data-css-module~="directory-view-content"][class*="title"] {
  color: var(--premier-accent-primary);
  font-family: var(--premier-font-display);
  /* Fluid poster type is a deliberate responsive typography exception. */
  font-size: clamp(
    var(--premier-text-3xl),
    7vw,
    var(--premier-text-5xl)
  );
  font-weight: var(--premier-weight-regular);
  letter-spacing: var(--premier-tracking-normal);
  line-height: var(--premier-leading-display);
  text-transform: uppercase;
  text-wrap: balance;
}

body[data-tenant="renovegas"][data-theme-family="premier"]:not([data-console-tone]) [data-css-module~="directory-view-content"][class*="title"] .text-gradient-gold {
  background: none;
  background-clip: initial;
  color: var(--premier-accent-primary);
  -webkit-background-clip: initial;
  -webkit-text-fill-color: initial;
}

body[data-tenant="renovegas"][data-theme-family="premier"]:not([data-console-tone]) [data-css-module~="directory-view-content"][class*="heroCaption"] {
  color: var(--premier-text-soft);
  font-family: var(--premier-font-body);
  font-size: var(--premier-text-sm);
  line-height: var(--premier-leading-body);
}

body[data-tenant="renovegas"][data-theme-family="premier"]:not([data-console-tone]) [data-css-module~="directory-view-content"][class*="heroCountPill"] {
  border-color: var(--premier-border-strong);
  border-radius: var(--premier-radius-pill);
  background: var(--premier-field-bg);
  box-shadow: none;
  color: var(--premier-accent-primary);
  font-family: var(--premier-font-body);
  font-weight: var(--premier-weight-bold);
  letter-spacing: var(--premier-tracking-wide);
  text-transform: uppercase;
}

body[data-tenant="renovegas"][data-theme-family="premier"]:not([data-console-tone]) form[data-css-module~="directory-view-content"][class*="topBar"] {
  border-color: var(--premier-border-strong);
  border-radius: var(--premier-radius-md);
  background: var(--premier-card-bg);
  box-shadow: none;
  backdrop-filter: none;
}

body[data-tenant="renovegas"][data-theme-family="premier"]:not([data-console-tone]) section[aria-labelledby="workingbands-buyer-search-directory"] {
  border-color: var(--premier-border-strong);
  border-radius: var(--premier-radius-md);
  background: var(--premier-surface);
  box-shadow: none;
}

body[data-tenant="renovegas"][data-theme-family="premier"]:not([data-console-tone]) :where(
  div[role="dialog"][data-css-module~="directory-view-content"][class*="mobileFilterPanel"],
  div[role="dialog"][data-css-module~="directory-view-content"][class*="drawerPanel"],
  section[data-css-module~="directory-view-content"][class*="filterBlock"]
) {
  border-color: var(--premier-border-strong);
  border-radius: var(--premier-radius-md);
  background: var(--premier-card-bg);
  box-shadow: none;
  backdrop-filter: none;
}

body[data-tenant="renovegas"][data-theme-family="premier"]:not([data-console-tone]) [data-directory-card-root] {
  border-color: var(--premier-border-soft);
  border-radius: var(--premier-radius-md);
  background: var(--premier-card-bg);
  box-shadow: none;
  transition: border-color var(--premier-transition-standard);
}

body[data-tenant="renovegas"][data-theme-family="premier"]:not([data-console-tone]) [data-directory-card-root]:where(:hover, :focus-within) {
  border-color: var(--premier-accent-primary);
  box-shadow: none;
  transform: none;
}

body[data-tenant="renovegas"][data-theme-family="premier"]:not([data-console-tone]) [data-directory-card-root]:focus-within {
  outline: var(--premier-focus-outline);
  outline-offset: var(--premier-focus-offset);
}

body[data-tenant="renovegas"][data-theme-family="premier"]:not([data-console-tone]) [data-directory-card-media] {
  aspect-ratio: 1 / 1;
  background: var(--premier-surface);
}

body[data-tenant="renovegas"][data-theme-family="premier"]:not([data-console-tone]) [data-directory-card-root]:hover [data-directory-card-image] {
  transform: none;
}

body[data-tenant="renovegas"][data-theme-family="premier"]:not([data-console-tone]) [data-directory-card-scrim] {
  background: linear-gradient(
    180deg,
    rgb(var(--premier-night-rgb) / 0) 0%,
    rgb(var(--premier-night-rgb) / 0.05) 45%,
    rgb(var(--premier-night-rgb) / 0.7) 85%,
    rgb(var(--premier-night-rgb) / 0.96) 100%
  );
}

body[data-tenant="renovegas"][data-theme-family="premier"]:not([data-console-tone]) [data-directory-card-media-copy] {
  padding: var(--premier-space-5) var(--premier-space-5) var(--premier-space-4);
}

body[data-tenant="renovegas"][data-theme-family="premier"]:not([data-console-tone]) [data-directory-card-title] {
  color: var(--premier-fg);
  font-family: var(--premier-font-card-title);
  font-size: var(--premier-text-xl);
  font-weight: var(--premier-weight-card-title);
  letter-spacing: var(--premier-tracking-normal);
  line-height: var(--premier-leading-tight);
  text-transform: uppercase;
}

body[data-tenant="renovegas"][data-theme-family="premier"]:not([data-console-tone]) [data-directory-card-target] {
  color: var(--premier-accent-primary);
  font-family: var(--premier-font-body);
  font-size: var(--premier-text-2xs);
  font-weight: var(--premier-weight-bold);
  letter-spacing: var(--premier-tracking-wide);
  text-transform: uppercase;
}

body[data-tenant="renovegas"][data-theme-family="premier"]:not([data-console-tone]) [data-directory-card-body] {
  gap: var(--premier-space-4);
  padding: var(--premier-space-5);
}

body[data-tenant="renovegas"][data-theme-family="premier"]:not([data-console-tone]) [data-directory-card-proof-pill] {
  color: var(--premier-text-mid);
  font-family: var(--premier-font-body);
  font-size: var(--premier-text-2xs);
  letter-spacing: var(--premier-tracking-wide);
}

body[data-tenant="renovegas"][data-theme-family="premier"]:not([data-console-tone]) [data-css-module~="directory-view-content"][class*="proofPill"]:not([class*="proofPillMuted"]) {
  color: var(--premier-accent-primary);
  font-weight: var(--premier-weight-bold);
}

body[data-tenant="renovegas"][data-theme-family="premier"]:not([data-console-tone]) :where(
  [data-css-module~="directory-view-content"][class*="locationChip"],
  [data-css-module~="directory-view-content"][class*="cardHeadline"],
  [data-css-module~="directory-view-content"][class*="cardBody"]
) {
  color: var(--premier-text-soft);
  font-family: var(--premier-font-body);
}

body[data-tenant="renovegas"][data-theme-family="premier"]:not([data-console-tone]) [data-css-module~="directory-view-content"][class*="cardContentFooter"] {
  border-color: var(--premier-border-soft);
}

body[data-tenant="renovegas"][data-theme-family="premier"]:not([data-console-tone]) span[data-css-module~="directory-view-content"][class*="genrePill"] {
  border-color: var(--premier-border-soft);
  border-radius: var(--premier-radius-pill);
  background: var(--premier-ink-wash-medium);
  color: var(--premier-accent-primary);
  font-family: var(--premier-font-body);
  font-weight: var(--premier-weight-bold);
  letter-spacing: var(--premier-tracking-wide);
  text-transform: uppercase;
}

body[data-tenant="renovegas"][data-theme-family="premier"]:not([data-console-tone]) [data-directory-card-primary-link] {
  color: var(--premier-accent-primary);
  font-family: var(--premier-font-body);
  font-size: var(--premier-text-xs);
  font-weight: var(--premier-weight-bold);
  letter-spacing: var(--premier-tracking-wide);
  text-transform: uppercase;
}

body[data-tenant="renovegas"][data-theme-family="premier"]:not([data-console-tone]) [data-directory-card-primary-link]:hover {
  color: var(--premier-fg);
}

body[data-tenant="renovegas"][data-theme-family="premier"]:not([data-console-tone]) [data-css-module~="directory-view-content"][class*="secondaryLink"] {
  color: var(--premier-text-mid);
  font-family: var(--premier-font-body);
}

/* The shared card-overlay action still carries the retired glowing-gold
 * treatment. Reno flattens it onto the same ink-and-field control system. */
body[data-tenant="renovegas"][data-theme-family="premier"]:not([data-console-tone]) [data-directory-overlay-action] {
  --overlay-action-accent: var(--premier-accent-primary);
  --overlay-action-accent-soft: var(--premier-ink-wash-soft);
  --overlay-action-border: var(--premier-border-strong);
  --overlay-action-border-hover: var(--premier-accent-primary);
  --overlay-action-border-active: var(--premier-accent-primary);
  --overlay-action-border-selected: var(--premier-accent-primary);
  --overlay-action-foreground: var(--premier-photo-fg);
  --overlay-action-foreground-hover: var(--premier-photo-fg);
  --overlay-action-foreground-selected: var(--premier-photo-fg);
  --overlay-action-shadow-rest: none;
  --overlay-action-shadow-hover: none;
  --overlay-action-shadow-selected: none;
  --overlay-action-blur: none;
  min-height: var(--tap-target-min);
  border-radius: var(--premier-radius-pill);
  background: var(--premier-field-bg);
  box-shadow: none;
  backdrop-filter: none;
}

body[data-tenant="renovegas"][data-theme-family="premier"]:not([data-console-tone]) [data-directory-overlay-action]:where(:hover, :focus-visible, :active, [aria-pressed="true"], [aria-expanded="true"]) {
  border-color: var(--premier-accent-primary);
  background: var(--premier-ink-wash-medium);
  box-shadow: none;
  color: var(--premier-photo-fg);
  transform: none;
}

body[data-tenant="renovegas"][data-theme-family="premier"]:not([data-console-tone]) [data-directory-overlay-action]:focus-visible {
  outline: var(--premier-focus-outline);
  outline-offset: var(--premier-focus-offset);
}

body[data-tenant="renovegas"][data-theme-family="premier"]:not([data-console-tone]) [data-directory-overlay-action]::after {
  display: none;
}

body[data-tenant="renovegas"][data-theme-family="premier"]:not([data-console-tone]) [data-directory-overlay-action][data-directory-overlay-action-variant="icon"] {
  width: var(--tap-target-min);
  min-width: var(--tap-target-min);
}

body[data-tenant="renovegas"][data-theme-family="premier"]:not([data-console-tone]) [data-directory-overlay-action] svg[class*="savedHeartSaved"] {
  filter: none;
}

/* At phone width the CTA gets its own row and suggestions enter document
 * flow. This preserves the full prompt and prevents the listbox from covering
 * the positioning copy above it. */
@media (max-width: 640px) {
  body[data-tenant="renovegas"][data-theme-family="premier"]:not([data-console-tone]) [data-renovegas-hero] form[role="search"] > div {
    flex-wrap: wrap;
  }

  body[data-tenant="renovegas"][data-theme-family="premier"]:not([data-console-tone]) [data-renovegas-hero] form[role="search"] > div > button[type="submit"] {
    min-height: var(--tap-target-min);
    flex-basis: 100%;
    border-top: 1px solid var(--premier-border-soft);
  }

  body[data-tenant="renovegas"][data-theme-family="premier"]:not([data-console-tone]) [data-renovegas-hero] form[role="search"] > [role="listbox"] {
    position: static;
    margin-top: var(--premier-space-2);
  }
}

/* ── Footer bookend ─────────────────────────────────────────────────── */
body[data-tenant="renovegas"][data-theme-family="premier"]:not([data-console-tone]) footer[data-component="public-footer"] > .container {
  padding-block: var(--premier-space-8);
}

body[data-tenant="renovegas"][data-theme-family="premier"]:not([data-console-tone]) [data-premier-footer] {
  gap: var(--premier-space-8);
}

body[data-tenant="renovegas"][data-theme-family="premier"]:not([data-console-tone]) :where(
  [data-premier-footer-heading],
  [data-premier-footer-section-label]
) {
  font-family: var(--premier-font-body);
  font-size: var(--premier-text-xs);
  font-weight: var(--premier-weight-bold);
  letter-spacing: var(--premier-tracking-wide);
  line-height: var(--premier-leading-snug);
}

body[data-tenant="renovegas"][data-theme-family="premier"]:not([data-console-tone]) :where(
  [data-premier-footer-featured-row],
  [data-premier-footer-newsletter]
) {
  padding-top: var(--premier-space-6);
}

body[data-tenant="renovegas"][data-theme-family="premier"]:not([data-console-tone]) [data-premier-featured-act] {
  border-radius: var(--premier-radius-md);
  background: var(--premier-footer-wash);
}

body[data-tenant="renovegas"][data-theme-family="premier"]:not([data-console-tone]) [data-premier-footer] > :has(> div > [data-premier-footer-heading]) {
  gap: var(--premier-space-8);
}

body[data-tenant="renovegas"][data-theme-family="premier"]:not([data-console-tone]) footer [data-premier-footer-newsletter] :where(
  input[type="email"],
  input[type="text"]
) {
  border-color: var(--premier-footer-edge);
}

body[data-tenant="renovegas"][data-theme-family="premier"]:not([data-console-tone]) footer [data-premier-footer-newsletter] [data-component="button"] {
  min-height: var(--tap-target-min);
  border-color: var(--premier-cta-bg);
  background: var(--premier-cta-bg);
  color: var(--premier-cta-fg);
}

body[data-tenant="renovegas"][data-theme-family="premier"]:not([data-console-tone]) footer [data-premier-footer-newsletter] [data-component="button"]:hover {
  border-color: var(--premier-cta-bg-hover);
  background: var(--premier-cta-bg-hover);
  color: var(--premier-cta-fg);
}

body[data-tenant="renovegas"][data-theme-family="premier"]:not([data-console-tone]) :where(
  [data-agency-identification],
  [data-site-trademark-disclaimer]
) {
  max-width: 72ch;
  line-height: var(--premier-leading-body);
}

/* Reno omits the Specialty Sites column, so its desktop footer uses three
 * real tracks instead of leaving the shared fourth track empty. */
@media (min-width: 48rem) {
  body[data-tenant="renovegas"][data-theme-family="premier"]:not([data-console-tone]) [data-premier-footer] > :has(> div > [data-premier-footer-heading]) {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: var(--premier-space-12);
  }
}
/*
 * Taylor Tributes — BOX OFFICE DARK sister ink.
 * Coral red from the established Eras ramp becomes printed ink; its
 * committed red carries CTA and footer plates on the shared navy ground.
 */
body[data-tenant="taylortributes"] {
  --premier-page-backdrop-image: url("/brand/taylortributes/background.webp");
  --premier-font-display: var(--font-sister-taylortributes-display), "Italiana", "Cormorant Garamond", serif;
  --premier-scrim-ink-rgb: 45 11 11;
  --premier-scrim-mid-rgb: 29 16 24;
  --premier-scrim-top-rgb: 29 16 24;
  --premier-ink: #FF6A6A;
  --premier-ink-edge: #FF8A8A;
  --premier-cta-bg: #B82828;
  --premier-cta-bg-hover: #CC3535;
  --premier-cta-fg: #FFFFFF;
  --premier-footer-bg: #B82828;
  --premier-footer-fg: #E4EBF7;
}

/* Italiana is display-only. Compact interface copy stays on the shared
 * body face so labels remain legible at body size. */
body[data-tenant="taylortributes"] [data-premier-footer-heading],
body[data-tenant="taylortributes"] [data-premier-footer-link],
body[data-tenant="taylortributes"] .eyebrow,
body[data-tenant="taylortributes"] .text-primary {
  font-family: var(--premier-font-body) !important;
}
/*
 * Yacht Rock Harbor — BOX OFFICE DARK sister ink.
 * Sunset orange prints on the harbor-navy ground; burnt coral carries
 * action and footer plates.
 */
body[data-tenant="yachtrockharbor"] {
  --premier-page-backdrop-image: url("/brand/yachtrockharbor/background.webp");
  --premier-font-display: var(--font-sister-yachtrockharbor-display), "Shrikhand", "Cooper Black", serif;
  --premier-scrim-ink-rgb: 11 27 51;
  --premier-scrim-mid-rgb: 14 22 36;
  --premier-scrim-top-rgb: 14 22 36;
  --premier-ink: #FF9A52;
  --premier-ink-edge: #FFB27A;
  --premier-cta-bg: #B93C0A;
  --premier-cta-bg-hover: #C2410C;
  --premier-cta-fg: #FFFFFF;
  --premier-footer-bg: #9A3412;
  --premier-footer-fg: #F4EFE6;
}
