﻿/* ===========================================================================
   SlotRover main stylesheet — layout + components.

   Brand tokens (--cherry, --cream, --container-max, etc.) live in style.css,
   which is enqueued first. This file references those tokens and never
   re-declares them. Components are added incrementally as templates require
   them — start here with header, footer, and page-layout primitives.
   =========================================================================== */

/* ---------------------------------------------------------------------------
   1. Page layout — sticky-footer pattern via flex on <body>.

   Body becomes a column flexbox; <main> grows to push <footer> down on
   short pages, so the footer is never floating mid-viewport on empty
   error pages or 404s.
--------------------------------------------------------------------------- */

body {
  display: flex;
  flex-direction: column;
  min-height: 100vh;
}

.site-main {
  flex: 1 0 auto;
  /* Breathing room around content area; overridden by individual templates
     that want flush-to-header heroes (e.g., single-theme.php). */
  padding-block: 2rem;
}

/* Homepage hero wash — warm sandstone tint at the top fading to cream by
   60% of the page height. Applied to .site-main (not the hero section) so
   the gradient flows seamlessly from the header border down through the
   hero and into the body. Padding-block is zeroed so the wash meets the
   header cleanly with no cream gap. */
body.home .site-main {
  padding-block: 0;
  background: linear-gradient(
    to bottom,
    oklch(0.65 0.08 85.26 / 0.58) 0%,
    var(--cream) 60%,
    color-mix(in oklab, var(--cream-100) 60%, var(--cream)) 100%
  );
}

.site-header,
.site-footer {
  flex-shrink: 0;
}

/* ---------------------------------------------------------------------------
   2. Site header — top bar with brand + primary nav.
--------------------------------------------------------------------------- */

.site-header {
  background: var(--background);
  border-bottom: 2px solid var(--charcoal);
}

.site-header__inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1.5rem;
  padding-block: 1rem;
}

/* ---------------------------------------------------------------------------
   3. Site brand — wordmark + logo. Used in BOTH header (charcoal-on-cream)
   and footer (cream-on-charcoal); footer overrides at end of file.
--------------------------------------------------------------------------- */

.site-brand {
  display: inline-flex;
  align-items: center;
  gap: 0.625rem;
  text-decoration: none;
  color: var(--charcoal);
  font-weight: 800;
  font-size: 1.1rem;
  letter-spacing: -0.01em;
  line-height: 1;
}

.site-brand:hover {
  color: var(--cherry);
}

.site-brand__mark {
  display: block;
  width: 40px;
  height: 40px;
  flex-shrink: 0;
}

.site-brand__name {
  display: inline-block;
}

/* ---------------------------------------------------------------------------
   4. Primary nav — <details> toggle on mobile, inline list on desktop.

   On mobile (<768px): <details> works natively. Closed by default; tapping
   the summary opens an absolutely-positioned dropdown.

   On desktop (>=768px): <details> is hidden from layout via display:contents,
   so its children (summary + nav-list) flow directly into the header inner.
   We then hide the summary and show the nav-list horizontally.
--------------------------------------------------------------------------- */

.primary-nav__toggle {
  cursor: pointer;
  user-select: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0.5rem;
  margin-inline-end: -0.5rem;
  color: var(--charcoal);
  background: transparent;
  border: 0;
}

/* Lucide-style Menu / X icons — swap based on aria-expanded state on the
   button. JS toggles aria-expanded; CSS does the rest. */
.primary-nav__icon { display: inline-block; vertical-align: middle; }
.primary-nav__icon--close { display: none; }
.primary-nav__toggle[aria-expanded="true"] .primary-nav__icon--menu  { display: none; }
.primary-nav__toggle[aria-expanded="true"] .primary-nav__icon--close { display: inline-block; }

.primary-nav__list {
  list-style: none;
  margin: 0;
  padding: 0;
}

.primary-nav__list a {
  display: inline-flex;
  align-items: center;
  color: color-mix(in oklab, var(--charcoal) 80%, transparent);
  text-decoration: none;
  font-weight: 500;
  font-size: 0.875rem;
  padding: 0.5rem 0.75rem;
  border-radius: 6px;
  transition: color 150ms ease, background-color 150ms ease;
}

/* Hover — matches Lovable's `hover:bg-cream-100 rounded-md`. */
.primary-nav__list a:hover {
  background-color: var(--cream-100);
  color: var(--charcoal);
}

/* Active route — `bg-cream-100` + `text-cherry`, distinct from hover. */
.primary-nav__list .current-menu-item > a,
.primary-nav__list .current_page_item > a,
.primary-nav__list .current-menu-parent > a,
.primary-nav__list a.current,
.primary-nav__list a[aria-current="page"] {
  background-color: var(--cream-100);
  color: var(--cherry);
  font-weight: 600;
}

/* Sticky header — matches Lovable's `sticky top-0 z-50 bg-background/85
   backdrop-blur-md`. Stays pinned at top while page scrolls, with a
   semi-transparent backdrop-blurred background. z-index high enough to
   sit above all section content (sections never set their own z-index).
   The mobile nav (position:absolute, anchored to .site-header) inherits
   this stickiness — when the header sticks, the mobile dropdown sticks
   with it. */
.site-header {
  position: sticky;
  top: 0;
  z-index: 50;
  background: color-mix(in oklab, var(--cream) 85%, transparent);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
}

.site-header__inner {
  min-height: 72px;
}

/* Two nav blocks now: --desktop is inline with the logo row, --mobile is
   a separate child of <header> that's revealed when the toggle button's
   aria-expanded is true. The `:has()` selector lets the mobile nav and
   toggle button live in different parents. */

/* ----- Mobile (<= 767px) ----- */
@media (max-width: 767px) {
  .primary-nav--desktop { display: none; }
  .primary-nav--mobile  { display: none; }

  .site-header:has(.primary-nav__toggle[aria-expanded="true"]) .primary-nav--mobile {
    display: block;
    border-top: 2px solid var(--charcoal);
    background: var(--cream-100);
  }

  /* Each item — Lovable's `px-3 py-3 text-base font-medium border-b
     border-border last:border-0`. */
  .primary-nav--mobile .primary-nav__list {
    display: flex;
    flex-direction: column;
    gap: 0;
    padding: 0 1rem;
    list-style: none;
    margin: 0;
  }
  .primary-nav--mobile .primary-nav__item a {
    display: block;
    width: 100%;
    padding: 0.75rem 0;
    font-size: 1rem;
    border-radius: 0;
    border-bottom: 1px solid color-mix(in oklab, var(--charcoal) 12%, transparent);
  }
  .primary-nav--mobile .primary-nav__item:last-child a {
    border-bottom: 0;
  }
}

/* ----- Desktop (>= 768px) ----- */
@media (min-width: 768px) {
  .primary-nav__toggle  { display: none; }
  .primary-nav--mobile  { display: none; }
  .primary-nav--desktop { display: block; }

  .primary-nav--desktop .primary-nav__list {
    display: flex;
    flex-direction: row;
    flex-wrap: nowrap;
    gap: 0.25rem;
    align-items: center;
  }
}

/* ---------------------------------------------------------------------------
   5. Site footer — dark charcoal panel with 4-column grid (brand + 3 nav)
   and a horizontal compliance / copyright band beneath.
--------------------------------------------------------------------------- */

.site-footer {
  background: var(--charcoal);
  color: var(--cream);
  margin-top: 4rem;
  padding-block: 2.5rem 1.5rem;
}

.site-footer a {
  color: var(--cream);
  text-decoration: none;
}

.site-footer a:hover {
  color: var(--gold);
  text-decoration: underline;
}

.site-footer__inner {
  display: grid;
  grid-template-columns: 1fr;
  gap: 2rem;
}

@media (min-width: 640px) {
  .site-footer__inner {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media (min-width: 900px) {
  .site-footer__inner {
    /* Lov uses `grid-cols-5` with the brand `<div className="col-span-2">`
       — five equal columns, brand spans two. Earlier 1.5fr+3*1fr was a 4-col
       approximation; the 5-col layout makes the brand ~40% wide (vs ~33%) and
       the three nav columns each ~20% (vs ~22%), matching Lov exactly. */
    grid-template-columns: repeat(5, 1fr);
  }
  .site-footer__brand {
    grid-column: span 2;
  }
}

/* Footer brand override — cream-on-charcoal, slightly larger than header. */
.site-footer .site-brand {
  color: var(--cream);
  font-size: 1.2rem;
}

.site-footer .site-brand:hover {
  color: var(--gold);
}

.site-footer__tagline {
  margin: 0.625rem 0 0;
  font-size: 0.9rem;
  line-height: 1.5;
  color: color-mix(in oklab, var(--cream) 80%, transparent);
  max-width: 32ch;
}

/* Footer column heading — Lov uses `text-sm font-semibold text-cream mb-3`
   = 0.875rem (11.9px at 85% root), w=600. The global h4 rule forces 15px
   !important, so we have to re-declare font-size with !important to clamp
   it to Lov's text-sm. */
.site-footer__heading {
  font-size: 0.875rem !important;
  font-weight: 600 !important;
  text-transform: none;
  color: var(--cream);
  margin: 0 0 0.75rem;
}

.site-footer__column ul {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  font-size: 0.9rem;
}

/* Compliance / copyright band — spans all columns. */
.site-footer__bottom {
  grid-column: 1 / -1;
  border-top: 1px solid color-mix(in oklab, var(--cream) 20%, transparent);
  padding-top: 1.5rem;
  margin-top: 1rem;
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  font-size: 0.85rem;
  color: color-mix(in oklab, var(--cream) 75%, transparent);
}

@media (min-width: 768px) {
  .site-footer__bottom {
    flex-direction: row;
    justify-content: space-between;
    align-items: center;
  }
}

.site-footer__compliance,
.site-footer__copyright {
  margin: 0;
}

/* Lovable's footer compliance row: flex-wrap of badge + text spans, gap-3. */
.site-footer__compliance {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.75rem;
  font-size: 0.75rem;
  color: color-mix(in oklab, var(--cream) 70%, transparent);
}

/* 18+ circle badge — Lovable's `inline-flex items-center justify-center
   w-8 h-8 rounded-full border-2 border-cream font-bold`. 27.2×27.2 px at
   the 85% root scale (2rem = 27.2px). */
.site-footer__age-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2rem;
  height: 2rem;
  border: 2px solid var(--cream);
  border-radius: 9999px;
  font-weight: 700;
  font-size: 0.75rem;
  line-height: 1;
  color: color-mix(in oklab, var(--cream) 70%, transparent);
  flex-shrink: 0;
}

.site-footer__sep {
  color: color-mix(in oklab, var(--cream) 50%, transparent);
}

/* BeGambleAware + 0808 phone — keep them gold for compliance prominence. */
.site-footer__compliance a {
  color: var(--gold);
  text-decoration: none;
}

.site-footer__compliance a:hover {
  color: var(--cream);
  text-decoration: underline;
}

/* ===========================================================================
   Shared editorial primitives — used by multiple templates.
   =========================================================================== */

/* ---------------------------------------------------------------------------
   6. Page header — title block at the top of static pages, archives, search.
--------------------------------------------------------------------------- */

.page-header {
  margin-bottom: 2rem;
  padding-bottom: 1.25rem;
  border-bottom: 2px solid var(--charcoal);
}

.page-header__title {
  margin: 0 0 0.5rem;
}

.page-header__meta {
  margin: 0;
  font-size: 0.85rem;
  color: var(--muted-foreground);
}

.page-header__query {
  color: var(--cherry);
}

/* ---------------------------------------------------------------------------
   7. Article content — long-form prose styles. Used by page.php now and
   by single-slot.php / single-theme.php / taxonomy hubs as those land.
--------------------------------------------------------------------------- */

.article-content {
  font-size: 1rem;
  line-height: 1.6;
  color: var(--foreground);
}

.article-content > * + * { margin-top: 1rem; }

.article-content h2,
.article-content h3,
.article-content h4 {
  margin-top: 2rem;
  margin-bottom: 0.5rem;
}

.article-content p { margin: 0; }

.article-content ul,
.article-content ol {
  padding-left: 1.5rem;
}

.article-content li + li {
  margin-top: 0.375rem;
}

.article-content a {
  color: var(--cherry);
  text-decoration: underline;
}

.article-content a:hover {
  color: var(--cherry-dark);
}

.article-content figure {
  margin: 1.5rem 0;
}

.article-content figcaption {
  font-size: 0.85rem;
  color: var(--muted-foreground);
  margin-top: 0.5rem;
}

.article-content code {
  background: var(--cream-100);
  padding: 0.1em 0.3em;
  font-family: var(--font-mono);
  font-size: 0.9em;
}

.article-content pre {
  background: var(--cream-100);
  padding: 1rem;
  overflow-x: auto;
  border: 1px solid var(--border);
  font-family: var(--font-mono);
  font-size: 0.9em;
}

/* ---------------------------------------------------------------------------
   8. Post list — generic list rendering for index.php / search.php
   (templates that don't use the slot/theme card grids — those come later).
--------------------------------------------------------------------------- */

.post-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 1.5rem;
}

.post-list__item article {
  padding-bottom: 1.5rem;
  border-bottom: 1px solid var(--border);
}

.post-list__item:last-child article {
  border-bottom: none;
}

.post-list__title {
  margin: 0 0 0.5rem;
  display: flex;
  align-items: baseline;
  gap: 0.75rem;
  flex-wrap: wrap;
}

.post-list__title a {
  color: var(--charcoal);
  text-decoration: none;
}

.post-list__title a:hover {
  color: var(--cherry);
}

/* Post-type chip — small uppercase tag next to the title in search results. */
.post-list__type {
  font-size: 0.7rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--cream);
  background: var(--charcoal);
  padding: 0.125rem 0.5rem;
}

.post-list__excerpt {
  margin: 0;
  color: var(--muted-foreground);
  line-height: 1.5;
}

/* ---------------------------------------------------------------------------
   9. Search results meta — small line beneath search.php's heading.
--------------------------------------------------------------------------- */

.search-results-meta {
  margin: 0;
  font-size: 0.9rem;
  color: var(--muted-foreground);
}

/* ---------------------------------------------------------------------------
   10. Empty state — used by index.php / search.php fallbacks.
--------------------------------------------------------------------------- */

.empty-state {
  padding: 2rem 1.5rem;
  background: var(--cream-100);
  border: 2px solid var(--charcoal);
  text-align: center;
}

.empty-state p {
  margin: 0 0 1rem;
}

.empty-state p:last-child {
  margin-bottom: 0;
}

.empty-state form {
  max-width: 24rem;
  margin-inline: auto;
}

/* ---------------------------------------------------------------------------
   11. 404 page — large numeric, brand-cherry, with a brutalist link list.
--------------------------------------------------------------------------- */

.error-404 {
  text-align: center;
  padding-block: 2rem 3rem;
}

.error-404__code {
  font-family: var(--font-display);
  font-size: clamp(80px, 15vw, 160px);
  font-weight: 800;
  line-height: 1;
  letter-spacing: -0.04em;
  color: var(--cherry);
  margin: 0 0 0.5rem;
}

.error-404__title {
  margin: 0 0 1rem;
}

.error-404__message {
  margin: 0 0 2rem;
  color: var(--muted-foreground);
  font-size: 1rem;
}

.error-404__links {
  list-style: none;
  margin: 0;
  padding: 1.5rem;
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 0.5rem 1.25rem;
  background: var(--cream-100);
  border: 2px solid var(--charcoal);
  box-shadow: var(--shadow-offset);
}

.error-404__links li { margin: 0; }

.error-404__links a {
  color: var(--charcoal);
  font-weight: 600;
  text-decoration: none;
  padding-bottom: 2px;
  border-bottom: 2px solid transparent;
}

.error-404__links a:hover {
  color: var(--cherry);
  border-bottom-color: var(--cherry);
}

/* ---------------------------------------------------------------------------
   12. Pagination — used by index.php, search.php, and the archives.
--------------------------------------------------------------------------- */

.nav-links {
  margin-top: 2rem;
  display: flex;
  gap: 0.5rem;
  flex-wrap: wrap;
  justify-content: center;
}

.nav-links .page-numbers {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 2.5rem;
  padding: 0.5rem 0.75rem;
  font-weight: 600;
  font-size: 0.9rem;
  color: var(--charcoal);
  background: var(--cream-100);
  border: 2px solid var(--charcoal);
  text-decoration: none;
}

.nav-links .page-numbers.current {
  background: var(--charcoal);
  color: var(--cream);
}

.nav-links a.page-numbers:hover {
  background: var(--cherry);
  color: var(--cream);
}

.nav-links .page-numbers.dots {
  background: transparent;
  border-color: transparent;
}

/* ===========================================================================
   Archive layout — used by archive-slot.php and archive-theme.php.
   =========================================================================== */

/* ---------------------------------------------------------------------------
   13. Archive intro — hero block above the card grid.

   Distinct from .page-header (used by static pages / search) — archive
   intros tend to be denser and tie directly to the grid below, so they
   get their own selector even though the structure is similar.
--------------------------------------------------------------------------- */

.archive-intro {
  margin-bottom: 2rem;
  padding-bottom: 1.25rem;
  border-bottom: 2px solid var(--charcoal);
}

.archive-intro__title {
  margin: 0 0 0.375rem;
}

.archive-intro__sub {
  margin: 0;
  color: var(--muted-foreground);
  font-size: 0.95rem;
  line-height: 1.5;
}

/* ---------------------------------------------------------------------------
   14. Card grid — shared between slot and theme archives.

   1 column < 560px, 2 columns 560-880px, 3 columns >= 880px.
   880px matches --container-max so the third card never gets squeezed.
--------------------------------------------------------------------------- */

.card-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1.5rem;
}

@media (min-width: 560px) {
  .card-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media (min-width: 880px) {
  .card-grid {
    grid-template-columns: repeat(3, 1fr);
  }
}

/* ---------------------------------------------------------------------------
   15. Slot card — image (3:2), title, RoverScore badge, stat rows.

   The brutalist offset shadow + hover lift come from .shadow-offset and
   .shadow-offset-hover utility classes (style.css). This file only adds
   layout + typography. Match Lovable: single hover effect (the lift), no
   image scale.
--------------------------------------------------------------------------- */

/* slot-card (0.6.0) — matches Lovable's SlotCard component exactly. Image
   with RoverScore badge top-right + "18+ · UKGC" flag bottom-left, h3 +
   provider link, 3-col bordered stats grid (RTP / Max Win / Vol.), up to
   3 feature tags, Play Demo + Review buttons when bespoke. */
.slot-card {
  position: relative;
  background: var(--cream);
  border: 2px solid var(--charcoal);
  overflow: hidden;
  box-shadow: none;
  transition: transform 200ms ease;
}

.slot-card.slot-card--bespoke:hover { transform: translate(-1px, -1px); }

.slot-card__media {
  position: relative;
  aspect-ratio: 3 / 2;
  overflow: hidden;
  border-bottom: 2px solid var(--charcoal);
  background: color-mix(in oklab, var(--charcoal) 8%, var(--cream));
}

.slot-card__img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.slot-card__media-fallback {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
}

/* RoverScore badge — cherry box, white mono numeral, 2px charcoal border.
   Top-right corner of the image, mirrors RoverScoreBadge sm: w-14 h-11. */
.slot-card__score-badge {
  position: absolute;
  top: 0.5rem;
  right: 0.5rem;
  width: 3.5rem;
  height: 2.75rem;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--cherry);
  color: #fff;
  border: 2px solid var(--charcoal);
  font-weight: 900;
  font-size: 1rem;
  line-height: 1;
}

/* 18+/UKGC flag — bottom-left of the image, charcoal bg, cream text. */
.slot-card__flag {
  position: absolute;
  bottom: 0.5rem;
  left: 0.5rem;
  padding: 0.125rem 0.375rem;
  background: var(--charcoal);
  color: var(--cream);
  border: 1px solid color-mix(in oklab, var(--cream) 30%, transparent);
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.15em;
  font-weight: 800;
}

.slot-card__body { padding: 0.75rem; }

.slot-card__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: 0.875rem;
  line-height: 1.2;
  color: var(--charcoal);
}

.slot-card__title a {
  color: inherit;
  text-decoration: none;
}
.slot-card__title a:hover { color: var(--cherry); }

.slot-card__provider {
  margin: 0.125rem 0 0;
  font-size: 0.75rem;
  font-style: italic;
  color: var(--muted-foreground);
}

.slot-card__provider a {
  color: inherit;
  text-decoration: none;
  transition: color 150ms ease;
}
.slot-card__provider a:hover { color: var(--cherry); text-decoration: underline; }

/* 3-col bordered stats grid — RTP / Max Win / Vol. */
.slot-card__stats {
  margin-top: 0.5rem;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  border: 2px solid var(--charcoal);
}

.slot-card__stat {
  padding: 0.25rem 0.375rem;
  text-align: center;
  background: var(--cream-100);
  border-right: 2px solid var(--charcoal);
}
.slot-card__stat:last-child { border-right: 0; }

.slot-card__stat-label {
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: 0.14em;
  color: var(--muted-foreground);
}

.slot-card__stat-value {
  margin-top: 0.125rem;
  font-size: 13px;
  font-weight: 700;
  color: var(--charcoal);
}

/* Feature tags row — up to 3 chips, cream-100 bg, 1px charcoal border. */
.slot-card__tags {
  margin-top: 0.5rem;
  display: flex;
  flex-wrap: wrap;
  gap: 0.25rem;
}

.slot-card__tag {
  padding: 0.125rem 0.5rem;
  background: var(--cream-100);
  border: 1px solid var(--charcoal);
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--charcoal);
}

/* Action buttons — Play Demo (cherry) + Review (cream) when bespoke. */
.slot-card__actions {
  margin-top: 0.625rem;
  display: flex;
  gap: 0.375rem;
}

.slot-card__btn {
  flex: 1 1 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: 2rem;
  padding: 0 0.5rem;
  font-size: 0.75rem;
  font-weight: 400;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  line-height: 1rem;
  border: 2px solid var(--charcoal);
  text-decoration: none;
  transition: background-color 150ms ease, color 150ms ease;
}

.slot-card__btn--demo {
  background: var(--cherry);
  color: #fff;
}
.slot-card__btn--demo:hover {
  background: var(--cherry-dark, oklch(0.48 0.21 27.5));
  color: #fff;
}

.slot-card__btn--secondary {
  background: var(--cream);
  color: var(--charcoal);
}
.slot-card__btn--secondary:hover {
  background: var(--cream-100);
  color: var(--charcoal);
}

/* ========================================================================
   OLD slot-card rules from pre-0.6.0 — kept below for visual diff during
   the audit, then can be deleted in a follow-up cleanup. The rules above
   take precedence via cascade order.
   ====================================================================== */

/* (Pre-0.6.0 .slot-card__* rules removed — replaced by the new block above
   that matches Lovable's SlotCard component exactly.) */

/* ---------------------------------------------------------------------------
   16. Theme card — image (2:1), title, slot count.

   Wider aspect than slot card (theme heroes ARE wide); title is one step
   larger because there's less meta beneath it competing for attention.
--------------------------------------------------------------------------- */

.theme-card {
  background: var(--card);
  border: 2px solid var(--charcoal);
  display: flex;
  flex-direction: column;
}

.theme-card__media {
  display: block;
  aspect-ratio: 2 / 1;
  overflow: hidden;
  border-bottom: 2px solid var(--charcoal);
  background: var(--cream-100);
}

.theme-card__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.theme-card__body {
  padding: 1rem;
  display: flex;
  flex-direction: column;
  gap: 0.375rem;
}

.theme-card__title {
  margin: 0;
  font-size: 18px;
  font-weight: 700;
  line-height: 1.3;
  letter-spacing: -0.01em;
}

.theme-card__title a {
  color: var(--charcoal);
  text-decoration: none;
}

.theme-card__title a:hover {
  color: var(--cherry);
}

.theme-card__count {
  margin: 0;
  font-size: 0.85rem;
  color: var(--muted-foreground);
}

.theme-card__count strong {
  color: var(--charcoal);
  font-weight: 700;
  font-family: var(--font-mono);
  font-variant-numeric: tabular-nums;
}

/* ===========================================================================
   Author templates — used by author.php and page-authors.php.
   =========================================================================== */

/* ---------------------------------------------------------------------------
   17. UKGC-verified badge — small charcoal pill, gold text. No decorative
   checkmark glyph (avoids the "is U+2713 an emoji?" debate). Brand-aligned.
--------------------------------------------------------------------------- */

.ukgc-badge {
  display: inline-flex;
  align-items: center;
  padding: 0.25rem 0.625rem;
  background: var(--charcoal);
  color: var(--gold);
  font-size: 0.7rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  align-self: flex-start;
}

/* ---------------------------------------------------------------------------
   18. Expertise list / chips — flat unlinked tags on the author hero.
--------------------------------------------------------------------------- */

.expertise-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
}

.expertise-chip {
  display: inline-block;
  padding: 0.25rem 0.625rem;
  background: var(--cream-100);
  color: var(--charcoal);
  font-size: 0.85rem;
  font-weight: 500;
  border: 1px solid var(--border);
}

/* ---------------------------------------------------------------------------
   19. Author hero — photo column + meta column, single column on mobile.
--------------------------------------------------------------------------- */

.author-hero {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1.5rem;
  margin-bottom: 3rem;
  padding-bottom: 2rem;
  border-bottom: 2px solid var(--charcoal);
}

@media (min-width: 640px) {
  .author-hero {
    grid-template-columns: 200px 1fr;
    gap: 2rem;
    align-items: start;
  }
}

.author-hero__photo {
  width: 100%;
  max-width: 200px;
}

.author-hero__photo img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 1 / 1;
  object-fit: cover;
  border: 2px solid var(--charcoal);
  box-shadow: var(--shadow-offset);
}

.author-hero__meta {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
}

.author-hero__name {
  margin: 0;
}

.author-hero__role {
  margin: 0;
  font-size: 1rem;
  line-height: 1.5;
  color: var(--muted-foreground);
}

.author-hero__headline {
  color: var(--charcoal);
  font-weight: 600;
}

.author-hero__sep {
  margin-inline: 0.375rem;
  color: var(--gold);
}

.author-hero__subtitle {
  color: var(--muted-foreground);
}

.author-hero__bio {
  margin-top: 0.5rem;
  font-size: 0.95rem;
}

/* Footer row inside hero — years stat + social links sit side-by-side
   on wide viewports, stack on narrow. */
.author-hero__footer {
  margin-top: 0.5rem;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 1rem 1.5rem;
}

.author-hero__years {
  margin: 0;
  font-size: 0.9rem;
  color: var(--muted-foreground);
}

.author-hero__years strong {
  color: var(--charcoal);
  font-family: var(--font-mono);
  font-variant-numeric: tabular-nums;
  font-weight: 700;
  margin-right: 0.25rem;
}

.author-hero__social {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  gap: 0.5rem;
}

.author-hero__social a {
  display: inline-block;
  padding: 0.375rem 0.75rem;
  background: var(--cream-100);
  border: 2px solid var(--charcoal);
  color: var(--charcoal);
  font-size: 0.85rem;
  font-weight: 600;
  text-decoration: none;
}

.author-hero__social a:hover {
  background: var(--charcoal);
  color: var(--cream);
}

/* ---------------------------------------------------------------------------
   20. Author reviews section — heading + card-grid wrapper on author.php.
--------------------------------------------------------------------------- */

.author-reviews {
  margin-top: 1rem;
}

.author-reviews__heading {
  margin: 0 0 1.5rem;
}

/* ---------------------------------------------------------------------------
   21. Author card — grid item on page-authors.php.
   Photo (120px) sits centred above name, headline, and bio excerpt.
--------------------------------------------------------------------------- */

.author-card {
  background: var(--card);
  border: 2px solid var(--charcoal);
  padding: 1.25rem;
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: 0.625rem;
}

.author-card__photo {
  width: 120px;
  height: 120px;
}

.author-card__photo img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  border: 2px solid var(--charcoal);
}

.author-card__name {
  margin: 0.5rem 0 0;
  font-size: 1.05rem;
  font-weight: 700;
  letter-spacing: -0.01em;
}

.author-card__name a {
  color: var(--charcoal);
  text-decoration: none;
}

.author-card__name a:hover {
  color: var(--cherry);
}

.author-card__headline {
  margin: 0;
  font-size: 0.85rem;
  color: var(--cherry);
  font-weight: 600;
}

.author-card__excerpt {
  margin: 0.25rem 0 0;
  font-size: 0.9rem;
  line-height: 1.5;
  color: var(--muted-foreground);
}

/* ===========================================================================
   Category index pages — page-providers / page-features / page-attributes
   =========================================================================== */

/* ---------------------------------------------------------------------------
   22. Term index + term-link (active and inactive).
   Active links carry full brutalist framing; inactive (no _has_editorial)
   render muted so visitors see the canonical name without a 404.
--------------------------------------------------------------------------- */

.term-index {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
}

.term-index__item {
  display: inline-block;
}

.term-link {
  display: inline-block;
  padding: 0.5rem 0.875rem;
  background: var(--cream-100);
  border: 2px solid var(--charcoal);
  color: var(--charcoal);
  font-weight: 600;
  font-size: 0.9rem;
  text-decoration: none;
  transition: background 150ms ease, color 150ms ease;
}

.term-link:hover {
  background: var(--charcoal);
  color: var(--cream);
}

.term-link--inactive {
  background: transparent;
  border-color: var(--border);
  color: var(--muted-foreground);
  font-weight: 500;
  cursor: default;
}

.term-link--inactive:hover {
  background: transparent;
  color: var(--muted-foreground);
}

/* Term group — used on /attributes/ for Reels / Paylines / RTP / etc. */
.term-group {
  margin-bottom: 2rem;
}

.term-group:last-child {
  margin-bottom: 0;
}

.term-group__heading {
  font-size: 14px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--cherry);
  margin: 0 0 0.75rem;
  padding-bottom: 0.5rem;
  border-bottom: 1px solid var(--border);
}

/* ===========================================================================
   Homepage — front-page.php components.
   =========================================================================== */

/* ---------------------------------------------------------------------------
   23. Section heading — shared utility across homepage sections.
--------------------------------------------------------------------------- */

.section-heading {
  margin: 0 0 1.5rem;
  font-size: clamp(20px, 3vw, 24px);
  font-weight: 700;
  letter-spacing: -0.01em;
  border-bottom: 2px solid var(--charcoal);
  padding-bottom: 0.5rem;
}

/* Section wrapper used by the conditional homepage sections (picks,
   latest, themes). Adds vertical rhythm between sections. */
.home-section {
  margin-bottom: 2.5rem;
}

.home-section__more {
  margin-top: 1rem;
  font-size: 0.9rem;
  text-align: right;
}

.home-section__more a {
  color: var(--cherry);
  font-weight: 600;
  text-decoration: none;
}

.home-section__more a:hover {
  text-decoration: underline;
}

/* ---------------------------------------------------------------------------
   24. Hero — brutalist offset-shadow framed block.
--------------------------------------------------------------------------- */

.home-hero {
  background: var(--cream);
  border: 2px solid var(--charcoal);
  box-shadow: var(--shadow-offset);
  padding: 1.75rem;
  margin-bottom: 2.5rem;
}

@media (min-width: 640px) {
  .home-hero {
    padding: 2.5rem 2.75rem;
  }
}

.home-hero__chip {
  display: inline-block;
  padding: 0.25rem 0.625rem;
  background: var(--felt);
  color: var(--cream);
  font-size: 0.7rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  margin-bottom: 1rem;
}

.home-hero__title {
  margin: 0 0 1rem;
  font-size: clamp(28px, 5vw, 40px);
  font-weight: 800;
  line-height: 1.1;
  letter-spacing: -0.02em;
}

/* Dead pre-0.5.0 hero rules removed in 0.6.0:
   .home-hero__sub, .home-hero__trust, .home-hero__trust li, ::before —
   the new section-hero partial uses .home-hero__lede and .home-hero__bullets
   instead. .home-hero__cta is kept (still used by section-hero.php). */

.home-hero__cta {
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem;
}

/* ---------------------------------------------------------------------------
   25. Buttons — primary / secondary, brutalist-bordered.
   Hoisted into a shared utility because the hero CTAs aren't the only
   place buttons will appear (single-slot will need them too).
--------------------------------------------------------------------------- */

/* Button system — matches Lovable's <Button> exactly (see Button.tsx):
   `inline-flex items-center justify-center gap-2 px-4 h-9 text-xs
   uppercase tracking-[0.08em] ... border-2 border-charcoal`. Height
   drives vertical sizing (h-9 = 2.25rem ≈ 30.6px scaled). Primary uses
   white text on cherry; secondary uses charcoal text on cream. */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  height: 2.25rem;
  padding: 0 1rem;
  font-size: 0.75rem;
  font-weight: 400;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  /* Tailwind text-xs sets line-height: 1rem (= 13.6px scaled). */
  line-height: 1rem;
  text-decoration: none;
  border: 2px solid var(--charcoal);
  border-radius: 0;
  cursor: pointer;
  transition: background-color 150ms ease, color 150ms ease, transform 150ms ease;
}

.btn--primary {
  background: var(--cherry);
  color: #fff;
}

.btn--primary:hover {
  background: var(--cherry-dark);
  color: #fff;
}

.btn--secondary {
  background: var(--cream);
  color: var(--charcoal);
}

.btn--secondary:hover {
  background: var(--cream-100);
  color: var(--charcoal);
}

/* .btn--lg — Lovable's Hero CTAs override the default Button with
   `h-12 px-6 text-base`. Larger height, more horizontal padding, body-
   sized text. Tailwind text-base sets line-height: 1.5rem (20.4px
   scaled). Used on the three Hero CTAs only. */
.btn--lg {
  height: 3rem;
  padding: 0 1.5rem;
  font-size: 1rem;
  line-height: 1.5rem;
}

/* ---------------------------------------------------------------------------
   26. 5-Pillar Discovery — 1/2/5 column grid of compact cards.
--------------------------------------------------------------------------- */

.home-discover {
  margin-bottom: 2.5rem;
}

.discovery-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1rem;
}

@media (min-width: 560px) {
  .discovery-grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media (min-width: 880px) {
  .discovery-grid {
    grid-template-columns: repeat(5, 1fr);
  }
}

.discovery-card {
  display: flex;
  flex-direction: column;
  gap: 0.375rem;
  padding: 1rem 0.875rem;
  background: var(--card);
  border: 2px solid var(--charcoal);
  text-decoration: none;
  color: var(--charcoal);
}

.discovery-card__label {
  font-size: 1.05rem;
  font-weight: 700;
  letter-spacing: -0.01em;
}

.discovery-card__count {
  font-size: 0.7rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--cherry);
}

.discovery-card__desc {
  font-size: 0.85rem;
  line-height: 1.4;
  color: var(--muted-foreground);
}

.discovery-card:hover .discovery-card__label {
  color: var(--cherry);
}

/* ---------------------------------------------------------------------------
   27. Methodology teaser — 5 criterion tiles with weight pill.
--------------------------------------------------------------------------- */

.home-methodology {
  margin-bottom: 2.5rem;
}

.home-methodology__intro {
  margin: 0 0 1.25rem;
  font-size: 0.95rem;
  line-height: 1.5;
  color: var(--muted-foreground);
  max-width: 60ch;
}

.methodology-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: 1fr;
  gap: 0.75rem;
}

@media (min-width: 560px) {
  .methodology-list {
    grid-template-columns: repeat(2, 1fr);
  }
}

.methodology-item {
  background: var(--cream-100);
  border: 2px solid var(--charcoal);
  padding: 1rem;
}

.methodology-item__weight {
  display: inline-block;
  padding: 0.125rem 0.5rem;
  background: var(--charcoal);
  color: var(--gold);
  font-weight: 700;
  font-size: 0.85rem;
}

.methodology-item__name {
  margin: 0.625rem 0 0.25rem;
  font-size: 1rem;
  font-weight: 700;
}

.methodology-item__desc {
  margin: 0;
  font-size: 0.9rem;
  line-height: 1.5;
  color: var(--muted-foreground);
}

/* ---------------------------------------------------------------------------
   28. Editorial team strip — auto-fit row of compact author tiles.
--------------------------------------------------------------------------- */

.home-team {
  margin-bottom: 2.5rem;
}

.home-team__intro {
  margin: 0 0 1.25rem;
  font-size: 0.95rem;
  line-height: 1.5;
  color: var(--muted-foreground);
  max-width: 60ch;
}

.team-strip {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 1rem;
}

.team-strip__link {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: 0.5rem;
  padding: 1rem;
  background: var(--card);
  border: 2px solid var(--charcoal);
  color: var(--charcoal);
  text-decoration: none;
  transition: transform 200ms ease, box-shadow 200ms ease, color 200ms ease;
}

.team-strip__link:hover {
  box-shadow: var(--shadow-offset-hover);
  transform: translate(-2px, -2px);
  color: var(--cherry);
}

.team-strip__photo img {
  display: block;
  width: 96px;
  height: 96px;
  object-fit: cover;
  border: 2px solid var(--charcoal);
}

.team-strip__name {
  font-weight: 700;
  font-size: 0.95rem;
}

.team-strip__headline {
  font-size: 0.8rem;
  color: var(--muted-foreground);
}

/* ---------------------------------------------------------------------------
   29. UKGC + Responsible Gambling band — charcoal panel inside container.
--------------------------------------------------------------------------- */

.home-trust {
  background: var(--charcoal);
  color: var(--cream);
  padding: 2rem 1.5rem;
  border: 2px solid var(--charcoal);
  margin-bottom: 1rem;
}

.home-trust__heading {
  margin: 0 0 1.5rem;
  font-size: clamp(20px, 3vw, 24px);
  font-weight: 700;
  letter-spacing: -0.01em;
  text-align: center;
  color: var(--cream);
}

.trust-band {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1.5rem;
  text-align: center;
}

@media (min-width: 640px) {
  .trust-band {
    grid-template-columns: repeat(3, 1fr);
  }
}

.trust-band__item strong {
  display: block;
  font-family: var(--font-display);
  font-size: 2.25rem;
  font-weight: 800;
  color: var(--gold);
  line-height: 1;
  margin-bottom: 0.5rem;
  letter-spacing: -0.02em;
}

.trust-band__item p {
  margin: 0;
  font-size: 0.9rem;
  line-height: 1.5;
  color: color-mix(in oklab, var(--cream) 80%, transparent);
}

.trust-band__item a {
  color: var(--gold);
}

.trust-band__item a:hover {
  color: var(--cream);
  text-decoration: underline;
}

/* ===========================================================================
   Single-slot template — single-slot.php
   =========================================================================== */

/* ---------------------------------------------------------------------------
   30. Breadcrumb — narrow nav row above the hero. › separator in gold.
--------------------------------------------------------------------------- */

.breadcrumb {
  margin-bottom: 1.25rem;
}

.breadcrumb ol {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 0.25rem 0.5rem;
  font-size: 0.85rem;
  color: var(--muted-foreground);
}

.breadcrumb li {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
}

.breadcrumb li::after {
  content: "›";
  color: var(--gold);
  font-weight: 700;
}

.breadcrumb li:last-child::after {
  content: none;
}

.breadcrumb a {
  color: var(--muted-foreground);
  text-decoration: none;
}

.breadcrumb a:hover {
  color: var(--charcoal);
  text-decoration: underline;
}

.breadcrumb li[aria-current="page"] {
  color: var(--charcoal);
  font-weight: 600;
}

/* ---------------------------------------------------------------------------
   31. Slot hero — 2-column on >=720px (text + hero image), stacks below.
--------------------------------------------------------------------------- */

.slot-hero {
  display: grid;
  grid-template-columns: 1fr;
  gap: 2rem;
  margin-bottom: 2.5rem;
  padding-bottom: 2rem;
  border-bottom: 2px solid var(--charcoal);
}

@media (min-width: 720px) {
  .slot-hero {
    grid-template-columns: 1.1fr 1fr;
    align-items: start;
  }
}

.slot-hero__meta {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
}

.slot-hero__chip {
  display: inline-block;
  align-self: flex-start;
  padding: 0.25rem 0.625rem;
  background: var(--felt);
  color: var(--cream);
  font-size: 0.7rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
}

.slot-hero__title {
  margin: 0;
  font-size: clamp(28px, 5vw, 40px);
  line-height: 1.1;
  letter-spacing: -0.02em;
  font-weight: 800;
}

.slot-hero__provider {
  margin: 0;
  font-size: 1rem;
  color: var(--muted-foreground);
}

.slot-hero__provider .term-link {
  margin-left: 0.25rem;
}

/* Large RoverScore badge — charcoal pill with gold eyebrow + big numeric */
.slot-hero__score {
  margin: 0;
  display: inline-flex;
  align-items: baseline;
  gap: 0.5rem;
  padding: 0.5rem 0.875rem;
  background: var(--charcoal);
  color: var(--cream);
  align-self: flex-start;
}

.slot-hero__score-label {
  font-size: 0.75rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--gold);
}

.slot-hero__score-value {
  font-weight: 800;
  font-size: 1.5rem;
  line-height: 1;
}

.slot-hero__chips {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 0.375rem;
}

.slot-hero__byline {
  margin: 0.5rem 0 0;
  font-size: 0.85rem;
  color: var(--muted-foreground);
}

.slot-hero__byline a {
  color: var(--cherry);
  font-weight: 600;
  text-decoration: none;
}

.slot-hero__byline a:hover {
  text-decoration: underline;
}

/* 3-tile stat row (RTP / Max Win / Volatility) */
.slot-hero__stats {
  list-style: none;
  margin: 0.75rem 0 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 0.5rem;
}

.slot-hero__stats li {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.125rem;
  padding: 0.625rem 0.5rem;
  background: var(--cream-100);
  border: 2px solid var(--charcoal);
  text-align: center;
}

.slot-hero__stat-label {
  font-size: 0.7rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--cherry);
}

.slot-hero__stat-value {
  font-weight: 700;
  font-size: 1rem;
}

/* Right column — hero image with brutalist offset shadow */
.slot-hero__media {
  border: 2px solid var(--charcoal);
  box-shadow: var(--shadow-offset);
  overflow: hidden;
  background: var(--cream-100);
}

.slot-hero__media img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 3 / 2;
  object-fit: cover;
}

/* ---------------------------------------------------------------------------
   32. Demo iframe — brutalist 16:9 frame + 18+ disclaimer below.
--------------------------------------------------------------------------- */

.demo-iframe {
  margin-bottom: 2.5rem;
}

.demo-iframe__frame {
  position: relative;
  aspect-ratio: 16 / 9;
  overflow: hidden;
  background: var(--charcoal);
  border: 2px solid var(--charcoal);
  box-shadow: var(--shadow-offset);
}

.demo-iframe__frame iframe {
  display: block;
  width: 100%;
  height: 100%;
  border: 0;
}

.demo-iframe__disclaimer {
  margin: 0.75rem 0 0;
  padding: 0.75rem 1rem;
  background: var(--cream-100);
  border: 1px solid var(--border);
  font-size: 0.85rem;
  line-height: 1.5;
  color: var(--charcoal);
}

.demo-iframe__disclaimer strong {
  color: var(--cherry);
  font-weight: 700;
  margin-right: 0.5rem;
}

/* ---------------------------------------------------------------------------
   33. Specs table — Slot at a Glance.
   Overrides the global table { display:block; overflow-x:auto } reset so the
   label/value layout reads as a proper 2-column table on desktop.
--------------------------------------------------------------------------- */

.slot-specs {
  margin-bottom: 2.5rem;
}

.specs-table {
  display: table;
  width: 100%;
  border: 2px solid var(--charcoal);
}

.specs-table tbody tr:nth-child(even) {
  background: var(--cream-100);
}

.specs-table th,
.specs-table td {
  text-align: left;
  vertical-align: top;
  padding: 0.625rem 1rem;
  border-bottom: 1px solid var(--border);
  font-size: 0.9rem;
  line-height: 1.5;
}

.specs-table tr:last-child th,
.specs-table tr:last-child td {
  border-bottom: 0;
}

.specs-table th {
  width: 35%;
  background: transparent;
  font-weight: 600;
  color: var(--charcoal);
}

.specs-table td {
  color: var(--foreground);
}

.specs-table__row--warning {
  background: color-mix(in oklab, var(--warning) 18%, var(--cream)) !important;
}

.specs-table__row--warning th {
  color: var(--cherry);
}

/* ---------------------------------------------------------------------------
   34. Byline block — "About the reviewer" section.
--------------------------------------------------------------------------- */

.byline-block {
  margin-bottom: 2.5rem;
}

/* Compact byline component — photo + meta column. */
.byline {
  display: flex;
  align-items: center;
  gap: 1rem;
}

.byline__photo {
  flex-shrink: 0;
}

.byline__photo img {
  display: block;
  width: 64px;
  height: 64px;
  object-fit: cover;
  border: 2px solid var(--charcoal);
}

.byline__meta {
  display: flex;
  flex-direction: column;
  gap: 0.125rem;
}

.byline__name {
  margin: 0;
  font-weight: 700;
  font-size: 1rem;
}

.byline__name a {
  color: var(--charcoal);
  text-decoration: none;
}

.byline__name a:hover {
  color: var(--cherry);
}

.byline__role {
  margin: 0;
  font-size: 0.85rem;
  color: var(--cherry);
  font-weight: 600;
}

.byline__date {
  margin: 0;
  font-size: 0.8rem;
  color: var(--muted-foreground);
}

.byline__date time {
  font-variant-numeric: tabular-nums;
}

/* Small eyebrow-style heading variant (used by Section 3 demo + Section 5 byline) */
.section-heading--small {
  margin: 0 0 1rem;
  font-size: 14px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--cherry);
  border-bottom: 1px solid var(--border);
  padding-bottom: 0.375rem;
}

/* ---------------------------------------------------------------------------
   35. RoverScore breakdown — 5 criteria + total in a framed panel.
--------------------------------------------------------------------------- */

.score-breakdown {
  margin-bottom: 2.5rem;
  padding: 1.5rem;
  background: var(--cream-100);
  border: 2px solid var(--charcoal);
}

.score-breakdown__intro {
  margin: 0 0 1.25rem;
  font-size: 0.9rem;
  color: var(--muted-foreground);
}

.score-breakdown__list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
}

.score-breakdown__item {
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: baseline;
  gap: 0.75rem;
  padding: 0.625rem 0;
  border-bottom: 1px solid var(--border);
}

.score-breakdown__item:last-child {
  border-bottom: 0;
}

.score-breakdown__item--total {
  margin-top: 0.5rem;
  padding-top: 0.875rem;
  border-top: 2px solid var(--charcoal);
  font-weight: 700;
}

.score-breakdown__weight {
  display: inline-block;
  min-width: 3rem;
  padding: 0.125rem 0.5rem;
  background: var(--charcoal);
  color: var(--gold);
  font-weight: 700;
  font-size: 0.8rem;
  text-align: center;
}

.score-breakdown__item--total .score-breakdown__weight {
  background: var(--cherry);
  color: var(--cream);
}

.score-breakdown__name {
  font-weight: 600;
  font-size: 0.95rem;
}

.score-breakdown__score {
  font-weight: 700;
  font-size: 1rem;
}

.score-breakdown__scale {
  font-weight: 500;
  font-size: 0.8rem;
  color: var(--muted-foreground);
  margin-left: 0.25rem;
}

/* ---------------------------------------------------------------------------
   36. Slot content — refinements for the_content() prose on single-slot.
   Base typography comes from .article-content (section 7); this block only
   restores a usable table layout because the global table { display:block;
   overflow-x:auto } reset would make in-content tables (cost-of-play,
   similar-slots) feel weirdly clipped on desktop.
--------------------------------------------------------------------------- */

.slot-content {
  margin-bottom: 2.5rem;
}

.slot-content table {
  display: table;
  width: 100%;
  border: 2px solid var(--charcoal);
}

.slot-content table th,
.slot-content table td {
  padding: 0.625rem 1rem;
  border-bottom: 1px solid var(--border);
}

.slot-content table thead {
  background: var(--cream-100);
}

.slot-content table th {
  font-weight: 600;
  text-align: left;
}

@media (max-width: 640px) {
  /* On narrow viewports, restore mobile-table-scroll behaviour for
     in-content tables only — the specs-table (label/value layout) is
     already narrow enough to fit. */
  .slot-content table {
    display: block;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }
}

/* Related slots — uses .card-grid; only needs a wrapper for margin. */
.related-slots {
  margin-bottom: 2.5rem;
}

/* ---------------------------------------------------------------------------
   37. Disclosure footer — small editorial / compliance band at end of page.
--------------------------------------------------------------------------- */

.disclosure-footer {
  margin: 2.5rem auto 1rem;
  padding: 1.25rem;
  background: var(--cream-100);
  border: 1px solid var(--border);
  font-size: 0.85rem;
  line-height: 1.5;
  color: var(--muted-foreground);
}

.disclosure-footer p {
  margin: 0;
}

.disclosure-footer p + p {
  margin-top: 0.5rem;
}

.disclosure-footer strong {
  color: var(--charcoal);
}

.disclosure-footer a {
  color: var(--cherry);
}

.disclosure-footer__updated {
  font-style: italic;
}

/* ===========================================================================
   Single-theme template — single-theme.php
   =========================================================================== */

/* ---------------------------------------------------------------------------
   38. Theme hero — 2-column at >=720px (meta left, 2:1 hero image right),
   stacks on mobile. Larger title than slot hero; intro paragraph carries
   article-content typography so HTML in _theme_intro_override renders.
--------------------------------------------------------------------------- */

.theme-hero {
  display: grid;
  grid-template-columns: 1fr;
  gap: 2rem;
  margin-bottom: 2.5rem;
  padding-bottom: 2rem;
  border-bottom: 2px solid var(--charcoal);
}

@media (min-width: 720px) {
  .theme-hero {
    grid-template-columns: 1.1fr 1fr;
    align-items: start;
  }
}

.theme-hero__meta {
  display: flex;
  flex-direction: column;
  gap: 0.875rem;
}

.theme-hero__chip {
  display: inline-block;
  align-self: flex-start;
  padding: 0.25rem 0.625rem;
  background: var(--charcoal);
  color: var(--gold);
  font-size: 0.7rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
}

.theme-hero__title {
  margin: 0;
  font-size: clamp(28px, 5vw, 40px);
  line-height: 1.1;
  letter-spacing: -0.02em;
  font-weight: 800;
}

/* Intro paragraph(s) — uses article-content typography for HTML overrides */
.theme-hero__intro {
  font-size: 1rem;
  line-height: 1.55;
  color: var(--charcoal);
  max-width: 60ch;
}

.theme-hero__intro p {
  margin: 0;
}

.theme-hero__intro p + p {
  margin-top: 0.75rem;
}

/* 3-tile stat row — slot count / tier / search volume */
.theme-hero__stats {
  list-style: none;
  margin: 0.5rem 0 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
  gap: 0.5rem;
}

.theme-hero__stats li {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.125rem;
  padding: 0.625rem 0.5rem;
  background: var(--cream-100);
  border: 2px solid var(--charcoal);
  text-align: center;
}

.theme-hero__stat-label {
  font-size: 0.7rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--cherry);
}

.theme-hero__stat-value {
  font-weight: 700;
  font-size: 1.05rem;
}

/* Right column — hero image with brutalist offset shadow. 2:1 aspect ratio
   matches the registered slotrover-theme-hero image size (1760×880). */
.theme-hero__media {
  border: 2px solid var(--charcoal);
  box-shadow: var(--shadow-offset);
  overflow: hidden;
  background: var(--cream-100);
}

.theme-hero__media img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 2 / 1;
  object-fit: cover;
}

/* ---------------------------------------------------------------------------
   39. Theme-specific section wrappers — anchors / slots / newest / related.
   Each is a vertical-rhythm wrapper; the actual grid uses .card-grid.
--------------------------------------------------------------------------- */

.theme-anchors,
.theme-slots,
.theme-newest,
.theme-related {
  margin-bottom: 2.5rem;
}

/* ---------------------------------------------------------------------------
   40. Theme content — refinements for the_content() prose on single-theme.
   Same in-content table treatment as .slot-content (display:table desktop,
   block + scroll on mobile) so any n8n-generated comparison tables render
   cleanly.
--------------------------------------------------------------------------- */

.theme-content {
  margin-bottom: 2.5rem;
}

.theme-content table {
  display: table;
  width: 100%;
  border: 2px solid var(--charcoal);
}

.theme-content table th,
.theme-content table td {
  padding: 0.625rem 1rem;
  border-bottom: 1px solid var(--border);
}

.theme-content table thead {
  background: var(--cream-100);
}

.theme-content table th {
  font-weight: 600;
  text-align: left;
}

@media (max-width: 640px) {
  .theme-content table {
    display: block;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }
}

/* ===========================================================================
   Taxonomy hubs — taxonomy-provider/feature/attribute.php
   =========================================================================== */

/* ---------------------------------------------------------------------------
   41. Term hero — single-column (no hero image on taxonomy terms).
   Smaller / denser than the CPT hero blocks; chip is charcoal-on-gold to
   differentiate from theme-hero's chip.
--------------------------------------------------------------------------- */

.term-hero {
  margin-bottom: 2.5rem;
  padding-bottom: 2rem;
  border-bottom: 2px solid var(--charcoal);
}

.term-hero__chip {
  display: inline-block;
  padding: 0.25rem 0.625rem;
  background: var(--charcoal);
  color: var(--gold);
  font-size: 0.7rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  margin-bottom: 1rem;
}

.term-hero__title {
  margin: 0 0 1rem;
  font-size: clamp(28px, 5vw, 40px);
  line-height: 1.1;
  letter-spacing: -0.02em;
  font-weight: 800;
}

.term-hero__intro {
  font-size: 1rem;
  line-height: 1.55;
  color: var(--charcoal);
  max-width: 60ch;
  margin-bottom: 1.25rem;
}

.term-hero__intro p {
  margin: 0;
}

.term-hero__intro p + p {
  margin-top: 0.75rem;
}

.term-hero__stats {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
}

.term-hero__stats li {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.125rem;
  padding: 0.625rem 1rem;
  background: var(--cream-100);
  border: 2px solid var(--charcoal);
  min-width: 140px;
  text-align: center;
}

.term-hero__stat-label {
  font-size: 0.7rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--cherry);
}

.term-hero__stat-value {
  font-weight: 700;
  font-size: 1.05rem;
}

/* ---------------------------------------------------------------------------
   42. Term content — refinements for term_description prose. Same in-content
   table treatment as .slot-content / .theme-content (desktop=table,
   mobile=scroll) so bespoke editorial tables render cleanly.
--------------------------------------------------------------------------- */

.term-content {
  margin-bottom: 2.5rem;
}

.term-content table {
  display: table;
  width: 100%;
  border: 2px solid var(--charcoal);
}

.term-content table th,
.term-content table td {
  padding: 0.625rem 1rem;
  border-bottom: 1px solid var(--border);
}

.term-content table thead {
  background: var(--cream-100);
}

.term-content table th {
  font-weight: 600;
  text-align: left;
}

@media (max-width: 640px) {
  .term-content table {
    display: block;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }
}

/* ---------------------------------------------------------------------------
   43. Term section wrappers — slot grid + related-terms chip list.
--------------------------------------------------------------------------- */

.term-slots,
.term-related {
  margin-bottom: 2.5rem;
}

/* ===========================================================================
   STAGE 1 FOUNDATION — Lovable-parity shared infrastructure
   Section bg colour utilities + section padding + sticker + section-heading +
   section-spotlight + taxonomy-spotlight + sticker-divider components.
   =========================================================================== */

/* ---------------------------------------------------------------------------
   44. Section bg colour utilities
   Each utility produces a full-width coloured strip. Pair with
   .section-pad (vertical rhythm) and .section-wrap (inner 1280px container).
--------------------------------------------------------------------------- */

.section--hero-gradient {
  background: linear-gradient(to bottom, var(--cream), color-mix(in oklab, var(--cream-100) 60%, transparent));
}
.section--cream-100         { background: var(--cream-100); }
.section--featured-pink     { background: linear-gradient(to bottom, #F5DCDC 0%, #EFC9C9 100%); }
.section--featured-pink-end { background: #EFC9C9; }
.section--theme-green       { background: #DCE5CC; }
.section--rate-yellow       { background: #F5E5B0; }
.section--trust-green       { background: #D5DFC1; }
.section--charcoal          { background: var(--charcoal); color: var(--cream); }
.section--card-translucent  { background: color-mix(in oklab, var(--card) 40%, transparent); }

/* Section borders — used in Lovable to break sections visually */
.section-border-y-charcoal { border-block: 2px solid var(--charcoal); }
.section-border-y-gold     { border-block: 2px solid var(--gold); }

/* Hero bottom accent — Lovable's `absolute inset-x-0 bottom-0 h-[3px]
   bg-gradient-to-r from-transparent via-gold to-transparent` */
.section--hero-gradient {
  position: relative;
}
.section--hero-gradient::after {
  content: "";
  position: absolute;
  inset: auto 0 0 0;
  height: 3px;
  background: linear-gradient(to right, transparent, var(--gold), transparent);
  pointer-events: none;
}

/* ---------------------------------------------------------------------------
   45. Standard section padding (matches Lovable py-16 lg:py-20)
   Mobile: 4rem block / Desktop: 5rem block.
--------------------------------------------------------------------------- */

.section-pad {
  padding-block: 4rem;
}
@media (min-width: 1024px) {
  .section-pad {
    padding-block: 5rem;
  }
}

/* Section inner wrap — explicit Lovable max-w-[1280px] + px-4 / lg:px-8.
   Use INSIDE a coloured section bg when the bg should be full-bleed
   but content should constrain to the 1280px reading column. */
.section-wrap {
  max-width: var(--container-max);
  margin-inline: auto;
  padding-inline: var(--container-padding-x);
}
@media (min-width: 1024px) {
  .section-wrap {
    padding-inline: var(--container-padding-x-md);
  }
}

/* ---------------------------------------------------------------------------
   46. Sticker — inline-SVG renderer. The <span> wrapper handles the
   transform + drop-shadow via inline style (size + rotate vary per call).
   Add any sticker-specific CSS overrides here if needed.
--------------------------------------------------------------------------- */

.sticker { display: inline-block; flex-shrink: 0; line-height: 0; }

/* ---------------------------------------------------------------------------
   47. Sticker divider — full-width strip with centred sticker between
   fading gold horizontal lines.
--------------------------------------------------------------------------- */

.sticker-divider {
  max-width: var(--container-max);
  margin-inline: auto;
  padding-block: 1.5rem;
  padding-inline: var(--container-padding-x);
}
@media (min-width: 1024px) {
  .sticker-divider {
    padding-inline: var(--container-padding-x-md);
  }
}

.sticker-divider__inner {
  display: flex;
  align-items: center;
  gap: 1rem;
}

.sticker-divider__line {
  flex: 1;
  height: 1px;
}
.sticker-divider__line--left {
  background: linear-gradient(
    to right,
    transparent,
    color-mix(in oklab, var(--gold) 55%, transparent),
    color-mix(in oklab, var(--gold) 55%, transparent)
  );
}
.sticker-divider__line--right {
  background: linear-gradient(
    to left,
    transparent,
    color-mix(in oklab, var(--gold) 55%, transparent),
    color-mix(in oklab, var(--gold) 55%, transparent)
  );
}

/* ---------------------------------------------------------------------------
   48. Section heading block — sticker + cherry/felt/gold dot + uppercase
   eyebrow + big h2. Replaces the simple .section-heading utility for
   Lovable-parity blocks.
--------------------------------------------------------------------------- */

.section-heading-block {
  max-width: 42rem; /* Lovable max-w-2xl on the heading wrapper */
}

.section-heading-block__eyebrow-row {
  display: flex;
  align-items: center;
  gap: 0.75rem;
}

.section-heading-block__eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  font-size: 11px;
  font-weight: 900;
  text-transform: uppercase;
  letter-spacing: 0.2em;
  color: var(--cherry);
}

.section-heading-block__dot {
  width: 6px;
  height: 6px;
  border-radius: 999px;
  background: var(--cherry);
}

/* Colour variants — felt and gold (gold goes darker on light bg, brighter when inverted) */
.section-heading-block--felt .section-heading-block__eyebrow { color: var(--felt); }
.section-heading-block--felt .section-heading-block__dot     { background: var(--felt); }

.section-heading-block--gold .section-heading-block__eyebrow {
  color: color-mix(in oklab, var(--gold) 75%, var(--charcoal));
}
.section-heading-block--gold .section-heading-block__dot     { background: var(--gold); }

.section-heading-block--inverted.section-heading-block--gold .section-heading-block__eyebrow {
  color: var(--gold);
}

.section-heading-block__title {
  margin: 0.625rem 0 0;
  font-size: clamp(28px, 4vw, 40px);
  font-weight: 900;
  letter-spacing: -0.02em;
  line-height: 1.1;
  color: var(--foreground);
}

.section-heading-block--inverted .section-heading-block__title {
  color: var(--cream);
}

.section-heading-block__subtitle {
  margin: 0.5rem 0 0;
  color: var(--muted-foreground);
}

.section-heading-block--inverted .section-heading-block__subtitle {
  color: color-mix(in oklab, var(--cream) 75%, transparent);
}

/* ---------------------------------------------------------------------------
   49. Section spotlight — eyebrow accent line + label + "Editorial" tag,
   above an embedded SlotCard. Used in right column of major section
   headings on the homepage.
--------------------------------------------------------------------------- */

.section-spotlight {
  display: flex;
  justify-content: flex-end;
}

.section-spotlight__inner {
  width: 100%;
  max-width: 340px;
}

.section-spotlight__eyebrow-row {
  margin-bottom: 0.75rem;
  display: flex;
  align-items: center;
  gap: 0.625rem;
  font-family: var(--font-sans);
}

.section-spotlight__accent {
  height: 2px;
  width: 1.5rem;
  background: var(--cherry);
}

.section-spotlight__label {
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.18em;
  color: var(--charcoal);
}

.section-spotlight__sep,
.section-spotlight__editorial {
  font-size: 10px;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: color-mix(in oklab, var(--charcoal) 55%, transparent);
}

.section-spotlight--inverted .section-spotlight__accent { background: var(--gold); }
.section-spotlight--inverted .section-spotlight__label  { color: var(--cream); }
.section-spotlight--inverted .section-spotlight__sep,
.section-spotlight--inverted .section-spotlight__editorial {
  color: color-mix(in oklab, var(--cream) 60%, transparent);
}

/* ---------------------------------------------------------------------------
   50. Taxonomy spotlight — image-led card with name, desc, "Read Full
   Review →" CTA. Same eyebrow header as section-spotlight.
--------------------------------------------------------------------------- */

.taxonomy-spotlight {
  display: flex;
  justify-content: flex-end;
}

.taxonomy-spotlight__inner {
  width: 100%;
  max-width: 340px;
}

.taxonomy-spotlight__eyebrow-row {
  margin-bottom: 0.75rem;
  display: flex;
  align-items: center;
  gap: 0.625rem;
}

.taxonomy-spotlight__accent {
  height: 2px;
  width: 1.5rem;
  background: var(--cherry);
}

.taxonomy-spotlight__label {
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.18em;
  color: var(--charcoal);
}

.taxonomy-spotlight__sep,
.taxonomy-spotlight__editorial {
  font-size: 10px;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: color-mix(in oklab, var(--charcoal) 55%, transparent);
}

.taxonomy-spotlight--inverted .taxonomy-spotlight__accent { background: var(--gold); }
.taxonomy-spotlight--inverted .taxonomy-spotlight__label  { color: var(--cream); }
.taxonomy-spotlight--inverted .taxonomy-spotlight__sep,
.taxonomy-spotlight--inverted .taxonomy-spotlight__editorial {
  color: color-mix(in oklab, var(--cream) 60%, transparent);
}

.taxonomy-spotlight__card {
  display: block;
  background: var(--cream);
  color: var(--charcoal);
  border: 2px solid var(--charcoal);
  box-shadow: var(--shadow-offset);
  overflow: hidden;
  text-decoration: none;
  transition: transform 200ms ease, box-shadow 200ms ease;
}

.taxonomy-spotlight__card:hover {
  transform: translate(-2px, -2px);
  /* Cherry offset shadow removed in 0.3.2 (global shadow sweep). */
  box-shadow: none;
}

.taxonomy-spotlight__media {
  position: relative;
  aspect-ratio: 16 / 10;
  overflow: hidden;
}

.taxonomy-spotlight__media img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 200ms ease;
}

.taxonomy-spotlight__card:hover .taxonomy-spotlight__media img {
  transform: scale(1.03);
}

.taxonomy-spotlight__corner {
  position: absolute;
  top: 0.5rem;
  right: 0.5rem;
  width: 12px;
  height: 12px;
  border-top: 2px solid var(--gold);
  border-right: 2px solid var(--gold);
}

.taxonomy-spotlight__body {
  padding: 1rem;
}

.taxonomy-spotlight__name {
  margin: 0;
  font-family: var(--font-display);
  font-size: 1.125rem;
  font-weight: 900;
  letter-spacing: -0.01em;
  color: var(--charcoal);
}

.taxonomy-spotlight__desc {
  margin: 0.375rem 0 0;
  font-size: 0.75rem;
  line-height: 1.55;
  color: color-mix(in oklab, var(--charcoal) 70%, transparent);
}

.taxonomy-spotlight__cta {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  margin-top: 0.75rem;
  font-size: 11px;
  font-weight: 900;
  text-transform: uppercase;
  letter-spacing: 0.14em;
  color: var(--cherry);
}

/* ---------------------------------------------------------------------------
   51. Casino Bonuses section + cards (Stage 2)
   ---------------------------------------------------------------------------
   Ported 1:1 from Lovable's CasinoBonusesSection + CasinoCard
   (src/components/CasinoBonusesSection.tsx). Background = cream-100 with
   charcoal borders top + bottom; cards = cream with 3 -> 6px brutalist
   offset shadow and -2/-2 lift on hover; tag flag uses a pentagon
   clip-path; compliance bar = inverted (charcoal bg, cream text).
--------------------------------------------------------------------------- */

.casino-bonuses-section {
  background-color: var(--cream-100);
  border-top:    2px solid var(--charcoal);
  border-bottom: 2px solid var(--charcoal);
}

.casino-bonuses-section__inner {
  max-width: 1280px;
  margin-inline: auto;
  padding: 4rem 1rem;
}

@media (min-width: 1024px) {
  .casino-bonuses-section__inner {
    padding: 5rem 2rem;
  }
}

.casino-bonuses-section__head {
  margin-bottom: 2rem;
}

.casino-bonuses-section__title {
  margin: 0;
  font-family: var(--font-display);
  font-size: 1.875rem;
  letter-spacing: -0.01em;
  color: var(--charcoal);
}

@media (min-width: 1024px) {
  .casino-bonuses-section__title {
    font-size: 2.25rem;
  }
}

.casino-bonuses-section__sub {
  margin: 0.75rem 0 0;
  max-width: 650px;
  font-size: 1rem;
  line-height: 1.55;
  color: color-mix(in oklab, var(--charcoal) 75%, transparent);
}

@media (min-width: 1024px) {
  .casino-bonuses-section__sub {
    font-size: 1.125rem;
  }
}

.casino-bonuses-section__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1.25rem;
}

@media (min-width: 640px)  { .casino-bonuses-section__grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) { .casino-bonuses-section__grid { grid-template-columns: repeat(3, 1fr); } }
@media (min-width: 1280px) { .casino-bonuses-section__grid { grid-template-columns: repeat(4, 1fr); } }

/* -- Card -------------------------------------------------------------- */

/* Casino card framing — borders only (no shadow). Matches the live Lovable
   site which dropped offset shadows globally (0.3.2 sweep). The 1px charcoal
   border stays; hover keeps a subtle translate lift for interactivity. */
.casino-card {
  position: relative;
  display: flex;
  flex-direction: column;
  background-color: var(--cream);
  border: 1px solid color-mix(in oklab, var(--charcoal) 65%, transparent);
  box-shadow: none;
  transition: transform 200ms ease;
}

.casino-card:hover {
  box-shadow: none;
  transform: translate(-1px, -1px);
}

.casino-card__inner {
  display: flex;
  flex-direction: column;
  height: 100%;
  padding: 1rem;
}

/* -- Tag flag (pentagon clip, top-right) ------------------------------- */

.casino-card__tag-flag {
  position: absolute;
  top: 0;
  right: 0.75rem;
  padding: 0.25rem 0.5rem;
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: 0.15em;
  font-weight: 800;
  border: 2px solid var(--charcoal);
  border-top: 0;
  z-index: 1;
  clip-path: polygon(0 0, 100% 0, 100% 100%, 50% 80%, 0 100%);
}

.casino-card__tag-flag--new {
  background-color: var(--gold);
  color: var(--charcoal);
}

.casino-card__tag-flag--exclusive {
  background-color: var(--felt);
  color: var(--cream);
}

/* -- Logo box (centered, 150x65) --------------------------------------- */

.casino-card__logo {
  margin-inline: auto;
  width: 150px;
  height: 65px;
  display: flex;
  align-items: center;
  justify-content: center;
  background-color: var(--cream);
  border: 2px solid var(--charcoal);
  padding: 0.5rem;
}

.casino-card__logo-img {
  max-width: 100%;
  max-height: 100%;
  width: auto !important;
  height: auto !important;
  object-fit: contain;
}

.casino-card__logo-fallback {
  font-family: var(--font-display);
  font-size: 1.125rem;
  font-weight: 700;
  line-height: 1.2;
  text-align: center;
  color: var(--charcoal);
}

/* -- Name + rating row ------------------------------------------------- */

.casino-card__head {
  margin-top: 0.75rem;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem;
}

.casino-card__name {
  margin: 0;
  font-family: var(--font-display);
  font-size: 18px;
  font-weight: 700;
  line-height: 1.2;
  color: var(--charcoal);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.casino-card__rating {
  flex-shrink: 0;
  font-size: 14px;
  font-weight: 700;
  color: color-mix(in oklab, var(--charcoal) 80%, transparent);
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
}

.casino-card__rating-star {
  color: var(--gold);
}

/* -- Bonus headline ---------------------------------------------------- */

.casino-card__bonus {
  margin: 0.75rem 0 0;
  min-height: 3rem;
}

.casino-card__bonus strong {
  font-family: var(--font-display);
  font-size: 17px;
  font-weight: 700;
  line-height: 1.35;
  color: var(--cherry);
}

/* -- Detail stats (Wagering / Max win / Min deposit) ------------------- */

.casino-card__stats {
  margin: 0.75rem 0 0;
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
  font-size: 14px;
  color: var(--charcoal);
}

.casino-card__stat-row {
  display: flex;
  gap: 0.375rem;
  align-items: baseline;
}

.casino-card__stat-label {
  margin: 0;
  color: color-mix(in oklab, var(--charcoal) 60%, transparent);
  font-weight: 400;
}

.casino-card__stat-value {
  margin: 0;
  font-weight: 700;
}

/* -- CTA (matches Lovable Button variant=primary) ---------------------- */

/* CTA button — same sizing/weight/tracking as the global .btn / Lovable's
   <Button>: text-xs (10.2px scaled), weight 400, uppercase, tracking
   0.08em, h-9 (2.25rem scaled), no vertical padding. Full-width inside
   the casino card. */
.casino-card__cta {
  margin-top: 1rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 2.25rem;
  padding: 0 1rem;
  font-size: 0.75rem;
  font-weight: 400;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  /* Tailwind text-xs default line-height (1rem = 13.6px scaled). */
  line-height: 1rem;
  color: #ffffff;
  background-color: var(--cherry);
  border: 2px solid var(--charcoal);
  box-shadow: none;
  cursor: pointer;
  text-decoration: none;
  transition: transform 150ms ease, background-color 150ms ease;
}

.casino-card__cta[href]:hover {
  background-color: var(--cherry-dark, oklch(45% 0.18 22));
  box-shadow: none;
  transform: translate(-1px, -1px);
}

.casino-card__cta[href]:active {
  box-shadow: none;
  transform: translate(0, 0);
}

/* Anchor without href — non-functional but visually identical to the
   active state. No cursor:pointer (matches "not yet clickable" cue). */
.casino-card__cta:not([href]) {
  cursor: default;
}

/* -- T&Cs footer ------------------------------------------------------- */

.casino-card__terms {
  margin: 0.75rem 0 0;
  font-size: 11px;
  line-height: 1.35;
  font-style: italic;
  color: color-mix(in oklab, var(--charcoal) 60%, transparent);
}

.casino-card__terms-link {
  margin-inline-start: 0.25rem;
  color: inherit;
  text-decoration: underline;
}

/* -- Compliance bar (inverted, full-width inside the section) ---------- */

.casino-bonuses-section__compliance {
  margin-top: 2.5rem;
  padding: 1rem;
  background-color: var(--charcoal);
  color: var(--cream);
  border: 2px solid var(--charcoal);
  text-align: center;
  font-size: 11px;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.15em;
}

/* Compliance bar links — Lovable styles BeGambleAware as
   `underline hover:text-gold normal-case tracking-normal` inside a
   parent that's `text-cream text-[11px] uppercase tracking-[0.15em]
   font-extrabold`. The global `a` rule from style.css sets color and
   decoration, which was beating my class rule on specificity (since
   both are 0,1,0 equivalent — the type vs class tie goes to whichever
   appears later, and the `a` rule from style.css loads first).
   `!important` here is the deliberate override to lock these values. */
.casino-bonuses-section__compliance-link {
  color: var(--cream) !important;
  font-weight: 800 !important;
  text-transform: none !important;
  letter-spacing: normal !important;
  text-decoration: underline !important;
  text-decoration-color: var(--cream) !important;
}

/* Phone link in the compliance bar — Lovable parity: tel: stays clickable
   but renders without underline (only the external BeGambleAware link is
   underlined). The base class above keeps underline as the default for
   external links; this modifier drops it for tel: only. */
.casino-bonuses-section__compliance-link--phone {
  text-decoration: none;
}

.casino-bonuses-section__compliance-link:hover {
  color: var(--gold);
}

/* ---------------------------------------------------------------------------
   52. FAQ section (Stage 3)
   ---------------------------------------------------------------------------
   Zero-JS <details>/<summary> expand pattern. Open-state styling via the
   [open] attribute selector — no JavaScript required. Narrow container
   (920px instead of 1280px) for comfortable reading line length.
--------------------------------------------------------------------------- */

.faq-section {
  /* Translucent off-white panel — matches Lovable's `bg-card/40` which
     resolves to `oklab(1 0 0 / 0.4)`. Lets whatever sits underneath
     show through faintly instead of being a solid cream-100 strip. */
  background-color: oklab(1 0 0 / 0.4);
  border-top:    2px solid var(--charcoal);
  border-bottom: 2px solid var(--charcoal);
}

.faq-section__inner {
  max-width: 920px;
  margin-inline: auto;
  padding: 4rem 1rem;
}

@media (min-width: 1024px) {
  .faq-section__inner { padding: 5rem 2rem; }
}

.faq-section__head { margin-bottom: 2rem; }

.faq-section__list {
  display: flex;
  flex-direction: column;
}

.faq-row {
  border-top: 2px solid var(--charcoal);
  border-left: 2px solid transparent;
  padding-left: 0;
  margin-left: 0;
  transition: border-left-color 150ms ease, padding-left 150ms ease, margin-left 150ms ease;
}

.faq-row:last-of-type { border-bottom: 2px solid var(--charcoal); }

.faq-row[open] {
  border-left-color: var(--gold);
  padding-left: 0.75rem;
  margin-left: -0.75rem;
}

.faq-row__summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding: 1rem 0;
  cursor: pointer;
  list-style: none;
  transition: color 150ms ease;
}

.faq-row__summary::-webkit-details-marker { display: none; }
.faq-row__summary::marker                { display: none; content: ""; }

.faq-row__summary:hover { color: var(--cherry); }

.faq-row__question {
  font-family: var(--font-display);
  font-weight: 800;
  font-size: 1.125rem;
  letter-spacing: -0.01em;
  color: inherit;
}

.faq-row__chevron {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 18px;
  height: 18px;
  color: var(--charcoal);
  transition: transform 200ms ease;
}

.faq-row[open] .faq-row__chevron { transform: rotate(180deg); }

.faq-row__answer {
  padding-bottom: 1.25rem;
  max-width: 48rem;
  font-size: 0.875rem;
  line-height: 1.7;
  color: color-mix(in oklab, var(--charcoal) 80%, transparent);
}

/* ---------------------------------------------------------------------------
   53. Filter by Spec section (Stage 3) + chip + chip-row
   ---------------------------------------------------------------------------
   3 labelled chip rows with live taxonomy counts. Bespoke chips link to
   the hub; non-bespoke render as static text per the bespoke gate.
   Right-column spotlight uses the shared TaxonomySpotlight partial.
--------------------------------------------------------------------------- */

.filter-by-spec-section {
  background-color: transparent;
}

.filter-by-spec-section__inner {
  max-width: 1280px;
  margin-inline: auto;
  padding: 4rem 1rem;
}

@media (min-width: 1024px) {
  .filter-by-spec-section__inner { padding: 5rem 2rem; }
}

.filter-by-spec-section__head {
  display: grid;
  grid-template-columns: 1fr;
  gap: 2.5rem;
  align-items: flex-start;
  margin-bottom: 2rem;
}

@media (min-width: 1024px) {
  .filter-by-spec-section__head {
    grid-template-columns: 1.3fr 1fr;
    gap: 3.5rem;
  }
}

.filter-by-spec-section__lede {
  margin: 1rem 0 0;
  max-width: 650px;
  font-size: 1rem;
  line-height: 1.55;
  color: color-mix(in oklab, var(--charcoal) 75%, transparent);
}

@media (min-width: 1024px) {
  .filter-by-spec-section__lede { font-size: 1.125rem; }
}

.filter-by-spec-section__more {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  margin-top: 1rem;
  font-size: 0.875rem;
  font-weight: 600;
  color: var(--cherry);
  text-decoration: none;
}

.filter-by-spec-section__more:hover { text-decoration: underline; }

.filter-by-spec-section__rows {
  display: flex;
  flex-direction: column;
  gap: 1.25rem;
}

/* -- chip-row + chip ------------------------------------------------- */

.chip-row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.75rem;
}

.chip-row__label {
  min-width: 160px;
  font-size: 0.75rem;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  font-weight: 700;
  color: var(--muted-foreground);
}

.chip-row__chips {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
}

.chip {
  display: inline-flex;
  align-items: baseline;
  padding: 0.375rem 0.75rem;
  background-color: var(--cream);
  border: 2px solid var(--charcoal);
  font-size: 0.875rem;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--charcoal);
  text-decoration: none;
}

.chip__count {
  margin-inline-start: 0.25rem;
  font-size: 0.75rem;
  font-weight: 600;
  opacity: 0.7;
}

.chip--linked {
  cursor: pointer;
  transition: background-color 150ms ease, color 150ms ease;
}

.chip--linked:hover {
  background-color: var(--cherry);
  color: var(--cream);
}

/* ---------------------------------------------------------------------------
   54. About SlotRover trust grid section (Stage 3) + trust-pillar
   ---------------------------------------------------------------------------
   Sage-green background panel (#D5DFC1 from Lovable inline style — not yet
   in our brand var system, so hardcoded here). 4 trust pillars in a
   responsive 1/2/4 column grid. Each pillar uses a felt-coloured border
   (matches Lovable's `border-felt` choice) — no offset shadow.
--------------------------------------------------------------------------- */

.about-trust-section {
  background-color: #D5DFC1;  /* Lovable inline; not in brand vars */
}

.about-trust-section__inner {
  max-width: 1280px;
  margin-inline: auto;
  padding: 4rem 1rem;
}

@media (min-width: 1024px) {
  .about-trust-section__inner { padding: 5rem 2rem; }
}

.about-trust-section__head {
  display: grid;
  grid-template-columns: 1fr;
  gap: 2.5rem;
  align-items: flex-start;
  margin-bottom: 2.5rem;
}

@media (min-width: 1024px) {
  .about-trust-section__head {
    grid-template-columns: 1.3fr 1fr;
    gap: 3.5rem;
  }
}

.about-trust-section__lede {
  margin: 1rem 0 0;
  max-width: 650px;
  font-size: 1rem;
  line-height: 1.55;
  color: color-mix(in oklab, var(--charcoal) 75%, transparent);
}

@media (min-width: 1024px) {
  .about-trust-section__lede { font-size: 1.125rem; }
}

.about-trust-section__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1.25rem;
}

@media (min-width: 640px)  { .about-trust-section__grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) { .about-trust-section__grid { grid-template-columns: repeat(4, 1fr); } }

.about-trust-section__prose {
  margin-top: 2.5rem;
  display: grid;
  grid-template-columns: 1fr;
  gap: 2rem;
  max-width: 56rem;
}

@media (min-width: 768px) {
  .about-trust-section__prose { grid-template-columns: 1fr 1fr; }
}

.about-trust-section__prose p {
  margin: 0;
  line-height: 1.7;
  color: color-mix(in oklab, var(--charcoal) 65%, transparent);
}

.about-trust-section__links {
  margin-top: 1.5rem;
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem 1.25rem;
  font-size: 0.875rem;
}

.about-trust-section__links a {
  color: var(--cherry);
  font-weight: 600;
  text-decoration: none;
}

.about-trust-section__links a:hover { text-decoration: underline; }

/* -- trust-pillar ---------------------------------------------------- */

.trust-pillar {
  position: relative;
  background-color: var(--cream);
  border: 2px solid var(--felt);
  padding: 1.25rem;
  transition: transform 200ms ease;
}

.trust-pillar:hover { transform: translate(-1px, -1px); }

.trust-pillar__sticker {
  position: absolute;
  top: 0.75rem;
  right: 0.75rem;
}

.trust-pillar__icon {
  width: 56px;
  height: 56px;
  display: flex;
  align-items: center;
  justify-content: center;
  background-color: color-mix(in oklab, var(--felt) 8%, transparent);
  border: 1px solid var(--charcoal);
  padding: 0.5rem;
}

.trust-pillar__icon-img {
  width: 100%;
  height: 100%;
  object-fit: contain;
}

.trust-pillar__title {
  margin: 1rem 0 0;
  font-family: var(--font-display);
  font-size: 1.125rem;
  font-weight: 900;
  letter-spacing: -0.01em;
  color: var(--charcoal);
}

.trust-pillar__body {
  margin: 0.5rem 0 0;
  font-size: 0.875rem;
  line-height: 1.7;
  color: var(--muted-foreground);
}

/* ===========================================================================
   STAGE 4 — Homepage final batch (sections 55-63).
   ---------------------------------------------------------------------------
   New + reworked homepage sections matching live Lovable. Several rules
   intentionally OVERRIDE the older .home-hero / .discovery-card / etc.
   blocks earlier in this file — cascade order is the override mechanism.
   All shadows omitted per the 0.3.2 global sweep.
   =========================================================================== */

/* ---------------------------------------------------------------------------
   55. Hero — image-led, 2-col, with editorial frame
--------------------------------------------------------------------------- */

.home-hero {
  position: relative;
  overflow: hidden;
  background: linear-gradient(to bottom, oklch(0.82 0.13 84.81 / 0.76) 0%, var(--cream) 60%, color-mix(in oklab, var(--cream-100) 60%, var(--cream)) 100%);
  padding: 0;
  border: 0;
  margin-bottom: 0;
}

.home-hero__accent {
  position: absolute;
  inset-inline: 0;
  bottom: 0;
  height: 3px;
  background: linear-gradient(to right, transparent, var(--gold), transparent);
  pointer-events: none;
}

.home-hero__inner {
  position: relative;
  max-width: 1280px;
  margin-inline: auto;
  padding: 4rem 1rem;
}

@media (min-width: 1024px) {
  .home-hero__inner { padding: 6rem 2rem; }
}

.home-hero__cols {
  display: grid;
  grid-template-columns: 1fr;
  gap: 3rem;
  align-items: center;
}

@media (min-width: 1024px) {
  .home-hero__cols { grid-template-columns: 1.2fr 1fr; gap: 3rem; }
}

.home-hero__chip {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.375rem 0.75rem;
  background: var(--cream);
  color: var(--felt);
  border: 2px solid var(--felt);
  font-size: 11px;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.15em;
}

.home-hero__title {
  margin: 1.25rem 0 0;
  font-family: var(--font-display);
  font-weight: 700;
  font-size: clamp(1.5rem, 3vw, 2.25rem);
  line-height: 1.2;
  letter-spacing: 0;
  color: var(--charcoal);
}

.home-hero__lede {
  margin: 1rem 0 0;
  max-width: 36rem;
  font-style: italic;
  font-size: 1.125rem;
  line-height: 1.5;
  color: var(--charcoal);
}

.home-hero__bullets {
  list-style: none;
  padding: 0;
  margin: 1.5rem 0 0;
  max-width: 36rem;
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}

.home-hero__bullets li {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  font-size: 0.875rem;
  font-weight: 600;
  color: var(--charcoal);
}

.home-hero__check {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 20px;
  height: 20px;
  border-radius: 50%;
  background: color-mix(in oklab, var(--felt) 15%, transparent);
  color: var(--felt);
  flex-shrink: 0;
}

.home-hero__cta {
  margin-top: 1.75rem;
  display: flex;
  flex-wrap: wrap;
  gap: 0.75rem;
}

/* (Old .home-hero__sub / __trust display:none overrides removed in 0.6.0
   — the underlying rules themselves are now gone, so the overrides are
   no longer needed.) */

/* -- Hero media (right column) -------------------------------------- */

.home-hero__media {
  position: relative;
}

.home-hero__sticker {
  position: absolute;
  z-index: 2;
  pointer-events: none;
}

.home-hero__sticker--right { bottom: -1.5rem; right: -1rem; }
.home-hero__sticker--left  { bottom: -2rem;   left:  -1.5rem; }

@media (max-width: 1023px) {
  .home-hero__sticker { display: none; }
}

.hero-frame {
  position: relative;
  background: var(--cream);
  border: 3px solid var(--charcoal);
  border-radius: 1rem;
  overflow: hidden;
}

.hero-frame__band {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0.625rem 1rem;
  background: var(--charcoal);
  color: var(--cream);
  border-bottom: 2px solid var(--gold);
  font-size: 10px;
  font-weight: 900;
  text-transform: uppercase;
  letter-spacing: 0.18em;
}

.hero-frame__label {
  display: inline-flex;
  align-items: center;
  gap: 0.375rem;
}

.hero-frame__dot {
  display: inline-block;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--gold);
}

.hero-frame__byline {
  color: color-mix(in oklab, var(--cream) 70%, transparent);
  text-transform: none;
  letter-spacing: normal;
  font-weight: 500;
}

.hero-frame__media {
  aspect-ratio: 3 / 2;
  overflow: hidden;
}

.hero-frame__img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.hero-frame__foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
  padding: 0.875rem 1.25rem;
  background: var(--cream);
  border-top: 2px solid var(--charcoal);
}

.hero-frame__meta { min-width: 0; }

.hero-frame__name {
  font-family: var(--font-display);
  font-weight: 900;
  font-size: 1.125rem;
  line-height: 1.2;
  color: var(--charcoal);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.hero-frame__stat {
  margin-top: 0.125rem;
  font-size: 0.75rem;
  color: var(--muted-foreground);
}

/* --demo variant — same look as --primary; kept as a class hook for the
   Hero "Play Demo" inside the editorial frame, in case it later needs a
   subtle variation. All sizing inherited from .btn base. */
.btn--demo {
  background: var(--cherry);
  color: #fff;
}
.btn--demo:hover {
  background: var(--cherry-dark, oklch(0.48 0.21 27.5));
  color: #fff;
}

/* ---------------------------------------------------------------------------
   56. Discovery — 5-pillar cards with accent tops
--------------------------------------------------------------------------- */

.discovery-section { background: transparent; }

.discovery-section__inner {
  max-width: 1280px;
  margin-inline: auto;
  padding: 4rem 1rem;
}

@media (min-width: 1024px) {
  .discovery-section__inner { padding: 5rem 2rem; }
}

.discovery-section__head {
  display: grid;
  grid-template-columns: 1fr;
  gap: 2.5rem;
  margin-bottom: 2rem;
  align-items: flex-start;
}

@media (min-width: 1024px) {
  .discovery-section__head { grid-template-columns: 1.3fr 1fr; gap: 3.5rem; }
}

.discovery-section__lede {
  margin: 1rem 0 0;
  max-width: 650px;
  font-size: 1rem;
  line-height: 1.55;
  color: color-mix(in oklab, var(--charcoal) 75%, transparent);
}

@media (min-width: 1024px) {
  .discovery-section__lede { font-size: 1.125rem; }
}

.discovery-section__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1rem;
}

@media (min-width: 640px)  { .discovery-section__grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 768px)  { .discovery-section__grid { grid-template-columns: repeat(3, 1fr); } }
@media (min-width: 1024px) { .discovery-section__grid { grid-template-columns: repeat(5, 1fr); } }

.discovery-card {
  position: relative;
  display: block;
  background: var(--cream);
  border: 2px solid var(--charcoal);
  border-top-width: 3px;
  padding: 1rem;
  text-decoration: none;
  color: var(--charcoal);
  transition: transform 200ms ease;
  box-shadow: none;
}

.discovery-card:hover { transform: translate(-1px, -1px); }

.discovery-card--accent-cherry { border-top-color: var(--cherry); }
.discovery-card--accent-gold   { border-top-color: var(--gold); }
.discovery-card--accent-felt   { border-top-color: var(--felt); }

.discovery-card__sticker {
  position: absolute;
  bottom: 0.75rem;
  right: 0.75rem;
  z-index: 1;
  pointer-events: none;
}

.discovery-card__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
}

.discovery-card__arrow {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  border: 2px solid var(--charcoal);
  background: color-mix(in oklab, var(--cherry) 14%, transparent);
  color: var(--cherry);
}

.discovery-card--accent-gold .discovery-card__arrow {
  background: color-mix(in oklab, var(--gold) 14%, transparent);
  color: var(--gold-dark, oklch(0.65 0.16 80));
}
.discovery-card--accent-felt .discovery-card__arrow {
  background: color-mix(in oklab, var(--felt) 14%, transparent);
  color: var(--felt);
}

.discovery-card__count {
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: 0.18em;
  font-weight: 800;
  color: var(--muted-foreground);
}

.discovery-card__label {
  margin: 0.75rem 0 0;
  font-family: var(--font-display);
  font-size: 1rem;
  font-weight: 900;
  letter-spacing: -0.01em;
  color: var(--charcoal);
}

.discovery-card__desc {
  margin: 0.25rem 0 0;
  font-size: 0.8125rem;
  line-height: 1.55;
  color: var(--muted-foreground);
}

.discovery-card__cta {
  margin-top: 0.75rem;
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  font-size: 11px;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: var(--cherry);
}

/* ---------------------------------------------------------------------------
   57. Latest Reviews
--------------------------------------------------------------------------- */

.latest-reviews-section { background: transparent; }

.latest-reviews-section__inner {
  max-width: 1280px;
  margin-inline: auto;
  padding: 0 1rem 4rem;
}

@media (min-width: 1024px) {
  .latest-reviews-section__inner { padding: 0 2rem 4rem; }
}

.latest-reviews-section__head {
  display: grid;
  grid-template-columns: 1fr;
  gap: 2.5rem;
  margin-bottom: 2rem;
  align-items: flex-start;
}

@media (min-width: 1024px) {
  .latest-reviews-section__head { grid-template-columns: 1.3fr 1fr; gap: 3.5rem; }
}

.latest-reviews-section__lede {
  margin: 1rem 0 0;
  max-width: 650px;
  font-size: 1rem;
  line-height: 1.55;
  color: color-mix(in oklab, var(--charcoal) 75%, transparent);
}

@media (min-width: 1024px) {
  .latest-reviews-section__lede { font-size: 1.125rem; }
}

.latest-reviews-section__more {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  margin-top: 1rem;
  font-size: 0.875rem;
  font-weight: 600;
  color: var(--cherry);
  text-decoration: none;
}
.latest-reviews-section__more:hover { text-decoration: underline; }

.latest-reviews-section__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1.25rem;
}

@media (min-width: 640px)  { .latest-reviews-section__grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) { .latest-reviews-section__grid { grid-template-columns: repeat(4, 1fr); } }

/* ---------------------------------------------------------------------------
   58. Featured This Month — pink gradient + Editor's Pick badge
--------------------------------------------------------------------------- */

.featured-month-section {
  background: linear-gradient(to bottom, #F5DCDC 0%, #EFC9C9 100%);
  border-top: 2px solid var(--charcoal);
  border-bottom: 2px solid var(--charcoal);
}

.featured-month-section__inner {
  max-width: 1280px;
  margin-inline: auto;
  padding: 4rem 1rem;
}

@media (min-width: 1024px) {
  .featured-month-section__inner { padding: 5rem 2rem; }
}

.featured-month-section__head {
  display: grid;
  grid-template-columns: 1fr;
  gap: 2.5rem;
  margin-bottom: 2rem;
  align-items: flex-start;
}

@media (min-width: 1024px) {
  .featured-month-section__head { grid-template-columns: 1.3fr 1fr; gap: 3.5rem; }
}

.featured-month-section__lede {
  margin: 1rem 0 0;
  max-width: 650px;
  font-size: 1rem;
  line-height: 1.55;
  color: color-mix(in oklab, var(--charcoal) 75%, transparent);
}

@media (min-width: 1024px) {
  .featured-month-section__lede { font-size: 1.125rem; }
}

.featured-month-section__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1.25rem;
}

@media (min-width: 640px)  { .featured-month-section__grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) { .featured-month-section__grid { grid-template-columns: repeat(4, 1fr); } }

.featured-month-card {
  position: relative;
}

.featured-month-card__badge {
  position: absolute;
  top: -0.5rem;
  right: -0.5rem;
  z-index: 2;
  display: inline-flex;
  align-items: center;
  gap: 0.375rem;
  padding: 0.25rem 0.75rem 0.25rem 0.375rem;
  background: var(--cherry);
  color: #fff;
  border: 2px solid var(--charcoal);
  font-size: 10px;
  font-weight: 900;
  text-transform: uppercase;
  letter-spacing: 0.15em;
}

.featured-month-card__badge-sticker {
  display: inline-flex;
  align-items: center;
  flex-shrink: 0;
}

/* ---------------------------------------------------------------------------
   59. Popular UK Slot Themes — sage-green panel + theme tiles
--------------------------------------------------------------------------- */

.popular-themes-section {
  background: #DCE5CC;  /* Lovable inline, not in brand vars yet */
}

.popular-themes-section__inner {
  max-width: 1280px;
  margin-inline: auto;
  padding: 4rem 1rem;
}

@media (min-width: 1024px) {
  .popular-themes-section__inner { padding: 5rem 2rem; }
}

.popular-themes-section__head {
  display: grid;
  grid-template-columns: 1fr;
  gap: 2.5rem;
  margin-bottom: 2rem;
  align-items: flex-start;
}

@media (min-width: 1024px) {
  .popular-themes-section__head { grid-template-columns: 1.3fr 1fr; gap: 3.5rem; }
}

.popular-themes-section__lede {
  margin: 1rem 0 0;
  max-width: 650px;
  font-size: 1rem;
  line-height: 1.55;
  color: color-mix(in oklab, var(--charcoal) 75%, transparent);
}

@media (min-width: 1024px) {
  .popular-themes-section__lede { font-size: 1.125rem; }
}

.popular-themes-section__more {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  margin-top: 1rem;
  font-size: 0.875rem;
  font-weight: 700;
  color: var(--felt);
  text-decoration: none;
}
.popular-themes-section__more:hover { text-decoration: underline; }

.popular-themes-section__grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 1rem;
}

@media (min-width: 768px)  { .popular-themes-section__grid { grid-template-columns: repeat(3, 1fr); } }
@media (min-width: 1024px) { .popular-themes-section__grid { grid-template-columns: repeat(6, 1fr); } }

.popular-themes-tile {
  position: relative;
  display: block;
  aspect-ratio: 4 / 3;
  overflow: hidden;
  border: 2px solid var(--charcoal);
  background: var(--cream);
  text-decoration: none;
  color: var(--cream);
}

.popular-themes-tile--bespoke {
  transition: transform 200ms ease;
}
.popular-themes-tile--bespoke:hover { transform: translate(-1px, -1px); }

.popular-themes-tile__img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 500ms ease;
}

.popular-themes-tile--bespoke:hover .popular-themes-tile__img { transform: scale(1.03); }

.popular-themes-tile__corner {
  position: absolute;
  top: 0.5rem;
  right: 0.5rem;
  width: 12px;
  height: 12px;
  border-top: 2px solid var(--gold);
  border-right: 2px solid var(--gold);
}

.popular-themes-tile__overlay {
  position: absolute;
  inset-inline: 0;
  bottom: 0;
  padding: 2.5rem 0.75rem 0.75rem;
  background: linear-gradient(to top, color-mix(in oklab, var(--charcoal) 90%, transparent), color-mix(in oklab, var(--charcoal) 45%, transparent) 45%, transparent);
}

.popular-themes-tile__name {
  display: block;
  font-family: var(--font-display);
  font-weight: 900;
  font-size: 0.875rem;
  letter-spacing: -0.01em;
  color: var(--cream);
}

.popular-themes-tile__cta {
  margin-top: 0.125rem;
  display: inline-block;
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: 0.15em;
  font-weight: 700;
  color: color-mix(in oklab, var(--gold) 95%, transparent);
}

/* ---------------------------------------------------------------------------
   60. Browse by Mechanic — charcoal bg + 5 mech cards + UKGC callout
--------------------------------------------------------------------------- */

.browse-mech-section {
  background: var(--charcoal);
  color: var(--cream);
  border-top: 2px solid var(--gold);
  border-bottom: 2px solid var(--gold);
}

.browse-mech-section__inner {
  max-width: 1280px;
  margin-inline: auto;
  padding: 4rem 1rem;
}

@media (min-width: 1024px) {
  .browse-mech-section__inner { padding: 5rem 2rem; }
}

.browse-mech-section__head {
  display: grid;
  grid-template-columns: 1fr;
  gap: 2.5rem;
  margin-bottom: 2rem;
  align-items: flex-start;
}

@media (min-width: 1024px) {
  .browse-mech-section__head { grid-template-columns: 1.3fr 1fr; gap: 3.5rem; }
}

.browse-mech-section__lede {
  margin: 1rem 0 0;
  max-width: 650px;
  font-size: 1rem;
  line-height: 1.55;
  color: color-mix(in oklab, var(--cream) 75%, transparent);
}

@media (min-width: 1024px) {
  .browse-mech-section__lede { font-size: 1.125rem; }
}

.browse-mech-section__more {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  margin-top: 1rem;
  font-size: 0.875rem;
  font-weight: 700;
  color: var(--gold);
  text-decoration: none;
}
.browse-mech-section__more:hover { text-decoration: underline; }

.browse-mech-section__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1rem;
}

@media (min-width: 640px)  { .browse-mech-section__grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) { .browse-mech-section__grid { grid-template-columns: repeat(3, 1fr); } }

/* -- mechanic-card --------------------------------------------------- */

.mechanic-card {
  position: relative;
  display: block;
  background: var(--cream);
  color: var(--charcoal);
  border: 2px solid var(--charcoal);
  padding: 1.25rem;
  text-decoration: none;
}

.mechanic-card--banned { border-color: var(--felt); }

.mechanic-card--bespoke {
  transition: transform 200ms ease;
}
.mechanic-card--bespoke:hover { transform: translate(-1px, -1px); }

.mechanic-card__corner {
  position: absolute;
  top: 0.5rem;
  right: 0.5rem;
  width: 12px;
  height: 12px;
  border-top: 2px solid color-mix(in oklab, var(--gold) 80%, transparent);
  border-right: 2px solid color-mix(in oklab, var(--gold) 80%, transparent);
}

.mechanic-card__row {
  display: flex;
  align-items: flex-start;
  gap: 1rem;
}

.mechanic-card__icon {
  flex-shrink: 0;
  width: 56px;
  height: 56px;
  background: var(--cream-100);
  border-radius: 0.75rem;
  padding: 0.5rem;
  display: flex;
  align-items: center;
  justify-content: center;
}

.mechanic-card__icon-img {
  width: 100%;
  height: 100%;
  object-fit: contain;
}

.mechanic-card__body { flex: 1; min-width: 0; }

.mechanic-card__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem;
}

.mechanic-card__name {
  margin: 0;
  font-family: var(--font-display);
  font-weight: 900;
  font-size: 1.25rem;
  letter-spacing: -0.01em;
  color: var(--charcoal);
}

.mechanic-card__banned {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  padding: 0.125rem 0.5rem;
  background: var(--felt);
  color: var(--cream);
  border: 2px solid var(--charcoal);
  font-size: 10px;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.12em;
}

.mechanic-card__desc {
  margin: 0.375rem 0 0;
  font-size: 0.875rem;
  color: var(--muted-foreground);
}

.mechanic-card__cta {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  margin-top: 0.75rem;
  font-size: 0.75rem;
  font-weight: 800;
  color: var(--cherry);
}

/* -- UKGC Feature Buy callout --------------------------------------- */

.browse-mech-section__callout {
  margin-top: 2rem;
  display: flex;
  align-items: flex-start;
  gap: 1rem;
  background: var(--cream);
  color: var(--charcoal);
  border-left: 4px solid var(--felt);
  padding: 1.5rem;
}

.browse-mech-section__callout-icon {
  flex-shrink: 0;
  width: 40px;
  height: 40px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  background: color-mix(in oklab, var(--cherry) 15%, transparent);
  color: var(--cherry);
}

.browse-mech-section__callout-title {
  margin: 0;
  font-family: var(--font-display);
  font-weight: 800;
  font-size: 1rem;
  color: var(--charcoal);
}

.browse-mech-section__callout-text {
  margin: 0.5rem 0 0;
  font-size: 0.875rem;
  max-width: 48rem;
  color: var(--muted-foreground);
}

.browse-mech-section__callout-link {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  margin-top: 0.75rem;
  font-size: 0.875rem;
  font-weight: 600;
  color: var(--cherry);
  text-decoration: none;
}
.browse-mech-section__callout-link:hover { text-decoration: underline; }

/* ---------------------------------------------------------------------------
   61. How We Rate — pale-yellow panel + 3-step list

   Scoped at 0.9.65 to `body.home` after the same .how-we-rate-section
   class names were re-used by the brand-new full /how-we-rate page
   (page-how-we-rate.php, Stage 9.64). Without the body.home scope,
   this block's gold-yellow #F5E5B0 background bled onto every section
   of the new methodology page. The homepage callout (template-parts/
   section-how-we-rate.php) only renders on `body.home`, so this scope
   is the correct fix — restricts the legacy panel to its actual page,
   removes the leak at source rather than overriding it downstream.
--------------------------------------------------------------------------- */

body.home .how-we-rate-section {
  background: #F5E5B0;  /* Lovable inline */
  color: var(--charcoal);
}

body.home .how-we-rate-section__inner {
  max-width: 1280px;
  margin-inline: auto;
  padding: 4rem 1rem;
}

@media (min-width: 1024px) {
  body.home .how-we-rate-section__inner { padding: 5rem 2rem; }
}

body.home .how-we-rate-section__head {
  display: grid;
  grid-template-columns: 1fr;
  gap: 2.5rem;
  margin-bottom: 3rem;
  align-items: center;
}

@media (min-width: 1024px) {
  body.home .how-we-rate-section__head { grid-template-columns: 1.3fr 1fr; gap: 3.5rem; }
}

body.home .how-we-rate-section__eyebrow-row {
  display: flex;
  align-items: center;
  gap: 0.75rem;
}

body.home .how-we-rate-section__eyebrow {
  font-size: 0.75rem;
  text-transform: uppercase;
  letter-spacing: 0.2em;
  color: var(--gold-dark, oklch(0.65 0.16 80));
  font-weight: 600;
}

body.home .how-we-rate-section__title {
  margin: 0.75rem 0 0;
  font-family: var(--font-display);
  font-weight: 700;
  font-size: 2.25rem;
  letter-spacing: -0.02em;
}

@media (min-width: 1024px) {
  body.home .how-we-rate-section__title { font-size: 3rem; }
}

body.home .how-we-rate-section__lede {
  margin: 1.25rem 0 1.5rem;
  max-width: 650px;
  font-size: 1rem;
  line-height: 1.55;
  color: color-mix(in oklab, var(--charcoal) 75%, transparent);
}

@media (min-width: 1024px) {
  body.home .how-we-rate-section__lede { font-size: 1.125rem; }
}

body.home .how-we-rate-section__steps {
  list-style: none;
  padding: 0;
  margin: 0;
  display: grid;
  grid-template-columns: 1fr;
  gap: 1rem;
}

@media (min-width: 768px) {
  body.home .how-we-rate-section__steps { grid-template-columns: repeat(3, 1fr); }
}

body.home .how-we-rate-step {
  display: flex;
  align-items: flex-start;
  gap: 1rem;
  padding: 1.25rem;
  background: var(--cream);
  border: 2px solid var(--charcoal);
}

body.home .how-we-rate-step__n {
  flex-shrink: 0;
  width: 2.5rem;
  font-size: 1.5rem;
  font-weight: 900;
  color: var(--gold-dark, oklch(0.65 0.16 80));
}

body.home .how-we-rate-step__label {
  font-family: var(--font-display);
  font-weight: 900;
  font-size: 1.125rem;
  letter-spacing: -0.01em;
  color: var(--charcoal);
}

body.home .how-we-rate-step__desc {
  margin-top: 0.25rem;
  font-size: 0.875rem;
  line-height: 1.65;
  color: color-mix(in oklab, var(--charcoal) 70%, transparent);
}

/* ---------------------------------------------------------------------------
   62. UK Slot Regulation 2026 — charcoal bg + 4 reg cards
--------------------------------------------------------------------------- */

.uk-reg-section {
  position: relative;
  overflow: hidden;
  background: var(--charcoal);
  color: var(--cream);
  border-top: 2px solid var(--gold);
  border-bottom: 2px solid var(--gold);
}

.uk-reg-section__top-accent {
  position: absolute;
  inset-inline: 0;
  top: 0;
  height: 1px;
  background: linear-gradient(to right, transparent, color-mix(in oklab, var(--gold) 60%, transparent), transparent);
}

.uk-reg-section__inner {
  position: relative;
  max-width: 1280px;
  margin-inline: auto;
  padding: 4rem 1rem;
}

@media (min-width: 1024px) {
  .uk-reg-section__inner { padding: 5rem 2rem; }
}

.uk-reg-section__head { max-width: 48rem; }

.uk-reg-section__eyebrow {
  font-size: 0.75rem;
  text-transform: uppercase;
  letter-spacing: 0.22em;
  font-weight: 900;
  color: var(--gold);
}

.uk-reg-section__title {
  margin: 0.75rem 0 0;
  font-family: var(--font-display);
  font-weight: 900;
  font-size: 1.875rem;
  letter-spacing: -0.02em;
}

@media (min-width: 1024px) {
  .uk-reg-section__title { font-size: 3rem; }
}

.uk-reg-section__lede {
  margin: 1rem 0 0;
  font-size: 1.125rem;
  line-height: 1.55;
  color: color-mix(in oklab, var(--cream) 75%, transparent);
}

.uk-reg-section__grid {
  margin-top: 2.5rem;
  display: grid;
  grid-template-columns: 1fr;
  gap: 1.25rem;
}

@media (min-width: 768px) { .uk-reg-section__grid { grid-template-columns: repeat(2, 1fr); } }

.reg-card {
  background: color-mix(in oklab, var(--cream) 4%, transparent);
  border: 2px solid color-mix(in oklab, var(--gold) 60%, transparent);
  padding: 1.5rem;
  transition: border-color 150ms ease, background-color 150ms ease;
}

.reg-card:hover {
  border-color: var(--gold);
  background: color-mix(in oklab, var(--cream) 7%, transparent);
}

.reg-card__head {
  display: flex;
  align-items: center;
  gap: 0.75rem;
}

.reg-card__ornament {
  width: 48px;
  height: 48px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--charcoal);
  border: 1px solid var(--gold);
  color: var(--gold);
}

.reg-card__title {
  margin: 0;
  font-family: var(--font-display);
  font-weight: 900;
  font-size: 1.125rem;
  letter-spacing: -0.01em;
  color: var(--cream);
}

.reg-card__body {
  margin: 0.75rem 0 0;
  font-size: 0.875rem;
  line-height: 1.7;
  color: color-mix(in oklab, var(--cream) 80%, transparent);
}

.uk-reg-section__closing {
  margin-top: 2rem;
  font-size: 0.875rem;
  font-weight: 700;
  color: var(--cream);
}

.uk-reg-section__links {
  margin-top: 0.75rem;
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem 1.25rem;
  font-size: 0.875rem;
}

.uk-reg-section__links a {
  color: var(--gold);
  font-weight: 700;
  text-decoration: none;
}
.uk-reg-section__links a:hover { text-decoration: underline; }

.uk-reg-section__links span {
  color: var(--gold);
  font-weight: 700;
}

/* ---------------------------------------------------------------------------
   63. Editorial Team — "Meet Our Editors" 3-card grid
--------------------------------------------------------------------------- */

.editorial-team-section { background: transparent; }

.editorial-team-section__inner {
  max-width: 1280px;
  margin-inline: auto;
  padding: 4rem 1rem;
}

@media (min-width: 1024px) {
  .editorial-team-section__inner { padding: 5rem 2rem; }
}

.editorial-team-section__head {
  max-width: 36rem;
  margin: 0 auto 2.5rem;
  text-align: center;
}

.editorial-team-section__eyebrow {
  font-size: 0.75rem;
  text-transform: uppercase;
  letter-spacing: 0.2em;
  font-weight: 700;
  color: var(--cherry);
}

.editorial-team-section__title {
  margin: 0.75rem 0 0;
  font-family: var(--font-display);
  font-weight: 900;
  font-size: 1.75rem;
  letter-spacing: -0.01em;
  color: var(--charcoal);
}

@media (min-width: 1024px) {
  .editorial-team-section__title { font-size: 2.25rem; }
}

.editorial-team-section__lede {
  margin: 1rem 0 0;
  font-size: 1rem;
  line-height: 1.55;
  color: color-mix(in oklab, var(--charcoal) 75%, transparent);
}

.editorial-team-section__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1.25rem;
}

@media (min-width: 640px) { .editorial-team-section__grid { grid-template-columns: repeat(3, 1fr); gap: 1.5rem; } }

.editor-card {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  padding: 1.25rem;
  background: var(--cream);
  border: 2px solid var(--charcoal);
  transition: border-color 150ms ease;
}

@media (min-width: 1024px) { .editor-card { padding: 1.5rem; } }

.editor-card:hover { border-color: var(--cherry); }

.editor-card__photo {
  width: 104px;
  height: 104px;
  border-radius: 50%;
  overflow: hidden;
  background: linear-gradient(to bottom right, var(--cherry), var(--gold));
  color: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 700;
  font-size: 1.5rem;
  flex-shrink: 0;
}

.editor-card__photo-img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.editor-card__name {
  margin: 1rem 0 0;
  font-family: var(--font-display);
  font-weight: 900;
  font-size: 1.125rem;
  letter-spacing: -0.01em;
  color: var(--charcoal);
}

.editor-card__role {
  margin: 0.25rem 0 0;
  font-size: 0.75rem;
  font-weight: 600;
  color: color-mix(in oklab, var(--charcoal) 70%, transparent);
}

.editor-card__bio {
  margin: 0.75rem 0 0;
  /* Literal 13px (not 0.8125rem) — Lovable uses `text-[13px]` which is
     immune to the html { font-size: 85% } scale. line-height 1.55 ratio
     matches Lovable's `leading-[1.55]`. */
  font-size: 13px;
  line-height: 1.55;
  color: color-mix(in oklab, var(--charcoal) 80%, transparent);
}

.editor-card__x {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  margin-top: 1rem;
  font-size: 13px;
  font-weight: 500;
  font-family: var(--font-mono);
  letter-spacing: -0.01em;
  color: color-mix(in oklab, var(--charcoal) 80%, transparent);
  text-decoration: none;
}
.editor-card__x:hover { color: var(--cherry); }

.editor-card__profile {
  display: inline-block;
  margin-top: 0.75rem;
  font-size: 0.75rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--cherry);
  text-decoration: none;
}
.editor-card__profile:hover { text-decoration: underline; }

.editorial-team-section__foot {
  margin-top: 2rem;
  text-align: center;
  font-size: 0.75rem;
  color: color-mix(in oklab, var(--charcoal) 70%, transparent);
}

.editorial-team-section__foot a {
  color: var(--cherry);
  font-weight: 600;
  text-decoration: none;
}
.editorial-team-section__foot a:hover { text-decoration: underline; }

/* Sticker divider wrappers — narrow strip with a background colour
   between transitioning sections. Cream between Hero -> Casino Bonuses,
   pink under Featured This Month, yellow under How We Rate. */
.home-sticker-divider { padding: 1.5rem 0; }
.home-sticker-divider--cream  { background: var(--cream); }
.home-sticker-divider--pink   { background: #EFC9C9; }
.home-sticker-divider--yellow { background: #F5E5B0; }

/* ===========================================================================
   STAGE 8 — single-slot review page (0.8.0).
   ---------------------------------------------------------------------------
   Adds three new components used by single-slot.php and its partials:
     - .slot-hero__score-badge   cherry-box RoverScore lg variant
     - .demo-frame                iframe (or placeholder) + 18+ caption
     - .slot-where-to-play        12-casino UKGC operators section
   =========================================================================== */

/* ---------------------------------------------------------------------------
   Slot hero — RoverScore cherry-box badge (size lg). Replaces the older
   red-banner .slot-hero__score treatment. Sized to match Lovable's
   RoverScoreBadge size="lg": w-20 (5rem) × h-16 (4rem), text-3xl (1.875rem).
--------------------------------------------------------------------------- */

.slot-hero__score-badge {
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  gap: 0.25rem;
  margin: 0.75rem 0;
}

.slot-hero__score-badge-box {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 5rem;
  height: 4rem;
  background: var(--cherry);
  color: #ffffff;
  border: 2px solid var(--charcoal);
  font-size: 1.875rem;
  font-weight: 900;
  line-height: 1;
}

.slot-hero__score-badge-label {
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: 0.18em;
  font-weight: 800;
  color: var(--charcoal);
}

/* ---------------------------------------------------------------------------
   .demo-frame — iframe or placeholder + 18+ caption.
   Future-proof: when _slot_demo_iframe meta is populated, the iframe replaces
   the .demo-frame__placeholder at identical container dimensions. Aspect
   ratio 16:9 matches slotslaunch.com / most provider demo players.
--------------------------------------------------------------------------- */

.demo-frame {
  margin: 1.5rem 0;
}

.demo-frame__inner {
  max-width: 880px;
  margin-inline: auto;
}

.demo-frame__media {
  position: relative;
  width: 100%;
  aspect-ratio: 16 / 9;
  background: var(--charcoal);
  border: 2px solid var(--charcoal);
  overflow: hidden;
}

.demo-frame__media iframe {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
  display: block;
}

.demo-frame__placeholder {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0.75rem;
  color: color-mix(in oklab, var(--cream) 60%, transparent);
}

.demo-frame__play {
  width: 56px;
  height: 56px;
  color: inherit;
}

.demo-frame__placeholder-label {
  font-size: 0.95rem;
  font-weight: 700;
  letter-spacing: normal;
  text-transform: none;
  color: var(--cream);
}
.demo-frame__placeholder-sublabel {
  margin-top: 0.25rem;
  font-size: 0.8125rem;
  font-weight: 400;
  color: color-mix(in oklab, var(--cream) 60%, transparent);
}

.demo-frame__caption {
  display: flex;
  align-items: center;
  gap: 0.625rem;
  margin: 0.75rem 0 0;
  font-size: 0.75rem;
  line-height: 1.4;
  color: var(--muted-foreground);
}

.demo-frame__age-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.5rem;
  height: 1.5rem;
  border: 1.5px solid var(--charcoal);
  border-radius: 9999px;
  font-size: 9px;
  font-weight: 800;
  letter-spacing: 0;
  color: var(--charcoal);
  flex-shrink: 0;
}

/* ---------------------------------------------------------------------------
   .slot-where-to-play — UKGC casino section on a slot review page. Reuses
   .casino-card from the homepage Casino Bonuses section so the visual
   treatment stays in lockstep.
--------------------------------------------------------------------------- */

.slot-where-to-play {
  background-color: var(--cream-100);
  border-top:    2px solid var(--charcoal);
  border-bottom: 2px solid var(--charcoal);
  margin-top: 2.5rem;
}

.slot-where-to-play__inner {
  max-width: 1280px;
  margin-inline: auto;
  padding: 3rem 1rem;
}

@media (min-width: 1024px) {
  .slot-where-to-play__inner { padding: 4rem 2rem; }
}

.slot-where-to-play__head {
  margin-bottom: 2rem;
}

.slot-where-to-play__eyebrow {
  display: inline-block;
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.2em;
  font-weight: 800;
  color: var(--cherry);
}

.slot-where-to-play__title {
  margin: 0.5rem 0 0;
  color: var(--charcoal);
}

.slot-where-to-play__sub {
  margin: 0.75rem 0 0;
  max-width: 650px;
  font-size: 0.875rem;
  line-height: 1.55;
  color: var(--muted-foreground);
}

.slot-where-to-play__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1.25rem;
}

@media (min-width: 640px)  { .slot-where-to-play__grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1024px) { .slot-where-to-play__grid { grid-template-columns: repeat(3, 1fr); } }
@media (min-width: 1280px) { .slot-where-to-play__grid { grid-template-columns: repeat(4, 1fr); } }

/* ===========================================================================
   STAGE 8.1 — single-slot pixel-match pass (0.8.1).
   Targets body.single-slot so the homepage / other CPTs are unaffected.
   Mirrors live Lovable /slots/{slug} sizing, chip styles, panel widths,
   table/body-text alpha, BeGambleAware compliance band, and demo frame.
   =========================================================================== */

/* Body-section width — Lov uses max-w-[880px] mx-auto for nearly every
   block (hero, demo, body, related, disclosure). Breadcrumb wraps full
   and Where-to-Play has its own 880 panel with charcoal border. */
body.single-slot .slot-hero,
body.single-slot .demo-frame,
body.single-slot .article-content,
body.single-slot .slot-content,
body.single-slot .score-breakdown,
body.single-slot .related-slots,
body.single-slot .disclosure-footer {
  max-width: 880px;
  margin-inline: auto;
}

/* Breadcrumb wrap — full container-width panel, cream-100 50% bg, border-b.
   Negative margin-top neutralises .site-main's 2rem top padding so the
   breadcrumb sits flush against the bottom of the site header (matches
   Lov, where the breadcrumb starts immediately under the nav border). */
body.single-slot .breadcrumb-wrap {
  /* The breadcrumb wrap now sits as a sibling of .container (template
     restructure in single-slot.php), so its default block width = 100%
     of .site-main = true viewport content area. No negative-margin
     gymnastics, no `100vw` scrollbar-gutter trap. The only margin left
     is the -2rem top to neutralise .site-main's 2rem padding-block so
     the panel sits flush against the header. Inner padding-inline keeps
     the breadcrumb text padded from the viewport edges. */
  margin: calc(var(--container-padding-x-md, 2rem) * -1) 0 0;
  padding-block:  0.75rem;
  padding-inline: var(--container-padding-x);
  background: color-mix(in oklab, var(--cream-100) 50%, transparent);
  border-bottom: 1px solid var(--border);
}
@media (min-width: 768px) {
  body.single-slot .breadcrumb-wrap {
    padding-inline: var(--container-padding-x-md);
  }
}
body.single-slot .breadcrumb-wrap .breadcrumb {
  max-width: 880px;
  margin: 0 auto;
  padding: 0;
}

/* Slot hero — 880-wide 2-col grid; remove old charcoal bottom border. */
body.single-slot .slot-hero {
  border-bottom: 1px solid var(--border);
  padding: 2.5rem 0 2rem;
  margin-bottom: 0;
  gap: 2rem;
}

/* UKGC pill — felt-10% bg + felt text + felt-20% border, weight 600, no
   uppercase. Replaces the older solid-felt + uppercase treatment. */
body.single-slot .slot-hero__chip {
  display: inline-flex;
  align-items: center;
  align-self: flex-start;
  gap: 0.5rem;
  padding: 0.3125rem 0.625rem;
  background: color-mix(in oklab, var(--felt) 10%, transparent);
  color: var(--felt);
  font-size: 0.625rem;
  font-weight: 600;
  text-transform: none;
  letter-spacing: normal;
  border: 1px solid color-mix(in oklab, var(--felt) 20%, transparent);
  border-radius: 9999px;
}

/* Hero h1 — keep global !important size, but override letter-spacing.
   .slot-hero__title's old letter-spacing -0.02em fights the global -0.01em
   !important; explicit !important match keeps Lov's tighter spec. */
body.single-slot .slot-hero__title {
  margin: 0.5rem 0 0;
  line-height: 1.1 !important;
}

/* Provider line — text-lg (15.3px at 85% root), weight 400, muted color. */
body.single-slot .slot-hero__provider {
  margin: 0;
  font-size: 1.125rem;
  font-weight: 400;
  color: var(--muted-foreground);
}

/* Provider logo box — small bordered card below the "by Push Gaming" line.
   Matches Lov: inline-flex h-10 px-3 border-border bg-cream-100. Hover ring
   shifts to cherry/40 on Lov; we mirror with color-mix. Renders either the
   provider's attachment image (if _provider_logo_id term meta is set) or a
   text wordmark of the provider display name. */
body.single-slot .slot-hero__provider-logo {
  margin-top: 0.75rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  align-self: flex-start;
  height: 2.5rem;
  padding: 0 0.75rem;
  background: var(--cream-100);
  border: 1px solid var(--border);
  color: var(--charcoal);
  text-decoration: none;
  transition: border-color 150ms ease;
}
body.single-slot .slot-hero__provider-logo:hover {
  border-color: color-mix(in oklab, var(--cherry) 40%, transparent);
  color: var(--charcoal);
}
/* Non-clickable variant — when the provider has no editorial hub (would 404).
   Renders as <div>; no hover affordance, no pointer cursor. */
body.single-slot .slot-hero__provider-logo--static,
body.single-slot .slot-hero__provider-logo--static:hover {
  cursor: default;
  border-color: var(--border);
  pointer-events: none;
}
body.single-slot .slot-hero__provider-logo-img {
  display: block;
  width: auto;
  height: auto;
  max-height: 1.25rem;
}
body.single-slot .slot-hero__provider-logo-text {
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.02em;
}

/* RoverScore badge — inline-flex column, only as wide as cabinet. */
body.single-slot .slot-hero__score-badge {
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  align-self: flex-start;
  gap: 0.25rem;
  width: auto;
  margin: 0.75rem 0 0;
}

/* Attribute chips — cream-100 bg pill, weight 500, no uppercase, fully
   rounded. The chip text comes from slotrover_render_term_link() which
   outputs either <a class="term-link"> or <span class="term-link...">; we
   style both the <li> and the term-link inside it. */
body.single-slot .slot-hero__chips {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
}
body.single-slot .slot-hero__chips li {
  display: inline-flex;
}
body.single-slot .slot-hero__chips li .term-link,
body.single-slot .slot-hero__chips li > a,
body.single-slot .slot-hero__chips li > span {
  display: inline-block;
  padding: 0.3125rem 0.625rem;
  background: var(--cream-100);
  color: var(--charcoal);
  font-size: 0.75rem;
  font-weight: 500;
  text-transform: none;
  letter-spacing: normal;
  border: 0;
  border-radius: 9999px;
  text-decoration: none;
}

/* Reviewer byline — text-xs (10.2px), weight 500. */
body.single-slot .slot-hero__byline {
  margin: 0.5rem 0 0;
  font-size: 0.75rem;
  font-weight: 500;
  color: var(--muted-foreground);
}
body.single-slot .slot-hero__byline a {
  color: var(--cherry);
  font-weight: 500;
  text-decoration: none;
}

/* 3-stat row — max-w-md (28rem), grid 3-col gap-3; per-tile cream-100
   card with border-top-2 (var(--border)), rounded-xl. Variance value
   forces uppercase via the --variance modifier. */
body.single-slot .slot-hero__stats {
  list-style: none;
  margin: 1.75rem 0 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 0.75rem;
  max-width: 28rem;
  border: 0;
}
body.single-slot .slot-hero__stats li {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0.25rem;
  padding: 0.75rem;
  background: var(--cream-100);
  border: 0;
  border-top: 2px solid var(--border);
  border-radius: 0.75rem;
  text-align: left;
}
/* Colored top borders per stat tile — values extracted from Lov DOM:
   RTP=felt (oklch 0.38 0.09 158), Max Win=gold (oklch 0.82 0.165 80),
   Variance=cherry (oklch 0.566 0.215 27.5). Selectors include the `li`
   tag so specificity beats `.slot-hero__stats li` (0,0,2,2 vs 0,0,3,2). */
body.single-slot .slot-hero__stats li.slot-hero__stat--rtp      { border-top-color: var(--felt); }
body.single-slot .slot-hero__stats li.slot-hero__stat--maxwin   { border-top-color: var(--gold); }
body.single-slot .slot-hero__stats li.slot-hero__stat--variance { border-top-color: var(--cherry); }
body.single-slot .slot-hero__stat-label {
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: var(--muted-foreground);
}
body.single-slot .slot-hero__stat-value {
  font-size: 1.125rem;
  font-weight: 700;
  line-height: 1.4;
  margin-top: 0.25rem;
  color: var(--charcoal);
  text-transform: none;
}
body.single-slot .slot-hero__stat-value--variance {
  text-transform: uppercase;
}

/* Hero image — 3px charcoal frame around the slot artwork, matching
   Lov's `<div class="aspect-[3/2] border-[3px] border-charcoal ...">`.
   Frame on the wrapper, image fills aspect 3:2 inside. */
body.single-slot .slot-hero__media {
  background: transparent;
  box-shadow: none;
  align-self: start;
  overflow: hidden;
  border: 3px solid var(--charcoal);
  aspect-ratio: 3 / 2;
  position: relative;
}
body.single-slot .slot-hero__media img {
  width: 100%;
  height: 100%;
  aspect-ratio: 3 / 2;
  object-fit: cover;
  border-radius: 0;
  display: block;
}

/* Demo frame — 880 max, padding pt-8 px-4 (md:px-6), media rounded-2xl
   with dashed cream/20 border. Caption + age badge in a flex row below.
   Lov collapses the gap into the section's own pt-8 (32px) — no extra
   margin-top. Using `margin-inline: auto` (not the shorthand) keeps the
   centering without zeroing the top space. */
body.single-slot .demo-frame {
  margin: 0 auto;
  padding: 2rem 1rem 0;
}
@media (min-width: 768px) {
  body.single-slot .demo-frame { padding-left: 1.5rem; padding-right: 1.5rem; }
}
body.single-slot .demo-frame__inner { max-width: none; }
body.single-slot .demo-frame__media {
  background: var(--charcoal);
  border: 2px dashed color-mix(in oklab, var(--cream) 20%, transparent);
  border-radius: 1rem;
}
body.single-slot .demo-frame__placeholder {
  color: color-mix(in oklab, var(--cream) 60%, transparent);
}
body.single-slot .demo-frame__placeholder-label {
  /* Lov uses sentence case "Demo iframe placeholder", not uppercase. */
  text-transform: none;
  letter-spacing: normal;
  color: var(--cream);
  font-size: 0.95rem;
  font-weight: 700;
}
body.single-slot .demo-frame__placeholder-sublabel {
  color: color-mix(in oklab, var(--cream) 60%, transparent);
}
body.single-slot .demo-frame__meta {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  /* Lov gap-3 = 12px. */
  gap: 0.75rem;
  margin: 0.75rem 0 0;
}
body.single-slot .demo-frame__age-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.5rem;
  height: 1.5rem;
  border: 1px solid color-mix(in oklab, var(--charcoal) 70%, transparent);
  border-radius: 9999px;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0;
  color: color-mix(in oklab, var(--charcoal) 70%, transparent);
  background: transparent;
  flex-shrink: 0;
}
body.single-slot .demo-frame__caption {
  /* Lov: text-[13px]. */
  font-size: 0.8125rem;
  line-height: 1.5;
  color: color-mix(in oklab, var(--charcoal) 70%, transparent);
}

/* Where-to-Play — outer transparent (no panel bg/border); inner 880-wide
   cream-100/60 panel with charcoal border-2; cards constrained to 2 cols
   max (4-col grid doesn't fit inside 880). */
body.single-slot .slot-where-to-play {
  background: transparent;
  border: 0;
  margin-top: 3.5rem;
  padding: 0;
}
body.single-slot .slot-where-to-play__inner {
  max-width: 880px;
  margin-inline: auto;
  padding: 2.5rem 1.25rem;
  background: color-mix(in oklab, var(--cream-100) 60%, transparent);
  border: 2px solid var(--charcoal);
}
@media (min-width: 768px) {
  body.single-slot .slot-where-to-play__inner { padding: 3.25rem 1.5rem; }
}
/* Casino grid — match Lovable's responsive 1/2/3/4 columns at the
   sm/md/lg breakpoints. The 880-wide panel comfortably fits 4 cards at
   ≥1024px (each card ~190-200px wide, matching Lov's 201px). */
body.single-slot .slot-where-to-play__grid { grid-template-columns: 1fr; gap: 0.625rem; }
@media (min-width: 640px)  { body.single-slot .slot-where-to-play__grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 768px)  { body.single-slot .slot-where-to-play__grid { grid-template-columns: repeat(3, 1fr); } }
@media (min-width: 1024px) { body.single-slot .slot-where-to-play__grid { grid-template-columns: repeat(4, 1fr); } }

/* Compliance band — charcoal panel inside WTP with cream uppercase 11px
   text and BeGambleAware link weight-800 underlined cream. */
.slot-where-to-play__compliance {
  margin-top: 2rem;
  padding: 1rem;
  background: var(--charcoal);
  color: var(--cream);
  text-align: center;
  font-size: 11px;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.15em;
  border: 2px solid var(--charcoal);
  line-height: 1.5;
}
.slot-where-to-play__compliance a {
  color: var(--cream);
  font-weight: 800;
  text-decoration: underline;
  text-underline-offset: 2px;
  text-transform: none;
  letter-spacing: normal;
}
.slot-where-to-play__compliance a:hover { color: var(--gold); }

/* Body content — paragraphs at charcoal/85% alpha, table at text-xs (11.9
   px effective), each h2 acts as a section header with border-top. */
body.single-slot .slot-content {
  margin-bottom: 2.5rem;
}
body.single-slot .slot-content p,
body.single-slot .slot-content li {
  color: color-mix(in oklab, var(--charcoal) 85%, transparent);
  line-height: 1.6;
}
body.single-slot .slot-content h2 {
  margin-top: 4rem;
  padding-top: 4rem;
  border-top: 1px solid var(--border);
}
body.single-slot .slot-content > h2:first-of-type {
  margin-top: 2rem;
  padding-top: 2rem;
  border-top: 0;
}
body.single-slot .slot-content > * + * {
  margin-top: 1.25rem;
}
body.single-slot .slot-content table {
  font-size: 0.875rem;
  line-height: 1.45;
}
body.single-slot .slot-content table th,
body.single-slot .slot-content table td {
  padding: 0.5rem 0.875rem;
  font-size: inherit;
  line-height: inherit;
}

/* Disclosure footer — BeGambleAware link weight 600 underlined. */
body.single-slot .disclosure-footer a {
  font-weight: 600;
  text-decoration: underline;
}

/* ===========================================================================
   STAGE 9.0 — slot-page Lovable parity components (0.9.0).
   ---------------------------------------------------------------------------
   Three new components built to match Lovable exactly:
     - .pros-cons-grid     2-card pros (felt-green) / cons (cherry-red)
     - .faq-accordion      6 collapsible Q/A items, ARIA-wired
     - .related-slot-card  compact thumbnail + score + title card
   =========================================================================== */

/* Pros & Cons — 2-col card grid replacing the raw <table>. Felt-green
   accent on Pros, cherry-red on Cons. White card with 2px charcoal border.
   Each list item gets a colored bullet (svg in the head icon). */
body.single-slot .pros-cons-grid {
  margin-top: 1.5rem;
  display: grid;
  grid-template-columns: 1fr;
  gap: 1rem;
}
@media (min-width: 768px) {
  body.single-slot .pros-cons-grid { grid-template-columns: 1fr 1fr; }
}
.pros-cons-card {
  background: var(--card);
  border: 2px solid var(--charcoal);
  padding: 1.25rem;
}
.pros-cons-card__head {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  margin-bottom: 0.75rem;
  font-weight: 700;
  font-size: 0.9375rem;
}
.pros-cons-card--pros .pros-cons-card__head { color: var(--felt); }
.pros-cons-card--cons .pros-cons-card__head { color: var(--cherry); }
.pros-cons-card__icon { flex-shrink: 0; }
.pros-cons-card__list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}
.pros-cons-card__list li {
  position: relative;
  padding-left: 1.25rem;
  font-size: 0.875rem;
  line-height: 1.55;
  color: color-mix(in oklab, var(--charcoal) 85%, transparent);
}
.pros-cons-card--pros .pros-cons-card__list li::before {
  content: '+';
  position: absolute;
  left: 0;
  top: 0;
  font-weight: 700;
  color: var(--felt);
  font-family: var(--font-mono);
}
.pros-cons-card--cons .pros-cons-card__list li::before {
  content: '\2212'; /* unicode minus */
  position: absolute;
  left: 0;
  top: 0;
  font-weight: 700;
  color: var(--cherry);
  font-family: var(--font-mono);
}

/* FAQ accordion — 6 items separated by 1px border-bottom. Each item is a
   <button> trigger + <div> panel pair. Panel hidden by default, JS toggles
   `hidden` and `aria-expanded`. Chevron rotates 180° when expanded. */
.faq-accordion {
  margin-top: 1rem;
  border-top: 1px solid var(--border);
}
.faq-accordion__item { border-bottom: 1px solid var(--border); }
.faq-accordion__trigger {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding: 1.25rem 0;
  background: transparent;
  border: 0;
  text-align: left;
  cursor: pointer;
  font-family: inherit;
  font-size: 0.95rem;
  color: var(--charcoal);
}
.faq-accordion__question {
  font-weight: 600;
  line-height: 1.4;
}
.faq-accordion__chevron {
  flex-shrink: 0;
  color: var(--charcoal);
  transition: transform 200ms ease, color 200ms ease;
}
/* Expanded state: chevron rotates 180° AND turns cherry; the question text
   also flips to cherry. Matches the Lov accordion's active-question chrome
   so the open item reads as clearly selected. */
.faq-accordion__trigger[aria-expanded="true"] .faq-accordion__chevron {
  transform: rotate(180deg);
  color: var(--cherry);
}
.faq-accordion__trigger[aria-expanded="true"] .faq-accordion__question {
  color: var(--cherry);
}
.faq-accordion__question {
  transition: color 200ms ease;
}
.faq-accordion__panel { padding: 0 0 1.25rem; }
.faq-accordion__panel p {
  margin: 0;
  font-size: 0.9375rem;
  line-height: 1.6;
  color: color-mix(in oklab, var(--charcoal) 85%, transparent);
}

/* Related slots — compact thumbnail card grid, 4 cards in a row at lg.
   Each card is a single anchor with image + score badge top-right + title.
   Matches Lovable's small related-card layout (160×~133 each). */
body.single-slot .related-slots {
  margin-top: 3rem;
  padding-top: 2.5rem;
  border-top: 1px solid var(--border);
}
.related-slots__title { margin: 0 0 0.5rem; }
.related-slots__sub {
  margin: 0 0 1.25rem;
  font-size: 0.875rem;
  color: var(--muted-foreground);
}
/* Grid mirrors Lov's `grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-5`
   so cards stay ~158px wide at lg+ (4 real cards + 1 placeholder column visible
   on lg matches Lov's exact spacing). Gap 10.2px = Tailwind gap-3 at 85% root. */
.related-slots__grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 0.75rem;
}
@media (min-width: 640px)  { .related-slots__grid { grid-template-columns: repeat(3, 1fr); } }
@media (min-width: 768px)  { .related-slots__grid { grid-template-columns: repeat(4, 1fr); } }
@media (min-width: 1024px) { .related-slots__grid { grid-template-columns: repeat(5, 1fr); } }

.related-slot-card {
  display: flex;
  flex-direction: column;
  background: var(--card);
  border: 2px solid var(--charcoal);
  overflow: hidden;
  text-decoration: none;
  color: var(--charcoal);
  transition: transform 200ms ease;
}
.related-slot-card:hover { transform: translate(-2px, -2px); color: var(--charcoal); }

.related-slot-card__media {
  position: relative;
  aspect-ratio: 3 / 2;
  background: var(--cream-100);
  border-bottom: 2px solid var(--charcoal);
  overflow: hidden;
}
.related-slot-card__img,
.related-slot-card .related-slot-card__img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.related-slot-card__media-fallback {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  background: linear-gradient(135deg, var(--cream-100) 0%, var(--cream) 100%);
  color: var(--charcoal);
  font-family: var(--font-mono);
  font-weight: 900;
  font-size: 1.75rem;
  letter-spacing: -0.02em;
}
.related-slot-card__score {
  position: absolute;
  top: 0.375rem;
  right: 0.375rem;
  display: flex;
  align-items: center;
  justify-content: center;
  min-width: 2.25rem;
  height: 1.5rem;
  padding: 0 0.375rem;
  background: var(--cherry);
  color: #ffffff;
  font-weight: 800;
  font-size: 0.8125rem;
  line-height: 1;
}
/* Title tracks Lov's 10px / weight 700 / line-height 12px / -0.1px letter-spacing. */
.related-slot-card__title {
  margin: 0;
  padding: 0.375rem 0.5rem;
  font-size: 10px !important;
  font-weight: 700 !important;
  line-height: 1.2 !important;
  letter-spacing: -0.01em !important;
  color: var(--charcoal);
}

/* Placeholder variant — non-clickable, muted slot-reel icon, blank title strip
   to preserve the grid row height. As real reviewed slots are added they
   replace these from the left (PHP renders real cards first). */
.related-slot-card--placeholder {
  cursor: default;
  transition: none;
  background: var(--cream);
}
.related-slot-card--placeholder:hover { transform: none; }
.related-slot-card--placeholder .related-slot-card__media {
  background: var(--cream-100);
  display: flex;
  align-items: center;
  justify-content: center;
}
.related-slot-card__placeholder-icon {
  color: color-mix(in oklab, var(--charcoal) 22%, transparent);
}
.related-slot-card__title--placeholder {
  color: transparent;
}

/* Reviewer bio — restored in 0.8.2. Lovable structure: section with
   border-top separator + h2, then a flex card (photo left, name +
   headline + bio paragraph right) with rounded-2xl border. */
body.single-slot .reviewer-bio {
  max-width: 880px;
  margin-inline: auto;
  margin-top: 3rem;
  padding-top: 2.5rem;
  border-top: 1px solid var(--border);
}
body.single-slot .reviewer-bio__eyebrow {
  margin: 0 0 1rem;
  font-size: 0.75rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.2em;
  color: var(--cherry);
}
body.single-slot .reviewer-bio__card {
  max-width: 48rem;
  display: flex;
  align-items: flex-start;
  gap: 1rem;
  padding: 1.25rem;
  background: var(--card);
  border: 1px solid var(--border);
  /* Lov uses `rounded-2xl` but the site-wide `--radius: 0` resolves it to 0px;
     match that — no rounded corners on the card. */
  border-radius: 0;
}
body.single-slot .reviewer-bio__photo {
  flex-shrink: 0;
}
body.single-slot .reviewer-bio__photo img,
body.single-slot .reviewer-bio__img {
  /* Lov uses w-20 h-20 (5rem = 68px effective at 85% root) — bumped from
     w-16 / 4rem so the portrait scale matches. */
  width: 5rem;
  height: 5rem;
  border-radius: 9999px;
  object-fit: cover;
  border: 1px solid var(--border);
  display: block;
}
body.single-slot .reviewer-bio__body {
  flex: 1;
  min-width: 0;
}
body.single-slot .reviewer-bio__name {
  margin: 0;
  font-size: 1rem;           /* Lov text-base = 13.6px (was wrongly text-lg) */
  font-weight: 700;
  line-height: 1.55;
}
body.single-slot .reviewer-bio__name a {
  color: var(--charcoal);
  text-decoration: none;
  font-weight: 700;
}
body.single-slot .reviewer-bio__name a:hover { color: var(--cherry); }
body.single-slot .reviewer-bio__headline {
  margin: 0.125rem 0 0;       /* Lov mt-0.5 */
  font-size: 0.75rem;         /* Lov text-xs = 10.2px (was 0.8125 / 11.05) */
  font-weight: 400;
  line-height: 1.35;
  color: var(--muted-foreground);
}
body.single-slot .reviewer-bio__text {
  margin: 0.5rem 0 0;         /* Lov mt-2 */
  /* Lov uses arbitrary text-[13px] (NOT a Tailwind scale step). Literal 13px
     matches exactly so the bio wraps line-for-line with Lov inside the
     535px body column. */
  font-size: 13px;
  font-weight: 400;
  line-height: 1.55;
  color: color-mix(in oklab, var(--charcoal) 80%, transparent);
}

/* Meta row at the bottom of the reviewer card — matches Lov's
   `mt-3 flex flex-wrap items-center gap-x-2 gap-y-1 text-xs text-muted-foreground`.
   All items flow inline left-aligned with · separators between them. No
   space-between, no margin-left:auto push — "View full profile →" comes
   right after "UKGC VERIFIED · " in normal flow. */
body.single-slot .reviewer-bio__meta {
  margin-top: 0.75rem;          /* Lov mt-3 */
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  justify-content: flex-start;
  gap: 0.25rem 0.5rem;          /* Lov gap-x-2 gap-y-1 = 6.8px × 3.4px */
  font-size: 0.75rem;           /* Lov text-xs = 10.2px */
  line-height: 1.35;
  color: var(--muted-foreground);
}
body.single-slot .reviewer-bio__meta-item {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
}
body.single-slot .reviewer-bio__meta-link {
  color: var(--cherry);
  text-decoration: none;
  font-weight: 500;
}
body.single-slot .reviewer-bio__meta-link:hover {
  text-decoration: underline;
}
/* Mute variant — used for the X/Twitter handle so its icon + text render in
   charcoal/80% like Lov, while "View full profile" stays cherry. */
body.single-slot .reviewer-bio__meta-link--mute {
  color: color-mix(in oklab, var(--charcoal) 80%, transparent);
}
body.single-slot .reviewer-bio__meta-link--mute:hover {
  color: var(--charcoal);
}
body.single-slot .reviewer-bio__meta-badge {
  color: var(--felt);
  font-weight: 600;
  text-transform: uppercase;    /* Lov source "UKGC Verified" rendered uppercase */
  letter-spacing: 0.02em;
}
body.single-slot .reviewer-bio__meta-icon {
  flex-shrink: 0;
}
body.single-slot .reviewer-bio__meta-sep {
  color: color-mix(in oklab, var(--charcoal) 30%, transparent);
}

/* ===========================================================================
   STAGE 9.7 — single-theme.php (theme hub) parity pass.
   Mirrors the slot-page width / spacing / typography / component patterns,
   scoped to body.single-theme.
   =========================================================================== */

body.single-theme .theme-hero,
body.single-theme .theme-anchors,
body.single-theme .theme-featured,
body.single-theme .article-content,
body.single-theme .theme-content,
body.single-theme .theme-slots,
body.single-theme .theme-newest,
body.single-theme .theme-related,
body.single-theme .theme-browse-spec,
body.single-theme .related-slots {
  max-width: 880px;
  margin-inline: auto;
}

body.single-theme .breadcrumb-wrap {
  margin-top:   calc(var(--container-padding-x-md, 2rem) * -1);
  margin-left:  calc(var(--container-padding-x) * -1);
  margin-right: calc(var(--container-padding-x) * -1);
  padding: 0.5rem var(--container-padding-x);
  background: color-mix(in oklab, var(--cream-100) 50%, transparent);
  border-bottom: 1px solid var(--border);
  margin-bottom: 0;
}
@media (min-width: 768px) {
  body.single-theme .breadcrumb-wrap {
    margin-left:  calc(var(--container-padding-x-md) * -1);
    margin-right: calc(var(--container-padding-x-md) * -1);
    padding-left:  var(--container-padding-x-md);
    padding-right: var(--container-padding-x-md);
  }
}
body.single-theme .breadcrumb-wrap .breadcrumb {
  max-width: 880px;
  margin: 0 auto;
  padding: 0;
}

body.single-theme .slot-where-to-play {
  background: transparent;
  border: 0;
  margin-top: 2.5rem;
  padding: 0;
}
body.single-theme .slot-where-to-play__inner {
  max-width: 880px;
  margin-inline: auto;
  padding: 2.5rem 1.25rem;
  background: color-mix(in oklab, var(--cream-100) 60%, transparent);
  border: 2px solid var(--charcoal);
}
@media (min-width: 768px) {
  body.single-theme .slot-where-to-play__inner { padding: 3.25rem 1.5rem; }
}
body.single-theme .slot-where-to-play__grid { grid-template-columns: 1fr; gap: 0.625rem; }
@media (min-width: 640px)  { body.single-theme .slot-where-to-play__grid { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 768px)  { body.single-theme .slot-where-to-play__grid { grid-template-columns: repeat(3, 1fr); } }
@media (min-width: 1024px) { body.single-theme .slot-where-to-play__grid { grid-template-columns: repeat(4, 1fr); } }

body.single-theme .theme-content { margin-bottom: 2.5rem; }
body.single-theme .theme-content p,
body.single-theme .theme-content li {
  color: color-mix(in oklab, var(--charcoal) 85%, transparent);
  line-height: 1.6;
}
body.single-theme .theme-content h2 {
  margin-top: 4rem;
  padding-top: 4rem;
  border-top: 1px solid var(--border);
}
body.single-theme .theme-content > h2:first-of-type {
  margin-top: 2rem;
  padding-top: 2rem;
  border-top: 0;
}
body.single-theme .theme-content > * + * { margin-top: 1.25rem; }
body.single-theme .theme-content table {
  font-size: 0.875rem;
  line-height: 1.45;
}
body.single-theme .theme-content table th,
body.single-theme .theme-content table td {
  padding: 0.5rem 0.875rem;
  font-size: inherit;
  line-height: inherit;
}

body.single-theme .theme-featured { margin-top: 3rem; }

/* "On this page" TOC — small bordered box that lists the article h2s. */
body.single-theme .theme-toc {
  max-width: 880px;
  margin: 2.5rem auto 0;
  padding: 1.25rem 1.5rem;
  background: var(--card);
  border: 1px solid var(--border);
}
.theme-toc__title {
  margin: 0 0 0.75rem !important;
  font-size: 0.75rem !important;
  font-weight: 800 !important;
  text-transform: uppercase;
  letter-spacing: 0.18em;
  color: var(--cherry);
  line-height: 1.2 !important;
}
.theme-toc__list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
}
.theme-toc__list li { margin: 0; }
.theme-toc__list a {
  color: var(--charcoal);
  text-decoration: none;
  font-size: 0.875rem;
  line-height: 1.5;
}
.theme-toc__list a:hover { color: var(--cherry); text-decoration: underline; }
@media (min-width: 640px) {
  .theme-toc__list {
    flex-direction: row;
    flex-wrap: wrap;
    gap: 0.375rem 1rem;
  }
}

/* ---------------------------------------------------------------------------
   Theme hero — shared full-bleed layout. Triggered by .theme-hero--has-bg
   (set by single-theme.php when _theme_hero_bg meta is non-empty). The
   gradient itself is dropped verbatim into the hero's inline `style`
   attribute by the template, the same way single-slot.php feeds
   _slot_hero_bg into .slot-hero. Layout was lifted from the Stage 9.28
   Fruit Slots (postid-25) block — promoted here so any theme with a
   _theme_hero_bg renders identically. The `.theme-hero--text-dark`
   modifier flips copy from cream to charcoal for light gradients.

   Selector `body.single-theme .theme-hero.theme-hero--has-bg` (spec
   0,0,3,1) outspecifies the Stage 9.7 880-cap group rule
   (`body.single-theme .theme-hero …` spec 0,0,2,1).
--------------------------------------------------------------------------- */

body.single-theme .theme-hero.theme-hero--has-bg {
  /* Background gradient comes from the inline `style="background: <bg>"`
     attribute emitted by single-theme.php. */
  border: 0;
  border-bottom: 1px solid var(--border);
  margin: 0;
  padding: 0;
  position: relative;
  overflow: hidden;
  display: block;
  /* Reset Stage 9.7's 880-max + base 2-col grid so the hero spans true
     viewport width and the inner .theme-hero__inner grid takes over. */
  width: auto;
  max-width: none;
  gap: 0;
  grid-template-columns: none;
}

/* Inner 1280-max content grid. Hero already renders OUTSIDE .container
   in single-theme.php, so the wrapper spans true viewport edges via its
   own width:100% block flow. */
body.single-theme .theme-hero.theme-hero--has-bg .theme-hero__inner {
  position: relative;
  max-width: 1280px;
  margin: 0 auto;
  padding: 56px 16px;
  display: grid;
  grid-template-columns: 1fr;
  gap: 40px;
  align-items: center;
}
@media (min-width: 1024px) {
  body.single-theme .theme-hero.theme-hero--has-bg .theme-hero__inner {
    padding: 56px 32px;
    grid-template-columns: 1fr 420px;
  }
}

/* Left column: text stack. Reset Stage 9.7's centering + 1280-max so the
   meta behaves like a normal grid cell whose width is determined by 1fr.
   Default text colour = cream (light copy on dark gradients). */
body.single-theme .theme-hero.theme-hero--has-bg .theme-hero__meta {
  max-width: none;
  margin: 0;
  padding: 0;
  display: block;
  text-align: left;
  color: var(--cream);
}

/* Eyebrow "THEME" — uppercase amber-300 micro-text, no pill bg/border. */
body.single-theme .theme-hero.theme-hero--has-bg .theme-hero__chip {
  display: inline-block;
  background: transparent;
  border: 0;
  border-radius: 0;
  padding: 0;
  margin: 0;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: #fcd34d; /* Tailwind amber-300 — Lov uses this on dark gradients */
  line-height: 1;
  text-shadow: none;
}

/* Title — text-4xl mobile / text-5xl lg+, font-extrabold, tracking-tight. */
body.single-theme .theme-hero.theme-hero--has-bg .theme-hero__title {
  margin: 12px 0 0;
  font-size: 32px;
  font-weight: 800;
  letter-spacing: -0.025em;
  line-height: 1.2;
  color: var(--cream);
  text-shadow: none;
  text-align: left;
  max-width: none;
}
@media (min-width: 1024px) {
  body.single-theme .theme-hero.theme-hero--has-bg .theme-hero__title {
    font-size: 48px;
  }
}

/* Intro — full cream, max-w-2xl (42rem), leading-relaxed, mt-4. Both
   the wrapper and the inner <p> get the colour/size so the global
   .article-content paragraph styles don't bleed through. Stage 9.28's
   block intended cream/85; the now-removed Stage 9.7 !important on
   .theme-hero--has-bg .theme-hero__intro had been winning and rendering
   full cream — that's the look we preserve. */
body.single-theme .theme-hero.theme-hero--has-bg .theme-hero__intro,
body.single-theme .theme-hero.theme-hero--has-bg .theme-hero__intro p {
  margin: 0;
  font-size: 13px;
  line-height: 1.625;
  color: var(--cream);
  max-width: 42rem;
  text-shadow: none;
  text-align: left;
}
body.single-theme .theme-hero.theme-hero--has-bg .theme-hero__intro {
  margin-top: 16px;
}

/* Right column: image card. Aspect 3:2, 2px charcoal border on a
   charcoal background, image cover. justify-self: end matches Lov's
   `justify-self-end` on the 420px column at lg+ (no-op below). */
body.single-theme .theme-hero.theme-hero--has-bg .theme-hero__media {
  aspect-ratio: 3 / 2;
  width: 100%;
  max-width: 420px;
  margin: 0;
  padding: 0;
  border: 2px solid var(--charcoal);
  background: var(--charcoal);
  overflow: hidden;
  justify-self: end;
  border-radius: 0;
  box-shadow: none;
  position: relative;
}
body.single-theme .theme-hero.theme-hero--has-bg .theme-hero__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  margin: 0;
  padding: 0;
  border: 0;
  position: static;
}

/* Dark-text variant — flip copy from cream to charcoal for light
   gradients (Cream 100, Desert sand, Steel ice, Coral peach, Amber/burnt
   orange). Toggled by single-theme.php when _theme_hero_text_dark = 1. */
body.single-theme .theme-hero.theme-hero--has-bg.theme-hero--text-dark .theme-hero__meta {
  color: var(--charcoal);
}
body.single-theme .theme-hero.theme-hero--has-bg.theme-hero--text-dark .theme-hero__chip {
  color: var(--cherry);
}
body.single-theme .theme-hero.theme-hero--has-bg.theme-hero--text-dark .theme-hero__title {
  color: var(--charcoal);
}
body.single-theme .theme-hero.theme-hero--has-bg.theme-hero--text-dark .theme-hero__intro,
body.single-theme .theme-hero.theme-hero--has-bg.theme-hero--text-dark .theme-hero__intro p {
  color: var(--charcoal);
}

/* Reviewer card on theme pages — match the width of the Browse-by-Spec
   panel sitting directly above it. Lov's card spans the full content-column
   width; ours was capped at 48rem. Remove that cap on theme pages so the
   card fills the .theme-layout__main column edge-to-edge. */
body.single-theme .reviewer-bio--editor .reviewer-bio__card,
body.single-theme .reviewer-bio__card {
  max-width: none;
}

/* Featured strip — make .related-slot-card's image area fill aspect-3/2 with
   the imported key art. (Falls back to first-letter sticker when image_id=0.) */
body.single-theme .theme-featured__grid .related-slot-card__media {
  background: var(--charcoal);
}
body.single-theme .theme-featured__grid .related-slot-card__img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

/* Browse-by-Spec — when a card-media img is present, fill the 16:9 area with
   the attribute artwork instead of the centered slot-reel SVG. */
body.single-theme .theme-browse-spec__card-media:has(.theme-browse-spec__card-img) {
  /* Anchor for the absolutely-positioned IMG below. The base media rule
     keeps `display: flex` for the SVG-icon variant, but when there's a
     real <img> the flex layout was passing the IMG's intrinsic height
     (200px) up to the parent — even with `aspect-ratio: 16/9` set — via
     `min-height: auto` on the flex item, which gave a 3:2 paint. Switching
     the IMG to position:absolute removes it from the parent's layout
     contribution so the 16/9 aspect-ratio actually resolves. */
  position: relative;
  background: var(--cream-100);
  padding: 0;
}
body.single-theme .theme-browse-spec__card-img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

body.single-theme .theme-browse-spec {
  margin-top: 3.5rem;
  padding-top: 2.5rem;
  border-top: 1px solid var(--border);
}
.theme-browse-spec__title { margin: 0 0 1.5rem; }
.theme-browse-spec__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1.25rem;
}
@media (min-width: 768px) { .theme-browse-spec__grid { grid-template-columns: repeat(3, 1fr); } }
.theme-browse-spec__card {
  display: flex;
  flex-direction: column;
  background: var(--card);
  border: 1px solid var(--border);
  overflow: hidden;
}
.theme-browse-spec__card-media {
  aspect-ratio: 16 / 9;
  display: flex;
  align-items: center;
  justify-content: center;
  background: linear-gradient(135deg, var(--cream-100) 0%, var(--cream) 100%);
  color: color-mix(in oklab, var(--charcoal) 22%, transparent);
}
.theme-browse-spec__card-body { padding: 1.25rem; }
.theme-browse-spec__card-title {
  font-size: 1.0625rem;
  font-weight: 700;
  line-height: 1.3;
  color: var(--charcoal);
}
.theme-browse-spec__card-text {
  margin: 0.5rem 0 0;
  font-size: 0.875rem;
  line-height: 1.55;
  color: var(--muted-foreground);
}
.theme-browse-spec__card-cta {
  margin-top: 1rem;
  font-size: 0.75rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.18em;
  color: color-mix(in oklab, var(--muted-foreground) 80%, transparent);
}

/* ===========================================================================
   STAGE 9.9 — single-theme.php 2-column layout + Featured tabs + reviewer
   "Edited by" variant + WTP no-panel variant. Matches Lov's
   /themes/fruit-slots desktop layout: 220px sticky TOC sidebar + 1fr body.
   =========================================================================== */

/* 2-col grid wrapper. Stacks on <lg. */
body.single-theme .theme-layout {
  margin-top: 2rem;
}
@media (min-width: 1024px) {
  body.single-theme .theme-layout {
    display: grid;
    grid-template-columns: 220px minmax(0, 1fr);
    gap: 2.5rem;
    align-items: start;
    max-width: 1280px;
    margin-inline: auto;
  }
}

body.single-theme .theme-layout__sidebar {
  margin-bottom: 2rem;
}
@media (min-width: 1024px) {
  body.single-theme .theme-layout__sidebar {
    position: sticky;
    top: 1rem;
    max-height: calc(100vh - 2rem);
    overflow-y: auto;
    margin-bottom: 0;
  }
}

body.single-theme .theme-layout__main {
  min-width: 0;
}

/* Override the 880-max-width rules from Stage 9.7 — inside the 2-col layout
   the right column already constrains width naturally. */
body.single-theme .theme-layout__main .theme-content,
body.single-theme .theme-layout__main .theme-featured,
body.single-theme .theme-layout__main .theme-browse-spec,
body.single-theme .theme-layout__main .reviewer-bio,
body.single-theme .theme-layout__main .related-slots {
  max-width: none;
  margin-inline: 0;
}

/* TOC sidebar — populated server-side. Small uppercase title + dense vertical
   link list, muted hover-to-cherry. */
body.single-theme .theme-toc {
  background: transparent;
  border: 0;
  padding: 0;
  margin: 0;
  max-width: none;
}
body.single-theme .theme-toc__title {
  margin: 0 0 0.75rem !important;
  font-size: 0.6875rem !important;
  font-weight: 800 !important;
  text-transform: uppercase;
  letter-spacing: 0.18em;
  color: var(--cherry);
  line-height: 1.2 !important;
}
body.single-theme .theme-toc__list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 0.375rem;
}
body.single-theme .theme-toc__list li { margin: 0; }
body.single-theme .theme-toc__list a {
  display: block;
  color: var(--muted-foreground);
  text-decoration: none;
  font-size: 0.8125rem;
  line-height: 1.4;
  padding: 0.125rem 0;
}
body.single-theme .theme-toc__list a:hover {
  color: var(--cherry);
}
body.single-theme .theme-toc__list-divider {
  height: 1px;
  background: var(--border);
  margin: 0.5rem 0;
  list-style: none;
}
body.single-theme .theme-toc__list-viewall a {
  font-weight: 600;
  color: var(--cherry);
}

/* WTP no-panel variant — strips the bordered cream-100 wrapper + eyebrow.
   Just h2 + subtitle + cards on the page background. */
body.single-theme .slot-where-to-play--no-panel,
body.single-theme .slot-where-to-play--no-panel .slot-where-to-play__inner {
  max-width: none;
  background: transparent;
  border: 0;
  padding: 0;
}
body.single-theme .slot-where-to-play--no-panel .slot-where-to-play__inner {
  max-width: 1280px;
  margin-inline: auto;
  padding: 2.5rem 0;
}
@media (min-width: 768px) {
  body.single-theme .slot-where-to-play--no-panel .slot-where-to-play__inner { padding: 3rem 0; }
}

/* Featured tabs — Lov renders 4 inline buttons above the cards. The active
   tab gets a charcoal underline. */
body.single-theme .theme-featured { margin-top: 3rem; }
body.single-theme .theme-featured__title {
  margin: 0 0 0.5rem;
}
body.single-theme .theme-featured__sub {
  margin: 0 0 1rem;
  font-size: 0.875rem;
  color: var(--muted-foreground);
  line-height: 1.5;
}
body.single-theme .theme-featured__tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 0.25rem 0.5rem;
  margin: 0 0 1.5rem;
  border-bottom: 1px solid var(--border);
  padding-bottom: 0;
}
body.single-theme .theme-featured__tab {
  appearance: none;
  background: transparent;
  border: 0;
  padding: 0.5rem 0.875rem;
  margin: 0;
  font-family: inherit;
  font-size: 0.8125rem;
  font-weight: 500;
  color: var(--muted-foreground);
  cursor: pointer;
  position: relative;
  border-bottom: 2px solid transparent;
  margin-bottom: -1px;
  transition: color 150ms ease;
}
body.single-theme .theme-featured__tab:hover { color: var(--charcoal); }
body.single-theme .theme-featured__tab--active {
  color: var(--charcoal);
  font-weight: 700;
  border-bottom-color: var(--charcoal);
}
body.single-theme .theme-featured__grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 0.75rem;
}
@media (min-width: 640px)  { body.single-theme .theme-featured__grid { grid-template-columns: repeat(3, 1fr); } }
@media (min-width: 768px)  { body.single-theme .theme-featured__grid { grid-template-columns: repeat(4, 1fr); } }
body.single-theme .theme-featured__view-all {
  margin: 1rem 0 0;
  font-size: 0.8125rem;
  font-weight: 600;
}
body.single-theme .theme-featured__view-all a {
  color: var(--cherry);
  text-decoration: none;
}
body.single-theme .theme-featured__view-all a:hover { text-decoration: underline; }

/* Reviewer "Edited by" variant — heading sits INSIDE the bordered card body
   (no eyebrow above), styled as plain bold (text-base font-bold on Lov).
   The card chrome (border, padding, bg, flex layout, photo size, name +
   headline + bio + meta typography) is copied from the body.single-slot
   reviewer-bio block above — extended here to apply on theme pages. */
body.single-theme .reviewer-bio--editor { margin-top: 3rem; }

body.single-theme .reviewer-bio__card {
  max-width: 48rem;
  display: flex;
  align-items: flex-start;
  gap: 1rem;
  padding: 1.25rem;
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: 0;
}
body.single-theme .reviewer-bio__photo { flex-shrink: 0; }
body.single-theme .reviewer-bio__photo img,
body.single-theme .reviewer-bio__img {
  width: 5rem;
  height: 5rem;
  border-radius: 9999px;
  object-fit: cover;
  border: 1px solid var(--border);
  display: block;
}
body.single-theme .reviewer-bio__body {
  flex: 1;
  min-width: 0;
}
body.single-theme .reviewer-bio__editor-heading {
  margin: 0 0 0.25rem;
  font-size: 1rem;
  font-weight: 700;
  line-height: 1.4;
  color: var(--charcoal);
}
body.single-theme .reviewer-bio__editor-heading a {
  color: var(--charcoal);
  text-decoration: none;
}
body.single-theme .reviewer-bio__editor-heading a:hover { color: var(--cherry); }
body.single-theme .reviewer-bio__headline {
  margin: 0.125rem 0 0;
  font-size: 0.75rem;
  font-weight: 400;
  line-height: 1.35;
  color: var(--muted-foreground);
}
body.single-theme .reviewer-bio__text {
  margin: 0.5rem 0 0;
  font-size: 13px;
  font-weight: 400;
  line-height: 1.55;
  color: color-mix(in oklab, var(--charcoal) 80%, transparent);
}
body.single-theme .reviewer-bio__meta {
  margin-top: 0.75rem;
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  justify-content: flex-start;
  gap: 0.25rem 0.5rem;
  font-size: 0.75rem;
  line-height: 1.35;
  color: var(--muted-foreground);
}
body.single-theme .reviewer-bio__meta-item {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
}
body.single-theme .reviewer-bio__meta-link {
  color: var(--cherry);
  text-decoration: none;
  font-weight: 500;
}
body.single-theme .reviewer-bio__meta-link:hover { text-decoration: underline; }
body.single-theme .reviewer-bio__meta-link--mute {
  color: color-mix(in oklab, var(--charcoal) 80%, transparent);
}
body.single-theme .reviewer-bio__meta-link--mute:hover { color: var(--charcoal); }
body.single-theme .reviewer-bio__meta-badge {
  color: var(--felt);
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.02em;
}
body.single-theme .reviewer-bio__meta-icon { flex-shrink: 0; }
body.single-theme .reviewer-bio__meta-sep {
  color: color-mix(in oklab, var(--charcoal) 30%, transparent);
}

/* Hide hero stats list which the template no longer renders — defensive
   in case a custom child theme adds it back. */
body.single-theme .theme-hero__stats { display: none; }

/* ===========================================================================
   STAGE 9.21 — single-slot.php hero pixel-match pass, with three corrections
   to the 0.9.19 attempt:
     1. FULL-BLEED. Hero now escapes .container via 100vw + calc(50% - 50vw)
        so the gradient bg paints corner-to-corner; was inset 32px each edge.
     2. SHADOWS OFF. The brutalist 4px/3px offset shadows on .slot-hero__media,
        __panel, and __score-box are removed — live Lov globally strips the
        `shadow-[…]` Tailwind utility via the
        `[class*="shadow-["] { box-shadow: none !important }` rule. Now uses
        `var(--shadow-offset, none)`.
     3. REM → PX. Every rem dimension in this block was rendering ~15%
        smaller than Lov because WP's `html { font-size: 85% }` shrinks the
        rem unit. All font-sizes / paddings / gaps / fixed dims are now px,
        calibrated to Lov's 16px-root output.
   Layout unchanged: h1 (title + "by Provider" inline) on top; below, a 2-col
   grid with the image (left) and a multi-row stats panel (right). Stats panel
   rows are separated by border-b-2 charcoal: score+UKGC, attribute chips,
   3 stat tiles (felt/gold/cherry top borders), provider logo box,
   reviewed-by byline.
   Selectors prefixed with `body.single-slot` to win over the legacy
   `.slot-hero*` rules from sections 31 + 8.1 of this stylesheet.
   =========================================================================== */

body.single-slot section.slot-hero {
  position: relative;
  overflow: hidden;
  display: block;
  /* Full-bleed without `100vw`: the hero now sits as a sibling of
     .container under .site-main (template restructure in single-slot.php),
     so its default block width = 100% of .site-main = the true viewport
     content area (scrollbar gutter automatically excluded). The slot.bg
     gradient + cream/70 overlay paint corner-to-corner at any viewport
     width — no Windows-scrollbar-gutter trap, no widescreen cap.
     Inner content stays bounded by .slot-hero__inner (max-w 880, auto
     margins, py/px padding). */
  width: 100%;
  max-width: none;
  margin: 0;
  padding: 0;
  border: 0;
  border-bottom: 1px solid var(--border);
  background: transparent;
  box-shadow: none;
  /* Reset Stage 8.1 layout — original .slot-hero was a 2-col grid; we now
     manage layout inside .slot-hero__grid. */
  grid-template-columns: none;
  gap: 0;
}

body.single-slot section.slot-hero .slot-hero__overlay {
  position: absolute;
  inset: 0;
  background: color-mix(in oklab, var(--cream) 70%, transparent);
  pointer-events: none;
}

body.single-slot section.slot-hero .slot-hero__inner {
  position: relative;
  max-width: 880px;
  margin: 0 auto;
  /* px values calibrated to Lov's 16px-root: py-5 = 20px, px-4 = 16px.
     Raw rem would shrink ~15% under html { font-size: 85% }. */
  padding: 20px 16px;
}
@media (min-width: 768px) {
  body.single-slot section.slot-hero .slot-hero__inner { padding-inline: 24px; }
}

/* h1: tight, bold, with "by Provider" inline-small. Override Stage 0
   global h1 sizing (which is !important) by scoping under section.slot-hero
   AND repeating !important. */
body.single-slot section.slot-hero .slot-hero__title {
  margin: 0 !important;
  /* px-calibrated: Lov text-2xl = 24px mobile, text-3xl = 30px md+.
     line-height tightened to 0.9 so the cap-line sits closer to the top
     of the box — earlier 1.0 left a sliver of breathing room above the
     glyphs that read as "looser" than Lov when the cyan bg shows through. */
  font-size: 24px !important;
  font-weight: 800 !important;
  letter-spacing: -0.025em !important;
  line-height: 0.9 !important;
  color: var(--charcoal);
  text-align: left;
}
@media (min-width: 768px) {
  body.single-slot section.slot-hero .slot-hero__title { font-size: 30px !important; }
}
body.single-slot section.slot-hero .slot-hero__provider-inline {
  margin-left: 8px;
  /* Lov text-sm = 14px. Inherits h1's -0.025em letter-spacing (was forced
     to normal — removed so tracking matches Lov's tracking-tight inherit). */
  font-size: 14px;
  font-weight: 400;
  color: var(--muted-foreground);
}

/* 2-col grid: image + panel, stretched to same height. */
body.single-slot section.slot-hero .slot-hero__grid {
  /* mt-3 = 12px, gap-4 = 16px. */
  margin-top: 12px;
  display: grid;
  grid-template-columns: 1fr;
  gap: 16px;
  align-items: stretch;
}
@media (min-width: 768px) {
  body.single-slot section.slot-hero .slot-hero__grid {
    grid-template-columns: 1fr 1fr;
  }
}

/* Left: image — 2px charcoal border, NO offset shadow. Live Lov strips
   the `shadow-[4px_4px_0_0_var(--charcoal)]` utility globally via
   `[class*="shadow-["] { box-shadow: none !important }` in src/styles.css. */
body.single-slot section.slot-hero .slot-hero__media {
  aspect-ratio: 3 / 2;
  width: 100%;
  border: 2px solid var(--charcoal);
  overflow: hidden;
  box-shadow: var(--shadow-offset, none);
  background: var(--cream-100);
  position: relative;
  align-self: stretch;
}
body.single-slot section.slot-hero .slot-hero__img,
body.single-slot section.slot-hero .slot-hero__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

/* Right: stats panel. Cream-100 bg, charcoal 2px border, NO offset shadow
   (stripped by Lov's global arbitrary-shadow neutraliser). */
body.single-slot section.slot-hero .slot-hero__panel {
  background: var(--cream-100);
  border: 2px solid var(--charcoal);
  box-shadow: var(--shadow-offset, none);
  display: flex;
  flex-direction: column;
}

body.single-slot section.slot-hero .slot-hero__panel-row--score {
  display: flex;
  align-items: center;
  justify-content: space-between;
  /* gap-3 = 12px, px-3 py-2.5 = 12px / 10px. */
  gap: 12px;
  padding: 10px 12px;
  border-bottom: 2px solid var(--charcoal);
}

/* RoverScore — cherry brutalist cabinet ("md" size = w-16 h-12 text-xl in
   Lov's RoverScoreBadge component). Inline-flex column with label below. */
body.single-slot section.slot-hero .slot-hero__score {
  /* Reset legacy Stage 31 .slot-hero__score (line 1810): the legacy rule
     gave this wrapper a CHARCOAL BACKGROUND + 0.5rem/0.875rem padding,
     which is what was painting the "black square" around the cherry box
     that the user reported. Stage 9.19's earlier override redefined
     display/flex/gap but left bg+padding to leak through. Force transparent
     + zero padding so the wrapper is a tight inline-flex column with no
     visible frame — matches Lov's `inline-flex flex-col items-center gap-1`. */
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
  margin: 0;
  padding: 0;
  background: transparent;
}
body.single-slot section.slot-hero .slot-hero__score-box {
  /* RoverScoreBadge size="md" maps to Lov's w-16 h-12 text-xl — 64×48px,
     20px text. Live Lov renders with a 2px charcoal border but NO offset
     shadow (the React source has shadow-[3px_3px_0_0_var(--charcoal)] but
     the live render shows none — confirmed by direct screenshot probe at
     0.9.24, which I'd misread before). Keep border, drop shadow. */
  width: 64px;
  height: 48px;
  background: var(--cherry);
  color: #ffffff;
  border: 2px solid var(--charcoal);
  box-shadow: none;
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 900;
  font-size: 20px;
  line-height: 1;
  border-radius: 0;
}
body.single-slot section.slot-hero .slot-hero__score-label {
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: 0.18em;
  font-weight: 800;
  color: var(--charcoal);
}

/* UKGC pill — felt 10% bg + felt text + felt 20% border, uppercase.
   px-2 py-1 = 8/4, text-xs = 12px. */
body.single-slot section.slot-hero .slot-hero__ukgc {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 4px 8px;
  background: color-mix(in oklab, var(--felt) 10%, transparent);
  color: var(--felt);
  border: 1px solid color-mix(in oklab, var(--felt) 20%, transparent);
  border-radius: 9999px;
  font-size: 12px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  white-space: nowrap;
}
body.single-slot section.slot-hero .slot-hero__ukgc-icon { flex-shrink: 0; }

/* Attribute chips — cream pill, charcoal/80 text, charcoal/15 border.
   gap-1.5 = 6, px-3 py-2 = 12/8, chip px-2 py-0.5 = 8/2, text-xs = 12. */
body.single-slot section.slot-hero .slot-hero__panel-row--chips {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  padding: 8px 12px;
  border-bottom: 2px solid var(--charcoal);
  list-style: none;
  margin: 0;
}
body.single-slot section.slot-hero .slot-hero__chip {
  display: inline-block;
  padding: 2px 8px;
  background: var(--cream);
  border: 1px solid color-mix(in oklab, var(--charcoal) 15%, transparent);
  border-radius: 9999px;
  font-size: 12px;
  font-weight: 500;
  color: color-mix(in oklab, var(--charcoal) 80%, transparent);
  text-transform: uppercase;
  letter-spacing: 0.05em;
  line-height: 1.4;
}

/* 3 stat tiles — grid-cols-3 with vertical dividers (border-left on tiles
   2 and 3). Each tile has a 3px colored top border (felt/gold/cherry). */
body.single-slot section.slot-hero .slot-hero__panel-row--stats {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  border-bottom: 2px solid var(--charcoal);
}
body.single-slot section.slot-hero .slot-hero__stat {
  /* p-3 = 12px on all sides. */
  padding: 12px;
  text-align: center;
  border-top: 3px solid var(--border);
  border-left: 2px solid var(--charcoal);
  background: transparent;
  border-radius: 0;
  display: block;
  margin: 0;
}
body.single-slot section.slot-hero .slot-hero__stat:first-child { border-left: 0; }
body.single-slot section.slot-hero .slot-hero__stat--rtp      { border-top-color: var(--felt); }
body.single-slot section.slot-hero .slot-hero__stat--maxwin   { border-top-color: var(--gold); }
body.single-slot section.slot-hero .slot-hero__stat--variance { border-top-color: var(--cherry); }
body.single-slot section.slot-hero .slot-hero__stat-label {
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.15em;
  color: var(--muted-foreground);
  font-weight: 600;
}
body.single-slot section.slot-hero .slot-hero__stat-value {
  /* mt-1 = 4px, text-xl = 20px. */
  margin-top: 4px;
  font-size: 20px;
  font-weight: 700;
  line-height: 1;
  color: var(--charcoal);
  text-transform: none;
  letter-spacing: normal;
}

/* Provider row — small "Provider" label on left, logo box on right.
   gap-3 = 12px, px-3 py-2.5 = 12/10, label text-xs = 12px. */
body.single-slot section.slot-hero .slot-hero__panel-row--provider {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 10px 12px;
  border-bottom: 2px solid var(--charcoal);
}
body.single-slot section.slot-hero .slot-hero__provider-label {
  font-size: 12px;
  text-transform: uppercase;
  letter-spacing: 0.15em;
  color: var(--muted-foreground);
  font-weight: 600;
  flex-shrink: 0;
}
body.single-slot section.slot-hero .slot-hero__provider-logo {
  /* Lov: h-11 px-2 = 44px / 8px. min-width: 0 lets the flex item shrink
     below its content's intrinsic size so max-width: 55% is actually
     respected (otherwise the inner IMG's 300px intrinsic width forces
     this box wider and overflows the panel column). */
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: 44px;
  padding: 0 8px;
  background: var(--cream);
  border: 1px solid var(--border);
  flex: 1;
  min-width: 0;
  max-width: 55%;
  text-decoration: none;
  color: var(--charcoal);
  transition: border-color 150ms ease;
  margin: 0;
}
body.single-slot section.slot-hero .slot-hero__provider-logo:hover {
  border-color: color-mix(in oklab, var(--cherry) 40%, transparent);
}
body.single-slot section.slot-hero .slot-hero__provider-logo--static,
body.single-slot section.slot-hero .slot-hero__provider-logo--static:hover {
  cursor: default;
  pointer-events: none;
  border-color: var(--border);
}
body.single-slot section.slot-hero .slot-hero__provider-logo-img {
  /* Lov: h-9 = 36px. Stage 8.1's legacy rule at line 5234 sets
     max-height: 1.25rem (~17px under 85% root) which was clamping this
     image down to ~17px tall, hiding the baked-in "PUSH GAMING" wordmark.
     max-height: none lets the explicit 36px height land.
     max-width + min-width pair below: WP outputs wp_get_attachment_image()
     with an explicit `width="300"` HTML attribute. As a flex child the
     IMG's default min-width: auto resolves to its intrinsic 300px, which
     would push .slot-hero__provider-logo past its max-width: 55% clamp
     and overflow the panel column. Pinning min-width: 0 + max-width: 100%
     forces the IMG to respect the parent's bounds. */
  height: 36px;
  max-height: none;
  width: 100%;
  max-width: 100%;
  min-width: 0;
  object-fit: contain;
  display: block;
}
body.single-slot section.slot-hero .slot-hero__provider-logo-text {
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.02em;
}

/* Reviewed-by byline (last row, no bottom border).
   px-3 py-2 = 12/8, text-sm = 14px. */
body.single-slot section.slot-hero .slot-hero__panel-row--byline {
  padding: 8px 12px;
  font-size: 14px;
  color: var(--muted-foreground);
  line-height: 1.4;
  margin: 0;
}
body.single-slot section.slot-hero .slot-hero__byline-link {
  color: var(--cherry);
  text-decoration: none;
  font-weight: 500;
}
body.single-slot section.slot-hero .slot-hero__byline-link:hover {
  text-decoration: underline;
}

/* Defensive: hide legacy elements the rewrite no longer emits, so any
   stale CSS rule for them doesn't accidentally bleed into the new
   layout via cascading selectors. */
body.single-slot section.slot-hero .slot-hero__meta,
body.single-slot section.slot-hero .slot-hero__provider,
body.single-slot section.slot-hero .slot-hero__chips,
body.single-slot section.slot-hero .slot-hero__byline,
body.single-slot section.slot-hero .slot-hero__stats,
body.single-slot section.slot-hero .slot-hero__score-badge {
  display: contents;
}

/* ===========================================================================
   STAGE 9.30 — Megaways feature page hero (taxonomy-feature.php for the
   `megaways-slots` term). Mirrors the live Lov redesign:
   https://slot-rover-reviews.lovable.app/features/megaways-slots

   The template adds `single-theme` to the body class so it inherits all
   the body.single-theme layout chrome (theme-layout grid, theme-toc,
   theme-featured, theme-content margins, .breadcrumb-wrap full-bleed,
   reviewer-bio card). The `term-megaways-slots` class — emitted by core
   WordPress for taxonomy pages — gives us the hook for slug-specific
   styling without colliding with the existing postid-25 (Fruit Slots)
   gradient.

   Hero shape: warm brown→amber 135° gradient bg, 2-col grid (1fr at
   mobile, 1fr 360px at lg+), amber-300 eyebrow, cream text, image card
   on right at 16/10 aspect with 2px charcoal border (no fill, no shadow,
   no border-radius). Scoped via term-megaways-slots so other feature
   pages (when added) can ship their own gradient overrides.
   =========================================================================== */

body.tax-feature .theme-hero__inner,
body.term-megaways-slots .theme-hero__inner {
  /* Inner grid wrap — 1280-max content box. Single column on mobile;
     image stacks below text. 1fr + 360px at lg+ matches Lov's
     `lg:grid-cols-[1fr_360px]`. Padding mirrors Lov's py-14 px-4 lg:px-8. */
  position: relative;
  max-width: 1280px;
  margin: 0 auto;
  padding: 56px 16px;
  display: grid;
  grid-template-columns: 1fr;
  gap: 32px;
  align-items: center;
}
@media (min-width: 1024px) {
  body.tax-feature .theme-hero__inner,
  body.term-megaways-slots .theme-hero__inner {
    padding: 56px 32px;
    grid-template-columns: 1fr 360px;
  }
}

body.term-megaways-slots .theme-hero.theme-hero--has-bg {
  background: linear-gradient(135deg, #1a0f04 0%, #3a1f08 45%, #7a4e14 100%);
  border: 0;
  border-bottom: 1px solid var(--border);
  margin: 0;
  padding: 0;
  position: relative;
  overflow: hidden;
  display: block;
}

body.term-megaways-slots .theme-hero.theme-hero--has-bg .theme-hero__meta {
  max-width: none;
  margin: 0;
  padding: 0;
  display: block;
  text-align: left;
  color: var(--cream);
}

/* Eyebrow "FEATURE" — uppercase amber-300 micro-text, no pill. */
body.term-megaways-slots .theme-hero.theme-hero--has-bg .theme-hero__chip {
  display: inline-block;
  background: transparent;
  border: 0;
  border-radius: 0;
  padding: 0;
  margin: 0;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: #fcd34d;
  line-height: 1;
  text-shadow: none;
}

body.term-megaways-slots .theme-hero.theme-hero--has-bg .theme-hero__title {
  margin: 8px 0 0;
  font-size: 32px;
  font-weight: 800;
  letter-spacing: -0.025em;
  line-height: 1.2;
  color: var(--cream);
  text-shadow: none;
  text-align: left;
  max-width: none;
}
@media (min-width: 1024px) {
  body.term-megaways-slots .theme-hero.theme-hero--has-bg .theme-hero__title {
    font-size: 48px;
  }
}

body.term-megaways-slots .theme-hero.theme-hero--has-bg .theme-hero__intro,
body.term-megaways-slots .theme-hero.theme-hero--has-bg .theme-hero__intro p {
  margin: 0;
  font-size: 13px;
  line-height: 1.625;
  color: color-mix(in oklab, var(--cream) 85%, transparent);
  max-width: 42rem;
  text-shadow: none;
  text-align: left;
}
body.term-megaways-slots .theme-hero.theme-hero--has-bg .theme-hero__intro {
  margin-top: 16px;
}

/* Image card — 16/10 aspect, 2px charcoal border, NO background fill, no
   border-radius (live Lov shows none even though the JSX says rounded-2xl
   — global utility strip presumably; match what the live page paints). */
body.term-megaways-slots .theme-hero.theme-hero--has-bg .theme-hero__media {
  aspect-ratio: 16 / 10;
  width: 100%;
  max-width: 360px;
  margin: 0;
  padding: 0;
  border: 2px solid var(--charcoal);
  background: transparent;
  overflow: hidden;
  justify-self: end;
  border-radius: 0;
  box-shadow: none;
  position: relative;
}
body.term-megaways-slots .theme-hero.theme-hero--has-bg .theme-hero__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  margin: 0;
  padding: 0;
  border: 0;
  position: static;
}

/* ===========================================================================
   STAGE 9.31 — Megaways feature page: full Lov-parity buildout.
   Covers the 5 strip sub-grids (Newest/Highest RTP/High Vol/Fishing/Adventure),
   the Featured 6-card 5-col grid populated with placeholders, the Browse by
   Theme + Spec 3-card grid, the new Related features chip rail, and the
   restructured Edited-by reviewer card layout. Plus small chrome fixes
   (TOC sticky offset, breadcrumb separator).

   Scope: most rules are scoped to body.single-theme (the body class the
   feature template piggybacks via the body_class filter), so they don't
   leak into the real single-theme post template UNLESS they also share
   classes with that template — the .theme-featured__grid--5col / --4col
   modifiers are new and only used on this feature page.
   =========================================================================== */

/* Featured/sub-grid responsive cards. Lov's strips are
   `grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-5 gap-2.5` for
   5-card strips and `lg:grid-cols-4` for 4-card strips. */
body.single-theme .theme-featured__grid {
  display: grid;
  gap: 10px;
  margin-top: 24px;
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
@media (min-width: 640px) {
  body.single-theme .theme-featured__grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}
@media (min-width: 768px) {
  body.single-theme .theme-featured__grid--5col {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
  body.single-theme .theme-featured__grid--4col {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
}
@media (min-width: 1024px) {
  body.single-theme .theme-featured__grid--5col {
    grid-template-columns: repeat(5, minmax(0, 1fr));
  }
  body.single-theme .theme-featured__grid--4col {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
}

/* Sub-grid strip — same heading style as Featured, slightly less margin
   between sections than the article body's section spacing. */
body.single-theme .theme-featured--strip {
  margin-top: 48px;
}
body.single-theme .theme-featured--strip .theme-featured__sub a {
  color: var(--cherry);
  text-decoration: none;
}
body.single-theme .theme-featured--strip .theme-featured__sub a:hover {
  text-decoration: underline;
}

/* Compact slot card placeholder media — gradient + initial letter when no
   real cover art exists. Score badge stays on top-right with the cherry
   chip style used elsewhere. */
body.single-theme .related-slot-card {
  position: relative;
  display: flex;
  flex-direction: column;
  border: 2px solid var(--charcoal);
  background: var(--cream);
  text-decoration: none;
  color: inherit;
  overflow: hidden;
  transition: transform 150ms ease;
}
body.single-theme .related-slot-card:hover {
  transform: translateY(-2px);
}
body.single-theme .related-slot-card--placeholder {
  cursor: default;
}
body.single-theme .related-slot-card--placeholder:hover {
  transform: none;
}
body.single-theme .related-slot-card__media {
  position: relative;
  aspect-ratio: 3 / 2;
  width: 100%;
  border-bottom: 2px solid var(--charcoal);
  background: linear-gradient(135deg, #475569, #1e293b);
  display: flex;
  align-items: center;
  justify-content: center;
}
body.single-theme .related-slot-card__media-fallback {
  font-size: 36px;
  font-weight: 800;
  color: color-mix(in oklab, var(--cream) 80%, transparent);
  font-family: var(--font-display, var(--font-sans));
}
body.single-theme .related-slot-card__score {
  position: absolute;
  top: 4px;
  right: 4px;
  width: 48px;
  height: 36px;
  background: var(--cherry);
  color: #ffffff;
  border: 2px solid var(--charcoal);
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 900;
  font-size: 14px;
  line-height: 1;
  z-index: 2;
}
body.single-theme .related-slot-card__title {
  margin: 0;
  padding: 8px 10px;
  font-size: 11px;
  line-height: 1.2;
  font-weight: 700;
  color: var(--charcoal);
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  word-break: break-word;
}

/* View-all footer link below the featured strip. */
body.single-theme .theme-featured__view-all {
  margin-top: 24px;
}
body.single-theme .theme-featured__view-all a {
  font-size: 14px;
  font-weight: 600;
  color: var(--cherry);
  text-decoration: none;
}
body.single-theme .theme-featured__view-all a:hover {
  text-decoration: underline;
}

/* TOC — bump sticky offset from 0.85rem to 24px to match Lov's `top-6`. */
body.single-theme .theme-toc {
  top: 24px;
}

/* Browse-by-spec — 3 cards in a row at lg+, single column on mobile. */
body.single-theme .theme-browse-spec__grid--3col {
  display: grid;
  gap: 20px;
  margin-top: 24px;
  grid-template-columns: 1fr;
}
@media (min-width: 768px) {
  body.single-theme .theme-browse-spec__grid--3col {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

/* Related features — 4-card chip rail at lg+, 2-col mobile. Each card is
   a simple cream/border chip with small "Browse" eyebrow + feature name. */
body.single-theme .feature-related {
  margin-top: 64px;
}
body.single-theme .feature-related__title {
  margin: 0 0 20px;
  font-size: 24px;
  font-weight: 700;
  letter-spacing: -0.02em;
}
body.single-theme .feature-related__grid {
  display: grid;
  gap: 12px;
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
@media (min-width: 1024px) {
  body.single-theme .feature-related__grid {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
}
body.single-theme .feature-related__card {
  display: flex;
  flex-direction: column;
  gap: 4px;
  padding: 16px;
  background: var(--cream);
  border: 1px solid var(--border);
  border-radius: 0;
  text-decoration: none;
  color: inherit;
  transition: border-color 150ms ease;
}
body.single-theme .feature-related__card:hover {
  border-color: color-mix(in oklab, var(--cherry) 40%, transparent);
}
body.single-theme .feature-related__card--placeholder {
  cursor: default;
}
body.single-theme .feature-related__card--placeholder:hover {
  border-color: var(--border);
}
body.single-theme .feature-related__card-eyebrow {
  font-size: 11px;
  font-weight: 600;
  color: var(--muted-foreground);
  text-transform: none;
  letter-spacing: 0;
}
body.single-theme .feature-related__card-title {
  font-size: 16px;
  font-weight: 700;
  color: var(--charcoal);
  letter-spacing: -0.01em;
}
body.single-theme .feature-related__card:hover .feature-related__card-title {
  color: var(--cherry);
}

/* ===========================================================================
   STAGE 9.35 — High Volatility attribute hero (taxonomy-attribute.php for
   the `high-volatility` term). Mirrors the live Lov dark-navy gradient.
   Same grid pattern as the megaways hero: 1fr / 360px at lg+, image card
   on the right, full-bleed gradient on the outer header. Differences vs
   megaways/fruit: navy gradient, image card aspect-ratio 3:2 (not 16/10),
   max-width 420px (not 360px).

   Scope: `body.tax-attribute` for the shared grid wrap (any future
   attribute term inherits the layout), `body.term-high-volatility` for
   the gradient + card-aspect overrides (other attribute terms ship their
   own gradient under their own slug class when added).
   =========================================================================== */

body.tax-attribute .theme-hero__inner,
body.term-high-volatility .theme-hero__inner {
  position: relative;
  max-width: 1280px;
  margin: 0 auto;
  padding: 56px 16px;
  display: grid;
  grid-template-columns: 1fr;
  gap: 32px;
  align-items: center;
}
@media (min-width: 1024px) {
  body.tax-attribute .theme-hero__inner,
  body.term-high-volatility .theme-hero__inner {
    padding: 56px 32px;
    grid-template-columns: 1fr 420px;
  }
}

body.term-high-volatility .theme-hero.theme-hero--has-bg {
  background: linear-gradient(135deg, #04081f 0%, #0a1a4a 50%, #1e3a8a 100%);
  border: 0;
  border-bottom: 1px solid var(--border);
  margin: 0;
  padding: 0;
  position: relative;
  overflow: hidden;
  display: block;
}

body.term-high-volatility .theme-hero.theme-hero--has-bg .theme-hero__meta {
  max-width: none;
  margin: 0;
  padding: 0;
  display: block;
  text-align: left;
  color: var(--cream);
}

/* Eyebrow "ATTRIBUTE · VOLATILITY" — uppercase amber-300, no pill. */
body.term-high-volatility .theme-hero.theme-hero--has-bg .theme-hero__chip {
  display: inline-block;
  background: transparent;
  border: 0;
  border-radius: 0;
  padding: 0;
  margin: 0;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: #fcd34d;
  line-height: 1;
  text-shadow: none;
}

body.term-high-volatility .theme-hero.theme-hero--has-bg .theme-hero__title {
  margin: 8px 0 0;
  font-size: 22.5px;
  font-weight: 800;
  letter-spacing: -0.025em;
  line-height: 1.2;
  color: var(--cream);
  text-shadow: none;
  text-align: left;
  max-width: none;
}
@media (min-width: 1024px) {
  body.term-high-volatility .theme-hero.theme-hero--has-bg .theme-hero__title {
    font-size: 32px;
  }
}

body.term-high-volatility .theme-hero.theme-hero--has-bg .theme-hero__intro,
body.term-high-volatility .theme-hero.theme-hero--has-bg .theme-hero__intro p {
  margin: 0;
  font-size: 13px;
  line-height: 1.625;
  color: color-mix(in oklab, var(--cream) 85%, transparent);
  max-width: 42rem;
  text-shadow: none;
  text-align: left;
}
body.term-high-volatility .theme-hero.theme-hero--has-bg .theme-hero__intro {
  margin-top: 16px;
}

/* Image card — 3:2 aspect (matches Lov), 1px cream-tan border, square
   corners, transparent fill. Per audit Lov's rounded-2xl class is
   stripped to 0px on the live render — mirror the as-rendered look. */
body.term-high-volatility .theme-hero.theme-hero--has-bg .theme-hero__media {
  aspect-ratio: 3 / 2;
  width: 100%;
  max-width: 420px;
  margin: 0;
  padding: 0;
  border: 1px solid var(--border);
  background: var(--charcoal);
  overflow: hidden;
  justify-self: end;
  border-radius: 0;
  box-shadow: none;
  position: relative;
}
body.term-high-volatility .theme-hero.theme-hero--has-bg .theme-hero__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  margin: 0;
  padding: 0;
  border: 0;
  position: static;
}

/* ===========================================================================
   STAGE 9.37 — Pragmatic Play provider hub (taxonomy-provider.php).
   Mirrors the live Lov /providers/pragmatic-play render:
   - Orange gradient hero scoped to body.term-pragmatic-play
   - Dark logo-box on the right (bg #141418 padded contain), 3:2 aspect
   - Provider linear body layout (NO TOC sidebar) — single column
   - Browse-by-Theme: 3 chip cards at 4:3, image + gradient bg overlay
   - Related Providers: 4 logo chips at 16:9, sharp corners
   - Grid wrap (1fr / 420px at lg+) shared via body.tax-provider so future
     provider terms inherit. Other provider gradients/logo-bg ship under
     their own slug class.
   =========================================================================== */

body.tax-provider .theme-hero__inner,
body.term-pragmatic-play .theme-hero__inner {
  position: relative;
  max-width: 1280px;
  margin: 0 auto;
  /* rem-based so the 85% root reduces these to Lov-faithful 47.6/13.6/27.2
     instead of literal 56/16/32px. Was: 56px 16px + gap 32px. */
  padding: 3.5rem 1rem;
  display: grid;
  grid-template-columns: 1fr;
  gap: 2rem;
  align-items: center;
}
@media (min-width: 1024px) {
  body.tax-provider .theme-hero__inner,
  body.term-pragmatic-play .theme-hero__inner {
    padding: 3.5rem 2rem;
    grid-template-columns: 1fr 420px;
    gap: 2.5rem;
  }
}

body.term-pragmatic-play .theme-hero.theme-hero--has-bg {
  background: linear-gradient(135deg, #2a1605 0%, #b85e0c 55%, #f09018 100%);
  border: 0;
  border-bottom: 1px solid var(--border);
  margin: 0;
  padding: 0;
  position: relative;
  overflow: hidden;
  display: block;
}

body.term-pragmatic-play .theme-hero.theme-hero--has-bg .theme-hero__meta {
  max-width: none;
  margin: 0;
  padding: 0;
  display: block;
  text-align: left;
  color: var(--cream);
}

body.term-pragmatic-play .theme-hero.theme-hero--has-bg .theme-hero__chip {
  /* Lov renders the eyebrow as a block <div>, not inline. font-size 0.75rem
     (= 10.2px at 85% root) matches Lov's text-xs. */
  display: block;
  background: transparent;
  border: 0;
  border-radius: 0;
  padding: 0;
  margin: 0;
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: #fcd34d;
  line-height: 1;
  text-shadow: none;
}

body.term-pragmatic-play .theme-hero.theme-hero--has-bg .theme-hero__title {
  /* mt-3 = 0.75rem (10.2px) gap from eyebrow per Lov. !important needed
     because global h1 rules carry !important on font-size/line-height. */
  margin: 0.75rem 0 0 !important;
  font-size: 36px;
  font-weight: 800;
  letter-spacing: -0.025em;
  line-height: 1.1;
  color: var(--cream);
  text-shadow: none;
  text-align: left;
  max-width: none;
}
@media (min-width: 1024px) {
  body.term-pragmatic-play .theme-hero.theme-hero--has-bg .theme-hero__title {
    font-size: 48px;
  }
}

body.term-pragmatic-play .theme-hero.theme-hero--has-bg .theme-hero__intro,
body.term-pragmatic-play .theme-hero.theme-hero--has-bg .theme-hero__intro p {
  /* 0.95rem ≈ 12.92px at 85% root — matches Lov's inherited text-base.
     85% alpha cream over the orange gradient. */
  margin: 0;
  font-size: 0.95rem;
  line-height: 1.625;
  color: color-mix(in oklab, var(--cream) 85%, transparent);
  max-width: 48rem;
  text-shadow: none;
  text-align: left;
}
body.term-pragmatic-play .theme-hero.theme-hero--has-bg .theme-hero__intro {
  /* mt-4 = 1rem (13.6px) gap from h1. */
  margin-top: 1rem;
}

/* Logo box — 3:2 aspect, dark or cream variant, padded contain. Lov live
   shows rounded-2xl resolving to ~8px (project --radius:0rem); keep
   matching radius. Audit confirmed no shadow. */
body.tax-provider .theme-hero__media--logo,
body.term-pragmatic-play .theme-hero__media--logo {
  aspect-ratio: 3 / 2;
  width: 100%;
  max-width: 420px;
  margin: 0;
  padding: 32px;
  overflow: hidden;
  justify-self: center;
  border-radius: 0;
  box-shadow: none;
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
}
@media (min-width: 1024px) {
  body.tax-provider .theme-hero__media--logo,
  body.term-pragmatic-play .theme-hero__media--logo {
    justify-self: end;
  }
}
body.tax-provider .theme-hero__media--logo-dark,
body.term-pragmatic-play .theme-hero__media--logo-dark {
  background: #141418;
  border: 1px solid color-mix(in oklab, var(--cream) 20%, transparent);
}
body.tax-provider .theme-hero__media--logo-cream,
body.term-pragmatic-play .theme-hero__media--logo-cream {
  background: var(--cream);
  border: 1px solid var(--border);
}
body.tax-provider .theme-hero__media--logo img,
body.term-pragmatic-play .theme-hero__media--logo img {
  max-width: 100%;
  max-height: 100%;
  width: auto;
  height: auto;
  object-fit: contain;
  display: block;
  margin: 0;
  padding: 0;
  border: 0;
  position: static;
}

/* Provider body — linear single-column layout (no TOC sidebar). 1280 max,
   responsive padding, vertical rhythm between sections. min-width: 0 +
   max-width: 100% on direct children prevent the article body's tables
   from blowing the column wider than the viewport at mobile widths.
   Padding 2.5rem 1rem (=34/13.6px) and gap 4rem (=54.4px) at 85% root
   match Lov's py-10 px-4 and space-y-16. */
body.tax-provider .provider-body {
  max-width: 1280px;
  margin: 0 auto;
  /* Horizontal padding lives on the outer .container (style.css L207 —
     27.2px each side at lg+). Adding more here was double-padding the
     strip down to 1171px when Lov renders 1225.6px. Vertical rhythm only. */
  padding: 2.5rem 0;
  display: flex;
  flex-direction: column;
  gap: 4rem;
  min-width: 0;
}
body.tax-provider .provider-body > * {
  min-width: 0;
  max-width: 100%;
}
body.tax-provider .provider-body .article-content {
  min-width: 0;
  max-width: 100%;
}
/* Wide tables inside the article body scroll horizontally inside their
   own wrapper rather than expanding the column. */
body.tax-provider .provider-body .article-content table {
  display: block;
  overflow-x: auto;
  max-width: 100%;
  -webkit-overflow-scrolling: touch;
}
/* Release the 880-cap that body.single-theme .theme-featured imposes via
   the Stage 9.7 group rule. On provider pages each strip spans the full
   provider-body width (Lov ~1225px at 1280 viewport), and the strip's
   own 48px margin-top is zeroed because flex gap handles the rhythm. */
body.tax-provider .provider-body .theme-featured,
body.tax-provider .provider-body .theme-featured--strip {
  max-width: none;
  margin-inline: 0;
  margin-top: 0;
}

/* TOC list left rail (Lov's refreshed provider sidebar adds border-l +
   pl-3 on the ul). Scoped to tax-provider so feature/attribute/single-
   theme TOCs aren't touched. */
body.tax-provider .theme-toc__list {
  border-left: 1px solid var(--border);
  padding-left: 0.75rem;
}


/* Browse by Theme — 3 chip cards at 4:3 aspect, image + dark gradient
   overlay + bottom-left label. Sharp corners (radius 0) per the standing
   sharp-corner pattern carried from megaways/high-volatility builds. */
body.tax-provider .provider-browse-theme__title {
  margin: 0 0 24px;
  font-size: 20px;
  font-weight: 700;
  letter-spacing: -0.02em;
  text-align: center;
}
body.tax-provider .provider-browse-theme__grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
}
body.tax-provider .provider-browse-theme__card {
  position: relative;
  aspect-ratio: 4 / 3;
  overflow: hidden;
  border: 1px solid var(--border);
  border-radius: 0;
  text-decoration: none;
  color: var(--cream);
  display: block;
  background-position: center;
  background-size: cover;
}
body.tax-provider .provider-browse-theme__card--placeholder {
  cursor: default;
}
body.tax-provider .provider-browse-theme__card-img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 200ms ease;
}
body.tax-provider .provider-browse-theme__card:hover .provider-browse-theme__card-img {
  transform: scale(1.03);
}
body.tax-provider .provider-browse-theme__card-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(
    to top,
    color-mix(in oklab, var(--charcoal) 85%, transparent) 0%,
    color-mix(in oklab, var(--charcoal) 20%, transparent) 60%,
    transparent 100%
  );
  pointer-events: none;
}
body.tax-provider .provider-browse-theme__card-label {
  position: absolute;
  left: 12px;
  bottom: 12px;
  font-size: 16px;
  font-weight: 700;
  color: var(--cream);
  z-index: 2;
}

/* Related Providers — 4 logo chips at 16:9 aspect with sharp corners.
   Fills the .theme-layout__main column edge-to-edge so its left/right
   edges line up flush with the Browse-by-Theme cards above. (Was
   max-w-880 + centered in 0.9.40–0.9.44 — that left it visually
   narrower than the Browse section. User-requested fix: edges aligned,
   cards widen accordingly.) */
body.tax-provider .provider-related {
  width: 100%;
  max-width: none;
  margin-inline: 0;
  box-sizing: border-box;
}
body.tax-provider .provider-related__title {
  margin: 0 0 24px;
  font-size: 1.5rem;
  font-weight: 700;
  letter-spacing: -0.02em;
  text-align: center;
}
body.tax-provider .provider-related__grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.75rem; /* 10.2px at 85% root — matches Lov gap-3 */
}
@media (min-width: 768px) {
  body.tax-provider .provider-related__grid {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
}
body.tax-provider .provider-related__card {
  display: flex;
  flex-direction: column;
  border: 1px solid var(--border);
  border-radius: 0;
  background: var(--white); /* was cream — Lov uses pure white */
  overflow: hidden;
  text-decoration: none;
  color: inherit;
  transition: border-color 150ms ease;
}
body.tax-provider .provider-related__card:hover {
  border-color: color-mix(in oklab, var(--cherry) 40%, transparent);
}
body.tax-provider .provider-related__card--placeholder {
  cursor: default;
}
body.tax-provider .provider-related__card--placeholder:hover {
  border-color: var(--border);
}
body.tax-provider .provider-related__card-logo {
  aspect-ratio: 16 / 9;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0.75rem; /* 10.2px at 85% root */
}
body.tax-provider .provider-related__card-logo--cream {
  background: var(--cream-100);
}
body.tax-provider .provider-related__card-logo--dark {
  background: #141418;
}
body.tax-provider .provider-related__card-logo-img {
  max-width: 100%;
  max-height: 100%;
  width: auto;
  height: auto;
  object-fit: contain;
  display: block;
}
body.tax-provider .provider-related__card-body {
  padding: 6px 8px;
  border-top: 1px solid var(--border);
}
body.tax-provider .provider-related__card-name {
  /* 0.75rem = 10.2px at 85% root, matches Lov's text-xs. (0.9.41 bumped this
     to 0.95rem on a misread of Lov; the 0.9.41 reverify confirmed Lov is
     10.2px not 12.92px.) */
  font-size: 0.75rem;
  font-weight: 700;
  color: var(--charcoal);
  letter-spacing: -0.01em;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
body.tax-provider .provider-related__card-meta {
  margin-top: 2px;
  font-size: 0.625rem; /* 8.5px at 85% root */
  color: var(--muted-foreground);
}

/* Stage 9.28's body.single-theme.postid-25 hero overrides were promoted
   to the shared `body.single-theme .theme-hero.theme-hero--has-bg`
   block earlier in this file (0.9.84 — theme hero refactor). Fruit
   Slots' gradient now comes from the _theme_hero_bg meta; the layout
   is driven by --has-bg + the optional --text-dark modifier. */

/* ===========================================================================
   STAGE 9.46 — /themes hub (archive-theme.php). Scoped to
   body.post-type-archive-theme so the archive's curated hub markup
   only paints on the directory page, not on individual theme posts.

   Sections (top→bottom):
     1. .themes-hub-hero          — full-bleed felt bg with 1fr/300px grid
     2. .themes-hub-featured      — 6 cards, 16:10 image tiles
     3. .themes-hub-all           — 26 cards, 4:3 image tiles
     4. .themes-hub-spotlights    — 4 prose+table blocks
     5. .themes-hub-prose         — editorial paragraphs
     6. .themes-hub-cross         — 3 cross-discovery cards
     7. .themes-hub-faq           — reuses .faq-accordion chrome
     8. .themes-hub-byline        — reuses .reviewer-bio--editor chrome
   =========================================================================== */

/* ---- Outer main padding — the theme's default .site-main carries
       padding-block: 1.7rem (27.2px) which on the themes hub creates
       an empty cream band ABOVE the felt-green hero (no equivalent on
       Lov). Zero it for the hub so the green starts flush under the
       header, and zero the bottom too so the footer sits flush against
       the last hub section just like Lov. Scoped to this body class so
       every other template keeps its main-padding rhythm. ------------- */

body.post-type-archive-theme .site-main {
  padding-top: 0;
  padding-bottom: 0;
}

/* ---- 1. Hero (full-bleed felt-green) ---------------------------------- */

body.post-type-archive-theme .themes-hub-hero {
  background: var(--felt);
  border-bottom: 1px solid var(--felt);
  color: var(--cream);
}
body.post-type-archive-theme .themes-hub-hero__inner {
  max-width: 1280px;
  margin-inline: auto;
  padding: 1.25rem 1rem;
}
@media (min-width: 1024px) {
  body.post-type-archive-theme .themes-hub-hero__inner {
    padding: 1.5rem 2rem;
    min-height: 280px;
    display: flex;
    flex-direction: column;
    justify-content: center;
  }
}

/* Dark-tone breadcrumb inside the hero — overrides the default chrome
   colour. The breadcrumb partial uses .breadcrumb-wrap > .breadcrumb. */
body.post-type-archive-theme .themes-hub-hero .breadcrumb-wrap {
  background: transparent;
  border: 0;
  padding: 0;
  margin: 0;
}
body.post-type-archive-theme .themes-hub-hero .breadcrumb {
  color: color-mix(in oklab, var(--cream) 70%, transparent);
  font-size: 0.75rem;
}
body.post-type-archive-theme .themes-hub-hero .breadcrumb ol {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0;
}
body.post-type-archive-theme .themes-hub-hero .breadcrumb li {
  display: inline;
}
body.post-type-archive-theme .themes-hub-hero .breadcrumb li + li::before {
  content: "›";
  margin: 0 0.375rem;
  color: color-mix(in oklab, var(--cream) 55%, transparent);
}
body.post-type-archive-theme .themes-hub-hero .breadcrumb a {
  color: color-mix(in oklab, var(--cream) 70%, transparent);
  text-decoration: none;
}
body.post-type-archive-theme .themes-hub-hero .breadcrumb a:hover {
  color: var(--gold);
}
body.post-type-archive-theme .themes-hub-hero .breadcrumb [aria-current="page"] {
  color: var(--cream);
  font-weight: 500;
}

body.post-type-archive-theme .themes-hub-hero__grid {
  margin-top: 1.5rem;
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 2rem;
  align-items: start;
}
@media (min-width: 1024px) {
  body.post-type-archive-theme .themes-hub-hero__grid {
    grid-template-columns: minmax(0, 1fr) 300px;
    gap: 3rem;
  }
}
/* Grid children must be free to shrink past their min-content (the
   spotlight card has a 120px image media + nowrap subtitle that would
   otherwise force the 1fr track wider than the viewport at 375). */
body.post-type-archive-theme .themes-hub-hero__grid > * {
  min-width: 0;
  max-width: 100%;
}
body.post-type-archive-theme .themes-hub-hero__eyebrow {
  font-size: 0.75rem;
  text-transform: uppercase;
  letter-spacing: 0.2em;
  color: var(--gold);
  font-weight: 700;
}
body.post-type-archive-theme .themes-hub-hero__title {
  margin: 0.5rem 0 0 !important;
  /* Lov uses Tailwind text-4xl/lg:text-5xl which renders 22.5/32px at
     the site's 85% root. Was 36/48 in 0.9.46/47 — too heavy; that's
     what made the green hero feel "long" and the next section
     "separated" from it. */
  font-size: 22.5px !important;
  font-weight: 800 !important;
  letter-spacing: -0.01em !important;
  color: var(--cream) !important;
  line-height: 1.1 !important;
}
@media (min-width: 1024px) {
  body.post-type-archive-theme .themes-hub-hero__title {
    font-size: 32px !important;
  }
}
body.post-type-archive-theme .themes-hub-hero__lede {
  margin: 1rem 0 0;
  max-width: 56rem;
  color: color-mix(in oklab, var(--cream) 85%, transparent);
  font-size: 0.95rem;
  line-height: 1.65;
}

/* Hero spotlight card (right column @ lg+) — mirrors Lov's HubSpotlight
   featured variant: 2px charcoal border, sharp corners, white card,
   80×120 image media, cherry "Play Now →" pill. */
body.post-type-archive-theme .themes-hub-hero__spotlight {
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  width: 100%;
  min-width: 0;
  max-width: 100%;
}
@media (min-width: 1024px) {
  body.post-type-archive-theme .themes-hub-hero__spotlight {
    align-items: flex-end;
  }
}
body.post-type-archive-theme .themes-hub-hero__spotlight-eyebrow {
  display: flex;
  align-items: center;
  gap: 0.625rem;
  margin-bottom: 0.625rem;
  font-family: var(--font-sans);
}
body.post-type-archive-theme .themes-hub-hero__spotlight-rule {
  height: 2px;
  width: 1.5rem;
  background: var(--gold);
}
body.post-type-archive-theme .themes-hub-hero__spotlight-label {
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.18em;
  color: var(--cream);
}
body.post-type-archive-theme .themes-hub-hero__spotlight-sep {
  color: color-mix(in oklab, var(--cream) 60%, transparent);
  font-size: 10px;
}
body.post-type-archive-theme .themes-hub-hero__spotlight-sublabel {
  font-size: 10px;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: color-mix(in oklab, var(--cream) 60%, transparent);
}
body.post-type-archive-theme .themes-hub-hero__spotlight-card {
  display: flex;
  align-items: stretch;
  width: 100%;
  max-width: 100%;
  min-width: 0;
  background: var(--card);
  border: 2px solid var(--charcoal);
  border-radius: 0;
  text-decoration: none;
  color: inherit;
  transition: transform 200ms ease;
}
@media (min-width: 1024px) {
  body.post-type-archive-theme .themes-hub-hero__spotlight-card {
    max-width: 380px;
  }
}
body.post-type-archive-theme .themes-hub-hero__spotlight-card:hover {
  transform: translate(-2px, -2px);
}
body.post-type-archive-theme .themes-hub-hero__spotlight-media {
  position: relative;
  flex-shrink: 0;
  width: 120px;
  height: 80px;
  border: 2px solid var(--charcoal);
  overflow: hidden;
  margin: 10px;
}
body.post-type-archive-theme .themes-hub-hero__spotlight-img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
body.post-type-archive-theme .themes-hub-hero__spotlight-body {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  padding: 10px 10px 10px 0;
}
body.post-type-archive-theme .themes-hub-hero__spotlight-title {
  font-family: var(--font-display);
  font-size: 10px;
  line-height: 1.12;
  font-weight: 700;
  color: var(--charcoal);
  overflow: hidden;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  word-break: break-word;
}
body.post-type-archive-theme .themes-hub-hero__spotlight-sub {
  font-size: 12px;
  font-style: italic;
  color: var(--muted-foreground);
  margin-top: 2px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
body.post-type-archive-theme .themes-hub-hero__spotlight-meta {
  margin-top: 6px;
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: color-mix(in oklab, var(--charcoal) 75%, transparent);
}
body.post-type-archive-theme .themes-hub-hero__spotlight-cta-wrap {
  margin-top: 8px;
}
body.post-type-archive-theme .themes-hub-hero__spotlight-cta {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  background: var(--cherry);
  color: var(--cream);
  font-size: 11px;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.14em;
  padding: 4px 10px;
  border: 2px solid var(--charcoal);
}


/* ---- 2-8. Body container (880-narrow content column) ------------------ */

body.post-type-archive-theme .themes-hub-body {
  max-width: 880px;
}
body.post-type-archive-theme .themes-hub-section {
  padding-block: 3rem;
}
body.post-type-archive-theme .themes-hub-section:first-child {
  padding-top: 3rem;
}
body.post-type-archive-theme .themes-hub-section__title {
  margin: 0 0 1.5rem !important;
  /* Lov h2 renders 24px desktop / 20px mobile (matches the global
     style.css heading scale at L144-152). Was 1.875rem (25.5px) — a
     hair larger than Lov; clamp to the heading-scale default by
     dropping the explicit override and letting the base !important
     rule from style.css L144 apply. */
  font-size: 24px !important;
  font-weight: 700 !important;
  letter-spacing: -0.02em !important;
  line-height: 1.2 !important;
}
@media (max-width: 767px) {
  body.post-type-archive-theme .themes-hub-section__title {
    font-size: 20px !important;
  }
}

/* ---- 2. Featured Themes grid (6 cards, 16:10) ------------------------- */

body.post-type-archive-theme .themes-hub-featured__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1.25rem;
}
@media (min-width: 640px) {
  body.post-type-archive-theme .themes-hub-featured__grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
@media (min-width: 1024px) {
  body.post-type-archive-theme .themes-hub-featured__grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

/* ---- 3. All Themes grid (26 cards, 4:3) ------------------------------- */

body.post-type-archive-theme .themes-hub-all__grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.75rem;
}
@media (min-width: 768px) {
  body.post-type-archive-theme .themes-hub-all__grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}
@media (min-width: 1024px) {
  body.post-type-archive-theme .themes-hub-all__grid {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
}

/* Card chrome — sharp corners, 1px border, image fills, dark gradient
   overlay. Live Lov render confirms border-radius:0 even though the
   Tailwind classes say rounded-xl/rounded-2xl — the global SlotRover
   --radius: 0 reset wins on the live build, and we match. */
body.post-type-archive-theme .themes-hub-tile {
  position: relative;
  display: block;
  overflow: hidden;
  border: 1px solid var(--border);
  border-radius: 0;
  text-decoration: none;
  color: var(--cream);
  background-position: center;
  background-size: cover;
}
body.post-type-archive-theme .themes-hub-tile--featured {
  aspect-ratio: 16 / 10;
}
body.post-type-archive-theme .themes-hub-tile--small {
  aspect-ratio: 4 / 3;
}
body.post-type-archive-theme .themes-hub-tile--placeholder {
  cursor: default;
}
body.post-type-archive-theme .themes-hub-tile__img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 200ms ease;
}
body.post-type-archive-theme a.themes-hub-tile:hover .themes-hub-tile__img {
  transform: scale(1.03);
}
body.post-type-archive-theme .themes-hub-tile__overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(
    to top,
    color-mix(in oklab, var(--charcoal) 90%, transparent) 0%,
    color-mix(in oklab, var(--charcoal) 30%, transparent) 55%,
    transparent 100%
  );
  pointer-events: none;
}
body.post-type-archive-theme .themes-hub-tile__overlay--soft {
  background: linear-gradient(
    to top,
    color-mix(in oklab, var(--charcoal) 85%, transparent) 0%,
    color-mix(in oklab, var(--charcoal) 20%, transparent) 55%,
    transparent 100%
  );
}
body.post-type-archive-theme .themes-hub-tile__body {
  position: absolute;
  inset: 0;
  z-index: 2;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  padding: 1.25rem;
  color: var(--cream);
}
body.post-type-archive-theme .themes-hub-tile__body--sm {
  padding: 0.75rem;
}
body.post-type-archive-theme .themes-hub-tile__title {
  font-family: var(--font-display);
  font-weight: 700;
  color: var(--cream);
  margin: 0;
}
body.post-type-archive-theme .themes-hub-tile__title--lg {
  font-size: 1.5rem;
  line-height: 1.2;
}
body.post-type-archive-theme .themes-hub-tile__title--sm {
  font-size: 1rem;
  line-height: 1.15;
}
body.post-type-archive-theme .themes-hub-tile__meta {
  margin-top: 4px;
  color: color-mix(in oklab, var(--cream) 90%, transparent);
}
body.post-type-archive-theme .themes-hub-tile__meta--lg {
  font-size: 0.75rem;
}
body.post-type-archive-theme .themes-hub-tile__meta--sm {
  font-size: 10px;
  color: color-mix(in oklab, var(--cream) 85%, transparent);
  line-height: 1.3;
}
body.post-type-archive-theme .themes-hub-tile__cta {
  margin-top: 0.75rem;
  font-size: 0.75rem;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  font-weight: 700;
}

/* ---- 4. Spotlights (prose + table) ------------------------------------ */

body.post-type-archive-theme .themes-hub-spotlights__list {
  display: flex;
  flex-direction: column;
  gap: 3rem;
}
body.post-type-archive-theme .themes-hub-spotlights__item {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1.5rem;
  align-items: start;
}
@media (min-width: 1024px) {
  body.post-type-archive-theme .themes-hub-spotlights__item {
    grid-template-columns: 1fr 1.4fr;
  }
}
body.post-type-archive-theme .themes-hub-spotlights__h {
  margin: 0 !important;
  font-size: 1.25rem !important;
  font-weight: 700 !important;
  letter-spacing: -0.01em !important;
}
body.post-type-archive-theme .themes-hub-spotlights__body {
  margin: 0.75rem 0 0;
  color: color-mix(in oklab, var(--foreground) 85%, transparent);
  line-height: 1.65;
  font-size: 0.875rem;
}
body.post-type-archive-theme .themes-hub-spotlights__table-wrap {
  overflow: hidden;
  border: 1px solid var(--border);
  border-radius: 0;
}
body.post-type-archive-theme .themes-hub-spotlights__table {
  width: 100%;
  display: table;
  border-collapse: collapse;
  font-size: 0.875rem;
}
body.post-type-archive-theme .themes-hub-spotlights__table thead {
  background: color-mix(in oklab, var(--cream-100) 60%, transparent);
  font-size: 0.75rem;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: var(--muted-foreground);
}
body.post-type-archive-theme .themes-hub-spotlights__table th,
body.post-type-archive-theme .themes-hub-spotlights__table td {
  text-align: left;
  padding: 0.75rem;
  border-bottom: 0;
}
body.post-type-archive-theme .themes-hub-spotlights__table tbody tr {
  border-top: 1px solid var(--border);
}
body.post-type-archive-theme .themes-hub-spotlights__td-name {
  font-weight: 600;
}
body.post-type-archive-theme .themes-hub-spotlights__td-name a {
  color: var(--foreground);
  text-decoration: none;
}
body.post-type-archive-theme .themes-hub-spotlights__td-name a:hover {
  color: var(--cherry);
}
body.post-type-archive-theme .themes-hub-spotlights__td-rtp {
  font-variant-numeric: tabular-nums;
}
body.post-type-archive-theme .themes-hub-spotlights__td-note {
  color: color-mix(in oklab, var(--foreground) 80%, transparent);
}

/* ---- 5. Prose (4 paragraphs) ------------------------------------------ */

body.post-type-archive-theme .themes-hub-prose__body {
  color: color-mix(in oklab, var(--foreground) 85%, transparent);
  line-height: 1.65;
}
/* Explicit margin between paras (rather than relying on flex gap) — the
   0.9.47 audit caught margin-bottom 0 on WP vs 13.6 on Lov; flex gap is
   correct but some browser tools and screen-readers read p margin too. */
body.post-type-archive-theme .themes-hub-prose__body p {
  margin: 0 0 1rem;
}
body.post-type-archive-theme .themes-hub-prose__body p:last-child {
  margin-bottom: 0;
}
body.post-type-archive-theme .themes-hub-prose__link {
  color: var(--cherry);
  font-weight: 600;
  text-decoration: none;
}
body.post-type-archive-theme .themes-hub-prose__link:hover {
  text-decoration: underline;
}
body.post-type-archive-theme .themes-hub-prose__strong {
  font-weight: 600;
  color: var(--foreground);
}

/* ---- 6. Cross-discovery (3 cards) ------------------------------------- */

body.post-type-archive-theme .themes-hub-cross__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1.25rem;
}
@media (min-width: 768px) {
  body.post-type-archive-theme .themes-hub-cross__grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}
body.post-type-archive-theme .themes-hub-cross__card {
  display: block;
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: 0;
  padding: 1.5rem;
  text-decoration: none;
  color: inherit;
  transition: transform 200ms ease, border-color 200ms ease;
}
body.post-type-archive-theme .themes-hub-cross__card:hover {
  transform: translateY(-2px);
  border-color: color-mix(in oklab, var(--cherry) 40%, transparent);
}
body.post-type-archive-theme .themes-hub-cross__card-title {
  font-size: 1.125rem;
  font-weight: 700;
  color: var(--foreground);
}
body.post-type-archive-theme .themes-hub-cross__card-body {
  margin: 0.5rem 0 0;
  font-size: 0.875rem;
  color: var(--muted-foreground);
  line-height: 1.6;
}
body.post-type-archive-theme .themes-hub-cross__card-cta {
  margin-top: 1rem;
  font-size: 0.75rem;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: var(--cherry);
  font-weight: 700;
}

/* ---- 7. FAQ (reuse existing .faq-accordion) --------------------------- */

body.post-type-archive-theme .themes-hub-faq .faq-accordion {
  margin-top: 0;
}

/* ---- 8. Byline (reuse .reviewer-bio--editor) -------------------------- */

/* Lov's byline card is a white-on-cream frame: 1px parchment border,
   17px (≈p-5 @ 85% root) padding all sides, sharp corners (the brutalist
   tokens override Tailwind's rounded-2xl), 68px round avatar.
   0.9.48 mistakenly stripped this to transparent/zero-border — the
   correction audit at 0.9.49 confirmed Lov actually renders the frame. */
body.post-type-archive-theme .reviewer-bio--editor {
  margin-top: 0;
  padding: 0;
  background: transparent;
}
body.post-type-archive-theme .reviewer-bio--editor .reviewer-bio__card {
  background: var(--white);
  border: 1px solid var(--border);
  border-radius: 0;
  padding: 17px;
  display: flex;
  align-items: flex-start;
  gap: 1rem;
}
body.post-type-archive-theme .reviewer-bio--editor .reviewer-bio__photo {
  width: 68px;
  height: 68px;
  flex-shrink: 0;
  border-radius: 9999px;
  overflow: hidden;
  background: linear-gradient(135deg, var(--cherry), var(--gold));
}
body.post-type-archive-theme .reviewer-bio--editor .reviewer-bio__img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  /* Belt-and-braces: __photo wrapper already clips to a circle, but
     stamping the radius on the img too matches Lov's rendered output
     verbatim (avatar IMG carries border-radius: 9999px directly). */
  border-radius: 9999px;
}
body.post-type-archive-theme .reviewer-bio--editor .reviewer-bio__body {
  flex: 1;
  min-width: 0;
}
body.post-type-archive-theme .reviewer-bio--editor .reviewer-bio__editor-heading {
  font-size: 1rem;
  font-weight: 700;
}
body.post-type-archive-theme .reviewer-bio--editor .reviewer-bio__headline {
  margin: 2px 0 0;
  font-size: 0.75rem;
  color: var(--muted-foreground);
}
body.post-type-archive-theme .reviewer-bio--editor .reviewer-bio__text {
  margin: 0.5rem 0 0;
  font-size: 13px;
  line-height: 1.55;
  color: color-mix(in oklab, var(--charcoal) 80%, transparent);
}
/* Meta row — Lov uses inline-flex with separators that wrap together
   (gap-x-2 gap-y-1 + flex-wrap). The default reviewer-bio__meta uses
   block layout and lets whitespace control wrap, which produces a
   different break point than Lov. */
body.post-type-archive-theme .reviewer-bio--editor .reviewer-bio__meta {
  margin-top: 0.75rem;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  column-gap: 0.5rem;
  row-gap: 0.25rem;
  font-size: 0.75rem;
}
body.post-type-archive-theme .reviewer-bio--editor .reviewer-bio__meta-item,
body.post-type-archive-theme .reviewer-bio--editor .reviewer-bio__meta-link {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
}
body.post-type-archive-theme .themes-hub-byline__disclosure {
  margin: 1rem 0 0;
  font-size: 0.75rem;
  color: var(--muted-foreground);
  line-height: 1.6;
}

/* ===========================================================================
   STAGE 9.50 — /providers hub (page-providers.php). Scoped to
   body.page-template-page-providers (WP derives this from the
   page-providers.php filename — see archive-theme.php precedent which
   scoped to body.post-type-archive-theme).

   Modelled on the themes hub at 0.9.49 — same overall shape (hero +
   featured + all + spotlights + prose + cross + faq + byline), but
   with provider-specific chrome:
     - dark charcoal hero + gold pinstripe (vs themes' felt-green)
     - 16:9 LOGO WELLS instead of image illustrations
     - bi-tone logo backgrounds (#141418 dark / cream-100 light)
     - 3 sub-groups under the "All 14" section
     - spotlight deep-dives carry a logo chip + provider name
   =========================================================================== */

/* ---- Outer main padding — zero so the dark hero starts flush under
       the header (matches the themes-hub fix at 0.9.49). ------------- */

body.page-template-page-providers .site-main {
  padding-top: 0;
  padding-bottom: 0;
}

/* ---- 1. Hero (full-bleed charcoal + gold pinstripe) ------------------ */

body.page-template-page-providers .providers-hub-hero {
  position: relative;
  background-color: var(--charcoal);
  background-image: repeating-linear-gradient(
    90deg,
    color-mix(in oklab, var(--gold) 8%, transparent) 0 1px,
    transparent 1px 9px
  );
  border-bottom: 1px solid var(--charcoal);
  color: var(--cream);
}
body.page-template-page-providers .providers-hub-hero__inner {
  position: relative;
  max-width: 1280px;
  margin-inline: auto;
  padding: 1.25rem 1rem;
}
@media (min-width: 1024px) {
  body.page-template-page-providers .providers-hub-hero__inner {
    padding: 1.5rem 2rem;
    min-height: 280px;
    display: flex;
    flex-direction: column;
    justify-content: center;
  }
}

/* Dark-tone breadcrumb inside the hero. */
body.page-template-page-providers .providers-hub-hero .breadcrumb-wrap {
  background: transparent;
  border: 0;
  padding: 0;
  margin: 0;
}
body.page-template-page-providers .providers-hub-hero .breadcrumb {
  color: color-mix(in oklab, var(--cream) 70%, transparent);
  font-size: 0.75rem;
}
body.page-template-page-providers .providers-hub-hero .breadcrumb ol {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0;
}
body.page-template-page-providers .providers-hub-hero .breadcrumb li {
  display: inline;
}
body.page-template-page-providers .providers-hub-hero .breadcrumb li + li::before {
  content: "›";
  margin: 0 0.375rem;
  color: color-mix(in oklab, var(--cream) 55%, transparent);
}
body.page-template-page-providers .providers-hub-hero .breadcrumb a {
  color: color-mix(in oklab, var(--cream) 70%, transparent);
  text-decoration: none;
}
body.page-template-page-providers .providers-hub-hero .breadcrumb a:hover {
  color: var(--gold);
}
body.page-template-page-providers .providers-hub-hero .breadcrumb [aria-current="page"] {
  color: var(--cream);
  font-weight: 500;
}

body.page-template-page-providers .providers-hub-hero__grid {
  margin-top: 1.5rem;
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 2rem;
  align-items: start;
}
@media (min-width: 1024px) {
  body.page-template-page-providers .providers-hub-hero__grid {
    grid-template-columns: minmax(0, 1fr) 300px;
    gap: 3rem;
  }
}
body.page-template-page-providers .providers-hub-hero__grid > * {
  min-width: 0;
  max-width: 100%;
}
body.page-template-page-providers .providers-hub-hero__eyebrow {
  font-size: 0.75rem;
  text-transform: uppercase;
  letter-spacing: 0.2em;
  color: var(--gold);
  font-weight: 700;
}
body.page-template-page-providers .providers-hub-hero__title {
  margin: 0.5rem 0 0 !important;
  font-size: 22.5px !important;
  font-weight: 800 !important;
  letter-spacing: -0.01em !important;
  color: var(--cream) !important;
  line-height: 1.1 !important;
}
@media (min-width: 1024px) {
  body.page-template-page-providers .providers-hub-hero__title {
    font-size: 32px !important;
  }
}
body.page-template-page-providers .providers-hub-hero__lede {
  margin: 1rem 0 0;
  max-width: 56rem;
  color: color-mix(in oklab, var(--cream) 85%, transparent);
  font-size: 0.95rem;
  line-height: 1.65;
}

/* Hero spotlight card — same brutalist 2px-charcoal-frame card as the
   themes hub spotlight. Pragmatic Play featured tile. */
body.page-template-page-providers .providers-hub-hero__spotlight {
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  width: 100%;
  min-width: 0;
  max-width: 100%;
}
@media (min-width: 1024px) {
  body.page-template-page-providers .providers-hub-hero__spotlight {
    align-items: flex-end;
  }
}
body.page-template-page-providers .providers-hub-hero__spotlight-eyebrow {
  display: flex;
  align-items: center;
  gap: 0.625rem;
  margin-bottom: 0.625rem;
  font-family: var(--font-sans);
}
body.page-template-page-providers .providers-hub-hero__spotlight-rule {
  height: 2px;
  width: 1.5rem;
  background: var(--gold);
}
body.page-template-page-providers .providers-hub-hero__spotlight-label {
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.18em;
  color: var(--cream);
}
body.page-template-page-providers .providers-hub-hero__spotlight-sep {
  color: color-mix(in oklab, var(--cream) 60%, transparent);
  font-size: 10px;
}
body.page-template-page-providers .providers-hub-hero__spotlight-sublabel {
  font-size: 10px;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: color-mix(in oklab, var(--cream) 60%, transparent);
}
body.page-template-page-providers .providers-hub-hero__spotlight-card {
  display: flex;
  align-items: stretch;
  width: 100%;
  max-width: 100%;
  min-width: 0;
  background: var(--card);
  border: 2px solid var(--charcoal);
  border-radius: 0;
  text-decoration: none;
  color: inherit;
  transition: transform 200ms ease;
}
@media (min-width: 1024px) {
  body.page-template-page-providers .providers-hub-hero__spotlight-card {
    max-width: 380px;
  }
}
body.page-template-page-providers .providers-hub-hero__spotlight-card:hover {
  transform: translate(-2px, -2px);
}
body.page-template-page-providers .providers-hub-hero__spotlight-media {
  position: relative;
  flex-shrink: 0;
  width: 120px;
  height: 80px;
  border: 2px solid var(--charcoal);
  overflow: hidden;
  margin: 10px;
}
/* Lov fills the 120×80 media box with the logo via absolute inset-0 +
   object-cover, so the gradient bg is masked by the image and there's
   no visible inset frame. Mine was contain + 6px padding, which left
   the blue gradient showing as a frame around the logo — the "extra
   blue box" the user flagged at 0.9.50. */
body.page-template-page-providers .providers-hub-hero__spotlight-img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  max-width: none;
  max-height: none;
  object-fit: cover;
}
body.page-template-page-providers .providers-hub-hero__spotlight-body {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  padding: 10px 10px 10px 0;
}
body.page-template-page-providers .providers-hub-hero__spotlight-title {
  font-family: var(--font-display);
  font-size: 10px;
  line-height: 1.12;
  font-weight: 700;
  color: var(--charcoal);
  overflow: hidden;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  word-break: break-word;
}
body.page-template-page-providers .providers-hub-hero__spotlight-sub {
  font-size: 12px;
  font-style: italic;
  color: var(--muted-foreground);
  margin-top: 2px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
body.page-template-page-providers .providers-hub-hero__spotlight-meta {
  margin-top: 6px;
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: color-mix(in oklab, var(--charcoal) 75%, transparent);
}
body.page-template-page-providers .providers-hub-hero__spotlight-cta-wrap {
  margin-top: 8px;
}
body.page-template-page-providers .providers-hub-hero__spotlight-cta {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  background: var(--cherry);
  color: var(--cream);
  font-size: 11px;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.14em;
  padding: 4px 10px;
  border: 2px solid var(--charcoal);
}

/* ---- 2-8. Body container (880-narrow content column) ----------------- */

body.page-template-page-providers .providers-hub-body {
  max-width: 880px;
}
body.page-template-page-providers .providers-hub-section {
  padding-block: 3rem;
}
body.page-template-page-providers .providers-hub-section__title {
  margin: 0 0 1.5rem !important;
  font-size: 24px !important;
  font-weight: 700 !important;
  letter-spacing: -0.02em !important;
  line-height: 1.2 !important;
}
@media (max-width: 767px) {
  body.page-template-page-providers .providers-hub-section__title {
    font-size: 20px !important;
  }
}

/* ---- 2. Featured grid (6 cards, 16:9 logo wells) --------------------- */

body.page-template-page-providers .providers-hub-featured__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1.25rem;
}
@media (min-width: 640px) {
  body.page-template-page-providers .providers-hub-featured__grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
@media (min-width: 1024px) {
  body.page-template-page-providers .providers-hub-featured__grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

/* ---- 3. All grid (3 groups, 4-col compact) --------------------------- */

body.page-template-page-providers .providers-hub-all__groups {
  display: flex;
  flex-direction: column;
  gap: 2.5rem;
}
body.page-template-page-providers .providers-hub-all__group-h {
  margin: 0 !important;
  font-size: 1.25rem !important;
  font-weight: 700 !important;
  letter-spacing: -0.01em !important;
}
body.page-template-page-providers .providers-hub-all__group-intro {
  margin: 0.25rem 0 0;
  font-size: 0.875rem;
  color: var(--muted-foreground);
}
body.page-template-page-providers .providers-hub-all__grid {
  margin-top: 1rem;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.75rem;
}
@media (min-width: 768px) {
  body.page-template-page-providers .providers-hub-all__grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}
@media (min-width: 1024px) {
  body.page-template-page-providers .providers-hub-all__grid {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
}

/* ---- Tile chrome (logo well + body) — sharp corners across the board.
       Featured tiles get a deeper logo well + larger body padding;
       small tiles get a compact variant for the 4-col grid. ---------- */

body.page-template-page-providers .providers-hub-tile {
  display: block;
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: 0;
  overflow: hidden;
  text-decoration: none;
  color: inherit;
  transition: border-color 200ms ease;
}
body.page-template-page-providers a.providers-hub-tile:hover {
  border-color: color-mix(in oklab, var(--cherry) 40%, transparent);
}
body.page-template-page-providers .providers-hub-tile--placeholder {
  cursor: default;
}
body.page-template-page-providers .providers-hub-tile__well {
  aspect-ratio: 16 / 9;
  display: flex;
  align-items: center;
  justify-content: center;
}
body.page-template-page-providers .providers-hub-tile__well--featured {
  padding: 1.5rem;
}
body.page-template-page-providers .providers-hub-tile__well--small {
  padding: 1rem;
}
body.page-template-page-providers .providers-hub-tile__well--dark {
  background: #141418;
}
body.page-template-page-providers .providers-hub-tile__well--cream {
  background: var(--cream-100);
}
body.page-template-page-providers .providers-hub-tile__logo {
  max-width: 100%;
  max-height: 100%;
  width: auto;
  height: auto;
  object-fit: contain;
}
body.page-template-page-providers .providers-hub-tile__body {
  border-top: 1px solid var(--border);
}
body.page-template-page-providers .providers-hub-tile__body--featured {
  padding: 1rem;
}
body.page-template-page-providers .providers-hub-tile__body--small {
  padding: 0.75rem;
}
body.page-template-page-providers .providers-hub-tile__name {
  font-family: var(--font-display);
  font-weight: 700;
  color: var(--foreground);
  margin: 0;
}
body.page-template-page-providers .providers-hub-tile__name--lg {
  font-size: 1.125rem;
  line-height: 1.2;
}
body.page-template-page-providers .providers-hub-tile__name--sm {
  font-size: 0.875rem;
  line-height: 1.15;
}
body.page-template-page-providers .providers-hub-tile__meta {
  color: var(--muted-foreground);
}
body.page-template-page-providers .providers-hub-tile__meta--lg {
  margin-top: 4px;
  font-size: 0.75rem;
}
body.page-template-page-providers .providers-hub-tile__meta--sm {
  margin-top: 2px;
  font-size: 10px;
  line-height: 1.3;
}
body.page-template-page-providers .providers-hub-tile__cta {
  margin-top: 0.5rem;
  font-size: 0.75rem;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: var(--cherry);
  font-weight: 700;
}

/* ---- 4. Spotlights (prose + chip + top-3 slot table) ----------------- */

body.page-template-page-providers .providers-hub-spotlights__list {
  display: flex;
  flex-direction: column;
  gap: 3rem;
}
body.page-template-page-providers .providers-hub-spotlights__item {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1.5rem;
  align-items: start;
}
@media (min-width: 1024px) {
  body.page-template-page-providers .providers-hub-spotlights__item {
    grid-template-columns: 1fr 1.4fr;
  }
}
body.page-template-page-providers .providers-hub-spotlights__chip {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: 56px;
  padding: 0 1rem;
  border: 1px solid var(--border);
  border-radius: 0;
  margin-bottom: 0.75rem;
}
body.page-template-page-providers .providers-hub-spotlights__chip-logo {
  max-height: 2rem;
  max-width: 140px;
  width: auto;
  height: auto;
  object-fit: contain;
}
body.page-template-page-providers .providers-hub-spotlights__h {
  margin: 0 !important;
  font-size: 1.25rem !important;
  font-weight: 700 !important;
  letter-spacing: -0.01em !important;
}
body.page-template-page-providers .providers-hub-spotlights__body {
  margin: 0.75rem 0 0;
  color: color-mix(in oklab, var(--foreground) 85%, transparent);
  line-height: 1.65;
  font-size: 0.875rem;
}
body.page-template-page-providers .providers-hub-spotlights__cta {
  display: inline-block;
  margin-top: 0.75rem;
  font-size: 0.875rem;
  font-weight: 600;
  color: var(--cherry);
  text-decoration: none;
}
body.page-template-page-providers .providers-hub-spotlights__cta:hover {
  text-decoration: underline;
}
body.page-template-page-providers .providers-hub-spotlights__cta--soon {
  cursor: default;
}
body.page-template-page-providers .providers-hub-spotlights__cta--soon:hover {
  text-decoration: none;
}
body.page-template-page-providers .providers-hub-spotlights__table-wrap {
  overflow: hidden;
  border: 1px solid var(--border);
  border-radius: 0;
}
body.page-template-page-providers .providers-hub-spotlights__table {
  width: 100%;
  display: table;
  border-collapse: collapse;
  font-size: 0.875rem;
}
body.page-template-page-providers .providers-hub-spotlights__table thead {
  background: color-mix(in oklab, var(--cream-100) 60%, transparent);
  font-size: 0.75rem;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: var(--muted-foreground);
}
body.page-template-page-providers .providers-hub-spotlights__table th,
body.page-template-page-providers .providers-hub-spotlights__table td {
  text-align: left;
  padding: 0.75rem;
  border-bottom: 0;
}
body.page-template-page-providers .providers-hub-spotlights__table tbody tr {
  border-top: 1px solid var(--border);
}
body.page-template-page-providers .providers-hub-spotlights__td-name {
  font-weight: 600;
}
body.page-template-page-providers .providers-hub-spotlights__td-name a {
  color: var(--foreground);
  text-decoration: none;
}
body.page-template-page-providers .providers-hub-spotlights__td-name a:hover {
  color: var(--cherry);
}
body.page-template-page-providers .providers-hub-spotlights__td-empty {
  padding: 1rem;
  color: var(--muted-foreground);
  font-size: 0.875rem;
}

/* ---- 5. Prose (4 paragraphs) ----------------------------------------- */

body.page-template-page-providers .providers-hub-prose__body {
  color: color-mix(in oklab, var(--foreground) 85%, transparent);
  line-height: 1.65;
}
body.page-template-page-providers .providers-hub-prose__body p {
  margin: 0 0 1rem;
}
body.page-template-page-providers .providers-hub-prose__body p:last-child {
  margin-bottom: 0;
}
body.page-template-page-providers .providers-hub-prose__link {
  color: var(--cherry);
  font-weight: 600;
  text-decoration: none;
}
body.page-template-page-providers .providers-hub-prose__link:hover {
  text-decoration: underline;
}
body.page-template-page-providers .providers-hub-prose__strong {
  font-weight: 600;
  color: var(--foreground);
}

/* ---- 6. Cross-discovery (4 cards) ------------------------------------ */

body.page-template-page-providers .providers-hub-cross__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1.25rem;
}
@media (min-width: 768px) {
  body.page-template-page-providers .providers-hub-cross__grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
@media (min-width: 1024px) {
  body.page-template-page-providers .providers-hub-cross__grid {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
}
body.page-template-page-providers .providers-hub-cross__card {
  display: block;
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: 0;
  padding: 1.5rem;
  text-decoration: none;
  color: inherit;
  transition: transform 200ms ease, border-color 200ms ease;
}
body.page-template-page-providers .providers-hub-cross__card:hover {
  transform: translateY(-2px);
  border-color: color-mix(in oklab, var(--cherry) 40%, transparent);
}
body.page-template-page-providers .providers-hub-cross__card-title {
  font-size: 1.125rem;
  font-weight: 700;
  color: var(--foreground);
}
body.page-template-page-providers .providers-hub-cross__card-body {
  margin: 0.5rem 0 0;
  font-size: 0.875rem;
  color: var(--muted-foreground);
  line-height: 1.6;
}
body.page-template-page-providers .providers-hub-cross__card-cta {
  margin-top: 1rem;
  font-size: 0.75rem;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: var(--cherry);
  font-weight: 700;
}

/* ---- 7. FAQ — reuses .faq-accordion -------------------------------- */
body.page-template-page-providers .providers-hub-faq .faq-accordion {
  margin-top: 0;
}

/* ---- 8. Byline — reuses .reviewer-bio--editor (themes-hub pattern) --- */

body.page-template-page-providers .reviewer-bio--editor {
  margin-top: 0;
  padding: 0;
  background: transparent;
}
body.page-template-page-providers .reviewer-bio--editor .reviewer-bio__card {
  background: var(--white);
  border: 1px solid var(--border);
  border-radius: 0;
  padding: 17px;
  display: flex;
  align-items: flex-start;
  gap: 1rem;
}
body.page-template-page-providers .reviewer-bio--editor .reviewer-bio__photo {
  width: 68px;
  height: 68px;
  flex-shrink: 0;
  border-radius: 9999px;
  overflow: hidden;
  background: linear-gradient(135deg, var(--cherry), var(--gold));
}
body.page-template-page-providers .reviewer-bio--editor .reviewer-bio__img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  border-radius: 9999px;
}
body.page-template-page-providers .reviewer-bio--editor .reviewer-bio__body {
  flex: 1;
  min-width: 0;
}
body.page-template-page-providers .reviewer-bio--editor .reviewer-bio__editor-heading {
  font-size: 1rem;
  font-weight: 700;
}
body.page-template-page-providers .reviewer-bio--editor .reviewer-bio__headline {
  margin: 2px 0 0;
  font-size: 0.75rem;
  color: var(--muted-foreground);
}
body.page-template-page-providers .reviewer-bio--editor .reviewer-bio__text {
  margin: 0.5rem 0 0;
  font-size: 13px;
  line-height: 1.55;
  color: color-mix(in oklab, var(--charcoal) 80%, transparent);
}
body.page-template-page-providers .reviewer-bio--editor .reviewer-bio__meta {
  margin-top: 0.75rem;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  column-gap: 0.5rem;
  row-gap: 0.25rem;
  font-size: 0.75rem;
}
body.page-template-page-providers .reviewer-bio--editor .reviewer-bio__meta-item,
body.page-template-page-providers .reviewer-bio--editor .reviewer-bio__meta-link {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
}
body.page-template-page-providers .providers-hub-byline__disclosure {
  margin: 1rem 0 0;
  font-size: 0.75rem;
  color: var(--muted-foreground);
  line-height: 1.6;
}

/* ===========================================================================
   STAGE 9.52 — /features hub (page-features.php). Scoped to
   body.page-template-page-features (set by body_class filter in
   page-features.php; WP does NOT auto-add it from the template
   hierarchy match).

   Modelled on themes + providers hubs. Unique to features hub:
     - GOLD hero (no pinstripe — solid bg-gold; charcoal text on gold)
     - Image-tile cards (NOT logo wells) — uses image+gradient pattern
       from themes hub
     - Adds a "Feature Buy in the UK" warning callout (left-rail warning
       border + AlertTriangle icon)
     - 4 spotlight deep-dives (Bonus Buy spotlight carries a warning
       icon inline with H3)
   =========================================================================== */

/* ---- Zero .site-main padding so the gold hero starts flush. --------- */

body.page-template-page-features .site-main {
  padding-top: 0;
  padding-bottom: 0;
}

/* ---- 1. Hero (full-bleed gold) --------------------------------------- */

body.page-template-page-features .features-hub-hero {
  background: var(--gold);
  border-bottom: 1px solid color-mix(in oklab, var(--charcoal) 20%, transparent);
  color: var(--charcoal);
}
body.page-template-page-features .features-hub-hero__inner {
  position: relative;
  max-width: 1280px;
  margin-inline: auto;
  padding: 1.25rem 1rem;
}
@media (min-width: 1024px) {
  body.page-template-page-features .features-hub-hero__inner {
    padding: 1.5rem 2rem;
    min-height: 280px;
    display: flex;
    flex-direction: column;
    justify-content: center;
  }
}

/* Gold-tone breadcrumb (charcoal text on gold bg). */
body.page-template-page-features .features-hub-hero .breadcrumb-wrap {
  background: transparent;
  border: 0;
  padding: 0;
  margin: 0;
}
body.page-template-page-features .features-hub-hero .breadcrumb {
  color: color-mix(in oklab, var(--charcoal) 70%, transparent);
  font-size: 0.75rem;
}
body.page-template-page-features .features-hub-hero .breadcrumb ol {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0;
}
body.page-template-page-features .features-hub-hero .breadcrumb li {
  display: inline;
}
body.page-template-page-features .features-hub-hero .breadcrumb li + li::before {
  content: "›";
  margin: 0 0.375rem;
  color: color-mix(in oklab, var(--charcoal) 55%, transparent);
}
body.page-template-page-features .features-hub-hero .breadcrumb a {
  color: color-mix(in oklab, var(--charcoal) 70%, transparent);
  text-decoration: none;
}
body.page-template-page-features .features-hub-hero .breadcrumb a:hover {
  color: var(--charcoal);
}
body.page-template-page-features .features-hub-hero .breadcrumb [aria-current="page"] {
  color: var(--charcoal);
  font-weight: 500;
}

body.page-template-page-features .features-hub-hero__grid {
  margin-top: 1.5rem;
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 2rem;
  align-items: start;
}
@media (min-width: 1024px) {
  body.page-template-page-features .features-hub-hero__grid {
    grid-template-columns: minmax(0, 1fr) 300px;
    gap: 3rem;
  }
}
body.page-template-page-features .features-hub-hero__grid > * {
  min-width: 0;
  max-width: 100%;
}
body.page-template-page-features .features-hub-hero__eyebrow {
  font-size: 0.75rem;
  text-transform: uppercase;
  letter-spacing: 0.2em;
  color: var(--charcoal);
  font-weight: 700;
}
body.page-template-page-features .features-hub-hero__title {
  margin: 0.5rem 0 0 !important;
  font-size: 22.5px !important;
  font-weight: 800 !important;
  letter-spacing: -0.01em !important;
  color: var(--charcoal) !important;
  line-height: 1.1 !important;
}
@media (min-width: 1024px) {
  body.page-template-page-features .features-hub-hero__title {
    font-size: 32px !important;
  }
}
body.page-template-page-features .features-hub-hero__lede {
  margin: 1rem 0 0;
  max-width: 56rem;
  color: color-mix(in oklab, var(--charcoal) 85%, transparent);
  font-size: 0.95rem;
  line-height: 1.65;
}

/* Hero spotlight card — Megaways featured-pick. */
body.page-template-page-features .features-hub-hero__spotlight {
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  width: 100%;
  min-width: 0;
  max-width: 100%;
}
@media (min-width: 1024px) {
  body.page-template-page-features .features-hub-hero__spotlight {
    align-items: flex-end;
  }
}
body.page-template-page-features .features-hub-hero__spotlight-eyebrow {
  display: flex;
  align-items: center;
  gap: 0.625rem;
  margin-bottom: 0.625rem;
  font-family: var(--font-sans);
}
body.page-template-page-features .features-hub-hero__spotlight-rule {
  height: 2px;
  width: 1.5rem;
  background: var(--cherry);
}
body.page-template-page-features .features-hub-hero__spotlight-label {
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.18em;
  color: var(--charcoal);
}
body.page-template-page-features .features-hub-hero__spotlight-sep {
  color: color-mix(in oklab, var(--charcoal) 60%, transparent);
  font-size: 10px;
}
body.page-template-page-features .features-hub-hero__spotlight-sublabel {
  font-size: 10px;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: color-mix(in oklab, var(--charcoal) 60%, transparent);
}
body.page-template-page-features .features-hub-hero__spotlight-card {
  display: flex;
  align-items: stretch;
  width: 100%;
  max-width: 100%;
  min-width: 0;
  background: var(--card);
  border: 2px solid var(--charcoal);
  border-radius: 0;
  text-decoration: none;
  color: inherit;
  transition: transform 200ms ease;
}
@media (min-width: 1024px) {
  body.page-template-page-features .features-hub-hero__spotlight-card {
    max-width: 380px;
  }
}
body.page-template-page-features .features-hub-hero__spotlight-card:hover {
  transform: translate(-2px, -2px);
}
body.page-template-page-features .features-hub-hero__spotlight-media {
  position: relative;
  flex-shrink: 0;
  width: 120px;
  height: 80px;
  border: 2px solid var(--charcoal);
  overflow: hidden;
  margin: 10px;
}
body.page-template-page-features .features-hub-hero__spotlight-img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  max-width: none;
  max-height: none;
  object-fit: cover;
}
body.page-template-page-features .features-hub-hero__spotlight-body {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  padding: 10px 10px 10px 0;
}
body.page-template-page-features .features-hub-hero__spotlight-title {
  font-family: var(--font-display);
  font-size: 10px;
  line-height: 1.12;
  font-weight: 700;
  color: var(--charcoal);
  overflow: hidden;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  word-break: break-word;
}
body.page-template-page-features .features-hub-hero__spotlight-sub {
  font-size: 12px;
  font-style: italic;
  color: var(--muted-foreground);
  margin-top: 2px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
body.page-template-page-features .features-hub-hero__spotlight-meta {
  margin-top: 6px;
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: color-mix(in oklab, var(--charcoal) 75%, transparent);
}
body.page-template-page-features .features-hub-hero__spotlight-cta-wrap {
  margin-top: 8px;
}
body.page-template-page-features .features-hub-hero__spotlight-cta {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  background: var(--cherry);
  color: var(--cream);
  font-size: 11px;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.14em;
  padding: 4px 10px;
  border: 2px solid var(--charcoal);
}

/* ---- 2-9. Body container ---------------------------------------------- */

body.page-template-page-features .features-hub-body {
  max-width: 880px;
}
body.page-template-page-features .features-hub-section {
  padding-block: 3rem;
}
body.page-template-page-features .features-hub-section__title {
  margin: 0 0 1.5rem !important;
  font-size: 24px !important;
  font-weight: 700 !important;
  letter-spacing: -0.02em !important;
  line-height: 1.2 !important;
}
@media (max-width: 767px) {
  body.page-template-page-features .features-hub-section__title {
    font-size: 20px !important;
  }
}

/* ---- 2. Featured Features grid (6 cards, 16:10 image tiles) ---------- */

body.page-template-page-features .features-hub-featured__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1.25rem;
}
@media (min-width: 640px) {
  body.page-template-page-features .features-hub-featured__grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
@media (min-width: 1024px) {
  body.page-template-page-features .features-hub-featured__grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

/* ---- 3. All grid (16 cards, 4:3, alphabetical) ----------------------- */

body.page-template-page-features .features-hub-all__grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.75rem;
}
@media (min-width: 768px) {
  body.page-template-page-features .features-hub-all__grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}
@media (min-width: 1024px) {
  body.page-template-page-features .features-hub-all__grid {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
}

/* Image tiles — sharp corners, dark gradient overlay, cream title text
   at bottom (same chrome as themes hub .themes-hub-tile). */
body.page-template-page-features .features-hub-tile {
  position: relative;
  display: block;
  overflow: hidden;
  border: 1px solid var(--border);
  border-radius: 0;
  text-decoration: none;
  color: var(--cream);
  background: linear-gradient(135deg, #1a1a1a, #3a1a1a);
}
body.page-template-page-features .features-hub-tile--featured {
  aspect-ratio: 16 / 10;
}
body.page-template-page-features .features-hub-tile--small {
  aspect-ratio: 4 / 3;
}
body.page-template-page-features .features-hub-tile--placeholder {
  cursor: default;
}
body.page-template-page-features .features-hub-tile__img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 200ms ease;
}
body.page-template-page-features a.features-hub-tile:hover .features-hub-tile__img {
  transform: scale(1.03);
}
body.page-template-page-features .features-hub-tile__overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(
    to top,
    color-mix(in oklab, var(--charcoal) 90%, transparent) 0%,
    color-mix(in oklab, var(--charcoal) 30%, transparent) 55%,
    transparent 100%
  );
  pointer-events: none;
}
body.page-template-page-features .features-hub-tile__overlay--soft {
  background: linear-gradient(
    to top,
    color-mix(in oklab, var(--charcoal) 85%, transparent) 0%,
    color-mix(in oklab, var(--charcoal) 20%, transparent) 55%,
    transparent 100%
  );
}
body.page-template-page-features .features-hub-tile__body {
  position: absolute;
  inset: 0;
  z-index: 2;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  padding: 1.25rem;
  color: var(--cream);
}
body.page-template-page-features .features-hub-tile__body--sm {
  padding: 0.75rem;
}
body.page-template-page-features .features-hub-tile__title {
  font-family: var(--font-display);
  font-weight: 700;
  color: var(--cream);
  margin: 0;
}
body.page-template-page-features .features-hub-tile__title--lg {
  font-size: 1.5rem;
  line-height: 1.2;
}
body.page-template-page-features .features-hub-tile__title--sm {
  font-size: 1rem;
  line-height: 1.15;
}
body.page-template-page-features .features-hub-tile__meta {
  color: color-mix(in oklab, var(--cream) 90%, transparent);
}
body.page-template-page-features .features-hub-tile__meta--lg {
  margin-top: 4px;
  font-size: 0.75rem;
}
body.page-template-page-features .features-hub-tile__meta--sm {
  margin-top: 2px;
  font-size: 10px;
  color: color-mix(in oklab, var(--cream) 85%, transparent);
  line-height: 1.3;
}
body.page-template-page-features .features-hub-tile__cta {
  margin-top: 0.75rem;
  font-size: 0.75rem;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  font-weight: 700;
}

/* ---- 4. Spotlights (prose + table) ----------------------------------- */

body.page-template-page-features .features-hub-spotlights__list {
  display: flex;
  flex-direction: column;
  gap: 3rem;
}
body.page-template-page-features .features-hub-spotlights__item {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1.5rem;
  align-items: start;
}
@media (min-width: 1024px) {
  body.page-template-page-features .features-hub-spotlights__item {
    grid-template-columns: 1fr 1.2fr;
  }
}
body.page-template-page-features .features-hub-spotlights__h {
  margin: 0 !important;
  font-size: 1.25rem !important;
  font-weight: 700 !important;
  letter-spacing: -0.01em !important;
  display: flex;
  align-items: center;
  gap: 0.5rem;
}
body.page-template-page-features .features-hub-spotlights__h--warning {
  color: var(--charcoal);
}
body.page-template-page-features .features-hub-spotlights__warn-icon {
  color: var(--warning);
  flex-shrink: 0;
}
body.page-template-page-features .features-hub-spotlights__body {
  margin: 0.75rem 0 0;
  color: color-mix(in oklab, var(--foreground) 85%, transparent);
  line-height: 1.65;
  font-size: 0.875rem;
}
body.page-template-page-features .features-hub-spotlights__table-wrap {
  overflow: hidden;
  border: 1px solid var(--border);
  border-radius: 0;
}
body.page-template-page-features .features-hub-spotlights__table {
  width: 100%;
  display: table;
  border-collapse: collapse;
  font-size: 0.875rem;
}
body.page-template-page-features .features-hub-spotlights__table thead {
  background: color-mix(in oklab, var(--cream-100) 60%, transparent);
  font-size: 0.75rem;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: var(--muted-foreground);
}
body.page-template-page-features .features-hub-spotlights__table th,
body.page-template-page-features .features-hub-spotlights__table td {
  text-align: left;
  padding: 0.75rem;
  border-bottom: 0;
}
body.page-template-page-features .features-hub-spotlights__table tbody tr {
  border-top: 1px solid var(--border);
}
body.page-template-page-features .features-hub-spotlights__td-name {
  font-weight: 600;
}
body.page-template-page-features .features-hub-spotlights__td-name a {
  color: var(--foreground);
  text-decoration: none;
}
body.page-template-page-features .features-hub-spotlights__td-name a:hover {
  color: var(--cherry);
}

/* ---- 5. Prose (4 paragraphs) ----------------------------------------- */

body.page-template-page-features .features-hub-prose__body {
  color: color-mix(in oklab, var(--foreground) 85%, transparent);
  line-height: 1.65;
}
body.page-template-page-features .features-hub-prose__body p {
  margin: 0 0 1rem;
}
body.page-template-page-features .features-hub-prose__body p:last-child {
  margin-bottom: 0;
}
body.page-template-page-features .features-hub-prose__strong {
  font-weight: 600;
  color: var(--foreground);
}

/* ---- 6. UK Feature Buy callout — warning border-left bar + AlertTriangle */

body.page-template-page-features .features-hub-callout-section {
  /* Inherits .features-hub-section padding-block 3rem */
}
body.page-template-page-features .features-hub-callout {
  background: color-mix(in oklab, var(--warning) 5%, transparent);
  border-left: 4px solid var(--warning);
  border-radius: 0;
  padding: 1.5rem;
  display: flex;
  align-items: flex-start;
  gap: 0.75rem;
}
body.page-template-page-features .features-hub-callout__icon {
  color: var(--warning);
  flex-shrink: 0;
  margin-top: 0.25rem;
}
body.page-template-page-features .features-hub-callout__body {
  flex: 1;
  min-width: 0;
}
body.page-template-page-features .features-hub-callout__h {
  margin: 0 !important;
  font-size: 1.5rem !important;
  font-weight: 700 !important;
  letter-spacing: -0.02em !important;
  line-height: 1.2 !important;
}
body.page-template-page-features .features-hub-callout__paragraphs {
  margin-top: 1rem;
  color: color-mix(in oklab, var(--foreground) 85%, transparent);
  line-height: 1.65;
  font-size: 0.875rem;
}
body.page-template-page-features .features-hub-callout__paragraphs p {
  margin: 0 0 1rem;
}
body.page-template-page-features .features-hub-callout__paragraphs p:last-child {
  margin-bottom: 0;
}

/* ---- 7. Cross-discovery (3 cards) ------------------------------------ */

body.page-template-page-features .features-hub-cross__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1.25rem;
}
@media (min-width: 768px) {
  body.page-template-page-features .features-hub-cross__grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}
body.page-template-page-features .features-hub-cross__card {
  display: block;
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: 0;
  padding: 1.5rem;
  text-decoration: none;
  color: inherit;
  transition: transform 200ms ease, border-color 200ms ease;
}
body.page-template-page-features .features-hub-cross__card:hover {
  transform: translateY(-2px);
  border-color: color-mix(in oklab, var(--cherry) 40%, transparent);
}
body.page-template-page-features .features-hub-cross__card-title {
  font-size: 1.125rem;
  font-weight: 700;
  color: var(--foreground);
}
body.page-template-page-features .features-hub-cross__card-body {
  margin: 0.5rem 0 0;
  font-size: 0.875rem;
  color: var(--muted-foreground);
  line-height: 1.6;
}
body.page-template-page-features .features-hub-cross__card-cta {
  margin-top: 1rem;
  font-size: 0.75rem;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: var(--cherry);
  font-weight: 700;
}

/* ---- 8. FAQ — reuses .faq-accordion -------------------------------- */
body.page-template-page-features .features-hub-faq .faq-accordion {
  margin-top: 0;
}

/* ---- 9. Byline — reuses .reviewer-bio--editor ----------------------- */

body.page-template-page-features .reviewer-bio--editor {
  margin-top: 0;
  padding: 0;
  background: transparent;
}
body.page-template-page-features .reviewer-bio--editor .reviewer-bio__card {
  background: var(--white);
  border: 1px solid var(--border);
  border-radius: 0;
  padding: 17px;
  display: flex;
  align-items: flex-start;
  gap: 1rem;
}
body.page-template-page-features .reviewer-bio--editor .reviewer-bio__photo {
  width: 68px;
  height: 68px;
  flex-shrink: 0;
  border-radius: 9999px;
  overflow: hidden;
  background: linear-gradient(135deg, var(--cherry), var(--gold));
}
body.page-template-page-features .reviewer-bio--editor .reviewer-bio__img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  border-radius: 9999px;
}
body.page-template-page-features .reviewer-bio--editor .reviewer-bio__body {
  flex: 1;
  min-width: 0;
}
body.page-template-page-features .reviewer-bio--editor .reviewer-bio__editor-heading {
  font-size: 1rem;
  font-weight: 700;
}
body.page-template-page-features .reviewer-bio--editor .reviewer-bio__headline {
  margin: 2px 0 0;
  font-size: 0.75rem;
  color: var(--muted-foreground);
}
body.page-template-page-features .reviewer-bio--editor .reviewer-bio__text {
  margin: 0.5rem 0 0;
  font-size: 13px;
  line-height: 1.55;
  color: color-mix(in oklab, var(--charcoal) 80%, transparent);
}
body.page-template-page-features .reviewer-bio--editor .reviewer-bio__meta {
  margin-top: 0.75rem;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  column-gap: 0.5rem;
  row-gap: 0.25rem;
  font-size: 0.75rem;
}
body.page-template-page-features .reviewer-bio--editor .reviewer-bio__meta-item,
body.page-template-page-features .reviewer-bio--editor .reviewer-bio__meta-link {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
}
body.page-template-page-features .features-hub-byline__disclosure {
  margin: 1rem 0 0;
  font-size: 0.75rem;
  color: var(--muted-foreground);
  line-height: 1.6;
}

/* ===========================================================================
   STAGE 9.53 — /attributes hub (page-attributes.php). Scoped to
   body.page-template-page-attributes (injected by body_class filter).

   Modelled on themes + providers + features hubs. Unique to attributes:
     - Cherry-red hero (no pinstripe — solid bg-cherry; cream-on-red,
       eyebrow GOLD)
     - 6 sub-grouped quick-filter grids (Reels / Paylines / Ways / RTP
       / Layout / Volatility) instead of one flat "all"
     - RTP-tier semantic table (RTP Tier / Slots / Anchor Slots)
     - Reels editorial with pill-chip anchor links
     - "Paylines vs Ways" prose section
     - GB Stake Caps tinted callout (cherry/5 bg + 4px cherry left-rail)
   =========================================================================== */

/* ---- Zero .site-main padding so the red hero starts flush. ----------- */

body.page-template-page-attributes .site-main {
  padding-top: 0;
  padding-bottom: 0;
}

/* ---- 1. Hero (full-bleed cherry red) -------------------------------- */

body.page-template-page-attributes .attributes-hub-hero {
  background: var(--cherry);
  border-bottom: 1px solid var(--cherry-dark);
  color: var(--cream);
}
body.page-template-page-attributes .attributes-hub-hero__inner {
  position: relative;
  max-width: 1280px;
  margin-inline: auto;
  padding: 1.25rem 1rem;
}
@media (min-width: 1024px) {
  body.page-template-page-attributes .attributes-hub-hero__inner {
    padding: 1.5rem 2rem;
    min-height: 280px;
    display: flex;
    flex-direction: column;
    justify-content: center;
  }
}

/* Dark-tone breadcrumb (cream on red). */
body.page-template-page-attributes .attributes-hub-hero .breadcrumb-wrap {
  background: transparent;
  border: 0;
  padding: 0;
  margin: 0;
}
body.page-template-page-attributes .attributes-hub-hero .breadcrumb {
  color: color-mix(in oklab, var(--cream) 70%, transparent);
  font-size: 0.75rem;
}
body.page-template-page-attributes .attributes-hub-hero .breadcrumb ol {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0;
}
body.page-template-page-attributes .attributes-hub-hero .breadcrumb li {
  display: inline;
}
body.page-template-page-attributes .attributes-hub-hero .breadcrumb li + li::before {
  content: "›";
  margin: 0 0.375rem;
  color: color-mix(in oklab, var(--cream) 55%, transparent);
}
body.page-template-page-attributes .attributes-hub-hero .breadcrumb a {
  color: color-mix(in oklab, var(--cream) 70%, transparent);
  text-decoration: none;
}
body.page-template-page-attributes .attributes-hub-hero .breadcrumb a:hover {
  color: var(--gold);
}
body.page-template-page-attributes .attributes-hub-hero .breadcrumb [aria-current="page"] {
  color: var(--cream);
  font-weight: 500;
}

body.page-template-page-attributes .attributes-hub-hero__grid {
  margin-top: 1.5rem;
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 2rem;
  align-items: start;
}
@media (min-width: 1024px) {
  body.page-template-page-attributes .attributes-hub-hero__grid {
    grid-template-columns: minmax(0, 1fr) 300px;
    gap: 3rem;
  }
}
body.page-template-page-attributes .attributes-hub-hero__grid > * {
  min-width: 0;
  max-width: 100%;
}
body.page-template-page-attributes .attributes-hub-hero__eyebrow {
  font-size: 0.75rem;
  text-transform: uppercase;
  letter-spacing: 0.2em;
  color: var(--gold);
  font-weight: 700;
}
body.page-template-page-attributes .attributes-hub-hero__title {
  margin: 0.5rem 0 0 !important;
  font-size: 22.5px !important;
  font-weight: 800 !important;
  letter-spacing: -0.01em !important;
  color: var(--cream) !important;
  line-height: 1.1 !important;
}
@media (min-width: 1024px) {
  body.page-template-page-attributes .attributes-hub-hero__title {
    font-size: 32px !important;
  }
}
body.page-template-page-attributes .attributes-hub-hero__lede {
  margin: 1rem 0 0;
  max-width: 56rem;
  color: color-mix(in oklab, var(--cream) 90%, transparent);
  font-size: 0.95rem;
  line-height: 1.65;
}

/* Hero spotlight card — High Volatility featured-pick. */
body.page-template-page-attributes .attributes-hub-hero__spotlight {
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  width: 100%;
  min-width: 0;
  max-width: 100%;
}
@media (min-width: 1024px) {
  body.page-template-page-attributes .attributes-hub-hero__spotlight {
    align-items: flex-end;
  }
}
body.page-template-page-attributes .attributes-hub-hero__spotlight-eyebrow {
  display: flex;
  align-items: center;
  gap: 0.625rem;
  margin-bottom: 0.625rem;
  font-family: var(--font-sans);
}
body.page-template-page-attributes .attributes-hub-hero__spotlight-rule {
  height: 2px;
  width: 1.5rem;
  background: var(--gold);
}
body.page-template-page-attributes .attributes-hub-hero__spotlight-label {
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.18em;
  color: var(--cream);
}
body.page-template-page-attributes .attributes-hub-hero__spotlight-sep {
  color: color-mix(in oklab, var(--cream) 60%, transparent);
  font-size: 10px;
}
body.page-template-page-attributes .attributes-hub-hero__spotlight-sublabel {
  font-size: 10px;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: color-mix(in oklab, var(--cream) 60%, transparent);
}
body.page-template-page-attributes .attributes-hub-hero__spotlight-card {
  display: flex;
  align-items: stretch;
  width: 100%;
  max-width: 100%;
  min-width: 0;
  background: var(--card);
  border: 2px solid var(--charcoal);
  border-radius: 0;
  text-decoration: none;
  color: inherit;
  transition: transform 200ms ease;
}
@media (min-width: 1024px) {
  body.page-template-page-attributes .attributes-hub-hero__spotlight-card {
    max-width: 380px;
  }
}
body.page-template-page-attributes .attributes-hub-hero__spotlight-card:hover {
  transform: translate(-2px, -2px);
}
body.page-template-page-attributes .attributes-hub-hero__spotlight-media {
  position: relative;
  flex-shrink: 0;
  width: 120px;
  height: 80px;
  border: 2px solid var(--charcoal);
  overflow: hidden;
  margin: 10px;
}
body.page-template-page-attributes .attributes-hub-hero__spotlight-img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  max-width: none;
  max-height: none;
  object-fit: cover;
}
body.page-template-page-attributes .attributes-hub-hero__spotlight-body {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  padding: 10px 10px 10px 0;
}
body.page-template-page-attributes .attributes-hub-hero__spotlight-title {
  font-family: var(--font-display);
  font-size: 10px;
  line-height: 1.12;
  font-weight: 700;
  color: var(--charcoal);
  overflow: hidden;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  word-break: break-word;
}
body.page-template-page-attributes .attributes-hub-hero__spotlight-sub {
  font-size: 12px;
  font-style: italic;
  color: var(--muted-foreground);
  margin-top: 2px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
body.page-template-page-attributes .attributes-hub-hero__spotlight-meta {
  margin-top: 6px;
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: color-mix(in oklab, var(--charcoal) 75%, transparent);
}
body.page-template-page-attributes .attributes-hub-hero__spotlight-cta-wrap {
  margin-top: 8px;
}
body.page-template-page-attributes .attributes-hub-hero__spotlight-cta {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  background: var(--cherry);
  color: var(--cream);
  font-size: 11px;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.14em;
  padding: 4px 10px;
  border: 2px solid var(--charcoal);
}

/* ---- 2-9. Body container --------------------------------------------- */

body.page-template-page-attributes .attributes-hub-body {
  max-width: 880px;
}
body.page-template-page-attributes .attributes-hub-section {
  padding-block: 3rem;
}
body.page-template-page-attributes .attributes-hub-section__title {
  margin: 0 0 1.5rem !important;
  font-size: 24px !important;
  font-weight: 700 !important;
  letter-spacing: -0.02em !important;
  line-height: 1.2 !important;
}
@media (max-width: 767px) {
  body.page-template-page-attributes .attributes-hub-section__title {
    font-size: 20px !important;
  }
}

/* ---- 2. Quick filter grid — 6 sub-groups ----------------------------- */

body.page-template-page-attributes .attributes-hub-quick__groups {
  display: flex;
  flex-direction: column;
  gap: 2.5rem;
}
body.page-template-page-attributes .attributes-hub-quick__group-h {
  margin: 0 0 0.75rem !important;
  font-size: 1.25rem !important;
  font-weight: 700 !important;
  letter-spacing: -0.01em !important;
  line-height: 1.2 !important;
}
body.page-template-page-attributes .attributes-hub-quick__grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.75rem;
}
@media (min-width: 768px) {
  body.page-template-page-attributes .attributes-hub-quick__grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}
@media (min-width: 1024px) {
  body.page-template-page-attributes .attributes-hub-quick__grid {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
}

/* Image tile chrome — sharp corners, dark base, gradient overlay,
   cream title text at bottom. Mirrors themes/features tile pattern. */
body.page-template-page-attributes .attributes-hub-tile {
  position: relative;
  display: block;
  overflow: hidden;
  border: 1px solid var(--border);
  border-radius: 0;
  text-decoration: none;
  color: var(--cream);
  background: var(--charcoal);
  aspect-ratio: 4 / 3;
}
body.page-template-page-attributes .attributes-hub-tile--placeholder {
  cursor: default;
}
body.page-template-page-attributes .attributes-hub-tile__img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 200ms ease;
}
body.page-template-page-attributes a.attributes-hub-tile:hover .attributes-hub-tile__img {
  transform: scale(1.05);
}
body.page-template-page-attributes .attributes-hub-tile__overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(
    to top,
    color-mix(in oklab, var(--charcoal) 90%, transparent) 0%,
    color-mix(in oklab, var(--charcoal) 30%, transparent) 55%,
    transparent 100%
  );
  pointer-events: none;
}
body.page-template-page-attributes .attributes-hub-tile__body {
  position: absolute;
  inset: 0;
  z-index: 2;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  padding: 0.75rem;
  color: var(--cream);
}
body.page-template-page-attributes .attributes-hub-tile__title {
  font-family: var(--font-display);
  font-weight: 700;
  color: var(--cream);
  margin: 0;
  font-size: 1rem;
  line-height: 1.15;
}
body.page-template-page-attributes .attributes-hub-tile__meta {
  margin-top: 2px;
  font-size: 10px;
  color: color-mix(in oklab, var(--cream) 85%, transparent);
  line-height: 1.3;
}

/* ---- 3. High RTP table ----------------------------------------------- */

body.page-template-page-attributes .attributes-hub-rtp__lede {
  margin: 0 0 1.5rem;
  color: color-mix(in oklab, var(--foreground) 85%, transparent);
  line-height: 1.65;
}
body.page-template-page-attributes .attributes-hub-rtp__table-wrap {
  overflow: hidden;
  border: 1px solid var(--border);
  border-radius: 0;
}
body.page-template-page-attributes .attributes-hub-rtp__table {
  width: 100%;
  display: table;
  border-collapse: collapse;
  font-size: 0.875rem;
}
body.page-template-page-attributes .attributes-hub-rtp__table thead {
  background: color-mix(in oklab, var(--cream-100) 60%, transparent);
  font-size: 0.75rem;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: var(--muted-foreground);
}
body.page-template-page-attributes .attributes-hub-rtp__table th,
body.page-template-page-attributes .attributes-hub-rtp__table td {
  text-align: left;
  padding: 0.75rem;
  border-bottom: 0;
}
body.page-template-page-attributes .attributes-hub-rtp__table tbody tr {
  border-top: 1px solid var(--border);
}
body.page-template-page-attributes .attributes-hub-rtp__td-tier {
  font-weight: 600;
}
body.page-template-page-attributes .attributes-hub-rtp__td-tier a {
  color: var(--foreground);
  text-decoration: none;
}
body.page-template-page-attributes .attributes-hub-rtp__td-tier a:hover {
  color: var(--cherry);
}
body.page-template-page-attributes .attributes-hub-rtp__td-count {
  font-variant-numeric: tabular-nums;
}
body.page-template-page-attributes .attributes-hub-rtp__td-anchors a {
  color: var(--foreground);
  text-decoration: none;
  text-underline-offset: 2px;
}
body.page-template-page-attributes .attributes-hub-rtp__td-anchors a:hover {
  color: var(--cherry);
  text-decoration: underline;
}
body.page-template-page-attributes .attributes-hub-rtp__after {
  margin: 1.25rem 0 0;
  font-size: 0.875rem;
  color: color-mix(in oklab, var(--foreground) 85%, transparent);
  line-height: 1.65;
}

/* ---- 4. Reels editorial ---------------------------------------------- */

body.page-template-page-attributes .attributes-hub-reels__list {
  display: flex;
  flex-direction: column;
  gap: 2rem;
}
body.page-template-page-attributes .attributes-hub-reels__h {
  margin: 0 !important;
  font-size: 1.25rem !important;
  font-weight: 700 !important;
  letter-spacing: -0.01em !important;
}
body.page-template-page-attributes .attributes-hub-reels__body {
  margin: 0.5rem 0 0;
  font-size: 0.875rem;
  color: color-mix(in oklab, var(--foreground) 85%, transparent);
  line-height: 1.65;
}
body.page-template-page-attributes .attributes-hub-reels__chips {
  margin-top: 0.75rem;
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
}
body.page-template-page-attributes .attributes-hub-reels__chip {
  display: inline-block;
  font-size: 0.75rem;
  padding: 0.375rem 0.75rem;
  background: var(--cream-100);
  border-radius: 9999px;
  font-weight: 500;
  color: var(--foreground);
  text-decoration: none;
  transition: background-color 150ms ease;
}
body.page-template-page-attributes a.attributes-hub-reels__chip:hover {
  background: color-mix(in oklab, var(--cherry) 10%, transparent);
}
body.page-template-page-attributes .attributes-hub-reels__tail {
  margin: 0;
  font-size: 0.875rem;
  color: var(--muted-foreground);
  line-height: 1.65;
}

/* ---- 5. Prose (Paylines vs Ways) ------------------------------------ */

body.page-template-page-attributes .attributes-hub-prose__body {
  color: color-mix(in oklab, var(--foreground) 85%, transparent);
  line-height: 1.65;
}
body.page-template-page-attributes .attributes-hub-prose__body p {
  margin: 0 0 1rem;
}
body.page-template-page-attributes .attributes-hub-prose__body p:last-child {
  margin-bottom: 0;
}

/* ---- 6. GB Stake Caps callout (cherry/5 bg + 4px cherry left-rail) -- */

body.page-template-page-attributes .attributes-hub-callout {
  background: color-mix(in oklab, var(--cherry) 5%, transparent);
  border-left: 4px solid var(--cherry);
  border-radius: 0;
  padding: 1.5rem;
}
body.page-template-page-attributes .attributes-hub-callout__h {
  margin: 0 !important;
  font-size: 1.5rem !important;
  font-weight: 700 !important;
  letter-spacing: -0.02em !important;
  line-height: 1.2 !important;
}
body.page-template-page-attributes .attributes-hub-callout__paragraphs {
  margin-top: 1rem;
  color: color-mix(in oklab, var(--foreground) 85%, transparent);
  line-height: 1.65;
  font-size: 0.875rem;
}
body.page-template-page-attributes .attributes-hub-callout__paragraphs p {
  margin: 0 0 1rem;
}
body.page-template-page-attributes .attributes-hub-callout__paragraphs p:last-child {
  margin-bottom: 0;
}

/* ---- 7. Cross-discovery (3 cards) ------------------------------------ */

body.page-template-page-attributes .attributes-hub-cross__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1.25rem;
}
@media (min-width: 768px) {
  body.page-template-page-attributes .attributes-hub-cross__grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}
body.page-template-page-attributes .attributes-hub-cross__card {
  display: block;
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: 0;
  padding: 1.5rem;
  text-decoration: none;
  color: inherit;
  transition: transform 200ms ease, border-color 200ms ease;
}
body.page-template-page-attributes .attributes-hub-cross__card:hover {
  transform: translateY(-2px);
  border-color: color-mix(in oklab, var(--cherry) 40%, transparent);
}
body.page-template-page-attributes .attributes-hub-cross__card-title {
  font-size: 1.125rem;
  font-weight: 700;
  color: var(--foreground);
}
body.page-template-page-attributes .attributes-hub-cross__card-body {
  margin: 0.5rem 0 0;
  font-size: 0.875rem;
  color: var(--muted-foreground);
  line-height: 1.6;
}
body.page-template-page-attributes .attributes-hub-cross__card-cta {
  margin-top: 1rem;
  font-size: 0.75rem;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: var(--cherry);
  font-weight: 700;
}

/* ---- 8. FAQ — reuses .faq-accordion -------------------------------- */
body.page-template-page-attributes .attributes-hub-faq .faq-accordion {
  margin-top: 0;
}

/* ---- 9. Byline — reuses .reviewer-bio--editor (same chrome) --------- */

body.page-template-page-attributes .reviewer-bio--editor {
  margin-top: 0;
  padding: 0;
  background: transparent;
}
body.page-template-page-attributes .reviewer-bio--editor .reviewer-bio__card {
  background: var(--white);
  border: 1px solid var(--border);
  border-radius: 0;
  padding: 17px;
  display: flex;
  align-items: flex-start;
  gap: 1rem;
}
body.page-template-page-attributes .reviewer-bio--editor .reviewer-bio__photo {
  width: 68px;
  height: 68px;
  flex-shrink: 0;
  border-radius: 9999px;
  overflow: hidden;
  background: linear-gradient(135deg, var(--cherry), var(--gold));
}
body.page-template-page-attributes .reviewer-bio--editor .reviewer-bio__img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  border-radius: 9999px;
}
body.page-template-page-attributes .reviewer-bio--editor .reviewer-bio__body {
  flex: 1;
  min-width: 0;
}
body.page-template-page-attributes .reviewer-bio--editor .reviewer-bio__editor-heading {
  font-size: 1rem;
  font-weight: 700;
}
body.page-template-page-attributes .reviewer-bio--editor .reviewer-bio__headline {
  margin: 2px 0 0;
  font-size: 0.75rem;
  color: var(--muted-foreground);
}
body.page-template-page-attributes .reviewer-bio--editor .reviewer-bio__text {
  margin: 0.5rem 0 0;
  font-size: 13px;
  line-height: 1.55;
  color: color-mix(in oklab, var(--charcoal) 80%, transparent);
}
body.page-template-page-attributes .reviewer-bio--editor .reviewer-bio__meta {
  margin-top: 0.75rem;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  column-gap: 0.5rem;
  row-gap: 0.25rem;
  font-size: 0.75rem;
}
body.page-template-page-attributes .reviewer-bio--editor .reviewer-bio__meta-item,
body.page-template-page-attributes .reviewer-bio--editor .reviewer-bio__meta-link {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
}
body.page-template-page-attributes .attributes-hub-byline__disclosure {
  margin: 1rem 0 0;
  font-size: 0.75rem;
  color: var(--muted-foreground);
  line-height: 1.6;
}

/* ===========================================================================
   STAGE 9.54 — /slots hub (archive-slot.php). CPT archive — WordPress
   auto-sets `body.post-type-archive-slot`; no body_class filter required
   (same pattern as themes hub at body.post-type-archive-theme).

   Modelled on the four other hubs. Unique to slots:
     - Dark charcoal hero (NO pinstripe; no gold) with Razor Shark
       featured-pick spotlight on the right
     - 4-pill SORT bar (Top Ranked / Newest / A–Z / Highest RTP) with
       client-side DOM re-order — the ONLY interactive control on the
       page besides FAQ
     - 5-col compact slot card grid (square 2px-charcoal-bordered
       <article>-style tiles with image + RoverScore badge + title
       overlay; letter fallback for slots without art)
     - "Featured This Month" editor's-pick row with sticker + italic note
     - "Or Browse by Category" 3-card cross-hub block (gradient cards,
       not flat) — distinct from the other hubs' flat cross-discovery
   =========================================================================== */

/* ---- Zero .site-main padding so the dark hero starts flush. --------- */

body.post-type-archive-slot .site-main {
  padding-top: 0;
  padding-bottom: 0;
}

/* ---- 1. Hero (full-bleed charcoal) ----------------------------------- */

body.post-type-archive-slot .slots-hub-hero {
  background: var(--charcoal);
  border-bottom: 1px solid var(--charcoal);
  color: var(--cream);
}
body.post-type-archive-slot .slots-hub-hero__inner {
  position: relative;
  max-width: 1280px;
  margin-inline: auto;
  padding: 1.25rem 1rem;
}
@media (min-width: 1024px) {
  body.post-type-archive-slot .slots-hub-hero__inner {
    padding: 1.5rem 2rem;
    min-height: 280px;
    display: flex;
    flex-direction: column;
    justify-content: center;
  }
}

/* Dark-tone breadcrumb. */
body.post-type-archive-slot .slots-hub-hero .breadcrumb-wrap {
  background: transparent;
  border: 0;
  padding: 0;
  margin: 0;
}
body.post-type-archive-slot .slots-hub-hero .breadcrumb {
  color: color-mix(in oklab, var(--cream) 70%, transparent);
  font-size: 0.75rem;
}
body.post-type-archive-slot .slots-hub-hero .breadcrumb ol {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0;
}
body.post-type-archive-slot .slots-hub-hero .breadcrumb li {
  display: inline;
}
body.post-type-archive-slot .slots-hub-hero .breadcrumb li + li::before {
  content: "›";
  margin: 0 0.375rem;
  color: color-mix(in oklab, var(--cream) 55%, transparent);
}
body.post-type-archive-slot .slots-hub-hero .breadcrumb a {
  color: color-mix(in oklab, var(--cream) 70%, transparent);
  text-decoration: none;
}
body.post-type-archive-slot .slots-hub-hero .breadcrumb a:hover {
  color: var(--gold);
}
body.post-type-archive-slot .slots-hub-hero .breadcrumb [aria-current="page"] {
  color: var(--cream);
  font-weight: 500;
}

body.post-type-archive-slot .slots-hub-hero__grid {
  margin-top: 1.5rem;
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 2rem;
  align-items: start;
}
@media (min-width: 1024px) {
  body.post-type-archive-slot .slots-hub-hero__grid {
    grid-template-columns: minmax(0, 1fr) 300px;
    gap: 3rem;
  }
}
body.post-type-archive-slot .slots-hub-hero__grid > * {
  min-width: 0;
  max-width: 100%;
}
body.post-type-archive-slot .slots-hub-hero__eyebrow {
  font-size: 0.75rem;
  text-transform: uppercase;
  letter-spacing: 0.2em;
  color: var(--gold);
  font-weight: 700;
}
body.post-type-archive-slot .slots-hub-hero__title {
  margin: 0.5rem 0 0 !important;
  font-size: 22.5px !important;
  font-weight: 800 !important;
  letter-spacing: -0.01em !important;
  color: var(--cream) !important;
  line-height: 1.1 !important;
}
@media (min-width: 1024px) {
  body.post-type-archive-slot .slots-hub-hero__title {
    font-size: 32px !important;
  }
}
body.post-type-archive-slot .slots-hub-hero__lede {
  margin: 1rem 0 0;
  max-width: 56rem;
  color: color-mix(in oklab, var(--cream) 85%, transparent);
  font-size: 0.95rem;
  line-height: 1.65;
}

/* Hero spotlight — Razor Shark featured-pick. Mirrors other hubs but
   slot-spotlight body adds an RTP/Max stat row. */
body.post-type-archive-slot .slots-hub-hero__spotlight {
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  width: 100%;
  min-width: 0;
  max-width: 100%;
}
@media (min-width: 1024px) {
  body.post-type-archive-slot .slots-hub-hero__spotlight {
    align-items: flex-end;
  }
}
body.post-type-archive-slot .slots-hub-hero__spotlight-eyebrow {
  display: flex;
  align-items: center;
  gap: 0.625rem;
  margin-bottom: 0.625rem;
  font-family: var(--font-sans);
}
body.post-type-archive-slot .slots-hub-hero__spotlight-rule {
  height: 2px;
  width: 1.5rem;
  background: var(--gold);
}
body.post-type-archive-slot .slots-hub-hero__spotlight-label {
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.18em;
  color: var(--cream);
}
body.post-type-archive-slot .slots-hub-hero__spotlight-sep {
  color: color-mix(in oklab, var(--cream) 60%, transparent);
  font-size: 10px;
}
body.post-type-archive-slot .slots-hub-hero__spotlight-sublabel {
  font-size: 10px;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: color-mix(in oklab, var(--cream) 60%, transparent);
}
body.post-type-archive-slot .slots-hub-hero__spotlight-card {
  display: flex;
  align-items: stretch;
  width: 100%;
  max-width: 100%;
  min-width: 0;
  background: var(--card);
  border: 2px solid var(--charcoal);
  border-radius: 0;
  text-decoration: none;
  color: inherit;
  transition: transform 200ms ease;
}
@media (min-width: 1024px) {
  body.post-type-archive-slot .slots-hub-hero__spotlight-card {
    max-width: 380px;
  }
}
body.post-type-archive-slot .slots-hub-hero__spotlight-card:hover {
  transform: translate(-2px, -2px);
}
body.post-type-archive-slot .slots-hub-hero__spotlight-media {
  position: relative;
  flex-shrink: 0;
  width: 120px;
  height: 80px;
  border: 2px solid var(--charcoal);
  overflow: hidden;
  margin: 10px;
}
body.post-type-archive-slot .slots-hub-hero__spotlight-img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  max-width: none;
  max-height: none;
  object-fit: cover;
}
body.post-type-archive-slot .slots-hub-hero__spotlight-body {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  padding: 10px 10px 10px 0;
}
body.post-type-archive-slot .slots-hub-hero__spotlight-title {
  font-family: var(--font-display);
  font-size: 10px;
  line-height: 1.12;
  font-weight: 700;
  color: var(--charcoal);
  overflow: hidden;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  word-break: break-word;
}
body.post-type-archive-slot .slots-hub-hero__spotlight-sub {
  font-size: 12px;
  font-style: italic;
  color: var(--muted-foreground);
  margin-top: 2px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
body.post-type-archive-slot .slots-hub-hero__spotlight-stats {
  margin-top: 6px;
  display: flex;
  align-items: center;
  gap: 0.5rem;
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: color-mix(in oklab, var(--charcoal) 75%, transparent);
}
body.post-type-archive-slot .slots-hub-hero__spotlight-stat-label {
  color: var(--muted-foreground);
}
body.post-type-archive-slot .slots-hub-hero__spotlight-stat-value {
  font-weight: 700;
  color: var(--foreground);
}
body.post-type-archive-slot .slots-hub-hero__spotlight-cta-wrap {
  margin-top: 8px;
}
body.post-type-archive-slot .slots-hub-hero__spotlight-cta {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  background: var(--cherry);
  color: var(--cream);
  font-size: 11px;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.14em;
  padding: 4px 10px;
  border: 2px solid var(--charcoal);
}

/* ---- 2. Body container ----------------------------------------------- */

body.post-type-archive-slot .slots-hub-body {
  max-width: 880px;
}
body.post-type-archive-slot .slots-hub-section {
  padding-block: 2.5rem;
}
body.post-type-archive-slot .slots-hub-section__title {
  margin: 0 0 1.5rem !important;
  font-size: 24px !important;
  font-weight: 700 !important;
  letter-spacing: -0.02em !important;
  line-height: 1.2 !important;
}
@media (max-width: 767px) {
  body.post-type-archive-slot .slots-hub-section__title {
    font-size: 20px !important;
  }
}

/* ---- Sort + Grid (catalogue) ---------------------------------------- */

body.post-type-archive-slot .slots-hub-catalogue {
  scroll-margin-top: 1.5rem;
}
body.post-type-archive-slot .slots-hub-catalogue__bar {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  justify-content: space-between;
  gap: 0.75rem;
}
body.post-type-archive-slot .slots-hub-catalogue__tabs {
  display: inline-flex;
  flex-wrap: wrap;
  gap: 4px;
  padding: 4px;
  background: var(--cream-100);
  border: 1px solid var(--border);
  border-radius: 0;
}
body.post-type-archive-slot .slots-hub-catalogue__tab {
  padding: 8px 16px;
  border: 1px solid transparent;
  border-radius: 0;
  background: transparent;
  font-size: 0.875rem;
  font-weight: 600;
  color: var(--muted-foreground);
  cursor: pointer;
  transition: color 150ms ease, background-color 150ms ease, border-color 150ms ease;
}
body.post-type-archive-slot .slots-hub-catalogue__tab:hover {
  color: var(--foreground);
}
body.post-type-archive-slot .slots-hub-catalogue__tab.is-active {
  background: var(--card);
  color: var(--cherry);
  border-color: color-mix(in oklab, var(--cherry) 40%, transparent);
}
body.post-type-archive-slot .slots-hub-catalogue__count {
  font-size: 0.75rem;
  font-weight: 600;
  color: var(--muted-foreground);
}
body.post-type-archive-slot .slots-hub-catalogue__grid {
  margin-top: 2rem;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.625rem;
}
@media (min-width: 640px) {
  body.post-type-archive-slot .slots-hub-catalogue__grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}
@media (min-width: 768px) {
  body.post-type-archive-slot .slots-hub-catalogue__grid {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
}
@media (min-width: 1024px) {
  body.post-type-archive-slot .slots-hub-catalogue__grid {
    grid-template-columns: repeat(5, minmax(0, 1fr));
  }
}

/* ---- Slot card (compact, square 2px-charcoal-bordered) ------------ */

body.post-type-archive-slot .slots-hub-card,
body.page-template-page-best-slots .slots-hub-card,
body.page-template-page-new-slots .slots-hub-card {
  display: flex;
  flex-direction: column;
  background: var(--card);
  border: 2px solid var(--charcoal);
  border-radius: 0;
  text-decoration: none;
  color: inherit;
  overflow: hidden;
  transition: transform 150ms ease;
}
body.post-type-archive-slot a.slots-hub-card:hover,
body.page-template-page-best-slots a.slots-hub-card:hover,
body.page-template-page-new-slots a.slots-hub-card:hover {
  transform: translateY(-2px);
}
body.post-type-archive-slot .slots-hub-card--placeholder,
body.page-template-page-best-slots .slots-hub-card--placeholder,
body.page-template-page-new-slots .slots-hub-card--placeholder {
  cursor: default;
}
body.post-type-archive-slot .slots-hub-card__media,
body.page-template-page-best-slots .slots-hub-card__media,
body.page-template-page-new-slots .slots-hub-card__media {
  position: relative;
  aspect-ratio: 3 / 2;
  width: 100%;
  border-bottom: 2px solid var(--charcoal);
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
}
body.post-type-archive-slot .slots-hub-card__img,
body.page-template-page-best-slots .slots-hub-card__img,
body.page-template-page-new-slots .slots-hub-card__img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  max-width: none;
  max-height: none;
  object-fit: cover;
  display: block;
}
/* Letter fallback for slots without art (Cleopatra, Fire Joker, etc.).
   Lov uses themed SVG icons in a 48×48 box; the visible crown
   silhouette renders ~29px ink-tall. User brief at 0.9.58: "not
   smaller than [Lov's icon scale]". 32px Inter 800 → ~28-29px ink,
   matching Lov's crown ink height almost exactly. (0.9.55 dropped to
   26px = 19px ink which was smaller than Lov's icon. 0.9.54 was 36px
   = ~32px ink, slightly larger.) Scoped so single-theme
   .related-slot-card__media-fallback is untouched. */
body.post-type-archive-slot .slots-hub-card__fallback,
body.page-template-page-best-slots .slots-hub-card__fallback,
body.page-template-page-new-slots .slots-hub-card__fallback {
  font-size: 32px;
  line-height: 1;
  font-weight: 800;
  font-family: var(--font-display);
  color: color-mix(in oklab, var(--cream) 80%, transparent);
}
body.post-type-archive-slot .slots-hub-card__score,
body.page-template-page-best-slots .slots-hub-card__score,
body.page-template-page-new-slots .slots-hub-card__score {
  position: absolute;
  top: 4px;
  right: 4px;
  /* Live measurement at 0.9.57 (vs Lov /slots card grid): Lov score
     chip renders 40×32 with a brutalist 3px hard-offset shadow. Was
     48×36 no-shadow — +8w/+4h vs Lov. */
  width: 40px;
  height: 32px;
  background: var(--cherry);
  color: var(--cream);
  border: 2px solid var(--charcoal);
  border-radius: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 900;
  font-size: 13.6px;
  line-height: 1;
  z-index: 2;
}
/* Title strip — Lov renders this at 10px / line-height 1.15 / total
   strip 26px tall. WP was inheriting the global `h3 { font-size: 18px
   !important }` rule from style.css L145, stretching the strip to 59px
   and adding +32px to the whole card height. !important here beats
   the heading-scale override on body.post-type-archive-slot only. */
body.post-type-archive-slot .slots-hub-card__title,
body.page-template-page-best-slots .slots-hub-card__title,
body.page-template-page-new-slots .slots-hub-card__title {
  margin: 0 !important;
  padding: 8px !important;
  font-size: 10px !important;
  line-height: 1.15 !important;
  font-weight: 700 !important;
  letter-spacing: 0 !important;
  color: var(--charcoal);
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  word-break: break-word;
}

/* ---- 3. Featured This Month (Editor's Pick band) -------------------- */

body.post-type-archive-slot .slots-hub-featured {
  padding-block: 1rem;
}
body.post-type-archive-slot .slots-hub-featured__inner {
  background: color-mix(in oklab, var(--cream-100) 40%, transparent);
  border-radius: 0;
  padding: 2rem 1.5rem;
}
body.post-type-archive-slot .slots-hub-featured__eyebrow {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  color: var(--cherry);
  font-size: 0.75rem;
  text-transform: uppercase;
  letter-spacing: 0.2em;
  font-weight: 700;
}
body.post-type-archive-slot .slots-hub-featured__h {
  margin: 0.5rem 0 0 !important;
  font-size: 24px !important;
  font-weight: 700 !important;
  letter-spacing: -0.02em !important;
  line-height: 1.2 !important;
}
body.post-type-archive-slot .slots-hub-featured__lede {
  margin: 0.75rem 0 0;
  color: color-mix(in oklab, var(--foreground) 85%, transparent);
  line-height: 1.65;
  font-size: 0.9375rem;
}
body.post-type-archive-slot .slots-hub-featured__grid {
  margin-top: 2rem;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.625rem;
}
@media (min-width: 640px) {
  body.post-type-archive-slot .slots-hub-featured__grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}
@media (min-width: 768px) {
  body.post-type-archive-slot .slots-hub-featured__grid {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
}
body.post-type-archive-slot .slots-hub-featured__item {
  position: relative;
}
body.post-type-archive-slot .slots-hub-featured__sticker {
  position: absolute;
  top: 8px;
  left: 8px;
  z-index: 5;
  display: inline-flex;
  align-items: center;
  gap: 3px;
  padding: 2px 6px;
  background: var(--cherry);
  color: var(--white);
  font-size: 9px;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  font-weight: 700;
  border-radius: 4px;
}
body.post-type-archive-slot .slots-hub-featured__note {
  margin: 0.5rem 4px 0;
  font-size: 0.75rem;
  font-style: italic;
  color: var(--muted-foreground);
  line-height: 1.4;
}
body.post-type-archive-slot .slots-hub-featured__catalogue-link {
  margin: 2rem 0 0;
}
body.post-type-archive-slot .slots-hub-featured__catalogue-link a {
  font-size: 0.875rem;
  font-weight: 600;
  color: var(--cherry);
  text-decoration: none;
}
body.post-type-archive-slot .slots-hub-featured__catalogue-link a:hover {
  text-decoration: underline;
}

/* ---- 4. About catalogue (2-col prose) -------------------------------- */

body.post-type-archive-slot .slots-hub-about__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 2rem;
  color: color-mix(in oklab, var(--foreground) 85%, transparent);
  line-height: 1.65;
}
@media (min-width: 1024px) {
  body.post-type-archive-slot .slots-hub-about__grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
body.post-type-archive-slot .slots-hub-about__grid p {
  margin: 0;
}
body.post-type-archive-slot .slots-hub-about__link {
  color: var(--cherry);
  font-weight: 600;
  text-decoration: none;
}
body.post-type-archive-slot .slots-hub-about__link:hover {
  text-decoration: underline;
}

/* ---- 5. FAQ ---------------------------------------------------------- */
body.post-type-archive-slot .slots-hub-faq .faq-accordion {
  margin-top: 0;
}

/* ---- 6. Browse by Category — 3 gradient cards ----------------------- */

body.post-type-archive-slot .slots-hub-browse__h {
  margin: 0 0 1rem !important;
  font-size: 1.25rem !important;
  font-weight: 700 !important;
  letter-spacing: -0.01em !important;
  line-height: 1.2 !important;
}
body.post-type-archive-slot .slots-hub-browse__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1rem;
}
@media (min-width: 768px) {
  body.post-type-archive-slot .slots-hub-browse__grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}
body.post-type-archive-slot .slots-hub-browse__card {
  position: relative;
  display: block;
  aspect-ratio: 16 / 10;
  overflow: hidden;
  border: 1px solid var(--border);
  border-radius: 0;
  text-decoration: none;
  color: var(--cream);
  background-position: center;
  background-size: cover;
}
body.post-type-archive-slot .slots-hub-browse__card-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(
    to top,
    color-mix(in oklab, var(--charcoal) 90%, transparent) 0%,
    color-mix(in oklab, var(--charcoal) 30%, transparent) 55%,
    transparent 100%
  );
  pointer-events: none;
}
body.post-type-archive-slot .slots-hub-browse__card-body {
  position: absolute;
  inset: 0;
  z-index: 2;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  padding: 1.25rem;
  color: var(--cream);
}
body.post-type-archive-slot .slots-hub-browse__card-title {
  font-family: var(--font-display);
  font-size: 1.25rem;
  font-weight: 700;
  color: var(--cream);
  margin: 0;
}
body.post-type-archive-slot .slots-hub-browse__card-count {
  margin-top: 4px;
  font-size: 0.75rem;
  color: color-mix(in oklab, var(--cream) 90%, transparent);
}
body.post-type-archive-slot .slots-hub-browse__card-desc {
  margin: 0.5rem 0 0;
  font-size: 0.875rem;
  color: color-mix(in oklab, var(--cream) 90%, transparent);
  line-height: 1.5;
}
body.post-type-archive-slot .slots-hub-browse__card-cta {
  margin-top: 0.75rem;
  font-size: 0.75rem;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  font-weight: 700;
  opacity: 0;
  transition: opacity 200ms ease;
}
body.post-type-archive-slot .slots-hub-browse__card:hover .slots-hub-browse__card-cta {
  opacity: 1;
}

/* ---- 7. Byline — reuses .reviewer-bio--editor frame chrome ---------- */

body.post-type-archive-slot .reviewer-bio--editor {
  margin-top: 0;
  padding: 0;
  background: transparent;
}
body.post-type-archive-slot .reviewer-bio--editor .reviewer-bio__card {
  background: var(--white);
  border: 1px solid var(--border);
  border-radius: 0;
  padding: 17px;
  display: flex;
  align-items: flex-start;
  gap: 1rem;
}
body.post-type-archive-slot .reviewer-bio--editor .reviewer-bio__photo {
  width: 68px;
  height: 68px;
  flex-shrink: 0;
  border-radius: 9999px;
  overflow: hidden;
  background: linear-gradient(135deg, var(--cherry), var(--gold));
}
body.post-type-archive-slot .reviewer-bio--editor .reviewer-bio__img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  border-radius: 9999px;
}
body.post-type-archive-slot .reviewer-bio--editor .reviewer-bio__body {
  flex: 1;
  min-width: 0;
}
body.post-type-archive-slot .reviewer-bio--editor .reviewer-bio__editor-heading {
  font-size: 1rem;
  font-weight: 700;
}
body.post-type-archive-slot .reviewer-bio--editor .reviewer-bio__headline {
  margin: 2px 0 0;
  font-size: 0.75rem;
  color: var(--muted-foreground);
}
body.post-type-archive-slot .reviewer-bio--editor .reviewer-bio__text {
  margin: 0.5rem 0 0;
  font-size: 13px;
  line-height: 1.55;
  color: color-mix(in oklab, var(--charcoal) 80%, transparent);
}
body.post-type-archive-slot .reviewer-bio--editor .reviewer-bio__meta {
  margin-top: 0.75rem;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  column-gap: 0.5rem;
  row-gap: 0.25rem;
  font-size: 0.75rem;
}
body.post-type-archive-slot .reviewer-bio--editor .reviewer-bio__meta-item,
body.post-type-archive-slot .reviewer-bio--editor .reviewer-bio__meta-link {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
}
body.post-type-archive-slot .slots-hub-byline__disclosure {
  margin: 1rem 0 0;
  font-size: 0.75rem;
  color: var(--muted-foreground);
  line-height: 1.6;
}

/* ===========================================================================
   STAGE 9.59 — /best-slots hub (page-best-slots.php). Body class
   `page-template-page-best-slots` injected by body_class filter.

   Sibling of /slots — the compact card chrome is shared via comma-joined
   selectors in Stage 9.54 (cards now apply on both body scopes). This
   Stage adds only the best-slots-specific pieces:
     - GOLD hero (charcoal text on gold) instead of charcoal hero
     - Catalogue grid (no sort pill bar — single static RoverScore order)
     - "How We Rank" 3-para prose block
     - byline disclosure + FAQ scope shared with /slots via .faq-accordion
   =========================================================================== */

/* Zero .site-main padding so the gold hero starts flush. */
body.page-template-page-best-slots .site-main {
  padding-top: 0;
  padding-bottom: 0;
}

/* ---- 1. Gold hero (mirrors /features gold hero chrome with the
       /slots-style spotlight card on the right). --------------------- */

body.page-template-page-best-slots .best-slots-hub-hero {
  background: var(--gold);
  border-bottom: 1px solid var(--gold);
  color: var(--charcoal);
}
body.page-template-page-best-slots .best-slots-hub-hero__inner {
  position: relative;
  max-width: 1280px;
  margin-inline: auto;
  padding: 1.25rem 1rem;
}
@media (min-width: 1024px) {
  body.page-template-page-best-slots .best-slots-hub-hero__inner {
    padding: 1.5rem 2rem;
    min-height: 280px;
    display: flex;
    flex-direction: column;
    justify-content: center;
  }
}

/* Gold-tone breadcrumb (charcoal on gold). */
body.page-template-page-best-slots .best-slots-hub-hero .breadcrumb-wrap {
  background: transparent;
  border: 0;
  padding: 0;
  margin: 0;
}
body.page-template-page-best-slots .best-slots-hub-hero .breadcrumb {
  color: color-mix(in oklab, var(--charcoal) 70%, transparent);
  font-size: 0.75rem;
}
body.page-template-page-best-slots .best-slots-hub-hero .breadcrumb ol {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0;
}
body.page-template-page-best-slots .best-slots-hub-hero .breadcrumb li {
  display: inline;
}
body.page-template-page-best-slots .best-slots-hub-hero .breadcrumb li + li::before {
  content: "›";
  margin: 0 0.375rem;
  color: color-mix(in oklab, var(--charcoal) 55%, transparent);
}
body.page-template-page-best-slots .best-slots-hub-hero .breadcrumb a {
  color: color-mix(in oklab, var(--charcoal) 70%, transparent);
  text-decoration: none;
}
body.page-template-page-best-slots .best-slots-hub-hero .breadcrumb a:hover {
  color: var(--charcoal);
}
body.page-template-page-best-slots .best-slots-hub-hero .breadcrumb [aria-current="page"] {
  color: var(--charcoal);
  font-weight: 500;
}

body.page-template-page-best-slots .best-slots-hub-hero__grid {
  margin-top: 1.5rem;
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 2rem;
  align-items: start;
}
@media (min-width: 1024px) {
  body.page-template-page-best-slots .best-slots-hub-hero__grid {
    grid-template-columns: minmax(0, 1fr) 300px;
    gap: 3rem;
  }
}
body.page-template-page-best-slots .best-slots-hub-hero__grid > * {
  min-width: 0;
  max-width: 100%;
}
body.page-template-page-best-slots .best-slots-hub-hero__eyebrow {
  font-size: 0.75rem;
  text-transform: uppercase;
  letter-spacing: 0.2em;
  color: var(--charcoal);
  font-weight: 700;
}
body.page-template-page-best-slots .best-slots-hub-hero__title {
  margin: 0.5rem 0 0 !important;
  font-size: 22.5px !important;
  font-weight: 800 !important;
  letter-spacing: -0.01em !important;
  color: var(--charcoal) !important;
  line-height: 1.1 !important;
}
@media (min-width: 1024px) {
  body.page-template-page-best-slots .best-slots-hub-hero__title {
    font-size: 32px !important;
  }
}
body.page-template-page-best-slots .best-slots-hub-hero__lede {
  margin: 1rem 0 0;
  max-width: 56rem;
  color: color-mix(in oklab, var(--charcoal) 85%, transparent);
  font-size: 0.95rem;
  line-height: 1.65;
}

/* Hero spotlight — Razor Shark Top-Rated Pick. Mirrors /slots spotlight
   chrome (white card on charcoal frame, 120×80 media well + body with
   RTP/Max stat row + Play Now CTA). Different eyebrow label only. */
body.page-template-page-best-slots .best-slots-hub-hero__spotlight {
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  width: 100%;
  min-width: 0;
  max-width: 100%;
}
@media (min-width: 1024px) {
  body.page-template-page-best-slots .best-slots-hub-hero__spotlight {
    align-items: flex-end;
  }
}
body.page-template-page-best-slots .best-slots-hub-hero__spotlight-eyebrow {
  display: flex;
  align-items: center;
  gap: 0.625rem;
  margin-bottom: 0.625rem;
  font-family: var(--font-sans);
}
body.page-template-page-best-slots .best-slots-hub-hero__spotlight-rule {
  height: 2px;
  width: 1.5rem;
  background: var(--cherry);
}
body.page-template-page-best-slots .best-slots-hub-hero__spotlight-label {
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.18em;
  color: var(--charcoal);
}
body.page-template-page-best-slots .best-slots-hub-hero__spotlight-sep {
  color: color-mix(in oklab, var(--charcoal) 60%, transparent);
  font-size: 10px;
}
body.page-template-page-best-slots .best-slots-hub-hero__spotlight-sublabel {
  font-size: 10px;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: color-mix(in oklab, var(--charcoal) 60%, transparent);
}
body.page-template-page-best-slots .best-slots-hub-hero__spotlight-card {
  display: flex;
  align-items: stretch;
  width: 100%;
  max-width: 100%;
  min-width: 0;
  background: var(--card);
  border: 2px solid var(--charcoal);
  border-radius: 0;
  text-decoration: none;
  color: inherit;
  transition: transform 200ms ease;
}
@media (min-width: 1024px) {
  body.page-template-page-best-slots .best-slots-hub-hero__spotlight-card {
    max-width: 380px;
  }
}
body.page-template-page-best-slots .best-slots-hub-hero__spotlight-card:hover {
  transform: translate(-2px, -2px);
}
body.page-template-page-best-slots .best-slots-hub-hero__spotlight-media {
  position: relative;
  flex-shrink: 0;
  width: 120px;
  height: 80px;
  border: 2px solid var(--charcoal);
  overflow: hidden;
  margin: 10px;
}
body.page-template-page-best-slots .best-slots-hub-hero__spotlight-img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  max-width: none;
  max-height: none;
  object-fit: cover;
}
body.page-template-page-best-slots .best-slots-hub-hero__spotlight-body {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  padding: 10px 10px 10px 0;
}
body.page-template-page-best-slots .best-slots-hub-hero__spotlight-title {
  font-family: var(--font-display);
  font-size: 10px;
  line-height: 1.12;
  font-weight: 700;
  color: var(--charcoal);
  overflow: hidden;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  word-break: break-word;
}
body.page-template-page-best-slots .best-slots-hub-hero__spotlight-sub {
  font-size: 12px;
  font-style: italic;
  color: var(--muted-foreground);
  margin-top: 2px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
body.page-template-page-best-slots .best-slots-hub-hero__spotlight-stats {
  margin-top: 6px;
  display: flex;
  align-items: center;
  gap: 0.5rem;
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: color-mix(in oklab, var(--charcoal) 75%, transparent);
}
body.page-template-page-best-slots .best-slots-hub-hero__spotlight-stat-label {
  color: var(--muted-foreground);
}
body.page-template-page-best-slots .best-slots-hub-hero__spotlight-stat-value {
  font-weight: 700;
  color: var(--foreground);
}
body.page-template-page-best-slots .best-slots-hub-hero__spotlight-cta-wrap {
  margin-top: 8px;
}
body.page-template-page-best-slots .best-slots-hub-hero__spotlight-cta {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  background: var(--cherry);
  color: var(--cream);
  font-size: 11px;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.14em;
  padding: 4px 10px;
  border: 2px solid var(--charcoal);
}

/* ---- 2-5. Body container -------------------------------------------- */

body.page-template-page-best-slots .best-slots-hub-body {
  max-width: 880px;
}
body.page-template-page-best-slots .best-slots-hub-section {
  padding-block: 2.5rem;
}
body.page-template-page-best-slots .best-slots-hub-section__title {
  margin: 0 0 1.5rem !important;
  font-size: 24px !important;
  font-weight: 700 !important;
  letter-spacing: -0.02em !important;
  line-height: 1.2 !important;
}
@media (max-width: 767px) {
  body.page-template-page-best-slots .best-slots-hub-section__title {
    font-size: 20px !important;
  }
}

/* ---- 2. Catalogue grid — same 2/3/4/5-col as /slots, no sort pills - */

body.page-template-page-best-slots .best-slots-hub-catalogue__grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.625rem;
}
@media (min-width: 640px) {
  body.page-template-page-best-slots .best-slots-hub-catalogue__grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}
@media (min-width: 768px) {
  body.page-template-page-best-slots .best-slots-hub-catalogue__grid {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
}
@media (min-width: 1024px) {
  body.page-template-page-best-slots .best-slots-hub-catalogue__grid {
    grid-template-columns: repeat(5, minmax(0, 1fr));
  }
}

/* ---- 3. How We Rank prose (2-col grid at lg, stacks below) ---------- */

body.page-template-page-best-slots .best-slots-hub-rank__body {
  color: color-mix(in oklab, var(--foreground) 85%, transparent);
  line-height: 1.65;
}
body.page-template-page-best-slots .best-slots-hub-rank__body p {
  margin: 0 0 1rem;
}
body.page-template-page-best-slots .best-slots-hub-rank__body p:last-child {
  margin-bottom: 0;
}
body.page-template-page-best-slots .best-slots-hub-rank__link {
  color: var(--cherry);
  font-weight: 600;
  text-decoration: none;
}
body.page-template-page-best-slots .best-slots-hub-rank__link:hover {
  text-decoration: underline;
}

/* ---- 4. FAQ — reuses .faq-accordion -------------------------------- */
body.page-template-page-best-slots .best-slots-hub-faq .faq-accordion {
  margin-top: 0;
}

/* ---- 5. Byline — reuses .reviewer-bio--editor frame chrome ---------- */

body.page-template-page-best-slots .reviewer-bio--editor {
  margin-top: 0;
  padding: 0;
  background: transparent;
}
body.page-template-page-best-slots .reviewer-bio--editor .reviewer-bio__card {
  background: var(--white);
  border: 1px solid var(--border);
  border-radius: 0;
  padding: 17px;
  display: flex;
  align-items: flex-start;
  gap: 1rem;
}
body.page-template-page-best-slots .reviewer-bio--editor .reviewer-bio__photo {
  width: 68px;
  height: 68px;
  flex-shrink: 0;
  border-radius: 9999px;
  overflow: hidden;
  background: linear-gradient(135deg, var(--cherry), var(--gold));
}
body.page-template-page-best-slots .reviewer-bio--editor .reviewer-bio__img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  border-radius: 9999px;
}
body.page-template-page-best-slots .reviewer-bio--editor .reviewer-bio__body {
  flex: 1;
  min-width: 0;
}
body.page-template-page-best-slots .reviewer-bio--editor .reviewer-bio__editor-heading {
  font-size: 1rem;
  font-weight: 700;
}
body.page-template-page-best-slots .reviewer-bio--editor .reviewer-bio__headline {
  margin: 2px 0 0;
  font-size: 0.75rem;
  color: var(--muted-foreground);
}
body.page-template-page-best-slots .reviewer-bio--editor .reviewer-bio__text {
  margin: 0.5rem 0 0;
  font-size: 13px;
  line-height: 1.55;
  color: color-mix(in oklab, var(--charcoal) 80%, transparent);
}
body.page-template-page-best-slots .reviewer-bio--editor .reviewer-bio__meta {
  margin-top: 0.75rem;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  column-gap: 0.5rem;
  row-gap: 0.25rem;
  font-size: 0.75rem;
}
body.page-template-page-best-slots .reviewer-bio--editor .reviewer-bio__meta-item,
body.page-template-page-best-slots .reviewer-bio--editor .reviewer-bio__meta-link {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
}
body.page-template-page-best-slots .best-slots-hub-byline__disclosure {
  margin: 1rem 0 0;
  font-size: 0.75rem;
  color: var(--muted-foreground);
  line-height: 1.6;
}

/* ===========================================================================
   STAGE 9.60 — /new-slots hub (page-new-slots.php). Body class
   `page-template-page-new-slots` injected by body_class filter.

   Sibling of /best-slots — compact card chrome shared via 3rd-comma in
   the Stage 9.54/9.58 .slots-hub-card rules. This Stage adds only the
   new-slots-specific pieces:
     - CHERRY-RED hero (vs gold); cream-on-red text + GOLD eyebrow
     - Catalogue subtitle ("{N} slots — newest first")
     - "Why Play New Slots?" 3-para prose block
     - FAQ + Byline (Tony Sartori) reuse shared .faq-accordion + .reviewer-bio
   =========================================================================== */

body.page-template-page-new-slots .site-main {
  padding-top: 0;
  padding-bottom: 0;
}

/* ---- 1. Cherry-red hero --------------------------------------------- */

body.page-template-page-new-slots .new-slots-hub-hero {
  background: var(--cherry);
  border-bottom: 1px solid var(--cherry);
  color: var(--cream);
}
body.page-template-page-new-slots .new-slots-hub-hero__inner {
  position: relative;
  max-width: 1280px;
  margin-inline: auto;
  padding: 1.25rem 1rem;
}
@media (min-width: 1024px) {
  body.page-template-page-new-slots .new-slots-hub-hero__inner {
    padding: 1.5rem 2rem;
    min-height: 280px;
    display: flex;
    flex-direction: column;
    justify-content: center;
  }
}

/* Dark-tone breadcrumb (cream on red — same as attributes hub). */
body.page-template-page-new-slots .new-slots-hub-hero .breadcrumb-wrap {
  background: transparent;
  border: 0;
  padding: 0;
  margin: 0;
}
body.page-template-page-new-slots .new-slots-hub-hero .breadcrumb {
  color: color-mix(in oklab, var(--cream) 70%, transparent);
  font-size: 0.75rem;
}
body.page-template-page-new-slots .new-slots-hub-hero .breadcrumb ol {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0;
}
body.page-template-page-new-slots .new-slots-hub-hero .breadcrumb li {
  display: inline;
}
body.page-template-page-new-slots .new-slots-hub-hero .breadcrumb li + li::before {
  content: "›";
  margin: 0 0.375rem;
  color: color-mix(in oklab, var(--cream) 55%, transparent);
}
body.page-template-page-new-slots .new-slots-hub-hero .breadcrumb a {
  color: color-mix(in oklab, var(--cream) 70%, transparent);
  text-decoration: none;
}
body.page-template-page-new-slots .new-slots-hub-hero .breadcrumb a:hover {
  color: var(--gold);
}
body.page-template-page-new-slots .new-slots-hub-hero .breadcrumb [aria-current="page"] {
  color: var(--cream);
  font-weight: 500;
}

body.page-template-page-new-slots .new-slots-hub-hero__grid {
  margin-top: 1.5rem;
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 2rem;
  align-items: start;
}
@media (min-width: 1024px) {
  body.page-template-page-new-slots .new-slots-hub-hero__grid {
    grid-template-columns: minmax(0, 1fr) 300px;
    gap: 3rem;
  }
}
body.page-template-page-new-slots .new-slots-hub-hero__grid > * {
  min-width: 0;
  max-width: 100%;
}
body.page-template-page-new-slots .new-slots-hub-hero__eyebrow {
  font-size: 0.75rem;
  text-transform: uppercase;
  letter-spacing: 0.2em;
  color: var(--gold);
  font-weight: 700;
}
body.page-template-page-new-slots .new-slots-hub-hero__title {
  margin: 0.5rem 0 0 !important;
  font-size: 22.5px !important;
  font-weight: 800 !important;
  letter-spacing: -0.01em !important;
  color: var(--cream) !important;
  line-height: 1.1 !important;
}
@media (min-width: 1024px) {
  body.page-template-page-new-slots .new-slots-hub-hero__title {
    font-size: 32px !important;
  }
}
body.page-template-page-new-slots .new-slots-hub-hero__lede {
  margin: 1rem 0 0;
  max-width: 56rem;
  color: color-mix(in oklab, var(--cream) 85%, transparent);
  font-size: 0.95rem;
  line-height: 1.65;
}

/* Hero spotlight — Razor Shark "Latest Review · Editorial". Same chrome
   as best-slots/slots spotlight (white card on charcoal frame). */
body.page-template-page-new-slots .new-slots-hub-hero__spotlight {
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  width: 100%;
  min-width: 0;
  max-width: 100%;
}
@media (min-width: 1024px) {
  body.page-template-page-new-slots .new-slots-hub-hero__spotlight {
    align-items: flex-end;
  }
}
body.page-template-page-new-slots .new-slots-hub-hero__spotlight-eyebrow {
  display: flex;
  align-items: center;
  gap: 0.625rem;
  margin-bottom: 0.625rem;
  font-family: var(--font-sans);
}
body.page-template-page-new-slots .new-slots-hub-hero__spotlight-rule {
  height: 2px;
  width: 1.5rem;
  background: var(--gold);
}
body.page-template-page-new-slots .new-slots-hub-hero__spotlight-label {
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.18em;
  color: var(--cream);
}
body.page-template-page-new-slots .new-slots-hub-hero__spotlight-sep {
  color: color-mix(in oklab, var(--cream) 60%, transparent);
  font-size: 10px;
}
body.page-template-page-new-slots .new-slots-hub-hero__spotlight-sublabel {
  font-size: 10px;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: color-mix(in oklab, var(--cream) 60%, transparent);
}
body.page-template-page-new-slots .new-slots-hub-hero__spotlight-card {
  display: flex;
  align-items: stretch;
  width: 100%;
  max-width: 100%;
  min-width: 0;
  background: var(--card);
  border: 2px solid var(--charcoal);
  border-radius: 0;
  text-decoration: none;
  color: inherit;
  transition: transform 200ms ease;
}
@media (min-width: 1024px) {
  body.page-template-page-new-slots .new-slots-hub-hero__spotlight-card {
    max-width: 380px;
  }
}
body.page-template-page-new-slots .new-slots-hub-hero__spotlight-card:hover {
  transform: translate(-2px, -2px);
}
body.page-template-page-new-slots .new-slots-hub-hero__spotlight-media {
  position: relative;
  flex-shrink: 0;
  width: 120px;
  height: 80px;
  border: 2px solid var(--charcoal);
  overflow: hidden;
  margin: 10px;
}
body.page-template-page-new-slots .new-slots-hub-hero__spotlight-img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  max-width: none;
  max-height: none;
  object-fit: cover;
}
body.page-template-page-new-slots .new-slots-hub-hero__spotlight-body {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  padding: 10px 10px 10px 0;
}
body.page-template-page-new-slots .new-slots-hub-hero__spotlight-title {
  font-family: var(--font-display);
  font-size: 10px;
  line-height: 1.12;
  font-weight: 700;
  color: var(--charcoal);
  overflow: hidden;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  word-break: break-word;
}
body.page-template-page-new-slots .new-slots-hub-hero__spotlight-sub {
  font-size: 12px;
  font-style: italic;
  color: var(--muted-foreground);
  margin-top: 2px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
body.page-template-page-new-slots .new-slots-hub-hero__spotlight-stats {
  margin-top: 6px;
  display: flex;
  align-items: center;
  gap: 0.5rem;
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: color-mix(in oklab, var(--charcoal) 75%, transparent);
}
body.page-template-page-new-slots .new-slots-hub-hero__spotlight-stat-label {
  color: var(--muted-foreground);
}
body.page-template-page-new-slots .new-slots-hub-hero__spotlight-stat-value {
  font-weight: 700;
  color: var(--foreground);
}
body.page-template-page-new-slots .new-slots-hub-hero__spotlight-cta-wrap {
  margin-top: 8px;
}
body.page-template-page-new-slots .new-slots-hub-hero__spotlight-cta {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  background: var(--cherry);
  color: var(--cream);
  font-size: 11px;
  font-weight: 800;
  text-transform: uppercase;
  letter-spacing: 0.14em;
  padding: 4px 10px;
  border: 2px solid var(--charcoal);
}

/* ---- 2-5. Body container -------------------------------------------- */

body.page-template-page-new-slots .new-slots-hub-body {
  max-width: 880px;
}
body.page-template-page-new-slots .new-slots-hub-section {
  padding-block: 2.5rem;
}
body.page-template-page-new-slots .new-slots-hub-section__title {
  margin: 0 0 0.75rem !important;
  font-size: 24px !important;
  font-weight: 700 !important;
  letter-spacing: -0.02em !important;
  line-height: 1.2 !important;
}
@media (max-width: 767px) {
  body.page-template-page-new-slots .new-slots-hub-section__title {
    font-size: 20px !important;
  }
}

/* ---- 2. Catalogue grid (2/3/4/5 cols, gap 0.625rem; same as best-slots
       — card chrome is shared via .slots-hub-card scope). ------------- */

body.page-template-page-new-slots .new-slots-hub-catalogue__sub {
  margin: 0 0 1.5rem;
  font-size: 0.875rem;
  color: var(--muted-foreground);
}
body.page-template-page-new-slots .new-slots-hub-catalogue__grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.625rem;
}
@media (min-width: 640px) {
  body.page-template-page-new-slots .new-slots-hub-catalogue__grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}
@media (min-width: 768px) {
  body.page-template-page-new-slots .new-slots-hub-catalogue__grid {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
}
@media (min-width: 1024px) {
  body.page-template-page-new-slots .new-slots-hub-catalogue__grid {
    grid-template-columns: repeat(5, minmax(0, 1fr));
  }
}

/* ---- 3. Why Play New Slots? prose ----------------------------------- */

body.page-template-page-new-slots .new-slots-hub-why__body {
  color: color-mix(in oklab, var(--foreground) 85%, transparent);
  line-height: 1.65;
}
body.page-template-page-new-slots .new-slots-hub-why__body p {
  margin: 0 0 1rem;
}
body.page-template-page-new-slots .new-slots-hub-why__body p:last-child {
  margin-bottom: 0;
}
body.page-template-page-new-slots .new-slots-hub-why__link {
  color: var(--cherry);
  font-weight: 600;
  text-decoration: none;
}
body.page-template-page-new-slots .new-slots-hub-why__link:hover {
  text-decoration: underline;
}

/* ---- 4. FAQ — reuses .faq-accordion -------------------------------- */
body.page-template-page-new-slots .new-slots-hub-faq .faq-accordion {
  margin-top: 0;
}

/* ---- 5. Byline — reuses .reviewer-bio--editor frame chrome ---------- */

body.page-template-page-new-slots .reviewer-bio--editor {
  margin-top: 0;
  padding: 0;
  background: transparent;
}
body.page-template-page-new-slots .reviewer-bio--editor .reviewer-bio__card {
  background: var(--white);
  border: 1px solid var(--border);
  border-radius: 0;
  padding: 17px;
  display: flex;
  align-items: flex-start;
  gap: 1rem;
}
body.page-template-page-new-slots .reviewer-bio--editor .reviewer-bio__photo {
  width: 68px;
  height: 68px;
  flex-shrink: 0;
  border-radius: 9999px;
  overflow: hidden;
  background: linear-gradient(135deg, var(--cherry), var(--gold));
}
body.page-template-page-new-slots .reviewer-bio--editor .reviewer-bio__img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  border-radius: 9999px;
}
body.page-template-page-new-slots .reviewer-bio--editor .reviewer-bio__body {
  flex: 1;
  min-width: 0;
}
body.page-template-page-new-slots .reviewer-bio--editor .reviewer-bio__editor-heading {
  font-size: 1rem;
  font-weight: 700;
}
body.page-template-page-new-slots .reviewer-bio--editor .reviewer-bio__headline {
  margin: 2px 0 0;
  font-size: 0.75rem;
  color: var(--muted-foreground);
}
body.page-template-page-new-slots .reviewer-bio--editor .reviewer-bio__text {
  margin: 0.5rem 0 0;
  font-size: 13px;
  line-height: 1.55;
  color: color-mix(in oklab, var(--charcoal) 80%, transparent);
}
body.page-template-page-new-slots .reviewer-bio--editor .reviewer-bio__meta {
  margin-top: 0.75rem;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  column-gap: 0.5rem;
  row-gap: 0.25rem;
  font-size: 0.75rem;
}
body.page-template-page-new-slots .reviewer-bio--editor .reviewer-bio__meta-item,
body.page-template-page-new-slots .reviewer-bio--editor .reviewer-bio__meta-link {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
}
body.page-template-page-new-slots .new-slots-hub-byline__disclosure {
  margin: 1rem 0 0;
  font-size: 0.75rem;
  color: var(--muted-foreground);
  line-height: 1.6;
}

/* ===========================================================================
   STAGE 9.61 — /about page (page-about.php). Editorial-prose page; no
   slot grid, no FAQ accordion. Scoped to body.page-template-page-about.

   Layout: cream page bg (no tinted hero), 880-narrow centered reading
   column. Sections: Hero (eyebrow + H1 + stamp) → Lead 3 paras → 4
   Editorial Values pillar cards (2x2) → 6 numbered steps "How We Rate
   Slots" → Meet the Editorial Team (3-col cards with photos) → Responsible
   Gambling prose + 4-link list → Affiliate Disclosure → centered footer
   compliance line.
   =========================================================================== */

/* ---- Outer chrome (cream page bg, narrow centered column). ---------- */

body.page-template-page-about .about-page {
  max-width: 880px;
  color: var(--charcoal);
}

/* Hero — no tinted bg. Breadcrumb (added 0.9.73 mirroring refreshed Lov)
   + eyebrow + H1 + last-updated stamp on cream. The breadcrumb chrome
   matches the .legal-hero pattern (transparent wrap, ›-separated inline
   list, muted-foreground links cherry on hover). Hero pt reduced 3rem
   → 2.5rem to compensate for the added breadcrumb row (Lov went from
   pt-12 → pt-10 for the same reason). */
body.page-template-page-about .about-hero {
  padding-block: 2.5rem 2rem;
}
body.page-template-page-about .about-hero .breadcrumb-wrap {
  background: transparent;
  border: 0;
  padding: 0;
  margin: 0 0 1.5rem;
}
body.page-template-page-about .about-hero .breadcrumb {
  color: var(--muted-foreground);
  font-size: 0.75rem;
}
body.page-template-page-about .about-hero .breadcrumb ol {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0;
}
body.page-template-page-about .about-hero .breadcrumb li {
  display: inline;
}
body.page-template-page-about .about-hero .breadcrumb li + li::before {
  content: "›";
  margin: 0 0.375rem;
  color: color-mix(in oklab, var(--charcoal) 40%, transparent);
}
body.page-template-page-about .about-hero .breadcrumb a {
  color: var(--muted-foreground);
  text-decoration: none;
}
body.page-template-page-about .about-hero .breadcrumb a:hover {
  color: var(--cherry);
}
body.page-template-page-about .about-hero .breadcrumb [aria-current="page"] {
  color: var(--charcoal);
  font-weight: 500;
}
body.page-template-page-about .about-hero__eyebrow {
  font-size: 0.75rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.18em;
  color: var(--cherry);
}
body.page-template-page-about .about-hero__title {
  margin: 0.75rem 0 0 !important;
  font-size: 32px !important;
  font-weight: 800 !important;
  letter-spacing: -0.01em !important;
  line-height: 1.05 !important;
  color: var(--charcoal) !important;
}
@media (min-width: 768px) {
  body.page-template-page-about .about-hero__title {
    font-size: 48px !important;
  }
}
body.page-template-page-about .about-hero__stamp {
  margin-top: 1rem;
  font-size: 0.75rem;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--muted-foreground);
}

/* Section spacing. */
body.page-template-page-about .about-section {
  padding-block: 2rem;
}
body.page-template-page-about .about-section__title {
  margin: 0 0 0.75rem !important;
  font-size: 24px !important;
  font-weight: 700 !important;
  letter-spacing: -0.02em !important;
  line-height: 1.2 !important;
  color: var(--charcoal) !important;
}
body.page-template-page-about .about-section__intro {
  margin: 0 0 1.5rem;
  font-size: 0.9375rem;
  line-height: 1.65;
  color: color-mix(in oklab, var(--charcoal) 80%, transparent);
}

/* Generic prose block (Lead + RG + AffDisc). */
body.page-template-page-about .about-prose {
  color: color-mix(in oklab, var(--foreground) 85%, transparent);
  line-height: 1.65;
}
body.page-template-page-about .about-prose p {
  margin: 0 0 1rem;
}
body.page-template-page-about .about-prose p:last-child {
  margin-bottom: 0;
}
body.page-template-page-about .about-prose a {
  color: var(--cherry);
  font-weight: 600;
  text-decoration: none;
}
body.page-template-page-about .about-prose a:hover {
  text-decoration: underline;
}

/* ---- 3. Editorial Values pillars (2x2 cream cards, sharp corners). - */

body.page-template-page-about .about-values__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1rem;
}
@media (min-width: 768px) {
  body.page-template-page-about .about-values__grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
body.page-template-page-about .about-values__card {
  background: var(--cream);
  border: 2px solid var(--charcoal);
  border-radius: 0;
  padding: 1.25rem;
  transition: border-color 200ms ease;
}
@media (min-width: 768px) {
  body.page-template-page-about .about-values__card {
    padding: 1.5rem;
  }
}
body.page-template-page-about .about-values__card:hover {
  border-color: var(--cherry);
}
body.page-template-page-about .about-values__icon {
  width: 40px;
  height: 40px;
  object-fit: contain;
}
body.page-template-page-about .about-values__h {
  margin: 1rem 0 0 !important;
  font-size: 18px !important;
  font-weight: 800 !important;
  letter-spacing: -0.01em !important;
  line-height: 1.2 !important;
  color: var(--charcoal) !important;
}
body.page-template-page-about .about-values__body {
  margin: 0.5rem 0 0;
  font-size: 14px;
  line-height: 1.6;
  color: color-mix(in oklab, var(--charcoal) 80%, transparent);
}

/* ---- 4. How We Rate — 6 numbered steps with cherry numerals. ------ */

body.page-template-page-about .about-rate__steps {
  list-style: none;
  margin: 1.5rem 0 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 1rem;
}
body.page-template-page-about .about-rate__step {
  display: flex;
  gap: 1.25rem;
  align-items: flex-start;
  border-top: 2px solid color-mix(in oklab, var(--charcoal) 10%, transparent);
  padding-top: 1rem;
}
body.page-template-page-about .about-rate__step:first-child {
  border-top: 0;
  padding-top: 0;
}
body.page-template-page-about .about-rate__num {
  font-size: 1.875rem;
  font-weight: 800;
  color: var(--cherry);
  font-variant-numeric: tabular-nums;
  line-height: 1;
  flex-shrink: 0;
  width: 3.5rem;
}
@media (min-width: 768px) {
  body.page-template-page-about .about-rate__num {
    font-size: 2.25rem;
  }
}
body.page-template-page-about .about-rate__body {
  margin: 0;
  font-size: 15px;
  line-height: 1.6;
  color: var(--charcoal);
}
body.page-template-page-about .about-rate__body strong {
  font-weight: 700;
}
body.page-template-page-about .about-rate__cta {
  margin: 1.5rem 0 0;
}
body.page-template-page-about .about-rate__cta a {
  font-weight: 600;
  color: var(--cherry);
  text-decoration: none;
}
body.page-template-page-about .about-rate__cta a:hover {
  text-decoration: underline;
}

/* ---- 5. Meet the Editorial Team (3-col cards, same chrome). ------- */

body.page-template-page-about .about-team__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1rem;
}
@media (min-width: 768px) {
  body.page-template-page-about .about-team__grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}
body.page-template-page-about .about-team__card {
  background: var(--cream);
  border: 2px solid var(--charcoal);
  border-radius: 0;
  padding: 1.25rem;
  display: flex;
  flex-direction: column;
  transition: border-color 200ms ease;
}
@media (min-width: 768px) {
  body.page-template-page-about .about-team__card {
    padding: 1.5rem;
  }
}
body.page-template-page-about .about-team__card:hover {
  border-color: var(--cherry);
}
body.page-template-page-about .about-team__photo {
  width: 96px;
  height: 96px;
  border-radius: 9999px;
  overflow: hidden;
  background: linear-gradient(135deg, var(--cherry), var(--gold));
  flex-shrink: 0;
}
body.page-template-page-about .about-team__photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  border-radius: 9999px;
}
body.page-template-page-about .about-team__name {
  margin: 1rem 0 0 !important;
  font-size: 18px !important;
  font-weight: 800 !important;
  letter-spacing: -0.01em !important;
  line-height: 1.2 !important;
  color: var(--charcoal) !important;
}
body.page-template-page-about .about-team__role {
  margin-top: 0.25rem;
  font-size: 0.75rem;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--muted-foreground);
}
body.page-template-page-about .about-team__bio {
  margin: 0.75rem 0 0;
  font-size: 13px;
  line-height: 1.6;
  color: color-mix(in oklab, var(--charcoal) 80%, transparent);
  flex: 1;
}
body.page-template-page-about .about-team__verified {
  margin-top: 1rem;
  padding-top: 0.75rem;
  border-top: 1px solid color-mix(in oklab, var(--charcoal) 10%, transparent);
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--muted-foreground);
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
}
body.page-template-page-about .about-team__verified svg {
  color: var(--cherry);
  flex-shrink: 0;
}
body.page-template-page-about .about-team__footer {
  margin-top: 0.75rem;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem;
  flex-wrap: wrap;
}
body.page-template-page-about .about-team__x {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  font-size: 0.75rem;
  color: var(--muted-foreground);
  text-decoration: none;
}
body.page-template-page-about .about-team__x:hover {
  color: var(--cherry);
}
body.page-template-page-about .about-team__profile {
  font-size: 13px;
  font-weight: 600;
  color: var(--cherry);
  text-decoration: none;
}
body.page-template-page-about .about-team__profile:hover {
  text-decoration: underline;
}

/* ---- 6. Responsible Gambling support-org list. -------------------- */

body.page-template-page-about .about-rg__list {
  list-style: disc;
  padding-left: 1.25rem;
  margin: 1rem 0 0;
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  line-height: 1.6;
}
body.page-template-page-about .about-rg__list strong {
  font-weight: 700;
  color: var(--charcoal);
}
body.page-template-page-about .about-rg__list a {
  color: var(--cherry);
  text-decoration: none;
}
body.page-template-page-about .about-rg__list a:hover {
  text-decoration: underline;
}

/* ---- 7. Affiliate Disclosure CTA --------------------------------- */
body.page-template-page-about .about-aff__cta {
  font-weight: 600;
  color: var(--cherry);
  text-decoration: none;
}
body.page-template-page-about .about-aff__cta:hover {
  text-decoration: underline;
}

/* ---- 8. Footer compliance line — centered single-paragraph strip. - */

body.page-template-page-about .about-footnote {
  padding: 0.5rem 0 3rem;
}
body.page-template-page-about .about-footnote p {
  margin: 0;
  text-align: center;
  font-size: 12px;
  line-height: 1.6;
  color: color-mix(in oklab, var(--charcoal) 70%, transparent);
}
body.page-template-page-about .about-footnote a {
  color: var(--cherry);
  text-decoration: none;
}
body.page-template-page-about .about-footnote a:hover {
  text-decoration: underline;
}

/* ===========================================================================
   STAGE 9.62 — /authors index (page-authors.php). Editorial Team
   directory. Scoped to body.page-template-page-authors.

   Card chrome is a COMPACT variant of About's Editorial Team cards —
   different enough (337×287 vs 271×544, centered photo + name + role,
   short specialism, no "Verified Editor" row, "Read profile →" CTA
   uppercase) that it lives under its own .authors-team__* family
   rather than extending .about-team__* via the comma-scope trick.
   Visual language still matches About (cream bg, 2px charcoal border,
   sharp corners, cherry hover) for consistency.
   =========================================================================== */

body.page-template-page-authors .authors-page {
  max-width: 880px;
  color: var(--charcoal);
}

/* ---- 1. Hero — breadcrumb + eyebrow + H1 + 1-line lede ------------- */

body.page-template-page-authors .authors-hero {
  padding-block: 2rem 1.5rem;
}
body.page-template-page-authors .authors-hero .breadcrumb-wrap {
  background: transparent;
  border: 0;
  padding: 0;
  margin: 0 0 1rem;
}
body.page-template-page-authors .authors-hero .breadcrumb {
  color: var(--muted-foreground);
  font-size: 0.75rem;
}
body.page-template-page-authors .authors-hero .breadcrumb ol {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0;
}
body.page-template-page-authors .authors-hero .breadcrumb li {
  display: inline;
}
body.page-template-page-authors .authors-hero .breadcrumb li + li::before {
  content: "›";
  margin: 0 0.375rem;
  color: color-mix(in oklab, var(--charcoal) 40%, transparent);
}
body.page-template-page-authors .authors-hero .breadcrumb a {
  color: var(--muted-foreground);
  text-decoration: none;
}
body.page-template-page-authors .authors-hero .breadcrumb a:hover {
  color: var(--cherry);
}
body.page-template-page-authors .authors-hero .breadcrumb [aria-current="page"] {
  color: var(--charcoal);
  font-weight: 500;
}
body.page-template-page-authors .authors-hero__eyebrow {
  font-size: 0.75rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.18em;
  color: var(--cherry);
}
body.page-template-page-authors .authors-hero__title {
  margin: 0.75rem 0 0 !important;
  font-size: 32px !important;
  font-weight: 800 !important;
  letter-spacing: -0.01em !important;
  line-height: 1.05 !important;
  color: var(--charcoal) !important;
}
@media (min-width: 768px) {
  body.page-template-page-authors .authors-hero__title {
    font-size: 40px !important;
  }
}
body.page-template-page-authors .authors-hero__lede {
  margin: 1rem 0 0;
  font-size: 0.9375rem;
  line-height: 1.65;
  color: color-mix(in oklab, var(--charcoal) 80%, transparent);
}

/* ---- 2. Intro / 4. Standards prose ---------------------------------- */

body.page-template-page-authors .authors-section {
  padding-block: 1.5rem;
}
body.page-template-page-authors .authors-section__title {
  margin: 0 0 0.75rem !important;
  font-size: 24px !important;
  font-weight: 700 !important;
  letter-spacing: -0.02em !important;
  line-height: 1.2 !important;
  color: var(--charcoal) !important;
}
body.page-template-page-authors .authors-intro p {
  margin: 0;
  font-size: 0.9375rem;
  line-height: 1.65;
  color: color-mix(in oklab, var(--foreground) 85%, transparent);
}
body.page-template-page-authors .authors-standards__body {
  color: color-mix(in oklab, var(--foreground) 85%, transparent);
  line-height: 1.65;
}
body.page-template-page-authors .authors-standards__body p {
  margin: 0 0 1rem;
}
body.page-template-page-authors .authors-standards__body p:last-child {
  margin-bottom: 0;
}
body.page-template-page-authors .authors-standards__link {
  color: var(--cherry);
  font-weight: 600;
  text-decoration: none;
}
body.page-template-page-authors .authors-standards__link:hover {
  text-decoration: underline;
}

/* ---- 3. Team grid — 3-col compact cards (max-w-1100, gap 1.25rem). - */

body.page-template-page-authors .authors-team {
  padding: 1rem 1rem 1.5rem;
}
@media (min-width: 1024px) {
  body.page-template-page-authors .authors-team {
    padding: 1rem 2rem 1.5rem;
  }
}
body.page-template-page-authors .authors-team__grid {
  max-width: 1100px;
  margin-inline: auto;
  display: grid;
  grid-template-columns: 1fr;
  gap: 1.25rem;
}
@media (min-width: 768px) {
  body.page-template-page-authors .authors-team__grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

/* Compact author card — cream bg, 2px charcoal border (matches About
   token palette), sharp corners, centered content. */
body.page-template-page-authors .authors-team__card {
  background: var(--cream);
  border: 2px solid var(--charcoal);
  border-radius: 0;
  padding: 1.25rem;
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  transition: border-color 200ms ease;
}
@media (min-width: 768px) {
  body.page-template-page-authors .authors-team__card {
    padding: 1.5rem;
  }
}
body.page-template-page-authors .authors-team__card:hover {
  border-color: var(--cherry);
}
body.page-template-page-authors .authors-team__card--placeholder {
  cursor: default;
}
body.page-template-page-authors .authors-team__photo {
  width: 109px;
  height: 109px;
  border-radius: 9999px;
  overflow: hidden;
  background: linear-gradient(135deg, var(--cherry), var(--gold));
  flex-shrink: 0;
  margin-inline: auto;
}
body.page-template-page-authors .authors-team__photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  border-radius: 9999px;
}
body.page-template-page-authors .authors-team__name {
  margin: 1.25rem 0 0 !important;
  font-size: 20px !important;
  font-weight: 700 !important;
  letter-spacing: -0.01em !important;
  line-height: 1.2 !important;
  color: var(--charcoal) !important;
  text-align: center;
}
body.page-template-page-authors .authors-team__role {
  margin-top: 0.25rem;
  font-size: 0.875rem;
  color: var(--muted-foreground);
  text-align: center;
}
body.page-template-page-authors .authors-team__bio {
  margin: 0.75rem 0 0;
  font-size: 13px;
  line-height: 1.6;
  color: color-mix(in oklab, var(--charcoal) 80%, transparent);
  text-align: center;
  flex: 1;
}
body.page-template-page-authors .authors-team__footer {
  margin-top: 1rem;
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.5rem;
  flex-wrap: wrap;
}
body.page-template-page-authors .authors-team__x {
  display: inline-flex;
  align-items: center;
  gap: 0.25rem;
  font-size: 0.75rem;
  color: var(--muted-foreground);
  text-decoration: none;
}
body.page-template-page-authors .authors-team__x:hover {
  color: var(--cherry);
}
body.page-template-page-authors .authors-team__cta {
  font-size: 0.75rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--cherry);
  text-decoration: none;
}
body.page-template-page-authors a.authors-team__cta:hover {
  text-decoration: underline;
}
/* Placeholder CTA — same colour + typography as the live link so the
   visual treatment is identical, but no hover affordance and no
   pointer cursor. Auto-promotes to <a> once the matching slug is on
   $slotrover_published_author_profiles. */
body.page-template-page-authors .authors-team__cta--placeholder {
  cursor: default;
  opacity: 0.85;
}

/* ===========================================================================
   STAGE 9.63 — /authors/{slug}/ profile (author.php). Scoped to
   body.author-profile (injected via body_class filter inside author.php).

   Pure-prose editorial layout (no cards, no chips). 8 sections in a
   1100-wide centered column:
     1. Hero — 160 round photo + name + role + (optional) location +
        headline + UKGC Verified badge
     2. Biography
     3. Editorial Profile
     4. Credentials & Career Timeline — cherry left-rail items
     5. Review Methodology — bold-label + body items
     6. Specialisations — bulleted list
     7. Editorial Accountability — paragraph + /editorial-policy link
     8. Connect & Verify — X handle link + verification statement
   =========================================================================== */

body.author-profile .author-profile-page {
  max-width: 1100px;
}

/* ---- Hero ---------------------------------------------------------- */

body.author-profile .author-profile-hero {
  padding-block: 2.5rem 1.5rem;
}

/* Muted breadcrumb (Home › Authors › {name}). */
body.author-profile .author-profile-hero .breadcrumb-wrap {
  background: transparent;
  border: 0;
  padding: 0;
  margin: 0;
}
body.author-profile .author-profile-hero .breadcrumb {
  color: var(--muted-foreground);
  font-size: 0.75rem;
}
body.author-profile .author-profile-hero .breadcrumb ol {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0;
}
body.author-profile .author-profile-hero .breadcrumb li {
  display: inline;
}
body.author-profile .author-profile-hero .breadcrumb li + li::before {
  content: "›";
  margin: 0 0.375rem;
  color: color-mix(in oklab, var(--charcoal) 40%, transparent);
}
body.author-profile .author-profile-hero .breadcrumb a {
  color: var(--muted-foreground);
  text-decoration: none;
}
body.author-profile .author-profile-hero .breadcrumb a:hover {
  color: var(--cherry);
}
body.author-profile .author-profile-hero .breadcrumb [aria-current="page"] {
  color: var(--charcoal);
  font-weight: 500;
}

body.author-profile .author-profile-hero__row {
  margin-top: 1.5rem;
  display: flex;
  flex-direction: column;
  gap: 1.5rem;
  align-items: flex-start;
}
@media (min-width: 640px) {
  body.author-profile .author-profile-hero__row {
    flex-direction: row;
    align-items: flex-start;
  }
}
body.author-profile .author-profile-hero__photo {
  width: 160px;
  height: 160px;
  border-radius: 9999px;
  overflow: hidden;
  background: linear-gradient(135deg, var(--cherry), var(--gold));
  flex-shrink: 0;
}
body.author-profile .author-profile-hero__photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  border-radius: 9999px;
}
body.author-profile .author-profile-hero__meta {
  flex: 1;
  min-width: 0;
}
body.author-profile .author-profile-hero__eyebrow {
  font-size: 0.75rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.2em;
  color: var(--cherry);
}
body.author-profile .author-profile-hero__name {
  margin: 0.5rem 0 0 !important;
  font-size: 32px !important;
  font-weight: 800 !important;
  letter-spacing: -0.01em !important;
  line-height: 1.1 !important;
  color: var(--charcoal) !important;
}
@media (min-width: 1024px) {
  body.author-profile .author-profile-hero__name {
    font-size: 40px !important;
  }
}
body.author-profile .author-profile-hero__role {
  margin: 0.5rem 0 0;
  font-size: 1.0625rem;
  color: var(--muted-foreground);
}
body.author-profile .author-profile-hero__location {
  margin: 0.25rem 0 0;
  font-size: 0.875rem;
  color: var(--muted-foreground);
}
body.author-profile .author-profile-hero__headline {
  margin: 1rem 0 0;
  font-size: 1rem;
  line-height: 1.65;
  color: color-mix(in oklab, var(--foreground) 85%, transparent);
}
body.author-profile .author-profile-hero__badge {
  margin-top: 0.75rem;
  display: inline-flex;
  align-items: center;
  gap: 0.375rem;
  font-size: 0.75rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--cherry);
}

/* ---- Sections ----------------------------------------------------- */

body.author-profile .author-profile-section {
  padding-block: 2rem;
}
body.author-profile .author-profile-section__title {
  margin: 0 0 1.25rem !important;
  font-size: 24px !important;
  font-weight: 700 !important;
  letter-spacing: -0.02em !important;
  line-height: 1.2 !important;
  color: var(--charcoal) !important;
}
@media (min-width: 1024px) {
  body.author-profile .author-profile-section__title {
    font-size: 28px !important;
  }
}
body.author-profile .author-profile-section__body {
  color: color-mix(in oklab, var(--foreground) 85%, transparent);
  line-height: 1.65;
}
body.author-profile .author-profile-section__body p {
  margin: 0 0 1rem;
}
body.author-profile .author-profile-section__body p:last-child {
  margin-bottom: 0;
}

body.author-profile .author-profile-link {
  color: var(--cherry);
  text-decoration: none;
}
body.author-profile .author-profile-link:hover {
  text-decoration: underline;
}
body.author-profile .author-profile-link--strong {
  font-weight: 600;
}

/* ---- 4. Career Timeline (cherry left-rail items) ------------------ */

body.author-profile .author-profile-timeline {
  display: flex;
  flex-direction: column;
  gap: 1.25rem;
}
body.author-profile .author-profile-timeline__item {
  border-left: 2px solid color-mix(in oklab, var(--cherry) 40%, transparent);
  padding-left: 1rem;
}
body.author-profile .author-profile-timeline__label {
  font-size: 0.875rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--cherry);
}
body.author-profile .author-profile-timeline__body {
  margin: 0.375rem 0 0;
  color: color-mix(in oklab, var(--foreground) 85%, transparent);
  line-height: 1.65;
}

/* ---- 5. Methodology (bold-label + body) --------------------------- */

body.author-profile .author-profile-methodology {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
  color: color-mix(in oklab, var(--foreground) 85%, transparent);
  line-height: 1.65;
}
body.author-profile .author-profile-methodology p {
  margin: 0;
}
body.author-profile .author-profile-methodology strong {
  font-weight: 700;
  color: var(--foreground);
}

/* ---- 6. Specialisations bulleted list ----------------------------- */

body.author-profile .author-profile-specialisations {
  list-style: disc;
  padding-left: 1.5rem;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 0.375rem;
  color: color-mix(in oklab, var(--foreground) 85%, transparent);
  line-height: 1.6;
}

/* ===========================================================================
   STAGE 9.64 — /how-we-rate page (page-how-we-rate.php). The RoverScore
   methodology. Scoped to body.page-template-page-how-we-rate.

   Layout: pillar/criterion/step cards (cream and white bg, 2px charcoal
   border, sharp corners, no shadow) + bands table + sticky sub-nav.
   880px single-column body width throughout. Cherry weight badges.
   =========================================================================== */

body.page-template-page-how-we-rate .how-we-rate-page {
  max-width: 880px;
  margin: 0 auto;
  padding-inline: var(--container-padding-x);
  color: var(--charcoal);
}
@media (min-width: 768px) {
  body.page-template-page-how-we-rate .how-we-rate-page {
    padding-inline: var(--container-padding-x-md);
  }
}

/* ---- 1. Hero ---------------------------------------------------- */

body.page-template-page-how-we-rate .how-we-rate-hero {
  max-width: 880px;
  margin: 0 auto;
  padding-inline: var(--container-padding-x);
}
@media (min-width: 768px) {
  body.page-template-page-how-we-rate .how-we-rate-hero {
    padding-inline: var(--container-padding-x-md);
  }
}
body.page-template-page-how-we-rate .how-we-rate-hero__inner {
  padding-block: 2.5rem 1.5rem;
}

body.page-template-page-how-we-rate .how-we-rate-hero .breadcrumb-wrap {
  background: transparent;
  border: 0;
  padding: 0;
  margin: 0 0 1.5rem;
}
body.page-template-page-how-we-rate .how-we-rate-hero .breadcrumb {
  color: var(--muted-foreground);
  font-size: 0.75rem;
}
body.page-template-page-how-we-rate .how-we-rate-hero .breadcrumb ol {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0;
}
body.page-template-page-how-we-rate .how-we-rate-hero .breadcrumb li {
  display: inline;
}
body.page-template-page-how-we-rate .how-we-rate-hero .breadcrumb li + li::before {
  content: "›";
  margin: 0 0.375rem;
  color: color-mix(in oklab, var(--charcoal) 40%, transparent);
}
body.page-template-page-how-we-rate .how-we-rate-hero .breadcrumb a {
  color: var(--muted-foreground);
  text-decoration: none;
}
body.page-template-page-how-we-rate .how-we-rate-hero .breadcrumb a:hover {
  color: var(--cherry);
}
body.page-template-page-how-we-rate .how-we-rate-hero .breadcrumb [aria-current="page"] {
  color: var(--charcoal);
  font-weight: 500;
}
body.page-template-page-how-we-rate .how-we-rate-hero__eyebrow {
  font-size: 0.75rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.2em;
  color: var(--cherry);
}
body.page-template-page-how-we-rate .how-we-rate-hero__title {
  margin: 0.75rem 0 0 !important;
  font-size: 32px !important;
  font-weight: 800 !important;
  letter-spacing: -0.01em !important;
  line-height: 1.05 !important;
  color: var(--charcoal) !important;
}
@media (min-width: 1024px) {
  body.page-template-page-how-we-rate .how-we-rate-hero__title {
    font-size: 48px !important;
  }
}
body.page-template-page-how-we-rate .how-we-rate-hero__lede {
  margin: 1.5rem 0 0;
  font-size: 1.0625rem;
  line-height: 1.65;
  color: color-mix(in oklab, var(--foreground) 85%, transparent);
}

/* ---- 2. Sticky sub-nav ------------------------------------------ */

body.page-template-page-how-we-rate .how-we-rate-subnav {
  position: sticky;
  top: 0;
  z-index: 30;
  background: color-mix(in oklab, var(--cream) 95%, transparent);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  border-top: 2px solid var(--charcoal);
  border-bottom: 2px solid var(--charcoal);
}
body.page-template-page-how-we-rate .how-we-rate-subnav__inner {
  max-width: 880px;
  margin: 0 auto;
  padding: 0.75rem var(--container-padding-x);
  display: flex;
  flex-wrap: wrap;
  column-gap: 1.25rem;
  row-gap: 0.5rem;
  font-size: 0.75rem;
  font-weight: 600;
}
@media (min-width: 768px) {
  body.page-template-page-how-we-rate .how-we-rate-subnav__inner {
    padding-inline: var(--container-padding-x-md);
    font-size: 0.875rem;
  }
}
body.page-template-page-how-we-rate .how-we-rate-subnav__link {
  color: var(--charcoal);
  text-decoration: none;
  transition: color 150ms ease;
}
body.page-template-page-how-we-rate .how-we-rate-subnav__link:hover {
  color: var(--cherry);
}

/* ---- 3-8. Section spacing + heads ------------------------------- */

body.page-template-page-how-we-rate .how-we-rate-section {
  padding-block: 2.5rem;
}
body.page-template-page-how-we-rate .how-we-rate-section__head {
  margin-bottom: 1.5rem;
}
body.page-template-page-how-we-rate .how-we-rate-section__title {
  margin: 0 !important;
  font-size: 24px !important;
  font-weight: 700 !important;
  letter-spacing: -0.02em !important;
  line-height: 1.2 !important;
  color: var(--charcoal) !important;
  /* scroll-margin so sticky sub-nav doesn't cover the heading on jump. */
  scroll-margin-top: 5rem;
}
@media (min-width: 1024px) {
  body.page-template-page-how-we-rate .how-we-rate-section__title {
    font-size: 28px !important;
  }
}
body.page-template-page-how-we-rate .how-we-rate-section__sub {
  margin: 0.75rem 0 0;
  font-size: 0.9375rem;
  line-height: 1.65;
  color: color-mix(in oklab, var(--foreground) 80%, transparent);
}

/* ---- Card chrome (criterion / pillar / step). Sharp brutalist
       2px charcoal border, no radius, no shadow. ------------------- */

body.page-template-page-how-we-rate .how-we-rate-card {
  background: var(--cream);
  border: 2px solid var(--charcoal);
  border-radius: 0;
  padding: 1.5rem;
}
body.page-template-page-how-we-rate .how-we-rate-card--step {
  background: var(--white);
}
body.page-template-page-how-we-rate .how-we-rate-card__head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 0.75rem;
  margin-bottom: 0.75rem;
}
body.page-template-page-how-we-rate .how-we-rate-card__title-row {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  flex: 1;
  min-width: 0;
}
body.page-template-page-how-we-rate .how-we-rate-card__icon {
  width: 36px;
  height: 36px;
  flex-shrink: 0;
  object-fit: contain;
}
body.page-template-page-how-we-rate .how-we-rate-card__h {
  margin: 0 !important;
  font-size: 18px !important;
  font-weight: 700 !important;
  letter-spacing: -0.01em !important;
  line-height: 1.2 !important;
  color: var(--charcoal) !important;
}
body.page-template-page-how-we-rate .how-we-rate-card--criterion .how-we-rate-card__h {
  font-size: 20px !important;
}
body.page-template-page-how-we-rate .how-we-rate-card__weight {
  flex-shrink: 0;
  background: var(--cherry);
  color: var(--white);
  font-size: 0.75rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  padding: 0.25rem 0.625rem;
}
body.page-template-page-how-we-rate .how-we-rate-card__step-head {
  display: flex;
  align-items: baseline;
  gap: 0.75rem;
  margin-bottom: 0.5rem;
}
body.page-template-page-how-we-rate .how-we-rate-card__step-num {
  font-size: 1.5rem;
  font-weight: 900;
  color: var(--cherry);
  font-variant-numeric: tabular-nums;
  line-height: 1;
}
body.page-template-page-how-we-rate .how-we-rate-card__body {
  margin: 0;
  font-size: 0.875rem;
  line-height: 1.65;
  color: color-mix(in oklab, var(--foreground) 85%, transparent);
}

/* ---- Framework grid + Pillars grid + Steps grid (2-col @ md+). - */

body.page-template-page-how-we-rate .how-we-rate-framework__grid,
body.page-template-page-how-we-rate .how-we-rate-steps__grid,
body.page-template-page-how-we-rate .how-we-rate-pillars__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1.25rem;
}
@media (min-width: 768px) {
  body.page-template-page-how-we-rate .how-we-rate-framework__grid,
  body.page-template-page-how-we-rate .how-we-rate-steps__grid,
  body.page-template-page-how-we-rate .how-we-rate-pillars__grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

/* ---- 4. Bands table ----------------------------------------------- */

body.page-template-page-how-we-rate .how-we-rate-bands__wrap {
  overflow-x: auto;
  border: 2px solid var(--charcoal);
  -webkit-overflow-scrolling: touch;
}
body.page-template-page-how-we-rate .how-we-rate-bands__table {
  width: 100%;
  display: table;
  border-collapse: collapse;
  font-size: 0.875rem;
}
body.page-template-page-how-we-rate .how-we-rate-bands__table thead {
  background: var(--charcoal);
  color: var(--white);
}
body.page-template-page-how-we-rate .how-we-rate-bands__table th {
  text-align: left;
  padding: 0.75rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  font-size: 0.75rem;
}
body.page-template-page-how-we-rate .how-we-rate-bands__table tbody tr {
  background: var(--white);
}
body.page-template-page-how-we-rate .how-we-rate-bands__table tbody tr.how-we-rate-bands__row--alt {
  background: var(--cream);
}
body.page-template-page-how-we-rate .how-we-rate-bands__table td {
  padding: 0.75rem;
  vertical-align: top;
}
body.page-template-page-how-we-rate .how-we-rate-bands__band {
  font-weight: 700;
  white-space: nowrap;
}
body.page-template-page-how-we-rate .how-we-rate-bands__band img {
  width: 28px;
  height: 28px;
  display: inline-block;
  vertical-align: middle;
  margin-right: 0.375rem;
}
body.page-template-page-how-we-rate .how-we-rate-bands__range {
  font-family: var(--font-mono);
  white-space: nowrap;
}
body.page-template-page-how-we-rate .how-we-rate-bands__after {
  margin: 1.25rem 0 0;
  font-size: 0.875rem;
  line-height: 1.65;
  color: color-mix(in oklab, var(--foreground) 80%, transparent);
}

/* ---- 7. Limits — cherry left-rail bullets ----------------------- */

body.page-template-page-how-we-rate .how-we-rate-limits {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 1rem;
  color: color-mix(in oklab, var(--foreground) 85%, transparent);
  line-height: 1.65;
}
body.page-template-page-how-we-rate .how-we-rate-limits li {
  padding-left: 1.25rem;
  border-left: 2px solid var(--cherry);
}
body.page-template-page-how-we-rate .how-we-rate-limits strong {
  font-weight: 700;
  color: var(--charcoal);
}

/* ---- 8. Disclosure --------------------------------------------- */

body.page-template-page-how-we-rate .how-we-rate-disclosure {
  color: color-mix(in oklab, var(--foreground) 85%, transparent);
  line-height: 1.65;
}
body.page-template-page-how-we-rate .how-we-rate-disclosure p {
  margin: 0 0 1rem;
}
body.page-template-page-how-we-rate .how-we-rate-disclosure p:last-child {
  margin-bottom: 0;
}
body.page-template-page-how-we-rate .how-we-rate-disclosure__cta {
  font-weight: 600;
  color: var(--cherry);
  text-decoration: none;
}
body.page-template-page-how-we-rate .how-we-rate-disclosure__cta:hover {
  text-decoration: underline;
}

/* ---- 9. Footer compliance line ---------------------------------- */

body.page-template-page-how-we-rate .how-we-rate-footnote {
  padding: 0.5rem 0 3rem;
}
body.page-template-page-how-we-rate .how-we-rate-footnote p {
  margin: 0;
  text-align: center;
  font-size: 0.75rem;
  line-height: 1.65;
  color: var(--muted-foreground);
  border-top: 2px solid var(--charcoal);
  padding-top: 1.5rem;
}
body.page-template-page-how-we-rate .how-we-rate-footnote a {
  color: var(--cherry);
  text-decoration: none;
}
body.page-template-page-how-we-rate .how-we-rate-footnote a:hover {
  text-decoration: underline;
}

/* ===========================================================================
   STAGE 9.66 — /editorial-policy page (page-editorial-policy.php).
   Scoped to body.page-template-page-editorial-policy.

   PURE PROSE layout — no cards, no pillars, no sticky sub-nav, no
   accordion. Narrow 880px article column with H2/H3 typographic
   hierarchy + ordered/bulleted lists. Footer compliance line inside
   the article with a top border.

   Namespace `.editorial-policy-*` confirmed collision-free at 0.9.66
   discovery (vs Stage 61 `.how-we-rate-*` / Stage 62 `.uk-reg-section`
   / `.editorial-team-section` legacy blocks).
   =========================================================================== */

/* ---- 1. Hero ---------------------------------------------------- */

body.page-template-page-editorial-policy .editorial-policy-hero {
  max-width: 880px;
  margin: 0 auto;
  padding-inline: var(--container-padding-x);
}
@media (min-width: 768px) {
  body.page-template-page-editorial-policy .editorial-policy-hero {
    padding-inline: var(--container-padding-x-md);
  }
}
body.page-template-page-editorial-policy .editorial-policy-hero__inner {
  padding-block: 2.5rem 1.5rem;
}
body.page-template-page-editorial-policy .editorial-policy-hero .breadcrumb-wrap {
  background: transparent;
  border: 0;
  padding: 0;
  margin: 0 0 1.5rem;
}
body.page-template-page-editorial-policy .editorial-policy-hero .breadcrumb {
  color: var(--muted-foreground);
  font-size: 0.75rem;
}
body.page-template-page-editorial-policy .editorial-policy-hero .breadcrumb ol {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0;
}
body.page-template-page-editorial-policy .editorial-policy-hero .breadcrumb li {
  display: inline;
}
body.page-template-page-editorial-policy .editorial-policy-hero .breadcrumb li + li::before {
  content: "›";
  margin: 0 0.375rem;
  color: color-mix(in oklab, var(--charcoal) 40%, transparent);
}
body.page-template-page-editorial-policy .editorial-policy-hero .breadcrumb a {
  color: var(--muted-foreground);
  text-decoration: none;
}
body.page-template-page-editorial-policy .editorial-policy-hero .breadcrumb a:hover {
  color: var(--cherry);
}
body.page-template-page-editorial-policy .editorial-policy-hero .breadcrumb [aria-current="page"] {
  color: var(--charcoal);
  font-weight: 500;
}
body.page-template-page-editorial-policy .editorial-policy-hero__eyebrow {
  font-size: 0.75rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.2em;
  color: var(--cherry);
}
body.page-template-page-editorial-policy .editorial-policy-hero__title {
  margin: 0.75rem 0 0 !important;
  font-size: 32px !important;
  font-weight: 800 !important;
  letter-spacing: -0.01em !important;
  line-height: 1.05 !important;
  color: var(--charcoal) !important;
}
@media (min-width: 1024px) {
  body.page-template-page-editorial-policy .editorial-policy-hero__title {
    font-size: 48px !important;
  }
}
body.page-template-page-editorial-policy .editorial-policy-hero__lede {
  margin: 1.5rem 0 0;
  font-size: 1.0625rem;
  line-height: 1.65;
  color: color-mix(in oklab, var(--foreground) 85%, transparent);
}

/* ---- 2. Article body — narrow prose column --------------------- */

body.page-template-page-editorial-policy .editorial-policy-article {
  max-width: 880px;
  margin: 0 auto;
  padding-inline: var(--container-padding-x);
  padding-bottom: 4rem;
  color: var(--charcoal);
}
@media (min-width: 768px) {
  body.page-template-page-editorial-policy .editorial-policy-article {
    padding-inline: var(--container-padding-x-md);
  }
}

/* ---- 3. Typography (H2 with optional 36×36 icon, H3, P, lists) - */

body.page-template-page-editorial-policy .editorial-policy-h2 {
  margin: 3rem 0 1rem !important;
  font-size: 24px !important;
  font-weight: 700 !important;
  letter-spacing: -0.02em !important;
  line-height: 1.2 !important;
  color: var(--charcoal) !important;
  display: flex;
  align-items: center;
  gap: 0.75rem;
  scroll-margin-top: 1.5rem;
}
@media (min-width: 1024px) {
  body.page-template-page-editorial-policy .editorial-policy-h2 {
    font-size: 28px !important;
  }
}
body.page-template-page-editorial-policy .editorial-policy-h2__icon {
  width: 36px;
  height: 36px;
  flex-shrink: 0;
  object-fit: contain;
}
body.page-template-page-editorial-policy .editorial-policy-h3 {
  margin: 1.5rem 0 0.5rem !important;
  font-size: 18px !important;
  font-weight: 700 !important;
  letter-spacing: -0.01em !important;
  line-height: 1.2 !important;
  color: var(--charcoal) !important;
}
body.page-template-page-editorial-policy .editorial-policy-p {
  margin: 1rem 0 0;
  font-size: 15px;
  line-height: 1.7;
  color: color-mix(in oklab, var(--foreground) 85%, transparent);
}
body.page-template-page-editorial-policy .editorial-policy-p:first-child {
  margin-top: 0;
}
body.page-template-page-editorial-policy .editorial-policy-p a,
body.page-template-page-editorial-policy .editorial-policy-list a {
  color: var(--cherry);
  text-decoration: none;
}
body.page-template-page-editorial-policy .editorial-policy-p a:hover,
body.page-template-page-editorial-policy .editorial-policy-list a:hover {
  text-decoration: underline;
}
body.page-template-page-editorial-policy .editorial-policy-list {
  margin: 1rem 0 0;
  padding-left: 1.5rem;
  display: flex;
  flex-direction: column;
}
body.page-template-page-editorial-policy .editorial-policy-list--ol {
  list-style: decimal;
  gap: 0.75rem;
}
body.page-template-page-editorial-policy .editorial-policy-list--ul {
  list-style: disc;
  gap: 0.5rem;
}
body.page-template-page-editorial-policy .editorial-policy-list li {
  font-size: 15px;
  line-height: 1.7;
  color: color-mix(in oklab, var(--foreground) 85%, transparent);
}
body.page-template-page-editorial-policy .editorial-policy-list strong {
  font-weight: 700;
  color: var(--charcoal);
}

/* ---- 4. Footer compliance line (inside article, border-top) ---- */

body.page-template-page-editorial-policy .editorial-policy-footnote {
  margin-top: 4rem;
  padding-top: 2rem;
  border-top: 1px solid var(--border);
  text-align: center;
  font-size: 0.75rem;
  line-height: 1.65;
  color: var(--muted-foreground);
}
body.page-template-page-editorial-policy .editorial-policy-footnote a {
  color: var(--cherry);
  text-decoration: none;
}
body.page-template-page-editorial-policy .editorial-policy-footnote a:hover {
  text-decoration: underline;
}

/* ===========================================================================
   STAGE 9.67 — /responsible-gambling page (page-responsible-gambling.php).
   Scoped to body.page-template-page-responsible-gambling.

   Long-form editorial article — 5 H2 sections, 13 H3 subheads, mixed
   prose + OL/UL. Two visual cards: (1) National Gambling Helpline
   callout INSIDE the Expert Support section (cream-100 bg, charcoal
   2px border, oversized cherry phone number); (2) Page-bottom 18+
   compliance card. No FAQ, no byline, no icons.

   Namespace `.rg-*` confirmed collision-free at 0.9.67 discovery vs
   main.css. `.about-rg__list` uses a different prefix on the /about
   page so no leak risk.

   SAFETY: the helpline number 0808 8020 133 inside .rg-callout__phone
   was independently verified at 0.9.67 against nhs.uk's gambling
   addiction page. Do not edit the number string without re-verifying.
   =========================================================================== */

/* ---- 1. Hero ---------------------------------------------------- */

body.page-template-page-responsible-gambling .rg-hero {
  max-width: 880px;
  margin: 0 auto;
  padding-inline: var(--container-padding-x);
}
@media (min-width: 768px) {
  body.page-template-page-responsible-gambling .rg-hero {
    padding-inline: var(--container-padding-x-md);
  }
}
body.page-template-page-responsible-gambling .rg-hero__inner {
  padding-block: 2.5rem 1.5rem;
}
body.page-template-page-responsible-gambling .rg-hero .breadcrumb-wrap {
  background: transparent;
  border: 0;
  padding: 0;
  margin: 0 0 1.5rem;
}
body.page-template-page-responsible-gambling .rg-hero .breadcrumb {
  color: var(--muted-foreground);
  font-size: 0.75rem;
}
body.page-template-page-responsible-gambling .rg-hero .breadcrumb ol {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0;
}
body.page-template-page-responsible-gambling .rg-hero .breadcrumb li {
  display: inline;
}
body.page-template-page-responsible-gambling .rg-hero .breadcrumb li + li::before {
  content: "›";
  margin: 0 0.375rem;
  color: color-mix(in oklab, var(--charcoal) 40%, transparent);
}
body.page-template-page-responsible-gambling .rg-hero .breadcrumb a {
  color: var(--muted-foreground);
  text-decoration: none;
}
body.page-template-page-responsible-gambling .rg-hero .breadcrumb a:hover {
  color: var(--cherry);
}
body.page-template-page-responsible-gambling .rg-hero .breadcrumb [aria-current="page"] {
  color: var(--charcoal);
  font-weight: 500;
}
body.page-template-page-responsible-gambling .rg-hero__eyebrow {
  font-size: 0.75rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.2em;
  color: var(--cherry);
}
body.page-template-page-responsible-gambling .rg-hero__title {
  margin: 0.75rem 0 0 !important;
  font-size: 32px !important;
  font-weight: 800 !important;
  letter-spacing: -0.01em !important;
  line-height: 1.05 !important;
  color: var(--charcoal) !important;
}
@media (min-width: 1024px) {
  body.page-template-page-responsible-gambling .rg-hero__title {
    font-size: 48px !important;
  }
}
body.page-template-page-responsible-gambling .rg-hero__lede {
  margin: 1.5rem 0 0;
  font-size: 1.0625rem;
  line-height: 1.65;
  color: color-mix(in oklab, var(--foreground) 85%, transparent);
}

/* ---- 2. Article column ----------------------------------------- */

body.page-template-page-responsible-gambling .rg-article {
  max-width: 880px;
  margin: 0 auto;
  padding-inline: var(--container-padding-x);
  padding-bottom: 4rem;
  color: var(--charcoal);
}
@media (min-width: 768px) {
  body.page-template-page-responsible-gambling .rg-article {
    padding-inline: var(--container-padding-x-md);
  }
}

/* ---- 3. Typography (H2 with charcoal top border, H3, P, lists) - */

body.page-template-page-responsible-gambling .rg-h2 {
  margin: 3rem 0 1rem !important;
  padding-top: 2rem !important;
  border-top: 2px solid var(--charcoal);
  font-size: 24px !important;
  font-weight: 700 !important;
  letter-spacing: -0.02em !important;
  line-height: 1.2 !important;
  color: var(--charcoal) !important;
  scroll-margin-top: 1.5rem;
}
@media (min-width: 1024px) {
  body.page-template-page-responsible-gambling .rg-h2 {
    font-size: 28px !important;
  }
}
body.page-template-page-responsible-gambling .rg-h3 {
  margin: 1.5rem 0 0.5rem !important;
  font-size: 18px !important;
  font-weight: 700 !important;
  letter-spacing: -0.01em !important;
  line-height: 1.3 !important;
  color: var(--charcoal) !important;
}
body.page-template-page-responsible-gambling .rg-p {
  margin: 1rem 0 0;
  font-size: 15px;
  line-height: 1.7;
  color: color-mix(in oklab, var(--foreground) 85%, transparent);
}
body.page-template-page-responsible-gambling .rg-p a,
body.page-template-page-responsible-gambling .rg-list a {
  color: var(--cherry);
  text-decoration: none;
}
body.page-template-page-responsible-gambling .rg-p a:hover,
body.page-template-page-responsible-gambling .rg-list a:hover {
  text-decoration: underline;
}
body.page-template-page-responsible-gambling .rg-list {
  margin: 1rem 0 0;
  padding-left: 1.5rem;
  display: flex;
  flex-direction: column;
}
body.page-template-page-responsible-gambling .rg-list--ol {
  list-style: decimal;
  gap: 0.75rem;
}
body.page-template-page-responsible-gambling .rg-list--ul {
  list-style: disc;
  gap: 0.5rem;
}
body.page-template-page-responsible-gambling .rg-list li {
  font-size: 15px;
  line-height: 1.7;
  color: color-mix(in oklab, var(--foreground) 85%, transparent);
}
body.page-template-page-responsible-gambling .rg-list strong {
  font-weight: 700;
  color: var(--charcoal);
}

/* ---- 4. National Gambling Helpline callout (SAFETY-CRITICAL) --- */

body.page-template-page-responsible-gambling .rg-callout {
  margin: 2rem 0 0;
  padding: 1.75rem 1.5rem;
  background: var(--cream-100);
  border: 2px solid var(--charcoal);
  text-align: center;
}
body.page-template-page-responsible-gambling .rg-callout__label {
  font-size: 0.75rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.18em;
  color: var(--charcoal);
}
body.page-template-page-responsible-gambling .rg-callout__phone {
  display: inline-block;
  margin-top: 0.5rem;
  font-family: var(--font-mono);
  font-variant-numeric: tabular-nums;
  font-size: clamp(28px, 5vw, 42px);
  font-weight: 800;
  line-height: 1.1;
  color: var(--cherry);
  text-decoration: none;
  letter-spacing: -0.01em;
}
body.page-template-page-responsible-gambling .rg-callout__phone:hover {
  color: var(--cherry-dark);
  text-decoration: underline;
}
body.page-template-page-responsible-gambling .rg-callout__note {
  margin-top: 0.5rem;
  font-size: 0.8125rem;
  color: var(--muted-foreground);
}

/* ---- 5. 18+ compliance footer card ----------------------------- */

body.page-template-page-responsible-gambling .rg-compliance {
  margin: 4rem 0 0;
  padding: 1.5rem;
  background: var(--cream-100);
  border: 2px solid var(--charcoal);
}
body.page-template-page-responsible-gambling .rg-compliance__body {
  margin: 0;
  font-size: 0.8125rem;
  line-height: 1.65;
  color: var(--charcoal);
}
body.page-template-page-responsible-gambling .rg-compliance__body a {
  color: var(--cherry);
  text-decoration: none;
}
body.page-template-page-responsible-gambling .rg-compliance__body a:hover {
  text-decoration: underline;
}

/* ===========================================================================
   STAGE 9.68 — /affiliate-disclosure page (page-affiliate-disclosure.php).
   Scoped to body.page-template-page-affiliate-disclosure.

   Long-form prose article. 2 intro paragraphs + 7 H2 sections, 5 H3
   subheads, multiple OL/UL lists. Two H2s have 36x36 icons
   (Editorial Independence, Regulatory Compliance). No FAQ, no byline,
   no cards.

   Namespace `.affiliate-disclosure-*` confirmed collision-free at
   0.9.68 discovery — `.disclosure-footer` is the only existing
   `.disclosure-*` rule and uses an unrelated word-boundary suffix,
   no leak risk. NB: `.ad-*` would also be CSS-clean but routinely
   blocked by adblock filter lists, so we use the longer namespace
   for safety.
   =========================================================================== */

/* ---- 1. Hero ---------------------------------------------------- */

body.page-template-page-affiliate-disclosure .affiliate-disclosure-hero {
  max-width: 880px;
  margin: 0 auto;
  padding-inline: var(--container-padding-x);
}
@media (min-width: 768px) {
  body.page-template-page-affiliate-disclosure .affiliate-disclosure-hero {
    padding-inline: var(--container-padding-x-md);
  }
}
body.page-template-page-affiliate-disclosure .affiliate-disclosure-hero__inner {
  padding-block: 2.5rem 1.5rem;
}
body.page-template-page-affiliate-disclosure .affiliate-disclosure-hero .breadcrumb-wrap {
  background: transparent;
  border: 0;
  padding: 0;
  margin: 0 0 1.5rem;
}
body.page-template-page-affiliate-disclosure .affiliate-disclosure-hero .breadcrumb {
  color: var(--muted-foreground);
  font-size: 0.75rem;
}
body.page-template-page-affiliate-disclosure .affiliate-disclosure-hero .breadcrumb ol {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0;
}
body.page-template-page-affiliate-disclosure .affiliate-disclosure-hero .breadcrumb li {
  display: inline;
}
body.page-template-page-affiliate-disclosure .affiliate-disclosure-hero .breadcrumb li + li::before {
  content: "›";
  margin: 0 0.375rem;
  color: color-mix(in oklab, var(--charcoal) 40%, transparent);
}
body.page-template-page-affiliate-disclosure .affiliate-disclosure-hero .breadcrumb a {
  color: var(--muted-foreground);
  text-decoration: none;
}
body.page-template-page-affiliate-disclosure .affiliate-disclosure-hero .breadcrumb a:hover {
  color: var(--cherry);
}
body.page-template-page-affiliate-disclosure .affiliate-disclosure-hero .breadcrumb [aria-current="page"] {
  color: var(--charcoal);
  font-weight: 500;
}
body.page-template-page-affiliate-disclosure .affiliate-disclosure-hero__eyebrow {
  font-size: 0.75rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.2em;
  color: var(--cherry);
}
body.page-template-page-affiliate-disclosure .affiliate-disclosure-hero__title {
  margin: 0.75rem 0 0 !important;
  font-size: 32px !important;
  font-weight: 800 !important;
  letter-spacing: -0.01em !important;
  line-height: 1.05 !important;
  color: var(--charcoal) !important;
}
@media (min-width: 1024px) {
  body.page-template-page-affiliate-disclosure .affiliate-disclosure-hero__title {
    font-size: 48px !important;
  }
}
body.page-template-page-affiliate-disclosure .affiliate-disclosure-hero__lede {
  margin: 1.5rem 0 0;
  font-size: 1.0625rem;
  line-height: 1.65;
  color: color-mix(in oklab, var(--foreground) 85%, transparent);
}

/* ---- 2. Article column ----------------------------------------- */

body.page-template-page-affiliate-disclosure .affiliate-disclosure-article {
  max-width: 880px;
  margin: 0 auto;
  padding-inline: var(--container-padding-x);
  padding-bottom: 4rem;
  color: var(--charcoal);
}
@media (min-width: 768px) {
  body.page-template-page-affiliate-disclosure .affiliate-disclosure-article {
    padding-inline: var(--container-padding-x-md);
  }
}

/* ---- 3. Typography (H2 with optional 36x36 icon, H3, P, lists) - */

body.page-template-page-affiliate-disclosure .affiliate-disclosure-h2 {
  margin: 3rem 0 1rem !important;
  font-size: 24px !important;
  font-weight: 700 !important;
  letter-spacing: -0.02em !important;
  line-height: 1.2 !important;
  color: var(--charcoal) !important;
  display: flex;
  align-items: center;
  gap: 0.75rem;
  scroll-margin-top: 1.5rem;
}
@media (min-width: 1024px) {
  body.page-template-page-affiliate-disclosure .affiliate-disclosure-h2 {
    font-size: 28px !important;
  }
}
body.page-template-page-affiliate-disclosure .affiliate-disclosure-h2__icon {
  width: 36px;
  height: 36px;
  flex-shrink: 0;
  object-fit: contain;
}
body.page-template-page-affiliate-disclosure .affiliate-disclosure-h3 {
  margin: 1.5rem 0 0.5rem !important;
  font-size: 18px !important;
  font-weight: 700 !important;
  letter-spacing: -0.01em !important;
  line-height: 1.2 !important;
  color: var(--charcoal) !important;
}
body.page-template-page-affiliate-disclosure .affiliate-disclosure-p {
  margin: 1rem 0 0;
  font-size: 15px;
  line-height: 1.7;
  color: color-mix(in oklab, var(--foreground) 85%, transparent);
}
body.page-template-page-affiliate-disclosure .affiliate-disclosure-p:first-child {
  margin-top: 0;
}
body.page-template-page-affiliate-disclosure .affiliate-disclosure-p a,
body.page-template-page-affiliate-disclosure .affiliate-disclosure-list a {
  color: var(--cherry);
  text-decoration: none;
}
body.page-template-page-affiliate-disclosure .affiliate-disclosure-p a:hover,
body.page-template-page-affiliate-disclosure .affiliate-disclosure-list a:hover {
  text-decoration: underline;
}
body.page-template-page-affiliate-disclosure .affiliate-disclosure-list {
  margin: 1rem 0 0;
  padding-left: 1.5rem;
  display: flex;
  flex-direction: column;
}
body.page-template-page-affiliate-disclosure .affiliate-disclosure-list--ol {
  list-style: decimal;
  gap: 0.75rem;
}
body.page-template-page-affiliate-disclosure .affiliate-disclosure-list--ul {
  list-style: disc;
  gap: 0.5rem;
}
body.page-template-page-affiliate-disclosure .affiliate-disclosure-list li {
  font-size: 15px;
  line-height: 1.7;
  color: color-mix(in oklab, var(--foreground) 85%, transparent);
}
body.page-template-page-affiliate-disclosure .affiliate-disclosure-list strong {
  font-weight: 700;
  color: var(--charcoal);
}

/* ---- 4. Footer compliance line --------------------------------- */

body.page-template-page-affiliate-disclosure .affiliate-disclosure-footnote {
  margin-top: 4rem;
  padding-top: 2rem;
  border-top: 1px solid var(--border);
  text-align: center;
  font-size: 0.75rem;
  line-height: 1.65;
  color: var(--muted-foreground);
}
body.page-template-page-affiliate-disclosure .affiliate-disclosure-footnote a {
  color: var(--cherry);
  text-decoration: none;
}
body.page-template-page-affiliate-disclosure .affiliate-disclosure-footnote a:hover {
  text-decoration: underline;
}

/* ===========================================================================
   STAGE 9.69 — /privacy, /terms, /contact pages (3 templates).
   Scoped via COMMA-JOINED body class selectors so the shared prose
   chrome stays DRY without leaking to any other page:
     body.page-template-page-privacy,
     body.page-template-page-terms,
     body.page-template-page-contact.

   Shared `.legal-*` class namespace — confirmed collision-free at
   0.9.69 discovery (.legal-/.privacy-/.terms-/.contact-/.pp-/.tos-
   all reported 0 matches against existing main.css).

   Layout: hero (breadcrumb + eyebrow + H1 + last-updated stamp + lede)
   + 880px article column + numbered H2 sections + footer compliance
   line. /privacy/ adds a 2-column legal-basis table inside section 4.
   No icons, no FAQ accordion, no byline, no cards.
   =========================================================================== */

/* ---- 1. Hero ---------------------------------------------------- */

body.page-template-page-privacy .legal-hero,
body.page-template-page-terms .legal-hero,
body.page-template-page-contact .legal-hero,
body.page-template-page-cookies .legal-hero {
  max-width: 880px;
  margin: 0 auto;
  padding-inline: var(--container-padding-x);
}
@media (min-width: 768px) {
  body.page-template-page-privacy .legal-hero,
  body.page-template-page-terms .legal-hero,
  body.page-template-page-contact .legal-hero,
  body.page-template-page-cookies .legal-hero {
    padding-inline: var(--container-padding-x-md);
  }
}
body.page-template-page-privacy .legal-hero__inner,
body.page-template-page-terms .legal-hero__inner,
body.page-template-page-contact .legal-hero__inner,
body.page-template-page-cookies .legal-hero__inner {
  padding-block: 2.5rem 1.5rem;
}
body.page-template-page-privacy .legal-hero .breadcrumb-wrap,
body.page-template-page-terms .legal-hero .breadcrumb-wrap,
body.page-template-page-contact .legal-hero .breadcrumb-wrap,
body.page-template-page-cookies .legal-hero .breadcrumb-wrap {
  background: transparent;
  border: 0;
  padding: 0;
  margin: 0 0 1.5rem;
}
body.page-template-page-privacy .legal-hero .breadcrumb,
body.page-template-page-terms .legal-hero .breadcrumb,
body.page-template-page-contact .legal-hero .breadcrumb,
body.page-template-page-cookies .legal-hero .breadcrumb {
  color: var(--muted-foreground);
  font-size: 0.75rem;
}
body.page-template-page-privacy .legal-hero .breadcrumb ol,
body.page-template-page-terms .legal-hero .breadcrumb ol,
body.page-template-page-contact .legal-hero .breadcrumb ol,
body.page-template-page-cookies .legal-hero .breadcrumb ol {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0;
}
body.page-template-page-privacy .legal-hero .breadcrumb li,
body.page-template-page-terms .legal-hero .breadcrumb li,
body.page-template-page-contact .legal-hero .breadcrumb li,
body.page-template-page-cookies .legal-hero .breadcrumb li {
  display: inline;
}
body.page-template-page-privacy .legal-hero .breadcrumb li + li::before,
body.page-template-page-terms .legal-hero .breadcrumb li + li::before,
body.page-template-page-contact .legal-hero .breadcrumb li + li::before,
body.page-template-page-cookies .legal-hero .breadcrumb li + li::before {
  content: "›";
  margin: 0 0.375rem;
  color: color-mix(in oklab, var(--charcoal) 40%, transparent);
}
body.page-template-page-privacy .legal-hero .breadcrumb a,
body.page-template-page-terms .legal-hero .breadcrumb a,
body.page-template-page-contact .legal-hero .breadcrumb a,
body.page-template-page-cookies .legal-hero .breadcrumb a {
  color: var(--muted-foreground);
  text-decoration: none;
}
body.page-template-page-privacy .legal-hero .breadcrumb a:hover,
body.page-template-page-terms .legal-hero .breadcrumb a:hover,
body.page-template-page-contact .legal-hero .breadcrumb a:hover,
body.page-template-page-cookies .legal-hero .breadcrumb a:hover {
  color: var(--cherry);
}
body.page-template-page-privacy .legal-hero .breadcrumb [aria-current="page"],
body.page-template-page-terms .legal-hero .breadcrumb [aria-current="page"],
body.page-template-page-contact .legal-hero .breadcrumb [aria-current="page"],
body.page-template-page-cookies .legal-hero .breadcrumb [aria-current="page"] {
  color: var(--charcoal);
  font-weight: 500;
}
body.page-template-page-privacy .legal-hero__eyebrow,
body.page-template-page-terms .legal-hero__eyebrow,
body.page-template-page-contact .legal-hero__eyebrow,
body.page-template-page-cookies .legal-hero__eyebrow {
  font-size: 0.75rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.2em;
  color: var(--cherry);
}
body.page-template-page-privacy .legal-hero__title,
body.page-template-page-terms .legal-hero__title,
body.page-template-page-contact .legal-hero__title,
body.page-template-page-cookies .legal-hero__title {
  margin: 0.75rem 0 0 !important;
  font-size: 32px !important;
  font-weight: 800 !important;
  letter-spacing: -0.01em !important;
  line-height: 1.05 !important;
  color: var(--charcoal) !important;
}
@media (min-width: 1024px) {
  body.page-template-page-privacy .legal-hero__title,
  body.page-template-page-terms .legal-hero__title,
  body.page-template-page-contact .legal-hero__title,
  body.page-template-page-cookies .legal-hero__title {
    font-size: 48px !important;
  }
}
body.page-template-page-privacy .legal-hero__updated,
body.page-template-page-terms .legal-hero__updated,
body.page-template-page-contact .legal-hero__updated,
body.page-template-page-cookies .legal-hero__updated {
  margin: 0.75rem 0 0;
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--muted-foreground);
}
body.page-template-page-privacy .legal-hero__lede,
body.page-template-page-terms .legal-hero__lede,
body.page-template-page-contact .legal-hero__lede,
body.page-template-page-cookies .legal-hero__lede {
  margin: 1rem 0 0;
  font-size: 1.0625rem;
  line-height: 1.65;
  color: color-mix(in oklab, var(--foreground) 85%, transparent);
}

/* ---- 2. Article column ----------------------------------------- */

body.page-template-page-privacy .legal-article,
body.page-template-page-terms .legal-article,
body.page-template-page-contact .legal-article,
body.page-template-page-cookies .legal-article {
  max-width: 880px;
  margin: 0 auto;
  padding-inline: var(--container-padding-x);
  padding-bottom: 4rem;
  color: var(--charcoal);
}
@media (min-width: 768px) {
  body.page-template-page-privacy .legal-article,
  body.page-template-page-terms .legal-article,
  body.page-template-page-contact .legal-article,
  body.page-template-page-cookies .legal-article {
    padding-inline: var(--container-padding-x-md);
  }
}

/* ---- 3. Typography --------------------------------------------- */

body.page-template-page-privacy .legal-h2,
body.page-template-page-terms .legal-h2,
body.page-template-page-contact .legal-h2,
body.page-template-page-cookies .legal-h2 {
  margin: 3rem 0 1rem !important;
  font-size: 24px !important;
  font-weight: 700 !important;
  letter-spacing: -0.02em !important;
  line-height: 1.2 !important;
  color: var(--charcoal) !important;
  scroll-margin-top: 1.5rem;
}
@media (min-width: 1024px) {
  body.page-template-page-privacy .legal-h2,
  body.page-template-page-terms .legal-h2,
  body.page-template-page-contact .legal-h2,
  body.page-template-page-cookies .legal-h2 {
    font-size: 28px !important;
  }
}
body.page-template-page-privacy .legal-p,
body.page-template-page-terms .legal-p,
body.page-template-page-contact .legal-p,
body.page-template-page-cookies .legal-p {
  margin: 1rem 0 0;
  font-size: 15px;
  line-height: 1.7;
  color: color-mix(in oklab, var(--foreground) 85%, transparent);
}
body.page-template-page-privacy .legal-p:first-child,
body.page-template-page-terms .legal-p:first-child,
body.page-template-page-contact .legal-p:first-child,
body.page-template-page-cookies .legal-p:first-child {
  margin-top: 0;
}
body.page-template-page-privacy .legal-p a,
body.page-template-page-terms .legal-p a,
body.page-template-page-contact .legal-p a,
body.page-template-page-cookies .legal-p a,
body.page-template-page-privacy .legal-list a,
body.page-template-page-terms .legal-list a,
body.page-template-page-contact .legal-list a,
body.page-template-page-cookies .legal-list a {
  color: var(--cherry);
  text-decoration: none;
}
body.page-template-page-privacy .legal-p a:hover,
body.page-template-page-terms .legal-p a:hover,
body.page-template-page-contact .legal-p a:hover,
body.page-template-page-cookies .legal-p a:hover,
body.page-template-page-privacy .legal-list a:hover,
body.page-template-page-terms .legal-list a:hover,
body.page-template-page-contact .legal-list a:hover,
body.page-template-page-cookies .legal-list a:hover {
  text-decoration: underline;
}
body.page-template-page-privacy .legal-list,
body.page-template-page-terms .legal-list,
body.page-template-page-contact .legal-list,
body.page-template-page-cookies .legal-list {
  margin: 1rem 0 0;
  padding-left: 1.5rem;
  display: flex;
  flex-direction: column;
}
body.page-template-page-privacy .legal-list--ol,
body.page-template-page-terms .legal-list--ol,
body.page-template-page-contact .legal-list--ol,
body.page-template-page-cookies .legal-list--ol {
  list-style: decimal;
  gap: 0.75rem;
}
body.page-template-page-privacy .legal-list--ul,
body.page-template-page-terms .legal-list--ul,
body.page-template-page-contact .legal-list--ul,
body.page-template-page-cookies .legal-list--ul {
  list-style: disc;
  gap: 0.5rem;
}
body.page-template-page-privacy .legal-list li,
body.page-template-page-terms .legal-list li,
body.page-template-page-contact .legal-list li,
body.page-template-page-cookies .legal-list li {
  font-size: 15px;
  line-height: 1.7;
  color: color-mix(in oklab, var(--foreground) 85%, transparent);
}
body.page-template-page-privacy .legal-list strong,
body.page-template-page-terms .legal-list strong,
body.page-template-page-contact .legal-list strong,
body.page-template-page-cookies .legal-list strong,
body.page-template-page-privacy .legal-p strong,
body.page-template-page-terms .legal-p strong,
body.page-template-page-contact .legal-p strong,
body.page-template-page-cookies .legal-p strong {
  font-weight: 700;
  color: var(--charcoal);
}

/* ---- 4. Privacy legal-basis table ------------------------------ */
/* Override the global `table { display: block }` so the legal-basis
   table actually renders as a 2-column table on /privacy/. */

body.page-template-page-privacy .legal-table-wrap {
  margin: 1.5rem 0 0;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}
body.page-template-page-privacy .legal-table {
  display: table !important;
  width: 100%;
  border-collapse: collapse;
  font-size: 14px;
  line-height: 1.6;
}
body.page-template-page-privacy .legal-table th,
body.page-template-page-privacy .legal-table td {
  padding: 0.75rem 1rem;
  text-align: left;
  vertical-align: top;
  border-bottom: 1px solid var(--border);
  color: color-mix(in oklab, var(--foreground) 85%, transparent);
}
body.page-template-page-privacy .legal-table th {
  background: var(--cream-100);
  font-weight: 700;
  color: var(--charcoal);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  font-size: 12px;
}

/* ---- 5. Footer compliance line --------------------------------- */

body.page-template-page-privacy .legal-footnote,
body.page-template-page-terms .legal-footnote,
body.page-template-page-contact .legal-footnote,
body.page-template-page-cookies .legal-footnote {
  margin-top: 4rem;
  padding-top: 2rem;
  border-top: 1px solid var(--border);
  text-align: center;
  font-size: 0.75rem;
  line-height: 1.65;
  color: var(--muted-foreground);
}
body.page-template-page-privacy .legal-footnote a,
body.page-template-page-terms .legal-footnote a,
body.page-template-page-contact .legal-footnote a,
body.page-template-page-cookies .legal-footnote a {
  color: var(--cherry);
  text-decoration: none;
}
body.page-template-page-privacy .legal-footnote a:hover,
body.page-template-page-terms .legal-footnote a:hover,
body.page-template-page-contact .legal-footnote a:hover,
body.page-template-page-cookies .legal-footnote a:hover {
  text-decoration: underline;
}

/* ===========================================================================
   STAGE 9.70 — /cookies page-specific card grid.
   Scoped ONLY to body.page-template-page-cookies. Privacy/terms/contact
   do not use .legal-card* classes.

   Lov renders #types as a responsive 2-column grid of 4 CookieCard
   components (not a real HTML table). Each card has a title + optional
   badge, description, and bullet list. Category 1 (Strictly Necessary)
   carries the `--active` accent (cherry border + cream-100 bg).

   The Stage 9.69 shared `.legal-*` chrome (hero/article/h2/h3/p/list/
   footnote) was extended earlier in this stage to include the cookies
   body class via comma-joined scope — 35 of 35 contact selectors paired
   with a matching cookies selector.
   =========================================================================== */

body.page-template-page-cookies .legal-cards {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1rem;
  margin: 1.5rem 0 0;
}
@media (min-width: 768px) {
  body.page-template-page-cookies .legal-cards {
    grid-template-columns: 1fr 1fr;
    gap: 1.25rem;
  }
}

body.page-template-page-cookies .legal-card {
  display: flex;
  flex-direction: column;
  padding: 1.25rem 1.25rem 1.5rem;
  background: var(--white);
  border: 1px solid var(--border);
}
body.page-template-page-cookies .legal-card--active {
  background: var(--cream-100);
  border-color: var(--cherry);
  border-width: 2px;
}

body.page-template-page-cookies .legal-card__title {
  margin: 0 0 0.5rem !important;
  font-size: 16px !important;
  font-weight: 700 !important;
  letter-spacing: -0.01em !important;
  line-height: 1.3 !important;
  color: var(--charcoal) !important;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.5rem;
}
body.page-template-page-cookies .legal-card__title-text {
  flex: 1 1 auto;
}
body.page-template-page-cookies .legal-card__badge {
  display: inline-block;
  padding: 0.25rem 0.5rem;
  background: var(--cherry);
  color: var(--white);
  font-size: 10px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  line-height: 1;
  white-space: nowrap;
}
body.page-template-page-cookies .legal-card__badge--muted {
  background: color-mix(in oklab, var(--charcoal) 10%, transparent);
  color: var(--muted-foreground);
}

body.page-template-page-cookies .legal-card__desc {
  margin: 0.25rem 0 0;
  font-size: 14px;
  line-height: 1.65;
  color: color-mix(in oklab, var(--foreground) 85%, transparent);
}
body.page-template-page-cookies .legal-card__desc a {
  color: var(--cherry);
  text-decoration: none;
}
body.page-template-page-cookies .legal-card__desc a:hover {
  text-decoration: underline;
}

body.page-template-page-cookies .legal-card__list {
  margin: 0.75rem 0 0;
  padding-left: 1.25rem;
  list-style: disc;
  display: flex;
  flex-direction: column;
  gap: 0.375rem;
}
body.page-template-page-cookies .legal-card__list li {
  font-size: 13px;
  line-height: 1.55;
  color: color-mix(in oklab, var(--foreground) 80%, transparent);
}


/* ---------------------------------------------------------------------------
   58b. Featured-month placeholder — non-clickable filler card
   Keeps the 4-up grid full when fewer than 4 featured slot posts exist.
--------------------------------------------------------------------------- */
.featured-month-card--placeholder .slot-card { cursor: default; }
.slot-card--placeholder {
  opacity: 0.55;
  pointer-events: none;
}
.slot-card--placeholder .slot-card__title--placeholder {
  color: color-mix(in oklab, var(--charcoal) 55%, transparent);
  font-style: italic;
  font-weight: 600;
}
.slot-card--placeholder .slot-card__provider--placeholder { min-height: 1.2em; }


/* ---------------------------------------------------------------------------
   90. Hub pages (taxonomy-slot_category.php) — unified landing for every
   slot_category term (virtual / container / leaf). Replaces the per-page
   styles that lived in 7 separate page templates.
--------------------------------------------------------------------------- */

.hub-page { background: var(--cream); color: var(--charcoal); }

.hub-hero {
  border-bottom: 2px solid var(--charcoal);
  padding: 0;
}
.hub-hero__inner {
  max-width: 1280px;
  margin-inline: auto;
  padding: 3.5rem 1rem;
  display: grid;
  grid-template-columns: 1fr;
  gap: 2.5rem;
  align-items: center;
}
@media (min-width: 1024px) {
  .hub-hero__inner {
    grid-template-columns: 1.3fr 1fr;
    gap: 3.5rem;
    padding: 5rem 2rem;
  }
}
.hub-hero__eyebrow {
  display: inline-block;
  padding: 0.25rem 0.625rem;
  background: var(--felt);
  color: var(--cream);
  font-size: 0.7rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  margin-bottom: 1rem;
}
.hub-hero__title {
  margin: 0 0 1rem;
  font-size: clamp(32px, 5.5vw, 56px);
  font-weight: 900;
  line-height: 1.05;
  letter-spacing: -0.02em;
}
.hub-hero__lede {
  margin: 0;
  max-width: 60ch;
  font-size: 1.0625rem;
  line-height: 1.6;
  color: color-mix(in oklab, var(--charcoal) 80%, transparent);
}
.hub-hero__promo .slot-card { max-width: 380px; margin-inline: auto; }

.hub-grid { background: var(--cream); }
.hub-grid__inner {
  max-width: 1280px;
  margin-inline: auto;
  padding: 3rem 1rem;
}
@media (min-width: 1024px) { .hub-grid__inner { padding: 4rem 2rem; } }
.hub-grid__meta {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 1.5rem;
  font-size: 0.875rem;
  font-weight: 600;
  color: color-mix(in oklab, var(--charcoal) 70%, transparent);
  text-transform: uppercase;
  letter-spacing: 0.06em;
}
.hub-grid__cards {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1.5rem;
  align-items: stretch;
}
@media (min-width: 640px)  { .hub-grid__cards { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 900px)  { .hub-grid__cards { grid-template-columns: repeat(3, 1fr); } }
@media (min-width: 1200px) { .hub-grid__cards { grid-template-columns: repeat(4, 1fr); } }
.hub-grid__cards .slot-card { height: 100%; display: flex; flex-direction: column; }
.hub-grid__cards .slot-card .slot-card__body { flex: 1 1 auto; display: flex; flex-direction: column; }
.hub-grid__cards .slot-card .slot-card__stats { margin-top: auto; }

.hub-grid__empty {
  padding: 3rem 1rem;
  text-align: center;
  border: 2px dashed color-mix(in oklab, var(--charcoal) 30%, transparent);
  background: var(--cream-100);
  color: color-mix(in oklab, var(--charcoal) 70%, transparent);
}

.hub-term-card {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  padding: 1.25rem 1.25rem;
  background: var(--cream);
  border: 2px solid var(--charcoal);
  text-decoration: none;
  color: var(--charcoal);
  transition: transform 0.12s ease;
  min-height: 96px;
}
.hub-term-card:hover { transform: translate(-2px, -2px); box-shadow: 4px 4px 0 var(--charcoal); }
.hub-term-card__name { font-size: 1.0625rem; font-weight: 800; }
.hub-term-card__count {
  margin-top: 0.5rem;
  font-size: 0.75rem;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: color-mix(in oklab, var(--charcoal) 60%, transparent);
}

.hub-pagination {
  margin-top: 2.5rem;
  display: flex;
  justify-content: center;
  gap: 0.375rem;
  flex-wrap: wrap;
}
.hub-pagination .page-numbers {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 40px;
  height: 40px;
  padding: 0 0.75rem;
  border: 2px solid var(--charcoal);
  background: var(--cream);
  color: var(--charcoal);
  font-weight: 700;
  text-decoration: none;
}
.hub-pagination .page-numbers.current { background: var(--charcoal); color: var(--cream); }
.hub-pagination a.page-numbers:hover { background: var(--cream-100); }

.hub-body { background: var(--cream-100); border-top: 2px solid var(--charcoal); }
.hub-body__inner {
  max-width: 760px;
  margin-inline: auto;
  padding: 3rem 1rem;
  font-size: 1.0625rem;
  line-height: 1.7;
}
.hub-body__inner h2 { font-size: 1.75rem; font-weight: 900; margin: 2rem 0 0.75rem; }
.hub-body__inner h3 { font-size: 1.25rem; font-weight: 800; margin: 1.5rem 0 0.5rem; }
.hub-body__inner p { margin: 0 0 1rem; }
.hub-body__inner a { color: var(--cherry); text-decoration: underline; }

.hub-faq {
  background: var(--cream);
}
.hub-faq__inner {
  max-width: 760px;
  margin-inline: auto;
  padding: 3rem 1rem 4rem;
}
.hub-faq__title {
  font-size: clamp(24px, 3vw, 32px);
  font-weight: 900;
  margin: 0 0 1.5rem;
}
.hub-faq__list { display: flex; flex-direction: column; gap: 0.75rem; }
.hub-faq__item {
  border: 2px solid var(--charcoal);
  background: var(--cream);
}
.hub-faq__q {
  cursor: pointer;
  padding: 1rem 1.25rem;
  font-weight: 700;
  list-style: none;
}
.hub-faq__q::-webkit-details-marker { display: none; }
.hub-faq__q::after {
  content: '+';
  float: right;
  font-weight: 900;
  font-size: 1.25rem;
  line-height: 1;
}
.hub-faq__item[open] .hub-faq__q::after { content: '−'; }
.hub-faq__a {
  padding: 0 1.25rem 1.25rem;
  font-size: 1rem;
  line-height: 1.6;
  color: color-mix(in oklab, var(--charcoal) 80%, transparent);
}
.hub-faq__a p { margin: 0 0 0.75rem; }


/* ---------------------------------------------------------------------------
   90b. Hub hero text-colour variants + image term cards (Phase 4A).
   Carries the per-template light/dark palettes from the legacy
   page-*.php scopes onto the unified template via ACF hero_text_color.
--------------------------------------------------------------------------- */

.hub-hero--text-cream .hub-hero__eyebrow { background: var(--cream); color: var(--charcoal); }
.hub-hero--text-cream .hub-hero__lede    { color: color-mix(in oklab, var(--cream) 85%, transparent); }

.hub-hero--text-charcoal .hub-hero__eyebrow { background: var(--charcoal); color: var(--cream); }
.hub-hero--text-charcoal .hub-hero__lede    { color: color-mix(in oklab, var(--charcoal) 80%, transparent); }

.hub-term-card--with-image {
  position: relative;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  min-height: 180px;
  padding: 0;
  overflow: hidden;
  border: 2px solid var(--charcoal);
  text-decoration: none;
  color: var(--cream);
  background: var(--charcoal);
}
.hub-term-card--with-image .hub-term-card__media {
  position: absolute;
  inset: 0;
  background-size: cover;
  background-position: center;
  z-index: 0;
}
.hub-term-card--with-image .hub-term-card__media::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(to top,
    color-mix(in oklab, var(--charcoal) 88%, transparent) 0%,
    color-mix(in oklab, var(--charcoal) 40%, transparent) 50%,
    transparent 100%);
}
.hub-term-card--with-image .hub-term-card__body {
  position: relative;
  z-index: 1;
  padding: 1rem 1.25rem 1.125rem;
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
}
.hub-term-card--with-image .hub-term-card__name {
  font-size: 1.375rem;
  font-weight: 900;
  letter-spacing: -0.01em;
  color: var(--cream);
}
.hub-term-card--with-image .hub-term-card__count {
  color: color-mix(in oklab, var(--cream) 75%, transparent);
}
.hub-term-card--with-image:hover { transform: translate(-2px, -2px); box-shadow: 4px 4px 0 var(--charcoal); }

@media (min-width: 900px) {
  .hub-term-card--with-image { min-height: 220px; }
}
