/*
Theme Name:  EVERSPACE 2
Theme URI:   https://everspace-game.com
Author:      ROCKFISH Games
Author URI:  https://rockfishgames.com
Description: Official standalone WordPress theme for EVERSPACE 2. Covers homepage, blog, and all inner pages. Classic editor compatible. All content managed via Customizer.
Version:     1.6.6
Requires at least: 5.8
Tested up to: 6.5
Requires PHP: 7.4
License:     Proprietary — All Rights Reserved
Text Domain: es2
*/

/*
 * =============================================================================
 * EVERSPACE 2 — style.css
 * =============================================================================
 *
 * This is the main stylesheet for the EVERSPACE 2 WordPress theme.
 * It covers every visual aspect of the site — layout, typography, colours,
 * animations, and responsive behaviour.
 *
 * HOW THIS FILE IS ORGANISED:
 * Sections follow the page top-to-bottom, then inner pages, then utilities.
 *
 *   CSS VARIABLES         — global design tokens (colours, fonts, spacing)
 *   RESET & BASE          — browser reset, typography defaults, accessibility
 *   LAYOUT UTILITIES      — .container, section titles, section dividers
 *   BUTTONS               — .btn-primary, .btn-outline, .btn-arrow
 *   HEADER & NAVIGATION   — sticky header, desktop nav, mobile drawer
 *   HERO                  — full-screen homepage hero with video/image bg
 *   LATEST NEWS           — news card grid on homepage
 *   ABOUT THE GAME        — features, main cards, DLC sub-section
 *   MEDIA                 — screenshot carousel + video thumbnails
 *   BUY THE GAME          — tabbed store section with edition cards
 *   COMMUNITY             — platform cards grid
 *   FOOTER                — social icons, store row, badges, legal bar
 *   UTILITIES             — image placeholder, back-to-top, scroll reveal
 *   PAGE CONTENT          — generic WordPress pages (Privacy, Legal, etc.)
 *   404 PAGE              — error page layout
 *   RESPONSIVE — TABLET   — @media max-width: 1024px
 *   RESPONSIVE — MOBILE   — @media max-width: 768px
 *   [inner pages follow inside the responsive sections]
 *
 * DESIGN SYSTEM QUICK REFERENCE:
 *   Primary accent:  #C8922A  (gold)
 *   Backgrounds:     #09090d → #0d0e11 → #111318 → #17191f  (deep → card)
 *   Fonts:           Josefin Sans ES (display) / Lato (body)
 *   Container:       1200px max-width, 40px horizontal padding
 *   Header height:   80px (used for scroll-padding-top and offset calculations)
 *
 * IMPORTANT — DO NOT USE transition: all:
 * All transitions must list specific properties (e.g. color, background).
 * Using "transition: all" causes performance issues and animation conflicts.
 *
 * IMPORTANT — NO JAVASCRIPT HASH CORRECTION:
 * Anchor link offsets are handled entirely by scroll-padding-top on <html>.
 * Do not add JS that modifies window.location.hash on scroll — it causes
 * blank page issues on browser back navigation.
 *
 * =============================================================================
 */

/* ============================================================
   CSS VARIABLES
   ============================================================
   All global design tokens live here. Changing a value here
   affects every element that uses it across the entire site.

   HOW TO USE:
   - In CSS rules, reference with: var(--variable-name)
   - Example: color: var(--color-gold);

   RGB COMPANION VARIABLES:
   Some colours have a matching -rgb variable containing just
   the red, green, blue numbers (no rgba() wrapper). This allows
   building rgba() values with custom opacity anywhere:
     rgba(var(--color-gold-rgb), 0.3)
   Do not add opacity to the -rgb variables themselves.
   ============================================================ */
:root {
    /* ── Fonts ───────────────────────────────────────────────
       Josefin Sans ES is the proprietary display font used in
       the game's own UI. Place font files in /assets/fonts/ and
       they load automatically (see functions.php section 2).
       Falls back to Google Fonts Josefin Sans until then.
       Lato is the body copy font — loaded from Google Fonts. */
    --font-display: 'Josefin Sans ES', 'Josefin Sans', 'Arial Narrow', sans-serif;
    --font-body:    'Lato', sans-serif;

    /* ── Brand colours ───────────────────────────────────────
       Gold is the primary accent — used for headings, borders,
       CTAs, and all interactive highlights. */
    --color-gold:            #C8922A;      /* Primary accent — premium amber gold */
    --color-gold-rgb:        200,146,42;   /* RGB channels — for rgba() usage only */
    --color-gold-light:      #E0A83A;      /* Hover / lighter gold states */
    --color-gold-dim:        #7a540f;      /* Subtle gold borders and lines */
    --color-gold-glow:       rgba(var(--color-gold-rgb),0.10);  /* Hover bg tint */
    --color-gold-glow-bright:rgba(var(--color-gold-rgb),0.20);  /* Stronger hover tint */

    /* Purple is used as a subtle atmospheric colour in radial
       gradients layered over section backgrounds. */
    --color-purple-deep:     #171145;      /* Deep navy-purple */
    --color-purple-deep-rgb: 23,17,69;     /* RGB channels — for rgba() gradient usage */
    --color-purple-mid:      #1e1660;      /* Mid purple for accents */

    /* ── Background depth system ─────────────────────────────
       The site uses four background levels to create depth.
       Each level is slightly lighter than the one below it.
       Sections alternate between bg-section and bg-alt.
       Cards/panels sit on top using bg-card.

       deep → section → alt → card  (darkest to lightest) */
    --color-bg-deep:         #09090d;      /* Deepest — body background, near black */
    --color-bg-deep-rgb:     9,9,13;       /* RGB channels — for rgba() overlay usage */
    --color-bg-section:      #0d0e11;      /* Standard section background */
    --color-bg-alt:          #111318;      /* Alternating section background */
    --color-bg-card:         #17191f;      /* Cards, panels, elevated surfaces */
    --color-bg-overlay:      rgba(0,0,0,0.78); /* Dark overlay on bg images */

    /* ── Text ────────────────────────────────────────────────*/
    --color-text-primary:    #F9F9F9;      /* Main body text */
    --color-text-muted:      #888b9a;      /* Secondary / caption text */
    --color-text-white:      #ffffff;      /* Headings and high-contrast text */

    /* ── Borders ─────────────────────────────────────────────
       Gold borders at two opacity levels. The subtle one (0.18)
       is used for card borders and dividers. The bright one (0.45)
       is used for interactive hover states. */
    --color-border:          rgba(var(--color-gold-rgb),0.18);
    --color-border-bright:   rgba(var(--color-gold-rgb),0.45);

    /* ── Spacing & layout ────────────────────────────────────
       --header-height is used in multiple places:
       - scroll-padding-top on <html> (anchor link offset)
       - padding-top on inner page wrappers
       - position calculations for fixed elements
       Change it here and all those places update automatically. */
    --section-padding:       100px 0;
    --container-width:       1200px;
    --container-padding:     0 40px;
    --header-height:         80px;

    /* ── Transitions ─────────────────────────────────────────
       Use these on hover states. Always list specific properties,
       never "transition: all" — it causes performance issues. */
    --transition-fast:       0.2s ease;    /* Hover colour/opacity changes */
    --transition-med:        0.4s ease;    /* Nav overlays, panel slides */

    /* ── Shorthand aliases ───────────────────────────────────
       Some inner page templates and the archive page use these
       shorter names. They point to the same values above. */
    --bg-deep:    var(--color-bg-deep);
    --bg-section: var(--color-bg-section);
    --bg-alt:     var(--color-bg-alt);
    --bg-card:    var(--color-bg-card);
}

/* ============================================================
   RESET & BASE
   ============================================================
   Normalises browser defaults and sets global typography.

   KEY DECISIONS:
   - box-sizing: border-box on everything — padding and borders
     are included in an element's total width/height. This makes
     layout maths predictable.
   - scroll-padding-top matches --header-height so anchor links
     (e.g. #section-hero) scroll to the correct position below
     the fixed header. This replaces any JS hash correction.
   - overflow-x: hidden on both html and body prevents horizontal
     scroll from absolutely-positioned elements near the edge.
   - -webkit-font-smoothing: antialiased makes text look crisper
     on macOS/iOS (renders thinner, more print-like strokes).
   ============================================================ */
*, *::before, *::after {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
    max-width: 100%;
}

/* ── Accessibility ───────────────────────────────────────────
   .screen-reader-text — visually hidden but readable by screen
   readers. Used for labels, button descriptions, and other text
   that sighted users don't need to see.

   .skip-link — hidden until keyboard-focused. Lets keyboard and
   screen reader users jump straight to the main content without
   tabbing through the entire navigation on every page load.
   It slides in from above when focused (transform animation).

   focus-visible — shows a gold outline on keyboard focus but
   NOT on mouse click (unlike :focus which shows on both).
   Some interactive elements use box-shadow instead of outline
   for a softer look that fits the brand style. */
.screen-reader-text {
    position: absolute;
    width: 1px; height: 1px;
    padding: 0; margin: -1px;
    overflow: hidden;
    clip: rect(0,0,0,0);
    white-space: nowrap;
    border: 0;
}
.skip-link {
    position: fixed;
    top: 1rem; left: 1rem;
    z-index: 2000;
    padding: 0.9rem 1.2rem;
    background: rgba(13,14,26,0.98);
    border: 1px solid var(--color-border-bright);
    color: var(--color-text-white);
    text-decoration: none;
    transform: translateY(-150%); /* Hidden above viewport by default */
    transition: transform var(--transition-fast);
}
.skip-link:focus-visible { transform: translateY(0); } /* Slides into view on focus */
a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
[tabindex]:focus-visible {
    outline: 2px solid var(--color-gold-light);
    outline-offset: 3px;
}
/* These elements use box-shadow instead — outline would look wrong
   on the gold button, hamburger icon, and nav links */
.btn:focus-visible,
.btn-buy-nav:focus-visible,
#menu-toggle:focus-visible,
#main-nav a:focus-visible,
#mobile-nav a:focus-visible,
.footer-social-icon:focus-visible,
.hero-pause-btn:focus-visible,
.dlc-lightbox button:focus-visible {
    outline: none;
    box-shadow: 0 0 0 3px rgba(var(--color-gold-rgb),0.22);
}

html {
    scroll-behavior: smooth;
    scroll-padding-top: var(--header-height); /* Offset anchor links below fixed header */
    font-size: 16px;
    overflow-x: hidden;
}

body {
    font-family: var(--font-body);
    background-color: var(--color-bg-deep);
    color: var(--color-text-primary);
    line-height: 1.7;
    overflow-x: hidden;
    max-width: 100vw;
    -webkit-font-smoothing: antialiased; /* Crisper text on macOS/iOS */
}

a {
    color: var(--color-gold);
    text-decoration: none;
    transition: color var(--transition-fast);
}
a:hover { color: var(--color-gold-light); }

img {
    max-width: 100%;
    height: auto;
    display: block;
}

ul { list-style: none; }

h1, h2, h3, h4, h5, h6 {
    font-family: var(--font-display);
    color: var(--color-text-white);
    line-height: 1.1;
    letter-spacing: 0.2em;
    text-transform: uppercase;
}

p { margin-bottom: 1.2em; }
p:last-child { margin-bottom: 0; }

/* ============================================================
   LAYOUT UTILITIES
   ============================================================
   Reusable classes shared across all page sections.

   .container     — centres content and caps width at 1200px
   .section-title — the main heading inside each section
   .section-subtitle — smaller muted eyebrow text
   .section-header — wrapper that groups title + subtitle + divider
   .section-divider — the animated twin-line + diamond separator
   .btn-arrow     — text link with animated underline and arrow
   ============================================================ */
.container {
    max-width: var(--container-width);
    margin: 0 auto;
    padding: var(--container-padding);
}

.section-title {
    font-size: clamp(1.8rem, 3vw, 2.6rem); /* Scales between viewport sizes */
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.2em;
    margin-bottom: 0.4em;
    color: var(--color-text-white);
    line-height: 1;
    text-align: center;
}

.section-subtitle {
    font-size: 0.85rem;
    color: var(--color-text-muted);
    letter-spacing: 0.18em;
    text-transform: uppercase;
    margin-top: 1.5rem;
    margin-bottom: 2.5rem;
    font-family: var(--font-display);
    font-weight: 400;
    text-align: center;
}

/* Small label above the section heading -- e.g. "From ROCKFISH Games".
   Sits inside .section-header, above .section-title. */
.section-eyebrow {
    font-size: 0.7rem;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: var(--color-gold);
    margin: 0 0 1.1rem;
    display: block;
}

.section-header {
    margin-bottom: 3.5rem;
    text-align: center;
}

/* ── Section Divider ─────────────────────────────────────────
   A decorative separator used between section headers and content.
   Consists of two fading lines (via ::before and ::after pseudo-
   elements) flanking a small animated diamond.

   The diamond uses two layered elements:
   - ::after = solid inner diamond (bounces in/out)
   - ::before = outer ring border (pulses at larger scale)
   Both are squares rotated 45° with transform: rotate(45deg).

   The .divider-no-pulse body class (set by Customizer toggle)
   disables animations for reduced motion preference.
   See body_class filter in functions.php section 10. */
.section-divider {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    margin: 0.8rem 0 0;
}
.section-divider::before,
.section-divider::after {
    content: '';
    width: 50px;
    height: 1px;
    background: linear-gradient(90deg, transparent, var(--color-gold-dim));
}
.section-divider::after {
    background: linear-gradient(90deg, var(--color-gold-dim), transparent);
}
.section-divider-diamond {
    position: relative;
    width: 7px;
    height: 7px;
    flex-shrink: 0;
    overflow: visible; /* Outer ring extends beyond the 7px box */
}
/* Outer ring — same base size as inner, scaled up 1.85x */
.section-divider-diamond::before {
    content: '';
    position: absolute;
    inset: 0;
    border: 0.8px solid rgba(var(--color-gold-rgb),0.38);
    transform: rotate(45deg) scale(1.85);
    animation: divider-ring-pulse 3s ease-in-out infinite;
}
/* Inner solid diamond */
.section-divider-diamond::after {
    content: '';
    position: absolute;
    inset: 0;
    background: var(--color-gold);
    transform: rotate(45deg);
    animation: divider-diamond-bounce 3s ease-in-out infinite;
}
@keyframes divider-diamond-bounce {
    0%, 100% { transform: rotate(45deg) scale(1);    }
    50%       { transform: rotate(45deg) scale(1.15); }
}
@keyframes divider-ring-pulse {
    0%, 100% { transform: rotate(45deg) scale(1.85); opacity: 0.38; }
    50%       { transform: rotate(45deg) scale(2.05); opacity: 0.6;  }
}
/* Static fallback when .divider-no-pulse body class is active */
.divider-no-pulse .section-divider-diamond::before,
.divider-no-pulse .section-divider-diamond::after {
    animation: none;
}
.divider-no-pulse .section-divider-diamond::after {
    transform: rotate(45deg) scale(1);
}
.divider-no-pulse .section-divider-diamond::before {
    transform: rotate(45deg) scale(1.85);
    opacity: 0.38;
}

/* Arrow CTA link */
.btn-arrow {
    display: inline-flex;
    align-items: center;
    gap: 0.6rem;
    font-family: var(--font-display);
    font-size: 0.78rem;
    font-weight: 700;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--color-gold);
    position: relative;
    padding-bottom: 2px;
    text-decoration: none;
}
.btn-arrow::after {
    content: '';
    position: absolute;
    bottom: 0; left: 0;
    width: 0; height: 1px;
    background: var(--color-gold);
    transition: width 0.35s ease;
}
.btn-arrow:hover { color: var(--color-gold-light); }
.btn-arrow:hover::after { width: 100%; }
.btn-arrow .arrow-icon {
    display: inline-block;
    transition: transform 0.25s ease;
}
.btn-arrow:hover .arrow-icon { transform: translateX(4px); }

/* ============================================================
   BUTTONS
   ============================================================
   Three button styles used across the site:

   .btn             — base class (shared padding, font, radius)
   .btn-primary     — gold filled, used for primary CTAs
   .btn-outline     — transparent with white border, secondary CTAs
   .btn-arrow       — text link with animated underline + arrow icon
   .btn-buy-nav     — compact gold button in the header nav

   The padding-top/bottom asymmetry (+1px/-1px) on .btn and
   .btn-buy-nav compensates for Josefin Sans ES's optical vertical
   offset so the text appears visually centred within the button.
   ============================================================ */
.btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0.85em 2.2em;
    font-family: var(--font-display);
    font-size: 0.8rem;
    font-weight: 700;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    border: 1px solid transparent;
    cursor: pointer;
    transition: color var(--transition-fast), background var(--transition-fast), border-color var(--transition-fast), box-shadow var(--transition-fast);
    text-decoration: none;
    border-radius: 2px;
    line-height: 1;
    white-space: nowrap;
    padding-top: calc(0.85em + 1px);
    padding-bottom: calc(0.85em - 1px);
}

.btn-primary {
    background: var(--color-gold);
    color: var(--color-bg-deep);
    border: 1px solid var(--color-gold);
}
.btn-primary:hover {
    background: var(--color-gold-light);
    color: var(--color-bg-deep);
    border-color: var(--color-gold-light);
    box-shadow: 0 4px 24px rgba(var(--color-gold-rgb),0.35);
}

.btn-outline {
    background: transparent;
    color: var(--color-text-primary);
    border: 1px solid rgba(249,249,249,0.3);
}
.btn-outline:hover {
    border-color: var(--color-gold);
    color: var(--color-gold);
    background: var(--color-gold-glow);
}

/* ============================================================
   HEADER & NAVIGATION
   ============================================================
   The site header is fixed at the top of the viewport on all
   pages. It starts transparent on the homepage (sitting over
   the hero) and transitions to a solid frosted-glass background
   once the user scrolls down. JavaScript in main.js adds the
   .scrolled class when the page scrolls past the hero.

   LAYOUT: 3-column CSS Grid
   Col 1: Logo (left-aligned)    grid-column: 1
   Col 2: Nav links (centred)    grid-column: 2
   Col 3: CTA button / hamburger grid-column: 3

   This explicit placement ensures the nav stays centred even
   when the logo or CTA is absent.

   Z-INDEX LAYERS (header area):
   1000 — site header
   1099 — mobile overlay (dim backdrop)
   1100 — mobile nav drawer + hamburger button
   2000 — skip link (must be above everything)

   MOBILE: Below 768px the desktop nav is hidden and replaced
   with a slide-in drawer (#mobile-nav) triggered by the
   hamburger button (#menu-toggle). The overlay (#mobile-overlay)
   dims the page behind the drawer and closes it on click.
   ============================================================ */
#site-header {
    position: fixed;
    top: 0; left: 0; right: 0;
    z-index: 1000;
    height: var(--header-height);
    display: flex;
    align-items: center;
    transition: background var(--transition-med), box-shadow var(--transition-med);
    background: transparent;
}

#site-header.scrolled {
    background: rgba(13,14,26,0.97);
    box-shadow: 0 1px 0 var(--color-border), 0 4px 30px rgba(0,0,0,0.7);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
}

/* Single post — always show solid header, no transparent phase */
.single-post #site-header {
    background: rgba(13,14,26,0.97);
    box-shadow: 0 1px 0 var(--color-border), 0 4px 30px rgba(0,0,0,0.7);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
}

#site-header .container {
    width: 100%;
    display: grid;
    grid-template-columns: 1fr auto 1fr;
    align-items: center;
    gap: 1rem;
}

/* Explicit column placement — nav stays in col 2 even when logo is absent */
#site-logo   { grid-column: 1; justify-self: start; }
#main-nav    { grid-column: 2; justify-self: center; }
.nav-cta     { grid-column: 3; justify-self: end; }
#menu-toggle { grid-column: 3; justify-self: end; }

/* Logo — left */
#site-logo {
    display: flex;
    align-items: center;
    flex-shrink: 0;
    text-decoration: none;
}
#site-logo img {
    height: 44px;
    width: auto;
    max-width: 180px;
    object-fit: contain;
    filter: drop-shadow(0 0 8px rgba(var(--color-gold-rgb),0.3));
}
#site-logo .logo-text {
    font-family: var(--font-display);
    font-size: 1.1rem;
    font-weight: 700;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: var(--color-text-white);
}
#site-logo .logo-text span { color: var(--color-gold); }

/* Navigation — center */
#main-nav ul {
    display: flex;
    gap: 2rem;
    align-items: center;
    flex-wrap: nowrap;
}

#main-nav ul li { position: relative; }

#main-nav ul li > a {
    font-family: var(--font-display);
    font-size: 0.78rem;
    font-weight: 400;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--color-text-muted);
    padding: 0.4em 0;
    position: relative;
    transition: color var(--transition-fast);
    display: block;
    white-space: nowrap;
}
#main-nav ul li > a::after {
    content: '';
    position: absolute;
    bottom: -2px; left: 0;
    width: 0; height: 1px;
    background: var(--color-gold);
    transition: width var(--transition-med);
}
#main-nav ul li > a:hover,
#main-nav ul li > a.active {
    color: var(--color-gold);
}
#main-nav ul li > a:hover::after,
#main-nav ul li > a.active::after { width: 100%; }

/* Dropdown */
#main-nav ul li:hover > .sub-menu,
#main-nav ul li:focus-within > .sub-menu {
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
}
#main-nav .sub-menu {
    position: absolute;
    top: calc(100% + 12px);
    left: 50%;
    transform: translateX(-50%) translateY(-6px);
    min-width: 240px;
    background: rgba(13,14,26,0.98);
    border: 1px solid var(--color-border);
    border-top: 2px solid var(--color-gold);
    opacity: 0;
    visibility: hidden;
    transition: opacity var(--transition-fast), transform var(--transition-fast), visibility var(--transition-fast);
    z-index: 10;
}
#main-nav .sub-menu li a {
    display: block;
    padding: 0.65rem 1.2rem;
    border-bottom: 1px solid rgba(var(--color-gold-rgb),0.08);
    font-size: 0.72rem;
    letter-spacing: 0.12em;
    color: var(--color-text-muted);
}
#main-nav .sub-menu li:last-child a { border-bottom: none; }
#main-nav .sub-menu li a:hover {
    background: var(--color-gold-glow);
    color: var(--color-gold);
}
#main-nav .sub-menu li a::after { display: none; }

/* Buy Now CTA — right */
.nav-cta { flex-shrink: 0; }

/* Next Chapter badge pill — gold, sits inline after the nav label.
   font-size and padding kept small so it doesn't dominate the nav.
   border-radius: 3px matches the theme's standard pill shape. */
.nav-badge {
    display: inline-flex;
    align-items: center;
    margin-left: 7px;
    padding: 2px 7px;
    font-family: var(--font-display);
    font-size: 0.55rem;
    font-weight: 700;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--color-bg-deep);
    background: var(--color-gold);
    border-radius: 3px;
    vertical-align: middle;
    position: relative;
    top: -1px;
    /* Never wrap the badge text onto its own line */
    white-space: nowrap;
    flex-shrink: 0;
}

/* Prevent the nav item containing a badge from wrapping to two lines */
#main-nav ul li > a:has(.nav-badge) {
    white-space: nowrap;
    display: inline-flex;
    align-items: center;
}

/* Mobile — flex row so badge sits inline with the label, never wraps */
.mobile-nav-list .nav-badge {
    font-size: 0.6rem;
    padding: 2px 8px;
    top: 0;
    flex-shrink: 0;
}
#mobile-nav a:has(.nav-badge) {
    display: flex;
    align-items: center;
    flex-wrap: nowrap;
    white-space: nowrap;
}
.btn-buy-nav {
    font-family: var(--font-display);
    font-size: 0.75rem;
    font-weight: 700;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: var(--color-bg-deep);
    background: var(--color-gold);
    border: 1px solid var(--color-gold);
    padding: 0.6em 1.6em;
    padding-top: calc(0.6em + 1px);
    padding-bottom: calc(0.6em - 1px);
    border-radius: 2px;
    transition: background var(--transition-fast), border-color var(--transition-fast), color var(--transition-fast), box-shadow var(--transition-fast), transform var(--transition-fast);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    text-decoration: none;
    line-height: 1;
    white-space: nowrap;
}
.btn-buy-nav:hover {
    background: var(--color-gold-light);
    color: var(--color-bg-deep);
    border-color: var(--color-gold-light);
    box-shadow: 0 4px 24px rgba(var(--color-gold-rgb),0.35);
}

/* Hamburger toggle */
#menu-toggle {
    display: none;
    flex-direction: column;
    gap: 5px;
    background: none;
    border: 1px solid transparent;
    cursor: pointer;
    padding: 8px;
    z-index: 1100;
}
#menu-toggle span {
    display: block;
    width: 26px;
    height: 2px;
    background: var(--color-gold);
    transition: transform var(--transition-fast), opacity var(--transition-fast);
    transform-origin: center;
}
#menu-toggle.open span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
#menu-toggle.open span:nth-child(2) { opacity: 0; transform: scaleX(0); }
#menu-toggle.open span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

/* Mobile nav drawer */
#mobile-nav {
    position: fixed;
    top: 0; right: 0;
    width: min(300px, 85vw);
    height: 100vh;
    background: rgba(13,14,26,0.99);
    border-left: 1px solid var(--color-border);
    z-index: 1100;
    padding: 6rem 2rem 3rem;
    transform: translateX(100%);
    transition: transform 0.35s cubic-bezier(0.22,1,0.36,1);
    display: flex;
    flex-direction: column;
    overflow-y: auto;
}
#mobile-nav.open { transform: translateX(0); }

#mobile-nav a {
    font-family: var(--font-display);
    font-size: 0.9rem;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--color-text-muted);
    padding: 0.85rem 0;
    border-bottom: 1px solid rgba(var(--color-gold-rgb),0.1);
    display: block;
    transition: color var(--transition-fast);
    text-decoration: none;
}
#mobile-nav a:hover { color: var(--color-gold); }
#mobile-nav .mobile-cta {
    margin-top: 2rem;
    display: block;
    background: var(--color-gold);
    color: var(--color-bg-deep);
    padding: 0.85em 2em;
    font-weight: 700;
    text-align: center;
    border-radius: 2px;
    font-size: 0.8rem;
    letter-spacing: 0.2em;
    border-bottom: none;
}
#mobile-nav .mobile-cta:hover {
    background: var(--color-gold-light);
    color: var(--color-bg-deep);
}

/* Mobile overlay */
#mobile-overlay {
    position: fixed;
    inset: 0;
    background: rgba(13,14,26,0.6);
    z-index: 1099;
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.3s, visibility 0.3s;
}
#mobile-overlay.open { opacity: 1; visibility: visible; }

/* ============================================================
   HERO
   ============================================================
   The full-screen opening section of the homepage.

   BACKGROUND LAYERING (back to front):
   1. Background image (CSS background-image)
   2. Looping <video> element (muted, autoplay, loop)
   3. Dark gradient overlay (.hero-bg-overlay)
   4. Content (.hero-content)

   Video takes priority over image when both are set.
   On mobile, video is hidden and the image shows instead
   (controlled in the responsive section).

   The hero pause button (.hero-pause-btn) appears bottom-right
   and lets users toggle the background video. It's hidden when
   no video is set (display controlled by JS in main.js).

   PLATFORM PILLS: Small platform badges shown below the CTAs.
   Each pill has an icon + label. They link to the store page
   for that platform. Managed entirely via Customizer.

   SCORE BADGES: Small stat blocks (e.g. "9/10 · PC Gamer").
   Hidden if the value field is blank in Customizer.
   ============================================================ */
#section-home {
    position: relative;
    height: 100vh;
    min-height: 600px;
    display: flex;
    align-items: center;
    justify-content: center;
    text-align: center;
    overflow: hidden;
    padding-top: var(--header-height);
    padding-bottom: 8vh;
}

.hero-bg { position: absolute; inset: 0; z-index: 0; }

.hero-bg-image {
    position: absolute; inset: 0;
    width: 100%; height: 100%;
    object-fit: cover;
    opacity: 0.5;
}
.hero-bg-video {
    position: absolute; inset: 0;
    width: 100%; height: 100%;
    object-fit: cover;
    opacity: 0.55;
    z-index: 0;
}
.hero-bg-image--fallback { display: none; }

@media (max-width: 768px) {
    .hero-bg-video { display: none; }
    .hero-bg-image--fallback { display: block; }
}

.hero-bg-placeholder {
    position: absolute; inset: 0;
    background:
        radial-gradient(ellipse at 30% 60%, rgba(0,0,0,0.4) 0%, transparent 60%),
        radial-gradient(ellipse at 70% 30%, rgba(var(--color-gold-rgb),0.04) 0%, transparent 55%),
        linear-gradient(180deg, #0a0a0f 0%, #0d0d14 50%, #0a0a0f 100%);
}
.hero-bg-placeholder::before {
    content: '';
    position: absolute; inset: 0;
    background-image:
        radial-gradient(circle, rgba(255,255,255,0.9) 1px, transparent 1px),
        radial-gradient(circle, rgba(255,255,255,0.5) 1px, transparent 1px),
        radial-gradient(circle, rgba(255,255,255,0.3) 1px, transparent 1px);
    background-size: 320px 320px, 210px 210px, 160px 160px;
    background-position: 0 0, 60px 110px, 160px 60px;
    opacity: 0.3;
}

.hero-overlay {
    position: absolute; inset: 0;
    background: linear-gradient(
        to bottom,
        rgba(0,0,0,0.1) 0%,
        rgba(0,0,0,0.05) 40%,
        rgba(0,0,0,0.6) 80%,
        var(--color-bg-deep) 100%
    );
    z-index: 1;
}

.hero-content {
    position: relative;
    z-index: 3;
    max-width: 820px;
    padding: 0 40px;
    animation: heroFadeIn 1.2s ease both;
}
@keyframes heroFadeIn {
    from { opacity: 0; transform: translateY(30px); }
    to   { opacity: 1; transform: translateY(0); }
}

.hero-game-logo { margin: 0 auto 1.2rem; max-width: 700px; }
.hero-game-logo img {
    width: 100%; height: auto;
    filter: drop-shadow(0 0 30px rgba(var(--color-gold-rgb),0.35));
}

.hero-logo-text {
    font-family: var(--font-display);
    font-weight: 700;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: var(--color-text-white);
    line-height: 1;
    margin-bottom: 0;
}
.hero-title-small  { font-size: clamp(1.5rem, 4vw, 3rem); }
.hero-title-medium { font-size: clamp(2.5rem, 7vw, 5.5rem); }
.hero-title-large  { font-size: clamp(3rem, 8vw, 6.5rem); }
.hero-title-xlarge { font-size: clamp(3.5rem, 10vw, 8rem); }

.hero-tagline {
    font-family: var(--font-display);
    font-size: clamp(0.72rem, 1.5vw, 0.92rem);
    color: var(--color-text-white);
    letter-spacing: 0.35em;
    text-transform: uppercase;
    margin-top: 1.2rem;
    margin-bottom: 0.8rem;
    font-weight: 700;
}

.hero-description {
    font-size: clamp(0.9rem, 1.5vw, 1rem);
    color: var(--color-text-primary);
    max-width: 580px;
    margin: 0 auto 1.8rem;
    line-height: 1.8;
    font-weight: 300;
}

.hero-cta {
    display: flex;
    gap: 1.2rem;
    justify-content: center;
    flex-wrap: wrap;
}

/* Score strip — no frames, floating numbers */
.hero-scores {
    display: inline-flex;
    justify-content: center;
    gap: 2.5rem;
    margin-top: 1.5rem;
}
.hero-score-item {
    text-align: center;
    position: relative;
}
.hero-score-item + .hero-score-item::before {
    content: '';
    position: absolute;
    left: -1.25rem;
    top: 15%; height: 70%;
    width: 1px;
    background: rgba(var(--color-gold-rgb),0.2);
}
.hero-score-value {
    font-family: var(--font-display);
    font-size: 1.4rem;
    font-weight: 700;
    color: var(--color-gold);
    line-height: 1;
    display: block;
    margin-bottom: 0.3rem;
    text-shadow: 0 0 20px rgba(var(--color-gold-rgb),0.3);
}
.hero-score-label {
    font-family: var(--font-display);
    font-size: 0.55rem;
    letter-spacing: 0.22em;
    text-transform: uppercase;
    color: var(--color-text-muted);
    display: block;
}

/* ── Hero platform pills ──────────────────────────────────────── */
.hero-platforms {
    margin-top: 4rem;
    text-align: center;
}

.hero-platforms-label {
    font-family: var(--font-display);
    font-size: 0.55rem;
    font-weight: 700;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: rgba(255,255,255,0.7);
    margin-bottom: 0.55rem;
}

.hero-platforms-row {
    display: flex;
    flex-wrap: wrap;
    gap: 5px;
    align-items: center;
    justify-content: center;
}

.hero-platform-pill {
    display: inline-flex;
    align-items: center;
    gap: 0;
    border: 1px solid rgba(255,255,255,0.13);
    border-radius: 3px;
    overflow: hidden;
    text-decoration: none;
    transition: border-color 0.2s ease;
}

a.hero-platform-pill:hover {
    border-color: rgba(255,255,255,0.32);
}

.hero-platform-icon {
    width: 26px;
    height: 26px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(255,255,255,0.07);
    border-right: 1px solid rgba(255,255,255,0.1);
    flex-shrink: 0;
}

.hero-platform-icon img {
    width: 14px;
    height: 14px;
    object-fit: contain;
    filter: brightness(0) invert(1);
    opacity: 0.75;
}

.hero-platform-name {
    font-family: var(--font-display);
    font-size: 0.55rem;
    font-weight: 700;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: rgba(255,255,255,0.6);
    padding: 0 8px;
    white-space: nowrap;
    transform: translateY(1px);
}

.hero-scroll-hint {
    position: absolute;
    bottom: 2.2rem;
    left: 50%;
    transform: translateX(-50%);
    z-index: 3;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 6px;
    pointer-events: none;
    animation: innerScrollBounce 2s ease-in-out infinite;
}

/* ── Video pause button — bottom right, same line as scroll hint ── */
.hero-pause-btn {
    position: absolute;
    bottom: 48px;
    right: 2rem;
    z-index: 4;
    width: 28px;
    height: 28px;
    border: 1px solid rgba(255,255,255,0.2);
    border-radius: 50%;
    background: rgba(0,0,0,0.35);
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: border-color 0.2s ease, background 0.2s ease;
    color: rgba(255,255,255,0.55);
}

.hero-pause-btn:hover {
    border-color: rgba(255,255,255,0.5);
    background: rgba(0,0,0,0.55);
    color: rgba(255,255,255,0.9);
}

@media (max-width: 768px) {
    .hero-pause-btn { display: none; }
}

/* ── Anchor scroll offset — arrive at the section separator ── */
#section-news,
#section-features,
#section-media,
#section-buy,
#section-community,
#section-newsletter,
#section-next-chapter {
    scroll-margin-top: var(--header-height);
}

/* DLC sub-section — header clearance only, margin-top provides the gap */
#dlc-universe,
#dlc-buy,
#extras-artbooks,
#extras-soundtracks {
    scroll-margin-top: var(--header-height);
}

/* ============================================================
   SECTION: LATEST NEWS
   ============================================================
   Displays recent WordPress posts as a card grid on the homepage.
   The number of posts shown is controlled by the 'news_post_count'
   Customizer setting (default: 3).

   BACKGROUND TREATMENT:
   ::before — a thin gold gradient line along the top edge
   ::after  — two purple radial gradients for atmospheric depth
              (bottom-left + top-right, varied per section)

   This layered pseudo-element pattern is used on News, Media,
   Community, and Buy the Game sections to give each a subtle
   atmospheric look without affecting content positioning.
   The content container needs position: relative; z-index: 1
   to sit above the ::after pseudo-element.

   The .archive-no-pulse body class disables the animated dot
   on the archive/news listing page (set via Customizer toggle).
   ============================================================ */
#section-news {
    padding: var(--section-padding);
    background: var(--color-bg-section);
    position: relative;
}
#section-news::before {
    content: '';
    position: absolute;
    top: 0; left: 0; right: 0;
    height: 1px;
    background: linear-gradient(90deg, transparent, var(--color-gold-dim), transparent);
}
/* Purple accent — bottom-left + top-right, matching About the Game intensity */
#section-news::after {
    content: '';
    position: absolute;
    inset: 0;
    background:
        radial-gradient(ellipse at 8% 80%,  rgba(90,25,140,0.14) 0%, transparent 50%),
        radial-gradient(ellipse at 92% 20%, rgba(60,15,100,0.10) 0%, transparent 45%);
    pointer-events: none;
    z-index: 0;
}
#section-news .container { position: relative; z-index: 1; }

.news-section-header {
    text-align: center;
    margin-bottom: 3.5rem;   /* matches .section-header used everywhere else */
}

/* C2 — flush right, no underline, faint spaced text, used in News + Media */
.section-view-all {
    display: flex;
    justify-content: flex-end;
    padding-top: 1.8rem;
}
.section-view-all a {
    font-family: var(--font-display);
    font-size: 0.52rem;
    font-weight: 700;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: rgba(255,255,255,0.6);
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: 0.55em;
    padding: calc(0.5rem + 1px) 1.1rem calc(0.5rem - 1px);
    border: 0.5px solid rgba(255,255,255,0.18);
    border-radius: 2px;
    transition: color 0.2s ease, border-color 0.2s ease;
}
.section-view-all a:hover {
    color: rgba(255,255,255,0.9);
    border-color: rgba(255,255,255,0.38);
}
.section-view-all a .arrow-icon {
    display: inline-block;
    transition: transform 0.25s ease;
}
.section-view-all a:hover .arrow-icon {
    transform: translateX(4px);
}

/* Category colour tokens */
:root {
    --cat-news-bg:  rgba(82,168,255,0.12);  --cat-news-c:  #52a8ff; /* News         — blue     */
    --cat-ann-bg:   rgba(232,168,56,0.14);  --cat-ann-c:   #E8A838; /* Announcement — gold     */
    --cat-blog-bg:  rgba(224,80,180,0.12);  --cat-blog-c:  #e050b4; /* Dev Blog     — pink     */
    --cat-patch-bg: rgba(34,196,160,0.12);  --cat-patch-c: #22C4A0; /* Patch Notes  — green    */
    --cat-other-bg: rgba(136,139,154,0.12); --cat-other-c: #888b9a; /* Other        — grey     */
}

/* Category badge — used in news cards and future blog posts */
.news-cat-badge {
    display: inline-block;
    align-self: flex-start; /* prevents stretching in flex columns */
    font-family: var(--font-display);
    font-size: 0.58rem;
    font-weight: 700;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    padding: calc(0.2em + 1px) 0.65em calc(0.2em - 1px);
    border-radius: 2px;
    margin-bottom: 0.4rem;
    white-space: nowrap;
}
.news-cat-badge--news         { background: var(--cat-news-bg); color: var(--cat-news-c); }
.news-cat-badge--announcement { background: var(--cat-ann-bg);   color: var(--cat-ann-c);   }
.news-cat-badge--patch-notes  { background: var(--cat-patch-bg); color: var(--cat-patch-c); }
.news-cat-badge--dev-blog     { background: var(--cat-blog-bg);  color: var(--cat-blog-c);  }
.news-cat-badge--other        { background: var(--cat-other-bg); color: var(--cat-other-c); }

/* Grid — magazine layout: featured left, 2 stacked right */
.news-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    grid-template-rows: auto auto;
    gap: 1rem;
}

/* All cards: full-bleed image with text at bottom */
.news-card {
    position: relative;
    border-radius: 3px;
    overflow: hidden;
    border: 1px solid transparent;
    display: flex;
    align-items: flex-end;
    transition: border-color var(--transition-fast), box-shadow var(--transition-fast);
    text-decoration: none;
}
/* Subtle hover — matches all other cards */
.news-card:hover {
    border-color: var(--color-gold); box-shadow: 0 4px 20px rgba(var(--color-gold-rgb),0.08);
    box-shadow: 0 8px 30px rgba(var(--color-gold-rgb),0.1);
}

/* Featured card spans both rows */
.news-card--featured {
    grid-row: 1 / 3;
    min-height: 380px;
}
/* Small cards */
.news-card--small { min-height: 175px; }

/* Background image layer */
.news-card-bg {
    position: absolute; inset: 0;
    background: var(--color-bg-card);
    transition: transform 0.6s ease;
}
.news-card-bg img {
    width: 100%; height: 100%;
    object-fit: cover;
    opacity: 0.7;
    transition: opacity 0.3s, transform 0.6s ease;
}
.news-card:hover .news-card-bg { transform: scale(1.03); }
.news-card:hover .news-card-bg img { opacity: 0.85; }

/* Gradient overlay — stronger at bottom for readability */
.news-card-overlay {
    position: absolute; inset: 0;
    background: linear-gradient(to top,
        rgba(0,0,0,0.88) 0%,
        rgba(0,0,0,0.55) 30%,
        rgba(0,0,0,0.0)  65%,
        transparent      100%
    );
}

/* Text content */
.news-card-content {
    position: relative;
    z-index: 2;
    padding: 1.1rem;
    width: 100%;
}
.news-card-title {
    font-family: var(--font-display);
    font-weight: 700;
    letter-spacing: 0.09em;
    text-transform: uppercase;
    color: var(--color-text-white);
    line-height: 1.3;
    margin-top: 0.3rem;
    display: block;
    text-decoration: none;
}
.news-card--featured .news-card-title { font-size: 0.92rem; }
.news-card--small    .news-card-title { font-size: 0.88rem; }

.news-card-meta-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-top: 0.35rem;
    gap: 1rem;
}

.news-card-date {
    font-family: var(--font-display);
    font-size: 0.6rem;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: rgba(255,255,255,0.3);
}

.news-card-read-more {
    font-family: var(--font-display);
    font-size: 0.56rem;
    font-weight: 700;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: rgba(136,139,154,0.45);
    display: inline-flex;
    align-items: center;
    gap: 0.4em;
    transition: color 0.2s ease;
}
.news-card:hover .news-card-read-more {
    color: var(--color-text-muted);
}
.news-card-read-more .arrow-icon {
    display: inline-block;
    transition: transform 0.25s ease;
}
.news-card:hover .news-card-read-more .arrow-icon {
    transform: translateX(4px);
}

/* ============================================================
   SECTION: ABOUT THE GAME (Features)
   ============================================================
   Three sub-sections stacked vertically:

   1. FEATURE BULLETS — 4 short highlight items in a 2×2 grid,
      each with an icon, title, and description paragraph.

   2. MAIN CARDS — 2 large 16:9 image cards side by side.
      Each card has a full-bleed background image, an optional
      sci-fi HUD frame overlay, title, description, and a CTA.
      Cards link to The Game and The Story pages.
      The HUD frame (chamfered corners + barcode + brackets) is
      toggled via Customizer. Frame ID is editable.

   3. DLC SUB-SECTION — "Expand Your Universe" block with:
      - Strip: up to 4 main DLC as wide horizontal banner cards
      - Grid: up to 6 smaller extras as a list with thumbnails
      Entire sub-section hidden if 'hide_dlc' is checked.

   isolation: isolate on the section creates a stacking context
   so the ::after background gradients don't bleed into cards.
   ============================================================ */
#section-features {
    padding: var(--section-padding);
    background: var(--color-bg-section);
    position: relative;
    isolation: isolate;
}
#section-features::before {
    content: '';
    position: absolute;
    top: 0; left: 0; right: 0;
    height: 1px;
    background: linear-gradient(90deg, transparent, var(--color-gold-dim), transparent);
}
/* Purple accent — top-right + bottom-left, like ES1 ES2 section */
#section-features::after {
    content: '';
    position: absolute;
    inset: 0;
    background:
        radial-gradient(ellipse at 95% 15%, rgba(90,25,140,0.14) 0%, transparent 50%),
        radial-gradient(ellipse at 5%  85%, rgba(60,15,100,0.10) 0%, transparent 45%);
    pointer-events: none;
    z-index: 0;
}

/* Optional section background image */
.section-bg-wrap {
    position: absolute; inset: 0;
    z-index: -1;
    overflow: hidden;
    pointer-events: none;
}
.section-bg-wrap img {
    width: 100%; height: 100%;
    object-fit: cover;
    opacity: 0.22;   /* raised from 0.07 — actually visible now */
}
.section-bg-overlay {
    position: absolute; inset: 0;
    /* Fade to section color at edges, lighter in the middle so image shows through */
    background: linear-gradient(to bottom,
        var(--color-bg-section) 0%,
        rgba(0,0,0,0.3) 30%,
        rgba(0,0,0,0.3) 70%,
        var(--color-bg-section) 100%
    );
}

/* ── Option B: Editorial 2×2 features grid — no cards, no borders ── */
.features-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 2rem 3.5rem;
    margin-top: 3rem;
    margin-bottom: 3.5rem;
}

.features-grid::before,
.features-grid::after { display: none; }

.feature-item {
    display: flex;
    gap: 1.2rem;
    align-items: flex-start;
}

.feature-number {
    font-family: var(--font-display);
    font-size: 2.8rem;
    font-weight: 700;
    color: rgba(var(--color-gold-rgb),0.35);
    line-height: 1;
    flex-shrink: 0;
    min-width: 3rem;
    text-align: right;
    user-select: none;
}

.feature-body { flex: 1; }

.feature-title {
    font-family: var(--font-display);
    font-size: 0.9rem;
    font-weight: 700;
    letter-spacing: 0.13em;
    text-transform: uppercase;
    color: #ffffff;
    display: block;
    margin-bottom: 0.5rem;
}

.feature-text {
    font-size: 0.88rem;
    color: rgba(255,255,255,0.5);
    line-height: 1.75;
    font-weight: 300;
}

.features-grid .feature-item:nth-child(3),
.features-grid .feature-item:nth-child(4) {
    padding-top: 0;
    border-top: none;
}

/* 2 main cards: The Game + The Story */
.main-cards {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1.5rem;
    margin-top: 2rem;
}

/* Wrapper provides stacking context for the SVG frame */
.main-card-wrap {
    position: relative;
}

.main-card {
    position: relative;
    display: flex;
    flex-direction: column;
    justify-content: flex-end;
    width: 100%;
    aspect-ratio: 16 / 9;
    overflow: hidden;
    text-decoration: none;
    border-radius: 3px;
}

/* ── Main card frame ── */
.main-card-wrap .main-card {
    border: 1px solid transparent;
    transition: border-color var(--transition-fast), box-shadow var(--transition-fast);
}
.main-card-wrap:hover .main-card {
    border-color: var(--color-gold); box-shadow: 0 4px 20px rgba(var(--color-gold-rgb),0.08);
}

.main-card-bg {
    position: absolute; inset: 0;
    background: var(--color-bg-card);
    transition: transform 0.6s ease;
    overflow: hidden;
}
.main-card-bg img {
    width: 100%; height: 100%;
    object-fit: cover;
    opacity: 1;
    transition: opacity 0.3s;
}
.main-card-wrap:hover .main-card-bg { transform: scale(1.03); }
.main-card-wrap:hover .main-card-bg img { opacity: 1; }

.main-card-overlay {
    position: absolute; inset: 0;
    background: linear-gradient(to top,
        #000               0%,
        #000               28%,
        rgba(0,0,0,0.45)   50%,
        rgba(0,0,0,0.1)    75%,
        transparent        100%
    );
}

.main-card-content {
    position: relative;
    z-index: 2;
    padding: 2rem;
}
.main-card-title {
    font-family: var(--font-display);
    font-size: 1.4rem;
    font-weight: 700;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--color-text-white);
    margin-bottom: 0.5rem;
    line-height: 1;
    display: block;
}
.main-card-desc {
    font-size: 0.83rem;
    color: rgba(255,255,255,0.9);
    line-height: 1.6;
    margin-bottom: 1.2rem;
    font-weight: 300;
}

/* ── DLC: Expand Your Universe sub-section ─────────────────────── */
.dlc-subsection {
    margin-top: 5.5rem;
}

.dlc-subsection-sep {
    height: 1px;
    background: linear-gradient(90deg, transparent, rgba(var(--color-gold-rgb),0.25), transparent);
    margin-bottom: 2.8rem;
}

/* Title design: small gold eyebrow, large white title, grey desc */
.dlc-subsection-eyebrow {
    font-family: var(--font-display);
    font-size: 0.6rem;
    font-weight: 700;
    letter-spacing: 0.25em;
    text-transform: uppercase;
    color: var(--color-gold);
    margin-bottom: 0.5rem;
    display: block;
}

.dlc-subsection-title {
    font-family: var(--font-display);
    font-size: clamp(1.2rem, 2.2vw, 1.8rem);
    font-weight: 700;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--color-text-primary);
    margin-bottom: 0.5rem;
    line-height: 1.1;
}

.dlc-subsection-desc {
    font-size: 0.9rem;
    color: rgba(255,255,255,0.4);
    line-height: 1.6;
    margin-bottom: 0;
    max-width: 100%;
}

.dlc-subsection-header {
    margin-bottom: 1.5rem;
}

/* Strip — up to 4 main DLC */
.dlc-strip {
    display: grid;
    grid-template-columns: repeat(var(--dlc-strip-cols, 3), 1fr);
    gap: 8px;
    margin-bottom: 8px;
}

.dlc-strip-item {
    position: relative;
    height: 220px;
    text-decoration: none;
    display: block;
    background: var(--color-bg-card) center/cover no-repeat;
    border-radius: 3px;
    overflow: hidden;
}

.dlc-strip-overlay {
    position: absolute;
    inset: 0;
    background: linear-gradient(to top,
        rgba(0,0,0,0.88) 0%,
        rgba(0,0,0,0.55) 30%,
        rgba(0,0,0,0.0)  65%,
        transparent      100%
    );
}

.dlc-strip-frame {
    position: absolute;
    inset: 0;
    border: 1px solid transparent;
    box-shadow: none;
    pointer-events: none;
    transition: border-color 0.2s ease, box-shadow 0.2s ease;
    z-index: 2;
    border-radius: 3px;
}

.dlc-strip-item:hover .dlc-strip-frame {
    border-color: var(--color-gold); box-shadow: 0 4px 20px rgba(var(--color-gold-rgb),0.08);
}

.dlc-strip-content {
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    padding: 12px 14px;
    z-index: 2;
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.dlc-strip-type {
    font-family: var(--font-display);
    font-size: 0.52rem;
    font-weight: 700;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: rgba(var(--color-gold-rgb),0.75);
}

/* Title + learn more arrow on same line */
.dlc-strip-title-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
}

.dlc-strip-title {
    font-family: var(--font-display);
    font-size: 0.78rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: #fff;
    line-height: 1.2;
    flex: 1;
}

.dlc-strip-learn {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    font-family: var(--font-display);
    font-size: 0.52rem;
    font-weight: 700;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: rgba(var(--color-gold-rgb),0.5);
    white-space: nowrap;
    flex-shrink: 0;
    transition: color 0.2s ease;
}

.dlc-strip-learn .arrow-icon {
    display: inline-block;
    transition: transform 0.2s ease;
}

.dlc-strip-item:hover .dlc-strip-learn {
    color: rgba(var(--color-gold-rgb),0.9);
}

.dlc-strip-item:hover .dlc-strip-learn .arrow-icon {
    transform: translateX(3px);
}

/* ── DLC Strip — Card style (matches Buy section) ── */
.dlc-strip-card {
    height: auto;
    background: #000;
    background-clip: padding-box;
    border: 1px solid transparent;
    display: flex;
    flex-direction: column;
    transition: border-color 0.2s ease, box-shadow 0.2s ease;
}
.dlc-strip-card:hover {
    border-color: var(--color-gold); box-shadow: 0 4px 20px rgba(var(--color-gold-rgb),0.08);
}
.dlc-strip-card-cover {
    width: 100%;
    aspect-ratio: 16 / 9;
    overflow: hidden;
    position: relative;
    flex-shrink: 0;
}
.dlc-strip-card-cover img {
    width: 100%; height: 100%;
    object-fit: cover;
    transition: transform 0.6s ease;
}
.dlc-strip-card:hover .dlc-strip-card-cover img {
    transform: scale(1.03);
}
.dlc-strip-card-cover::after {
    content: '';
    position: absolute;
    bottom: 0; left: 0; right: 0;
    height: 55%;
    background: linear-gradient(to top, #000 0%, rgba(0,0,0,0.6) 50%, transparent 100%);
    pointer-events: none;
}
.dlc-strip-card-body {
    padding: 0.5rem 1rem 1.2rem;
    background: #000;
    margin-top: -1px;
    display: flex;
    flex-direction: column;
    gap: 4px;
}
/* Reuse existing .dlc-strip-type and .dlc-strip-title inside card body */

/* Grid — up to 6 extras (artbooks, soundtracks) */
.dlc-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1px;
    background: rgba(255,255,255,0.06);
    border-radius: 3px;
    overflow: hidden;
    margin-top: 1.5rem;
}

.dlc-grid-item {
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 14px 16px;
    text-decoration: none;
    background: var(--color-bg-section);
    transition: background 0.2s ease;
}

.dlc-grid-item:hover { background: rgba(var(--color-gold-rgb),0.04); }

.dlc-grid-thumb {
    width: 52px;
    height: 36px;
    border-radius: 2px;
    flex-shrink: 0;
    background: var(--color-bg-card) center/cover no-repeat;
}

.dlc-grid-info { flex: 1; }

.dlc-grid-type {
    font-family: var(--font-display);
    font-size: 0.5rem;
    font-weight: 700;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: rgba(var(--color-gold-rgb),0.6);
    display: block;
    margin-bottom: 3px;
}

/* Title + arrow on same line */
.dlc-grid-title-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
}

.dlc-grid-title {
    font-family: var(--font-display);
    font-size: 0.68rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: rgba(255,255,255,0.85);
    display: block;
    flex: 1;
}

.dlc-grid-arrow {
    font-size: 0.75rem;
    color: rgba(var(--color-gold-rgb),0.25);
    flex-shrink: 0;
    transition: color 0.2s ease, transform 0.2s ease;
}

.dlc-grid-item:hover .dlc-grid-arrow {
    color: rgba(var(--color-gold-rgb),0.7);
    transform: translateX(3px);
}

/* ── Back link ──────────────────────────────────────────────── */
.press-back-section { padding: 2rem 0 !important; text-align: center; }
.press-back-sep {
    height: 1px;
    background: linear-gradient(90deg, transparent, rgba(var(--color-gold-rgb),0.15), transparent);
    margin-bottom: 2rem;
}

/* Mobile */
@media (max-width: 768px) {
    .dlc-strip { grid-template-columns: 1fr; }
    .dlc-strip-item { height: 140px; }
    .dlc-strip-card { height: auto; }
    .dlc-grid { grid-template-columns: 1fr; }
}

/* ============================================================
   SECTION: MEDIA
   ============================================================
   Two parts displayed vertically:

   1. SCREENSHOT CAROUSEL — auto-advancing slideshow of up to
      12 images. Navigation dots sit below the image. The active
      slide transitions with a cross-fade. JS in main.js handles
      the auto-advance (5s interval) and dot clicks.
      Recommended image size: 1500×630px.

   2. VIDEO THUMBNAILS — up to 4 YouTube video cards shown as
      a horizontal row. Clicking opens a lightbox with the
      embedded YouTube player. Thumbnails are auto-fetched from
      YouTube using the video ID (maxresdefault.jpg) unless a
      custom thumbnail is uploaded in the Customizer.
   ============================================================ */
#section-media {
    padding: var(--section-padding);
    background: var(--color-bg-section);
    position: relative;
}
#section-media::before {
    content: '';
    position: absolute;
    top: 0; left: 0; right: 0;
    height: 1px;
    background: linear-gradient(90deg, transparent, var(--color-gold-dim), transparent);
}
/* Purple accent — top-right + bottom-left, matching About the Game intensity */
#section-media::after {
    content: '';
    position: absolute;
    inset: 0;
    background:
        radial-gradient(ellipse at 90% 15%, rgba(90,25,140,0.14) 0%, transparent 50%),
        radial-gradient(ellipse at 10% 85%, rgba(60,15,100,0.10) 0%, transparent 45%);
    pointer-events: none;
    z-index: 0;
}
#section-media .container { position: relative; z-index: 1; }

.carousel-wrapper {
    position: relative;
    width: 100%;
    aspect-ratio: 1500 / 630;
    overflow: hidden;
    background: var(--color-bg-card);
    background-clip: padding-box;
    border-radius: 3px;
}
.carousel-wrapper:hover {
}
.carousel-track {
    display: flex;
    height: 100%;
    transition: transform 0.6s cubic-bezier(0.25,0.46,0.45,0.94);
    will-change: transform;
}
.carousel-slide {
    flex: 0 0 100%;
    height: 100%;
    position: relative;
    overflow: hidden;
    background: var(--color-bg-deep);
}
.carousel-slide img { width: 100%; height: 100%; object-fit: cover; }

.carousel-controls {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 1.5rem;
    margin-top: 1.5rem;
}

/* Inline nav arrows — inside carousel, visible on hover */
.carousel-nav {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    z-index: 5;
    width: 44px; height: 44px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(0,0,0,0.55);
    border: 1px solid rgba(255,255,255,0.2);
    border-radius: 2px;
    color: rgba(255,255,255,0.9);
    cursor: pointer;
    opacity: 0;
    transition: opacity 0.25s ease, background 0.2s ease, border-color 0.2s ease;
}
.carousel-nav svg { display: block; width: 16px; height: 16px; }
.carousel-nav--prev { left: 14px; }
.carousel-nav--next { right: 14px; }
.carousel-wrapper:hover .carousel-nav { opacity: 1; }
.carousel-nav:hover {
    background: rgba(0,0,0,0.8);
    border-color: rgba(var(--color-gold-rgb),0.6);
    color: #fff;
}

.carousel-dots { display: flex; gap: 5px; align-items: center; }
.carousel-dot {
    width: 28px; height: 2px;
    border-radius: 1px;
    background: rgba(255,255,255,0.2);
    cursor: pointer;
    transition: background var(--transition-fast), width var(--transition-fast);
    border: 1px solid transparent;
    padding: 0;
}
.carousel-dot:hover { background: rgba(255,255,255,0.4); }
.carousel-dot.active {
    width: 44px;
    background: var(--color-gold);
    box-shadow: 0 0 6px rgba(var(--color-gold-rgb),0.4);
}

.video-row {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 2rem;
    margin-top: 3.5rem;
}
/* Carousel slide zoom button */
.carousel-zoom-btn {
    position: absolute;
    bottom: 0.75rem;
    right: 0.75rem;
    width: 32px;
    height: 32px;
    border-radius: 2px;
    border: 1px solid rgba(255,255,255,0.25);
    background: rgba(0,0,0,0.45);
    color: rgba(255,255,255,0.75);
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    opacity: 0;
    transition: opacity 0.2s ease, background 0.2s ease, border-color 0.2s ease;
    z-index: 4;
}
.carousel-slide:hover .carousel-zoom-btn {
    opacity: 1;
}
.carousel-zoom-btn:hover {
    background: rgba(0,0,0,0.7);
    border-color: rgba(var(--color-gold-rgb),0.5);
    color: #fff;
}

/* Video thumbnails — replaces old iframe embeds */
.video-row {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 1.5rem;
    margin-top: 3.5rem;
}
.video-thumb-item {
    cursor: default;
}
.video-thumb-bg {
    position: relative;
    aspect-ratio: 16 / 9;
    background: var(--color-bg-card) center / cover no-repeat;
    background-clip: padding-box;
    border-radius: 3px;
    overflow: hidden;
    border: 1px solid transparent;
    transition: border-color 0.2s ease, box-shadow 0.2s ease;
    cursor: pointer;
}
.video-thumb-bg:hover {
    border-color: var(--color-gold); box-shadow: 0 4px 20px rgba(var(--color-gold-rgb),0.08);
}
.video-thumb-play {
    position: absolute;
    inset: 0;
    width: 100%; height: 100%;
    background: rgba(0,0,0,0.25);
    border: 1px solid transparent;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: background 0.2s ease;
}
.video-thumb-bg:hover .video-thumb-play {
    background: rgba(0,0,0,0.45);
}
.video-thumb-label {
    font-family: var(--font-display);
    font-size: 0.72rem;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: var(--color-text-muted);
    text-align: center;
    margin-bottom: 0.7rem;
}

@media (max-width: 768px) {
    .video-row { grid-template-columns: 1fr; }
    .carousel-nav { display: none; }
}



/* Bordered media override removed — clean borders are now permanent */


/* ============================================================
   SECTION: BUY THE GAME
   ============================================================
   A tabbed section with three tabs:
     Tab 1 — Base Game & Editions
     Tab 2 — Add-ons (DLC)
     Tab 3 — Digital Content (artbooks, soundtracks)

   Each tab contains up to 4 product cards. Each card has:
   - Cover image (16:9)
   - Title + optional subtitle
   - Platform badge (e.g. "PC · XBOX · PS5")
   - Description (each line → gold checkmark bullet)
   - Gold CTA button (optional direct link)
   - Row of platform store icon buttons (Steam, GOG, etc.)

   Tab switching is handled by JS in main.js.
   Active tab button gets class .active.
   Inactive card grids get display: none.

   Store icon buttons: the theme has built-in SVG icons for all
   major platforms. Custom PNG icons can be uploaded in the
   Customizer to override them per-section.

   Leave a card title blank in the Customizer to hide that card.
   ============================================================ */
#section-buy {
    padding: var(--section-padding);
    background: var(--color-bg-section);
    position: relative;
}
#section-buy::before {
    content: '';
    position: absolute;
    top: 0; left: 0; right: 0;
    height: 1px;
    background: linear-gradient(90deg, transparent, var(--color-gold-dim), transparent);
}
#section-buy::after {
    content: '';
    position: absolute;
    inset: 0;
    background:
        radial-gradient(ellipse at 5% 20%,  rgba(90,25,140,0.13) 0%, transparent 50%),
        radial-gradient(ellipse at 95% 80%, rgba(60,15,100,0.09) 0%, transparent 45%);
    pointer-events: none;
    z-index: 0;
}
#section-buy .container { position: relative; z-index: 1; }

/* Tabs */
.buy-tabs {
    display: flex;
    justify-content: center;
    gap: 4px;
    margin-bottom: 2.5rem;
}
.buy-tab {
    padding: calc(0.6em + 1px) 2em calc(0.6em - 1px);
    font-family: var(--font-display);
    font-size: 0.78rem;
    font-weight: 700;
    letter-spacing: 0.18em;
    line-height: 1;
    text-transform: uppercase;
    background: transparent;
    border: 1px solid var(--color-border);
    color: var(--color-text-muted);
    cursor: pointer;
    border-radius: 2px;
    transition: color var(--transition-fast), background var(--transition-fast), border-color var(--transition-fast);
}
.buy-tab:hover { border-color: var(--color-gold-dim); color: var(--color-gold); }
.buy-tab.active {
    background: var(--color-gold-glow);
    border-color: var(--color-gold-dim);
    color: var(--color-gold);
}

.buy-tab-content { display: none !important; }
.buy-tab-content.active { display: block !important; }

/* Cards — full-width grid, always stretches to container */
.buy-cards-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 12px;
}
.buy-cards-grid--3 { grid-template-columns: repeat(3, 1fr); }
.buy-cards-grid--2 { grid-template-columns: repeat(2, 1fr); }
.buy-cards-grid--1 { grid-template-columns: 1fr; max-width: 400px; margin: 0 auto; }
.buy-cards-grid--digital { grid-template-columns: repeat(4, 1fr); }

/* Card — black bg, seamless image fade */
.buy-card {
    background: #000;
    background-clip: padding-box;
    border: 1px solid transparent;
    border-radius: 3px;
    overflow: hidden;
    display: flex;
    flex-direction: column;
    transition: border-color var(--transition-fast), box-shadow var(--transition-fast);
}
.buy-card:hover {
    border-color: var(--color-gold); box-shadow: 0 4px 20px rgba(var(--color-gold-rgb),0.08);
}

/* Cover — gradient fades into black body */
.buy-card-cover {
    width: 100%;
    aspect-ratio: 16 / 9;
    overflow: hidden;
    position: relative;
    flex-shrink: 0;
}
.buy-card-cover img {
    width: 100%; height: 100%;
    object-fit: cover;
    transition: transform 0.6s ease;
}
.buy-card:hover .buy-card-cover img { transform: scale(1.03); }
.buy-card-cover::after {
    content: '';
    position: absolute;
    bottom: 0; left: 0; right: 0;
    height: 55%;
    background: linear-gradient(to top, #000 0%, rgba(0,0,0,0.6) 50%, transparent 100%);
    pointer-events: none;
}

/* Body — flush against cover gradient */
.buy-card-body {
    padding: 0.6rem 1.4rem 1.4rem;
    display: flex;
    flex-direction: column;
    flex: 1;
    background: #000;
    margin-top: -1px;
}

.buy-card-info { margin-bottom: 1rem; }

.buy-card-title {
    font-family: var(--font-display);
    font-size: 0.82rem;
    font-weight: 700;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--color-gold);
    line-height: 1.35;
    margin: 0 0 0.75rem;
    min-height: calc(0.82rem * 1.35 * 2);
}

/* Subtitle left, badge pushed right */
.buy-card-meta {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.buy-card-subtitle {
    font-family: var(--font-body);
    font-size: 0.72rem;
    color: var(--color-text-muted);
    line-height: 1.4;
    margin: 0;
}

.buy-card-badge {
    display: inline-block;
    font-family: var(--font-display);
    font-size: 0.52rem;
    font-weight: 700;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: rgba(255,255,255,0.35);
    background: rgba(255,255,255,0.04);
    border: 0.5px solid rgba(255,255,255,0.08);
    padding: calc(0.25em + 1px) 0.65em calc(0.25em - 1px);
    border-radius: 2px;
    white-space: nowrap;
    margin-left: auto;
}

.buy-card-sep {
    height: 1px;
    background: rgba(255,255,255,0.06);
    margin-bottom: 1rem;
}

/* Feature checklist */
.buy-card-desc {
    font-family: var(--font-body);
    font-size: 0.78rem;
    color: rgba(255,255,255,0.45);
    line-height: 1.65;
    margin: 0;
    flex: 1;
}
.buy-card-features {
    flex: 1;
}
.buy-card-feat {
    display: flex;
    align-items: flex-start;
    gap: 0.5rem;
    font-family: var(--font-body);
    font-size: 0.78rem;
    color: rgba(255,255,255,0.45);
    line-height: 1.5;
    margin-bottom: 0.55rem;
}
.buy-card-feat svg {
    width: 14px; height: 14px;
    fill: var(--color-gold);
    flex-shrink: 0;
    margin-top: 2px;
}

/* CTA label with flanking lines */
.buy-card-cta-label {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-top: 1.2rem;
    margin-bottom: 0.6rem;
}
.buy-card-cta-label::before,
.buy-card-cta-label::after {
    content: '';
    flex: 1;
    height: 1px;
    background: linear-gradient(90deg, transparent, rgba(255,255,255,0.12));
}
.buy-card-cta-label::after {
    background: linear-gradient(90deg, rgba(255,255,255,0.12), transparent);
}
.buy-card-cta-label span {
    font-family: var(--font-display);
    font-size: 0.62rem;
    font-weight: 700;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: rgba(255,255,255,0.4);
    white-space: nowrap;
}

/* Store buttons — fixed-height area so cards align regardless of button count */
.buy-card-stores {
    display: flex;
    flex-wrap: wrap;
    gap: 0.35rem;
    justify-content: center;
    align-content: flex-start;
    margin-top: 0.9rem;
    min-height: 78px; /* 2 rows of 36px + gap */
}
.buy-store-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 36px; height: 36px;
    border-radius: 2px;
    border-width: 0.5px;
    border-style: solid;
    transition: background var(--transition-fast), border-color var(--transition-fast);
    text-decoration: none;
    flex-shrink: 0;
}
.buy-store-btn svg  { width: 16px; height: 16px; display: block; }
.buy-store-btn img  { width: 16px; height: 16px; object-fit: contain; }

/* Smaller buttons in 4-column grids */
.buy-cards-grid:not(.buy-cards-grid--3):not(.buy-cards-grid--2):not(.buy-cards-grid--1) .buy-store-btn,
.buy-cards-grid--digital .buy-store-btn {
    width: 32px; height: 32px;
}
.buy-cards-grid:not(.buy-cards-grid--3):not(.buy-cards-grid--2):not(.buy-cards-grid--1) .buy-store-btn svg,
.buy-cards-grid--digital .buy-store-btn svg {
    width: 14px; height: 14px;
}
.buy-cards-grid:not(.buy-cards-grid--3):not(.buy-cards-grid--2):not(.buy-cards-grid--1) .buy-store-btn img,
.buy-cards-grid--digital .buy-store-btn img {
    width: 14px; height: 14px;
}
.buy-cards-grid:not(.buy-cards-grid--3):not(.buy-cards-grid--2):not(.buy-cards-grid--1) .buy-card-stores,
.buy-cards-grid--digital .buy-card-stores {
    min-height: 70px; /* 2 rows of 32px + gap */
}

/* Platform tints — at rest */
.buy-store-btn.store-steam   { background: rgba( 30, 90,160, 0.28); border-color: rgba(120,180,255,0.22); }
.buy-store-btn.store-gog     { background: rgba( 92, 31,153, 0.18); border-color: rgba(180,130,255,0.22); }
.buy-store-btn.store-epic    { background: rgba( 55, 55, 55, 0.22); border-color: rgba(255,255,255,0.12); }
.buy-store-btn.store-ps5     { background: rgba(  0, 48,135, 0.25); border-color: rgba(100,150,255,0.22); }
.buy-store-btn.store-xbox    { background: rgba( 16,124, 16, 0.20); border-color: rgba(120,210,120,0.22); }
.buy-store-btn.store-switch2 { background: rgba(230,  0, 18, 0.15); border-color: rgba(255,110,110,0.20); }
.buy-store-btn.store-humble  { background: rgba(204, 41, 41, 0.15); border-color: rgba(255,150,120,0.20); }
.buy-store-btn.store-fanatical { background: rgba(245,130, 31, 0.15); border-color: rgba(255,180,100,0.20); }
.buy-store-btn.store-amazon   { background: rgba(255,153,  0, 0.15); border-color: rgba(255,200,100,0.22); }

/* Platform tints — hover */
.buy-store-btn.store-steam:hover   { background: rgba( 30, 90,160, 0.55); border-color: rgba(120,180,255,0.45); }
.buy-store-btn.store-gog:hover     { background: rgba( 92, 31,153, 0.38); border-color: rgba(180,130,255,0.42); }
.buy-store-btn.store-epic:hover    { background: rgba( 55, 55, 55, 0.48); border-color: rgba(255,255,255,0.28); }
.buy-store-btn.store-ps5:hover     { background: rgba(  0, 48,135, 0.48); border-color: rgba(100,150,255,0.42); }
.buy-store-btn.store-xbox:hover    { background: rgba( 16,124, 16, 0.40); border-color: rgba(120,210,120,0.42); }
.buy-store-btn.store-switch2:hover { background: rgba(230,  0, 18, 0.32); border-color: rgba(255,110,110,0.40); }
.buy-store-btn.store-humble:hover  { background: rgba(204, 41, 41, 0.30); border-color: rgba(255,150,120,0.40); }
.buy-store-btn.store-fanatical:hover { background: rgba(245,130, 31, 0.30); border-color: rgba(255,180,100,0.40); }
.buy-store-btn.store-amazon:hover   { background: rgba(255,153,  0, 0.30); border-color: rgba(255,200,100,0.45); }


/* ============================================================
   SECTION: NEXT CHAPTER
   ============================================================
   Full-section cinematic layout. No card, no container.
   Desktop: two implicit halves via a positioned image + content.
     Left  — key art image, covers the left 55% of the section.
              A right-to-left gradient fades the image into black.
     Right — solid black panel, content aligned within it.
   Mobile: image stacked above content. Bottom of image fades
     to black, content sits on solid black below — same pattern
     as the inner section pages (page-the-game.php).

   DOM structure:
     .nc-bg        — absolute, inset 0 — holds the image
     .nc-bg img    — key art, object-fit cover, left half only
     .nc-gradient  — absolute overlay: transparent → #000 (desktop)
     .nc-logo      — absolute, bottom-left, independent
     .nc-content   — the actual right-side content column

   .nc-sub-label    — impactful status label e.g. "Coming 2026" / "Out Now"
   .nc-game-title   — large game title
   .nc-body         — description
   .nc-cta-row      — CTA buttons
   .nc-store-row    — store icon buttons (reuses .buy-store-btn)
   .nc-platforms    — platform pills
   .nc-platform-pill
   ============================================================ */
#section-next-chapter {
    position: relative;
    min-height: 560px;
    display: flex;
    align-items: stretch;
    overflow: hidden;
    isolation: isolate;
    background: #000;
}

/* Top gold separator line */
#section-next-chapter::before {
    content: '';
    position: absolute;
    top: 0; left: 0; right: 0;
    height: 1px;
    background: linear-gradient(90deg, transparent, var(--color-gold-dim), transparent);
    z-index: 10;
    pointer-events: none;
}
/* Bottom gold separator line */
#section-next-chapter::after {
    content: '';
    position: absolute;
    bottom: 0; left: 0; right: 0;
    height: 1px;
    background: linear-gradient(90deg, transparent, var(--color-gold-dim), transparent);
    z-index: 10;
    pointer-events: none;
}

/* ── Key art — left portion ────────────────────────────────── */
/* Image covers the left 55% of the section at natural crop.
   mask-image fades the right edge of the image itself to
   transparent — so it dissolves into the black section background
   with no hard pixel edge. The gradient then reinforces the
   dark-to-black transition across the full section width. */
.nc-bg {
    position: absolute;
    inset: 0;
    z-index: 0;
}
.nc-bg picture {
    position: absolute;
    top: 0; left: 0;
    width: 55%;
    height: 100%;
    display: block;
}
.nc-bg img {
    position: absolute;
    top: 0; left: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: left center;
    display: block;
    -webkit-mask-image: linear-gradient(
        to right,
        black 0%,
        black 55%,
        transparent 100%
    );
    mask-image: linear-gradient(
        to right,
        black 0%,
        black 55%,
        transparent 100%
    );
}

/* Gradient reinforces the dark atmosphere across the full section.
   With the image already fading via mask-image, this gradient
   only needs to darken the mid-zone and hold #000 on the right. */
.nc-gradient {
    position: absolute;
    inset: 0;
    background: linear-gradient(
        to right,
        transparent 0%,
        transparent 25%,
        rgba(0, 0, 0, 0.4) 45%,
        #000 65%
    );
    z-index: 1;
    pointer-events: none;
}

/* ── Game logo — bottom-left, independent of content ──────── */
.nc-logo {
    position: absolute;
    bottom: 2rem;
    left: 2rem;
    z-index: 5;
}
.nc-logo img {
    display: block;
    max-height: 75px;
    max-width: 200px;
    width: auto;
    height: auto;
    object-fit: contain;
    filter: drop-shadow(0 2px 10px rgba(0,0,0,0.7));
}

/* ── Content panel — right side ────────────────────────────── */
/* Pushed a little further right than centre — content sits
   comfortably in the solid black zone, away from the gradient. */
.nc-content {
    position: relative;
    z-index: 4;
    margin-left: 57%;
    width: 43%;
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 0;
    padding: 3.5rem 2.5rem 3.5rem 0;
    text-align: left;
    min-width: 0;
}

/* ── Eyebrow — small studio label ─────────────────────────── */
/* e.g. "From ROCKFISH Games" — small, muted gold */
.nc-eyebrow {
    font-size: 0.65rem;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--color-gold-dim, #a07020);
    margin: 0;
}

/* Override global centred alignment for section-title inside this section */
#section-next-chapter .section-title {
    text-align: left;
    font-size: clamp(0.9rem, 1.4vw, 1.1rem);
    letter-spacing: 0.18em;
    font-weight: 700;
    color: var(--color-text-muted);
    margin-top: 0.5rem;
    margin-bottom: 0;
}

/* ── Sub-label — equidistant between top group and game title ─ */
/* e.g. "Coming 2026" or "Out Now". Same margin top and bottom
   so it sits visually centred between the two groups. */
.nc-sub-label {
    display: flex;
    align-items: center;
    gap: 12px;
    font-family: var(--font-display);
    font-size: clamp(0.75rem, 1.2vw, 0.9rem);
    letter-spacing: 0.22em;
    text-transform: uppercase;
    color: var(--color-gold);
    margin-top: 1.6rem;
    margin-bottom: 0;
    font-weight: 400;
    justify-content: flex-start;
}
/* Line before the text */
.nc-sub-label::before {
    content: '';
    display: block;
    flex: 0 0 28px;
    height: 1px;
    background: var(--color-gold);
}
/* Line after the text — mirrors ::before */
.nc-sub-label::after {
    content: '';
    display: block;
    flex: 0 0 28px;
    height: 1px;
    background: var(--color-gold);
}

.nc-game-title {
    font-family: var(--font-display);
    font-size: clamp(1.8rem, 3vw, 3rem);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--color-text-primary);
    /* Same spacing as above sub-label — keeps it perfectly centred */
    margin-top: 1.6rem;
    margin-bottom: 0;
    line-height: 1.05;
    font-weight: 700;
}

.nc-body {
    font-size: 0.95rem;
    color: var(--color-text-muted);
    line-height: 1.75;
    margin-top: 1rem;
    margin-bottom: 0;
    max-width: 440px;
}

.nc-cta-row {
    display: flex;
    gap: 12px;
    flex-wrap: wrap;
    margin-top: 1.25rem;
}

/* Store buttons — reuses .buy-store-btn + .store-{key} tints.
   No extra CSS needed — platform colours already defined. */
.nc-store-row {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
}

.nc-platforms {
    display: flex;
    gap: 6px;
    flex-wrap: wrap;
    margin-top: 0.75rem;
}

.nc-platform-pill {
    font-size: 0.65rem;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--color-text-muted);
    border: 1px solid rgba(255, 255, 255, 0.25);
    padding: 3px 8px;
    border-radius: 3px;
}

/* ── Mobile — image above, content below ───────────────────── */
/* Mirrors the inner section page pattern (page-the-game.php):
   image fills a fixed-height block, gradient fades its bottom
   edge to black, then content sits on solid black below. */
@media (max-width: 768px) {
    #section-next-chapter {
        flex-direction: column;
        min-height: unset;
        align-items: stretch;
    }
    .nc-bg {
        position: relative;
        height: 260px;
        flex-shrink: 0;
    }
    .nc-bg picture {
        width: 100%;
        height: 100%;
    }
    .nc-bg img {
        width: 100%;
        height: 100%;
        object-position: center top;
        -webkit-mask-image: none;
        mask-image: none;
    }
    /* On mobile the gradient fades the bottom of the image to black.
       Starts at 90% so almost the full image is visible. */
    .nc-gradient {
        background: linear-gradient(
            to bottom,
            transparent 0%,
            transparent 90%,
            #000 100%
        );
    }
    .nc-logo {
        bottom: auto;
        top: 1rem;
        left: 1rem;
        transform: none;
    }
    .nc-logo img {
        max-height: 50px;
    }
    .nc-content {
        margin-left: 0;
        width: 100%;
        padding: 2rem 1.25rem 2.5rem;
        gap: 0.85rem;
    }
    #section-next-chapter .section-eyebrow,
    #section-next-chapter .section-title,
    .nc-eyebrow,
    .nc-sub-label,
    .nc-game-title,
    .nc-body {
        text-align: left;
    }
    .nc-body {
        max-width: 100%;
    }
}


/* ============================================================
   SECTION: COMMUNITY

   Each card has:
   - Background image or platform-coloured gradient
   - Platform icon (built-in SVG or custom PNG upload)
   - Platform name and subtitle
   - Link to the platform page

   Cards are hidden if their URL is left blank in the Customizer.
   The grid adjusts from 4 columns (desktop) → 4 columns (tablet)
   → 2 columns (mobile) in the responsive sections below.

   isolation: isolate creates a stacking context so the ::after
   atmospheric gradients don't interfere with card hover effects.
   ============================================================ */
#section-community {
    padding: var(--section-padding);
    background: var(--color-bg-section);
    position: relative;
    isolation: isolate;
}
#section-community::before {
    content: '';
    position: absolute;
    top: 0; left: 0; right: 0;
    height: 1px;
    background: linear-gradient(90deg, transparent, var(--color-gold-dim), transparent);
    z-index: 1;
}
/* Purple accent — bottom-right + top-left, matching About the Game intensity */
#section-community::after {
    content: '';
    position: absolute;
    inset: 0;
    background:
        radial-gradient(ellipse at 95% 85%, rgba(90,25,140,0.14) 0%, transparent 50%),
        radial-gradient(ellipse at 5%  15%, rgba(60,15,100,0.10) 0%, transparent 45%);
    pointer-events: none;
    z-index: 0;
}

/* 8-col portrait grid */
.community-grid {
    display: grid;
    grid-template-columns: repeat(8, 1fr);
    gap: 12px;
}

/* Card base — gradient baked via inline style */
.community-card {
    aspect-ratio: 3 / 4;
    border-radius: 4px;
    position: relative;
    overflow: hidden;
    display: block;
    text-decoration: none;
    transition: transform 0.2s ease;
}
a.community-card:hover {
    transform: translateY(-4px);
}

/* Hover frame — same pattern as .dlc-strip-frame */
.community-card__frame {
    position: absolute;
    inset: 0;
    border: 1px solid transparent;
    box-shadow: none;
    pointer-events: none;
    transition: border-color 0.2s ease, box-shadow 0.2s ease;
    z-index: 3;
    border-radius: 4px;
}
a.community-card:hover .community-card__frame {
    border-color: var(--color-gold);
    box-shadow: 0 4px 20px rgba(var(--color-gold-rgb),0.08);
}

/* Custom image override — covers gradient when set */
.community-card__bg {
    position: absolute;
    inset: 0;
    background-size: cover;
    background-position: center top;
    z-index: 0;
    transition: transform 0.4s ease;
}
a.community-card:hover .community-card__bg { transform: scale(1.04); }

/* Dark overlay applied only when a bg image is set — aids readability */
.community-card__img-overlay {
    position: absolute;
    inset: 0;
    background: rgba(0,0,0,0.45);
    z-index: 1;
}

/* Bottom-to-top gradient fade over image/gradient */
.community-card__fade {
    position: absolute;
    inset: 0;
    background: linear-gradient(
        to top,
        rgba(0,0,0,0.85) 0%,
        rgba(0,0,0,0.25) 50%,
        rgba(0,0,0,0.05) 100%
    );
    z-index: 1;
}

/* Content — centred vertically in lower 60% of card */
.community-card__content {
    position: absolute;
    bottom: 12%;
    left: 0; right: 0;
    padding: 0 8px;
    z-index: 2;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 5px;
}

/* Icon pill — dark semi-transparent circle, no coloured border */
.community-card__icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    border-radius: 50%;
    background: rgba(255,255,255,0.12);
    margin-bottom: 6px;
    transition: background 0.2s ease;
}
a.community-card:hover .community-card__icon {
    background: rgba(255,255,255,0.2);
}
.community-card__icon svg {
    width: 20px;
    height: 20px;
    fill: #ffffff;
}

/* Custom uploaded icon */
.community-card__icon--custom {
    background: rgba(255,255,255,0.12);
}
.community-card__icon--custom img {
    width: 20px;
    height: 20px;
    object-fit: contain;
}

.community-card__name {
    font-family: var(--font-display);
    font-size: 9px;
    font-weight: 700;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: #ffffff;
    white-space: nowrap;
    line-height: 1;
    margin-bottom: 4px;
}

.community-card__sub {
    font-family: var(--font-body);
    font-size: 10px;
    letter-spacing: 0.05em;
    color: rgba(255,255,255,0.5);
    white-space: nowrap;
    line-height: 1;
}

@media (prefers-reduced-motion: reduce) {
    .community-card,
    .community-card__bg { transition: none; }
}

/* Responsive — 2 rows of 4 below 1024px */
@media (max-width: 1024px) {
    .community-grid {
        grid-template-columns: repeat(4, 1fr);
        gap: 10px;
    }
    .community-card {
        aspect-ratio: 3 / 4;
    }
}
@media (max-width: 480px) {
    .community-grid {
        grid-template-columns: repeat(4, 1fr);
        gap: 6px;
    }
    .community-card__sub { display: none; }
    .community-card__icon {
        width: 32px;
        height: 32px;
    }
    .community-card__icon svg {
        width: 14px;
        height: 14px;
    }
    .community-card__name { font-size: 8px; }
}

/* ============================================================
   SECTION: NEWSLETTER
   ============================================================
   Dark "Deep Space" subscription block between Community and Footer.
   Dark background matching the site palette, gold top border,
   subtle gold diagonal texture, and a radial gold glow at the top.

   STRUCTURE:
   .nl-wrap           — full-width dark section container
   .nl-texture        — diagonal gold-tinted stripe overlay (CSS only)
   .nl-glow           — radial gold glow centred at top edge
   .nl-inner          — flex row: left (text) + right (form)
   .nl-left           — eyebrow, title, description, pills
   .nl-right          — label, input+button row, consent, status
   .nl-status         — inline feedback (success/error/info)

   COLOURS:
   Background:  #0d0e11 (var(--color-bg-section)) — matches site sections
   Top border:  gold at 40% opacity
   Eyebrow/dot: gold accent
   Title:       #f9f9f9 (light)
   Body text:   #888b9a (muted)
   Input bg:    #17191f (slightly lighter than bg — card level)
   Button:      gold fill, dark text
   ============================================================ */

#section-newsletter { padding: 0; }

/* Main dark wrapper — same depth as standard site sections */
.nl-wrap {
    position: relative;
    background: var(--color-bg-section);
    border-top: 1px solid rgba(var(--color-gold-rgb), 0.4);
    border-bottom: 1px solid rgba(var(--color-gold-rgb), 0.12);
    overflow: hidden;
    padding: 52px 0;
}

/* Diagonal stripe texture — very subtle gold tint over dark background */
.nl-texture {
    position: absolute;
    inset: 0;
    background-image: repeating-linear-gradient(
        -45deg,
        transparent,
        transparent 14px,
        rgba(var(--color-gold-rgb), 0.015) 14px,
        rgba(var(--color-gold-rgb), 0.015) 15px
    );
    pointer-events: none;
}

/* Radial gold glow — soft warm light from top-centre */
.nl-glow {
    position: absolute;
    top: -60px;
    left: 50%;
    transform: translateX(-50%);
    width: 600px;
    height: 200px;
    background: radial-gradient(ellipse, rgba(var(--color-gold-rgb), 0.12) 0%, transparent 70%);
    pointer-events: none;
}

/* Flex row: left content + right form */
.nl-inner {
    display: flex;
    align-items: center;
    gap: 64px;
    position: relative;
    z-index: 1; /* above .nl-texture and .nl-glow */
}

/* ── Left column ─────────────────────────────────────────── */
.nl-left { flex: 1; }

/* Eyebrow label with pulsing dot.
   line-height: 1 collapses the line box to the font size so align-items:center
   on the flex parent correctly centres the dot to the text cap-height. */
.nl-eyebrow {
    display: flex;
    align-items: center;
    gap: 8px;
    font-family: var(--font-display);
    font-size: 11px;
    font-weight: 400;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: rgba(var(--color-gold-rgb), 0.7);
    line-height: 1;
    margin-bottom: 12px;
}

/* Pulsing gold dot — ring animation matches archive "Latest News" dot. */
.nl-eyebrow-dot {
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: rgba(var(--color-gold-rgb), 0.9);
    flex-shrink: 0;
    box-shadow: 0 0 0 0 rgba(var(--color-gold-rgb), 0.4);
    animation: archive-dot-ring 2s ease-out infinite;
}
/* Respect the Customizer "animate dot" toggle */
.archive-no-pulse .nl-eyebrow-dot {
    animation: none;
    box-shadow: none;
}

.nl-title {
    font-family: var(--font-display);
    font-size: clamp(1.6rem, 2.5vw, 2.2rem);
    font-weight: 700;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--color-text-white);
    margin-bottom: 14px;
    line-height: 1.1;
}

.nl-desc {
    font-family: var(--font-body);
    font-size: 14px;
    color: var(--color-text-muted);
    line-height: 1.65;
    margin-bottom: 0;
}

/* Feature pills row at bottom of left column */
.nl-pills {
    display: flex;
    flex-wrap: wrap;
    gap: 6px 20px;
    margin-top: 28px;
}

.nl-pill {
    display: flex;
    align-items: center;
    gap: 6px;
    font-family: var(--font-display);
    font-size: 10px;
    letter-spacing: 0.15em;
    text-transform: uppercase;
    color: #40444f;
    line-height: 1; /* collapses line box so dot centres correctly */
}

.nl-pill-dot {
    width: 5px;
    height: 5px;
    border-radius: 50%;
    background: #40444f;
    flex-shrink: 0;
}

/* ── Right column ────────────────────────────────────────── */
.nl-right { flex: 0 0 380px; }

.nl-field-label {
    display: block;
    font-family: var(--font-display);
    font-size: 10px;
    font-weight: 400;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: rgba(var(--color-gold-rgb), 0.5);
    margin-bottom: 8px;
}

/* Input + button side by side */
.nl-form-row {
    display: flex;
    gap: 0;
}

.nl-input {
    flex: 1;
    height: 52px;
    background: var(--color-bg-card); /* slightly elevated above section bg */
    border: none;
    border-radius: 2px 0 0 2px;
    color: var(--color-text-muted);
    font-family: var(--font-body);
    font-size: 14px;
    padding: 0 18px;
    outline: none;
    transition: color var(--transition-fast);
}

.nl-input::placeholder { color: #2a2d35; }
.nl-input:focus {
    color: var(--color-text-primary);
    box-shadow: inset 0 0 0 1px rgba(var(--color-gold-rgb), 0.25);
}
/* Override the global focus-visible outline — the inset shadow is enough */
.nl-input:focus-visible { outline: none; }

/* Gold filled button — primary brand accent */
.nl-btn {
    height: 52px;
    background: var(--color-gold);
    color: #09090d;
    border: none;
    border-radius: 0 2px 2px 0;
    padding: 0 22px;
    font-family: var(--font-display);
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    white-space: nowrap;
    cursor: pointer;
    transition: background var(--transition-fast);
}

.nl-btn:hover { background: var(--color-gold-light); }
.nl-btn:disabled { opacity: 0.6; cursor: not-allowed; }

/* GDPR consent checkbox — only rendered when enabled in Customizer.
   Uses a custom-drawn checkbox:
   - Native <input> is visually hidden but stays accessible
   - .nl-consent-box is the visible square drawn with CSS
   - Checked state shows a gold checkmark via ::after pseudo-element */
.nl-consent {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    margin-top: 12px;
    font-family: var(--font-body);
    font-size: 12px;
    color: var(--color-text-muted);
    cursor: pointer;
    line-height: 1.4;
}

/* Hide the native input but keep it focusable/accessible */
.nl-consent-check {
    position: absolute;
    opacity: 0;
    width: 0;
    height: 0;
    pointer-events: none;
}

/* Custom checkbox box */
.nl-consent-box {
    flex-shrink: 0;
    width: 16px;
    height: 16px;
    margin-top: 1px;
    border: 1.5px solid rgba(var(--color-gold-rgb), 0.3);
    border-radius: 2px;
    background: rgba(var(--color-gold-rgb), 0.05);
    display: flex;
    align-items: center;
    justify-content: center;
    transition: background var(--transition-fast), border-color var(--transition-fast);
    position: relative;
}

/* Gold checkmark — hidden by default, shown when checked */
.nl-consent-box::after {
    content: '';
    display: block;
    width: 9px;
    height: 5px;
    border-left: 1.8px solid var(--color-gold);
    border-bottom: 1.8px solid var(--color-gold);
    transform: rotate(-45deg) translateY(-1px);
    opacity: 0;
    transition: opacity var(--transition-fast);
}

/* Checked state */
.nl-consent-check:checked ~ .nl-consent-box {
    background: rgba(var(--color-gold-rgb), 0.15);
    border-color: var(--color-gold);
}
.nl-consent-check:checked ~ .nl-consent-box::after { opacity: 1; }

/* Focus ring for keyboard accessibility */
.nl-consent-check:focus-visible ~ .nl-consent-box {
    outline: 2px solid rgba(0,0,0,0.5);
    outline-offset: 2px;
}

/* Inline status message — hidden until JS sets it */
.nl-status {
    margin-top: 10px;
    font-family: var(--font-body);
    font-size: 13px;
    min-height: 18px; /* prevents layout shift when message appears */
}

/* Status type colours — dark text on gold bg, high contrast */
.nl-status--success { color: #1a3a1a; }
.nl-status--error   { color: #5a0f0f; }
.nl-status--info    { color: rgba(0,0,0,0.6); }

/* ── Responsive ──────────────────────────────────────────── */
@media (max-width: 900px) {
    .nl-inner { gap: 40px; }
    .nl-right { flex: 0 0 300px; }
}

@media (max-width: 768px) {
    .nl-wrap { padding: 70px 0; }
    .nl-inner {
        flex-direction: column;
        gap: 32px;
        align-items: stretch;
    }
    .nl-right { flex: none; }
    .nl-pills { gap: 6px 14px; }
}

/* ============================================================
   FOOTER
   ============================================================
   Global footer shown on every page. Structured in two rows:

   ROW 1 (main footer):
   - Left:   Game logo (also acts as scroll-to-top button)
             + social icon row
             + store button row
   - Right:  Studio logo + copyright
             + age rating badges (PEGI, ESRB, USK, CERO)
             + Unreal Engine badge
             + legal links (Privacy, Cookies, Imprint)

   ROW 2 (legal bar):
   Full-width copyright + legal links on a slightly darker strip.

   BACKGROUND: A dark radial gradient at the top edge creates
   a subtle purple atmospheric glow, softening the transition
   from the last page section into the footer.
   The ::before pseudo-element adds a thin gold gradient line
   along the top border.

   AGE RATINGS: Four slots — PEGI, ESRB, USK (Germany), CERO
   (Japan). Each shows an uploaded official image or falls back
   to a text badge if no image is set. USK and CERO are hidden
   when both the text and image fields are blank.

   STORE BUTTONS: Icon-only buttons linking to storefronts.
   The row label ('Start Playing') can be hidden by clearing
   the label field in the Customizer.

   PRESS KIT LINK: Shown only when a Press page exists or a
   custom URL is entered in the Customizer.
   ============================================================ */
#site-footer {
    position: relative;
    background:
        radial-gradient(ellipse 100% 40% at 50% 0%, rgba(35,12,80,0.4) 0%, transparent 100%),
        var(--color-bg-deep);
}
#site-footer::before {
    content: '';
    display: block;
    height: 1px;
    background: linear-gradient(90deg, transparent 0%, var(--color-gold-dim) 50%, transparent 100%);
}
.footer-inner {
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 48px;
}

/* Follow label before social icons */
.footer-follow-label {
    font-family: var(--font-display);
    font-size: 0.52rem;
    font-weight: 700;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: rgba(255,255,255,0.25);
    white-space: nowrap;
}

/* ── Store row — full width, centred, blended ── */
.footer-store-row {
    position: relative;
    padding: 60px 48px 28px;
    text-align: center;
    overflow: hidden;
}
.footer-store-row-bg { display: none; } /* purple comes from footer bg gradient */
.footer-store-row-inner {
    position: relative;
    z-index: 1;
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: center;
    gap: 2rem;
    flex-wrap: wrap;
}
.footer-store-row-label {
    font-family: var(--font-display);
    font-size: clamp(1.2rem, 2.5vw, 1.9rem);
    font-weight: 700;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--color-text-primary);
}
.footer-store-row-icons {
    display: flex;
    gap: 0.5rem;
    align-items: center;
    flex-wrap: wrap;
    justify-content: center;
}
.footer-store-row-btn {
    width: 44px;
    height: 44px;
    border: 1px solid rgba(255,255,255,0.14);
    border-radius: 4px;
    display: flex;
    align-items: center;
    justify-content: center;
    text-decoration: none;
    transition: border-color var(--transition-fast), background var(--transition-fast);
}
.footer-store-row-btn img { width: 20px; height: 20px; object-fit: contain; }
.footer-store-row-btn svg { width: 20px; height: 20px; display: block; }
.footer-store-row-key {
    font-family: var(--font-display);
    font-size: 0.45rem; font-weight: 700;
    letter-spacing: 0.05em; color: rgba(255,255,255,0.55);
}
.footer-store-row-btn.store-steam    { background: rgba( 30, 90,160,0.28); border-color: rgba(120,180,255,0.22); }
.footer-store-row-btn.store-gog      { background: rgba( 92, 31,153,0.18); border-color: rgba(180,130,255,0.22); }
.footer-store-row-btn.store-epic     { background: rgba( 55, 55, 55,0.22); border-color: rgba(255,255,255,0.12); }
.footer-store-row-btn.store-ps       { background: rgba(  0, 48,135,0.25); border-color: rgba(100,150,255,0.22); }
.footer-store-row-btn.store-xbox     { background: rgba( 16,124, 16,0.20); border-color: rgba(120,210,120,0.22); }
.footer-store-row-btn.store-switch   { background: rgba(230,  0, 18,0.15); border-color: rgba(255,110,110,0.20); }
.footer-store-row-btn.store-humble   { background: rgba(204, 41, 41,0.15); border-color: rgba(255,150,120,0.20); }
.footer-store-row-btn.store-fanatical{ background: rgba(245,130, 31,0.15); border-color: rgba(255,180,100,0.20); }
.footer-store-row-btn.store-steam:hover    { background: rgba( 30, 90,160,0.55); border-color: rgba(120,180,255,0.45); }
.footer-store-row-btn.store-gog:hover      { background: rgba( 92, 31,153,0.38); border-color: rgba(180,130,255,0.42); }
.footer-store-row-btn.store-epic:hover     { background: rgba( 55, 55, 55,0.48); border-color: rgba(255,255,255,0.28); }
.footer-store-row-btn.store-ps:hover       { background: rgba(  0, 48,135,0.48); border-color: rgba(100,150,255,0.42); }
.footer-store-row-btn.store-xbox:hover     { background: rgba( 16,124, 16,0.40); border-color: rgba(120,210,120,0.42); }
.footer-store-row-btn.store-switch:hover   { background: rgba(230,  0, 18,0.32); border-color: rgba(255,110,110,0.40); }
.footer-store-row-btn.store-humble:hover   { background: rgba(204, 41, 41,0.30); border-color: rgba(255,150,120,0.40); }
.footer-store-row-btn.store-fanatical:hover{ background: rgba(245,130, 31,0.30); border-color: rgba(255,180,100,0.40); }

/* ── Top row: logos left · socials + press kit right ── */
.footer-top {
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 20px;
    padding: 48px 0;
}
.footer-logos {
    display: flex;
    align-items: center;
    gap: 16px;
    flex-shrink: 0;
}
.footer-logo-sep {
    width: 0.5px;
    height: 20px;
    background: rgba(255,255,255,0.12);
    flex-shrink: 0;
}
.footer-game-logo img {
    height: 44px;
    width: auto;
    display: block;
    flex-shrink: 0;
    object-fit: contain;
}
.footer-game-logo,
.footer-game-logo-text {
    background: none;
    border: none;
    padding: 0;
    cursor: pointer;
    transition: opacity 0.2s ease;
}
.footer-game-logo:hover,
.footer-game-logo-text:hover { opacity: 0.75; }
.footer-game-logo-text {
    font-family: var(--font-display);
    font-size: 0.92rem;
    font-weight: 700;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: var(--color-text-white);
    text-decoration: none;
}
.footer-game-logo-text span { color: var(--color-gold); }
.footer-studio-logo img {
    height: 36px;
    width: auto;
    display: block;
    flex-shrink: 0;
    object-fit: contain;
}
.footer-studio-text {
    font-family: var(--font-display);
    font-size: 0.58rem;
    font-weight: 700;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: rgba(255,255,255,0.7);
    text-decoration: none;
}

/* Social icons */
.footer-right {
    display: flex;
    align-items: center;
    gap: 16px;
}
.footer-press-link {
    font-family: var(--font-display);
    font-size: 0.55rem;
    font-weight: 700;
    letter-spacing: 0.18em;
    line-height: 1;
    text-transform: uppercase;
    color: rgba(255,255,255,0.55);
    text-decoration: none;
    border: 1px solid rgba(255,255,255,0.2);
    background: transparent;
    border-radius: 2px;
    padding: calc(10px + 1px) 16px calc(10px - 1px);
    white-space: nowrap;
    transition: background var(--transition-fast), border-color var(--transition-fast), color var(--transition-fast);
}
.footer-press-link:hover { border-color: rgba(255,255,255,0.45); color: rgba(255,255,255,0.9); }
.footer-right-sep {
    width: 0.5px;
    height: 20px;
    background: rgba(255,255,255,0.12);
    flex-shrink: 0;
}
.footer-right-btns {
    display: flex;
    align-items: center;
    gap: 8px;
}
.footer-socials {
    display: flex;
    gap: 6px;
    align-items: center;
}
.footer-social-icon {
    width: 38px;
    height: 38px;
    display: flex;
    align-items: center;
    justify-content: center;
    border: 0.5px solid rgba(255,255,255,0.15);
    border-radius: 2px;
    color: rgba(255,255,255,0.85);
    text-decoration: none;
    transition: color var(--transition-fast), border-color var(--transition-fast);
}
.footer-social-icon:hover {
    color: #fff;
    border-color: rgba(255,255,255,0.4);
}
.footer-social-icon svg {
    width: 17px;
    height: 17px;
    display: block;
}
.footer-social-icon img {
    width: 17px;
    height: 17px;
    object-fit: contain;
    filter: brightness(0) invert(1);
    opacity: 0.85;
}

/* Divider */
.footer-divider {
    height: 0.5px;
    background: rgba(255,255,255,0.07);
}

/* ── Bottom bar: ratings · links · copyright ── */
.footer-bottom {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1.5rem;
    padding: 28px 0 36px;
}
.footer-badges {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-shrink: 0;
}

/* All badges share the same 48px height — upload all logos at 96px tall (2× retina) */
.footer-rating-badge {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 2px;
    border: 1px solid rgba(255,255,255,0.2);
    border-radius: 2px;
    padding: 0 12px;
    height: 48px;
    min-width: 44px;
}
.footer-rating-label {
    font-family: var(--font-display);
    font-size: 0.48rem;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: rgba(255,255,255,0.35);
    line-height: 1;
}
.footer-rating-value {
    font-family: var(--font-display);
    font-size: 0.95rem;
    font-weight: 700;
    color: rgba(255,255,255,0.7);
    line-height: 1;
}
.footer-rating-img {
    height: 48px;
    width: auto;
    display: block;
    opacity: 0.8;
}
.footer-engine-badge {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    margin-left: 8px;
}
.footer-engine-badge img {
    height: 44px;
    width: auto;
    display: block;
    opacity: 0.65;
}
.footer-legal-links {
    display: flex;
    gap: 20px;
    flex-wrap: wrap;
    align-items: center;
}
.footer-legal-links a {
    font-family: var(--font-display);
    font-size: 0.55rem;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: rgba(255,255,255,0.3);
    text-decoration: none;
    transition: color var(--transition-fast);
}
.footer-legal-links a:hover { color: var(--color-gold); }
.footer-copyright {
    font-family: var(--font-display);
    font-size: 0.55rem;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: rgba(255,255,255,0.2);
    white-space: nowrap;
}

/* ── Responsive ── */
@media (max-width: 1024px) {
    .footer-inner { padding: 0 28px; }
    .footer-copyright { white-space: normal; }
}
@media (max-width: 768px) {
    .footer-inner { padding: 0 20px; }
    /* Logos centered */
    .footer-top { flex-direction: column; align-items: center; gap: 24px; padding: 32px 0 28px; }
    .footer-logos { justify-content: center; }
    /* Follow label on top, icons + buttons centered below */
    .footer-right { flex-direction: column; align-items: center; gap: 12px; }
    .footer-follow-label { text-align: center; }
    .footer-right-sep { display: none; }
    /* Badges and legal links both centered, stacked vertically */
    .footer-bottom { flex-direction: column; align-items: center; gap: 16px; padding: 24px 0 32px; }
    .footer-badges { flex-shrink: 0; justify-content: center; }
    .footer-legal-links { margin-left: 0; gap: 14px; justify-content: center; }
    .footer-copyright { width: 100%; text-align: center; white-space: normal; }
}

/* ============================================================
   IMAGE PLACEHOLDER HELPER
   ============================================================
   .img-placeholder is shown when a Customizer image field is
   empty. It fills the available space with the card background
   colour so the layout doesn't collapse. Managed in PHP
   templates — if no image URL, a placeholder div is output.
   ============================================================ */
.img-placeholder {
    background: var(--color-bg-card);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
    padding: 2rem;
    color: var(--color-text-muted);
    width: 100%;
    height: 100%;
}

/* ============================================================
   BACK TO TOP
   ============================================================
   A fixed 44×44px button in the bottom-right corner.
   Hidden by default (display: none), shown as display: flex
   when the .visible class is added by JS in main.js after the
   user scrolls down past the hero section.
   Clicking it smoothly scrolls to the top via scroll-behavior:
   smooth on <html> (set in the Reset section above).
   ============================================================ */
#back-to-top {
    position: fixed;
    bottom: 2rem; right: 2rem;
    z-index: 9999;
    width: 44px; height: 44px;
    background: var(--color-bg-card);
    border: 1px solid var(--color-border-bright);
    color: var(--color-gold);
    display: none;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    border-radius: 3px;
    transition: border-color var(--transition-fast), background var(--transition-fast);
}
#back-to-top.visible { display: flex; }
#back-to-top:hover {
    background: var(--color-gold-glow);
    border-color: var(--color-gold);
}

/* ============================================================
   SCROLL REVEAL
   ============================================================
   Elements with class .reveal start invisible and slightly
   shifted down (opacity: 0; transform: translateY(25px)).
   When they enter the viewport, JS in main.js adds .visible,
   triggering the transition to opacity: 1 and translateY(0).

   Delay classes (.reveal-delay-1/2/3) stagger the animation
   for groups of elements that enter view at the same time
   (e.g. a row of feature cards).

   The @media (prefers-reduced-motion) override in the
   responsive section disables these animations for users
   who have enabled reduced motion in their OS settings.
   ============================================================ */
/* Reveal animations disabled — elements show immediately.
   The .reveal class and JS observer are kept in place for easy re-enabling;
   overriding here is the least invasive way to turn them off. */
.reveal {
    opacity: 1;
    transform: none;
    transition: none;
}
.reveal.visible {
    opacity: 1;
    transform: none;
}
.reveal-delay-1,
.reveal-delay-2,
.reveal-delay-3 { transition-delay: 0s; }

/* ============================================================
   PAGE CONTENT — Generic WordPress pages
   ============================================================
   Used by page.php (the default WordPress page template) for
   content pages like Privacy Policy, Cookie Policy, Imprint, etc.

   .page-main    — outer wrapper, adds top padding equal to
                   header height so content doesn't go under
                   the fixed header
   .page-content — the inner content area with prose styles:
                   headings, links, lists, blockquotes, hr

   These styles make standard WordPress page content readable
   without any custom formatting from the Customizer.
   ============================================================ */
.page-main {
    padding-top: var(--header-height);
    min-height: 80vh;
    background: var(--color-bg-deep);
}
.page-content {
    padding: 5rem 0 6rem;
    color: var(--color-text-primary);
    font-size: 0.97rem;
    line-height: 1.85;
}
.page-content h2 {
    font-size: 1.2rem;
    font-weight: 700;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--color-gold);
    margin: 2.5rem 0 0.8rem;
    padding-bottom: 0.5rem;
    border-bottom: 1px solid var(--color-border);
}
.page-content h3 {
    font-size: 1rem;
    font-weight: 700;
    color: var(--color-gold);
    margin: 1.8rem 0 0.6rem;
}
.page-content a { color: var(--color-gold); text-decoration: underline; text-decoration-color: var(--color-gold-dim); }
.page-content a:hover { color: var(--color-gold-light); }
.page-content ul { list-style: disc; margin: 0 0 1.2rem 1.5rem; }
.page-content ol { list-style: decimal; margin: 0 0 1.2rem 1.5rem; }
.page-content li { margin-bottom: 0.4rem; }
.page-content strong { color: var(--color-text-white); font-weight: 700; }
.page-content blockquote {
    border-left: 3px solid var(--color-gold-dim);
    padding: 0.8rem 1.2rem;
    margin: 1.5rem 0;
    background: var(--color-bg-card);
    color: var(--color-text-muted);
    font-style: italic;
}
.page-content hr { border: 1px solid transparent; border-top: 1px solid var(--color-border); margin: 2rem 0; }

/* ============================================================
   404 PAGE
   ============================================================
   The "page not found" error page (404.php).
   All text and buttons are editable via Customizer section
   '404 — Error Page' (see functions.php section 11).

   .error-404-code  — giant ghost number (e.g. "404") displayed
                      at 15% opacity as a decorative background
                      element. It's position: absolute so the
                      content (.error-404-inner) overlaps it.
   .error-404-inner — actual content, z-index: 1 above the code

   The background image (if set) covers the full viewport.
   A dark overlay is applied in 404.php via inline style.
   ============================================================ */
.page-404 {
    min-height: calc(100vh - var(--header-height));
    margin-top: var(--header-height);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
    padding: 2rem;
    gap: 1.5rem;
}
.error-404-code {
    font-size: clamp(8rem, 25vw, 14rem);
    font-weight: 900;
    letter-spacing: 0.05em;
    color: var(--color-gold);
    opacity: 0.15;
    line-height: 1;
    margin: 0;
    font-family: var(--font-display);
    position: absolute;
}
.error-404-inner { position: relative; z-index: 1; }
.error-404-title {
    font-size: clamp(1.4rem, 3vw, 2rem);
    font-weight: 700;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--color-text-white);
    margin: 0 0 1rem;
}
.error-404-desc {
    font-size: 0.95rem;
    color: var(--color-text-muted);
    line-height: 1.8;
    max-width: 440px;
}

/* ============================================================
   RESPONSIVE — TABLET  (max-width: 1024px)
   ============================================================
   Adjustments for medium screens — tablets and small laptops.
   The site is designed desktop-first, so these rules override
   specific properties that don't translate well at 1024px.

   Key changes at tablet:
   - Container padding reduces to 28px
   - Buy section cards: 2-column grid instead of 4
   - Footer: 2-column grid, logo area spans full width
   - Hero title and subtitle scale down
   - News grid: 2 columns
   - Inner page content: reduced padding
   - Community grid: 4 columns (2 rows of 4)
   - Press screenshots: 2 columns
   ============================================================ */
@media (max-width: 1024px) {
    :root { --container-padding: 0 28px; }
    /* Features grid stays 2-col on tablet — it's already 2-col */
    .buy-cards-grid,
    .buy-cards-grid--digital { grid-template-columns: repeat(2, 1fr); }
    .footer-inner { grid-template-columns: 1fr 1fr; }
    .footer-logo-area { grid-column: 1 / -1; order: -1; }
    .footer-contact { text-align: left; }

    /* ── Tablet-specific fixes ───────────────────────────── */
    /* Hero: scale down title and subtitle */
    .hero-title { font-size: clamp(2rem, 5vw, 3.5rem); }
    .hero-subtitle { font-size: clamp(0.75rem, 1.5vw, 0.95rem); }

    /* News: 2 cols on tablet */
    .news-grid { grid-template-columns: repeat(2, 1fr); }

    /* Inner pages: reduce content padding */
    .inner-section-content { padding: 80px 32px; }

    /* Press info section: stack on tablet */
    .press-info-section { grid-template-columns: 1fr 1fr; gap: 2rem; }
    .press-info-col:last-child { grid-column: 1 / -1; }

    /* Community grid: 4 cols (2 rows of 4) */
    .community-grid { grid-template-columns: repeat(4, 1fr); }

    /* Press shots grid: 2 cols on tablet */
    .press-shots-grid { grid-template-columns: repeat(2, 1fr); }
    .press-logos-grid { grid-template-columns: repeat(3, 1fr); }
}

/* At intermediate widths (769–1200px) reduce nav gap and letter-spacing
   so all items stay on one line without wrapping. */
@media (max-width: 1200px) {
    #main-nav ul { gap: 1.4rem; }
    #main-nav ul li > a { letter-spacing: 0.12em; }
}
@media (max-width: 1024px) {
    #main-nav ul { gap: 0.9rem; }
    #main-nav ul li > a { font-size: 0.7rem; letter-spacing: 0.07em; }
    .nav-badge { letter-spacing: 0.07em; font-size: 0.5rem; }
}

/* ============================================================
   RESPONSIVE — MOBILE  (max-width: 768px)
   ============================================================
   Adjustments for phones and small tablets.

   Key changes at mobile:
   - Section padding reduces to 70px (via :root override)
   - Desktop nav (#main-nav) is hidden; hamburger (#menu-toggle) shows
   - Buy section cards: single column
   - Community grid: 2 columns
   - Hero: video hidden, static image shown instead
   - Most grids collapse to 1 or 2 columns
   - Inner page sections stack vertically
   - DLC page: image/text sections stack vertically

   Inner page styles (archive, single post, DLC, extras, press,
   FAQ, legal) are also inside this @media block because they
   only needed mobile overrides — their desktop styles are
   written as regular rules earlier in the file.

   prefers-reduced-motion override is also here — disables
   scroll reveal animations and section divider animation for
   users who have enabled reduced motion in their OS settings.
   ============================================================ */
@media (max-width: 768px) {
    :root {
        --section-padding: 70px 0;
        --container-padding: 0 20px;
        --header-height: 66px;
    }

    /* Hide desktop nav, show burger */
    #main-nav,
    .nav-cta { display: none; }
    #menu-toggle { display: flex; }

    .news-grid { grid-template-columns: repeat(2, 1fr); }
    .news-grid { grid-template-columns: 1fr; }
    .news-card--featured { grid-row: auto; min-height: 260px; }
    .features-grid { grid-template-columns: 1fr; gap: 1.5rem; }
    .features-grid .feature-item:nth-child(3),
    .features-grid .feature-item:nth-child(4) {
        padding-top: 0;
        border-top: none;
    }
    .feature-number { font-size: 2rem; padding-top: 1px; }
    .main-cards { grid-template-columns: 1fr; }
    /* On mobile the fixed 16/9 aspect-ratio clips content when text wraps;
       drop it and use a min-height so the card still looks substantial */
    .main-card {
        aspect-ratio: unset;
        min-height: 260px;
    }
    .main-card-content { padding: 1.5rem; }
    .community-grid { grid-template-columns: repeat(4, 1fr); }
    .buy-cards-grid,
    .buy-cards-grid--3,
    .buy-cards-grid--2,
    .buy-cards-grid--1,
    .buy-cards-grid--digital { grid-template-columns: 1fr; max-width: 100%; }

    .hero-cta { flex-direction: column; align-items: center; }

    .footer-inner { grid-template-columns: 1fr; text-align: center; }
    .footer-studio { text-align: center; }
    .footer-contact { text-align: center; }
}

@media (max-width: 600px) {
    .news-grid { grid-template-columns: 1fr; }
    .community-grid { grid-template-columns: repeat(4, 1fr); }
}


/* ════════════════════════════════════════════════════════════════

.inner-page {
    background: var(--bg-deep);
}

/* ── Page banner ───────────────────────────────────────────────── */
.inner-banner {
    position: relative;
    min-height: 420px;
    display: flex;
    align-items: flex-end;
    background: var(--bg-section) center/cover no-repeat;
    overflow: hidden;
}

.inner-banner-overlay {
    position: absolute;
    inset: 0;
    background: linear-gradient(
        to top,
        rgba(0,0,0,0.92) 0%,
        rgba(0,0,0,0.55) 50%,
        rgba(0,0,0,0.25) 100%
    );
    z-index: 1;
}

.inner-banner-content {
    position: relative;
    z-index: 2;
    width: 100%;
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 40px 60px;
}

.inner-banner-title {
    font-family: var(--font-display);
    font-size: clamp(2.5rem, 6vw, 4.5rem);
    font-weight: 700;
    letter-spacing: 0.15em;
    text-transform: uppercase;
    color: var(--color-text-primary);
    line-height: 1;
    margin-bottom: 0.75rem;
}

.inner-banner-subtitle {
    font-family: var(--font-body);
    font-size: 1rem;
    color: var(--color-text-muted);
    letter-spacing: 0.04em;
    max-width: 520px;
}

/* ── Content sections ──────────────────────────────────────────── */
.inner-section {
    position: relative;
    min-height: 85vh;
    display: flex;
    align-items: center;
    background-color: var(--bg-section);
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
    overflow: hidden;
}

/* Fading gold line at top of every section — same as homepage */
.inner-section::before {
    content: '';
    position: absolute;
    top: 0; left: 0; right: 0;
    height: 1px;
    background: linear-gradient(90deg, transparent, var(--color-gold-dim), transparent);
    z-index: 10;
}

.inner-section--alt {
    background-color: var(--bg-alt);
    background-position: 65% center;
}

/* Mobile image block — hidden on desktop, shown above text on mobile */
.inner-section-mobile-img {
    display: none;
}

/* Overlay: solid black left → lighter on right */
.inner-section-overlay {
    position: absolute;
    inset: 0;
    z-index: 1;
    background: linear-gradient(
        to right,
        rgba(0,0,0,0.96) 0%,
        rgba(0,0,0,0.90) 20%,
        rgba(0,0,0,0.55) 48%,
        rgba(0,0,0,0.0)  65%,
        transparent      100%
    );
}

.inner-section-content {
    position: relative;
    z-index: 2;
    width: 100%;
    max-width: 1200px;
    margin: 0 auto;
    padding: 100px 40px;
}

/* ── Option E — HUD bracket frame ─────────────────────────────── */
/* display:block + fixed max-width = identical frame width every section */
.bracket-frame {
    position: relative;
    display: block;
    width: 100%;
    max-width: 480px;
    padding: 2rem;
    box-sizing: border-box;
}

/* Corner brackets */
.bracket-frame::before,
.bracket-frame::after {
    content: '';
    position: absolute;
    width: 20px;
    height: 20px;
    border-color: #ffffff;
    border-style: solid;
    opacity: 0.5;
}

.bracket-frame::before { top: 0; left: 0; border-width: 2px 0 0 2px; }
.bracket-frame::after  { bottom: 0; right: 0; border-width: 0 2px 2px 0; }

.bracket-corner { display: block; position: absolute; width: 20px; height: 20px; border-color: #ffffff; border-style: solid; opacity: 0.2; }
.bracket-corner--tr { top: 0; right: 0; border-width: 2px 2px 0 0; }
.bracket-corner--bl { bottom: 0; left: 0; border-width: 0 0 2px 2px; }

/* ── HUD label ─────────────────────────────────────────────────── */
.hud-label {
    display: block;
    margin-bottom: 0.8rem;
}

.hud-dot { display: none; }

.hud-text {
    font-family: var(--font-display);
    font-size: 0.6rem;
    font-weight: 700;
    letter-spacing: 0.24em;
    text-transform: uppercase;
    color: var(--color-gold);
}

/* ── Section title ─────────────────────────────────────────────── */
.inner-section-title {
    font-family: var(--font-display);
    font-size: clamp(1.3rem, 2.2vw, 1.85rem);
    font-weight: 700;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--color-text-primary);
    line-height: 1.15;
}

/* ── Divider between title and body ───────────────────────────── */
.hud-divider {
    width: 100%;
    height: 1px;
    background: linear-gradient(
        90deg,
        rgba(var(--color-gold-rgb),0.4),
        rgba(var(--color-gold-rgb),0.05)
    );
    margin: 1.1rem 0;
}

/* ── Body text ─────────────────────────────────────────────────── */
.inner-section-body {
    font-family: var(--font-body);
    font-size: 0.95rem;
    color: #ffffff;
    line-height: 1.8;
}

.inner-section-body p { margin-bottom: 0.75rem; }
.inner-section-body p:last-child { margin-bottom: 0; }

/* ── Section counter (decorative, bottom-right) ────────────────── */
.inner-section-counter {
    position: absolute;
    bottom: 2rem;
    right: 2.5rem;
    z-index: 2;
    font-family: var(--font-display);
    font-size: 0.6rem;
    font-weight: 700;
    letter-spacing: 0.2em;
    color: rgba(var(--color-gold-rgb),0.28);
}

/* ── Scroll hint (first section only) ─────────────────────────── */
.inner-scroll-hint {
    position: absolute;
    bottom: 2.2rem;
    left: 50%;
    transform: translateX(-50%);
    z-index: 2;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 6px;
    animation: innerScrollBounce 2s ease-in-out infinite;
    pointer-events: none;
}

.inner-scroll-hint-label {
    font-family: var(--font-display);
    font-size: 0.52rem;
    font-weight: 700;
    letter-spacing: 0.22em;
    text-transform: uppercase;
    color: rgba(255,255,255,0.45);
}

.inner-scroll-hint-arrow {
    width: 16px;
    height: 16px;
    border-right: 1.5px solid rgba(255,255,255,0.45);
    border-bottom: 1.5px solid rgba(255,255,255,0.45);
    transform: rotate(45deg);
}

@keyframes innerScrollBounce {
    0%, 100% { transform: translateX(-50%) translateY(0); opacity: 0.6; }
    50%       { transform: translateX(-50%) translateY(6px); opacity: 1; }
}

/* ── Classic Editor content block ─────────────────────────────── */
.inner-editor-content {
    padding: 80px 40px;
    color: var(--color-text-muted);
    font-family: var(--font-body);
    font-size: 1rem;
    line-height: 1.8;
    max-width: 800px;
    margin: 0 auto;
}

.inner-editor-content h2,
.inner-editor-content h3 {
    font-family: var(--font-display);
    color: var(--color-text-primary);
    letter-spacing: 0.1em;
    text-transform: uppercase;
    margin-bottom: 0.75rem;
}

/* ── Section divider before CTA ───────────────────────────────── */
/* Section divider reused before CTA — add vertical breathing room */
.inner-page .section-divider {
    padding: 2rem 40px;
    background: var(--bg-section);
}

/* ── Buy CTA block ─────────────────────────────────────────────── */

.inner-buy-cta {
    position: relative;
    padding: 0 40px;
    text-align: center;
    background: var(--color-bg-alt);
    border-top: 1px solid rgba(255,255,255,0.06);
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 80px;
}

.inner-buy-cta::before { display: none; }
.inner-buy-cta-bg { display: none; }

.inner-buy-nav {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0;
}

.inner-buy-cta-content {
    z-index: 1;
    max-width: 800px;
    width: 100%;
}

.inner-buy-cta-label { display: none; }

.inner-buy-cta-title {
    font-family: var(--font-display);
    font-size: clamp(1.4rem, 2.8vw, 2.2rem);
    font-weight: 700;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--color-text-primary);
    margin-bottom: 1.5rem;
}

.inner-buy-cta-sub { display: none; }

/* Store buttons — square, same as buy section */
.inner-cta-stores {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 0.5rem;
    margin-bottom: 2.5rem;
}

/* Back link with animated arrow */
.inner-buy-back {
    display: inline-flex;
    align-items: center;
    gap: 0.4em;
    font-family: var(--font-display);
    font-size: 0.65rem;
    font-weight: 700;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: rgba(var(--color-gold-rgb),0.55);
    text-decoration: none;
    transition: color 0.2s ease;
}

.inner-buy-back:hover {
    color: var(--color-gold);
}

.inner-buy-back .arrow-icon {
    display: inline-block;
    transition: transform 0.25s ease;
}

.inner-buy-back:hover .arrow-icon {
    transform: translateX(-4px);
}

.inner-buy-nav-sep {
    width: 0.5px;
    height: 16px;
    background: rgba(var(--color-gold-rgb),0.25);
    margin: 0 1.5rem;
    flex-shrink: 0;
}

.inner-buy-forward {
    display: inline-flex;
    align-items: center;
    gap: 0.4em;
    font-family: var(--font-display);
    font-size: 0.65rem;
    font-weight: 700;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: rgba(var(--color-gold-rgb),0.55);
    text-decoration: none;
    transition: color 0.2s ease;
}
.inner-buy-forward:hover { color: var(--color-gold); }
.inner-buy-forward .arrow-icon {
    display: inline-block;
    transition: transform 0.25s ease;
}
.inner-buy-forward:hover .arrow-icon { transform: translateX(4px); }

/* ── Responsive ────────────────────────────────────────────────── */
@media (max-width: 768px) {
    .inner-banner { min-height: 280px; }
    .inner-banner-content { padding: 0 20px 40px; }

    .inner-section {
        min-height: auto;
        background-image: none !important;
        flex-direction: column;
        align-items: stretch;
    }

    .inner-section-mobile-img {
        display: block;
        width: 100%;
        aspect-ratio: 16 / 9;
        background-size: cover;
        background-position: center;
        background-repeat: no-repeat;
        flex-shrink: 0;
    }

    .inner-section-overlay {
        display: none;
    }

    .inner-section-content { padding: 70px 20px; }

    .bracket-frame {
        max-width: 100%;
        padding: 1.5rem 1.25rem;
    }

    .inner-section-counter { display: none; }

    .inner-scroll-hint { display: none; }

    .inner-buy-cta { padding: 50px 20px; }
}

/* ════════════════════════════════════════════════════════════════
   THE GAME PAGE — In-Game Screenshots Section
   Full-screen section matching the inner-section rhythm.
   Text header row on top (label, title, divider, optional body +
   prev/next arrows), 16:9 carousel below.
   Each slide is 62% wide so the next slide peeks into view.
   Auto-advances every 5s. Zoom icon bottom-right like homepage carousel.
   ════════════════════════════════════════════════════════════════ */

/* Section shell — dark purple atmosphere matching homepage sections */
.inner-screenshots-section {
    position: relative;
    /* Deep purple-tinted dark bg — mirrors homepage section atmosphere */
    background: linear-gradient(
        160deg,
        rgba(var(--color-purple-deep-rgb), 0.18) 0%,
        var(--color-bg-deep) 60%
    ),
    var(--color-bg-section);
    overflow: hidden;
}

/* Subtle top-edge gold line — same as .inner-section::before */
.inner-screenshots-section::before {
    content: '';
    position: absolute;
    top: 0; left: 0; right: 0;
    height: 1px;
    background: linear-gradient(90deg, transparent, var(--color-gold-dim), transparent);
    z-index: 10;
}

/* Content wrapper */
.inner-screenshots-content {
    position: relative;
    z-index: 2;
    padding: 72px 64px 64px;
    max-width: 1200px;
    margin: 0 auto;
}

/* Header row: text left (wider), nav arrows right */
.inner-screenshots-header {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    margin-bottom: 28px;
    gap: 48px; /* more breathing room for body text */
}

/* Text block — wider max-width for body text */
.inner-screenshots-text {
    flex: 1;
}

.inner-screenshots-body {
    font-size: 0.95rem;
    color: var(--color-text-muted);
    line-height: 1.75;
    max-width: 680px; /* wider than before */
    margin-top: 12px;
}

/* Prev/next nav buttons */
.inner-screenshots-nav {
    display: flex;
    gap: 6px;
    flex-shrink: 0;
    padding-bottom: 4px;
}

.inner-ss-btn {
    width: 36px;
    height: 36px;
    border: 1px solid rgba(200, 146, 42, 0.25);
    background: transparent;
    display: flex;
    align-items: center;
    justify-content: center;
    color: rgba(200, 146, 42, 0.55);
    cursor: pointer;
    transition: border-color 0.2s ease, color 0.2s ease;
}

.inner-ss-btn:hover {
    border-color: rgba(200, 146, 42, 0.75);
    color: rgba(200, 146, 42, 1);
}

/* Carousel track wrapper */
.inner-ss-carousel-wrap {
    overflow: hidden;
    width: 100%;
}

.inner-ss-track {
    display: flex;
    gap: 6px;
    transition: transform 0.45s cubic-bezier(0.4, 0, 0.2, 1);
    will-change: transform;
}

/* Each slide: 62% wide so next slide peeks.
   --ss-slide-w is read by the inline JS goTo() function via
   getComputedStyle so the translateX calculation always matches
   the actual rendered slide width, including on mobile. */
.inner-ss-slide {
    flex: 0 0 calc(var(--ss-slide-w, 62%) - 3px);
    position: relative;
    overflow: hidden;
    aspect-ratio: 16 / 9;
}

.inner-ss-slide img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

/* Zoom button — full-cover overlay with centered icon, matching Press/Media page pattern */
.inner-ss-zoom {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    background: transparent;
    border: none;
    display: flex;
    align-items: center;
    justify-content: center;
    color: rgba(255, 255, 255, 0.85);
    cursor: pointer;
    opacity: 0;
    transition: opacity 0.2s ease, background 0.2s ease;
}

.inner-ss-slide:hover .inner-ss-zoom {
    opacity: 1;
    background: rgba(0, 0, 0, 0.4);
}

/* Footer: dots left, count right */
.inner-ss-footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-top: 14px;
}

.inner-ss-dots {
    display: flex;
    gap: 6px;
    align-items: center;
}

.inner-ss-dot {
    width: 16px;
    height: 2px;
    background: rgba(200, 146, 42, 0.2);
    border: none;
    cursor: pointer;
    padding: 0;
    transition: background 0.2s ease, width 0.2s ease;
}

.inner-ss-dot.active {
    background: rgba(200, 146, 42, 0.8);
    width: 24px;
}

.inner-ss-count {
    font-size: 0.7rem;
    letter-spacing: 0.12em;
    color: rgba(200, 146, 42, 0.4);
    font-family: var(--font-display);
}

/* Mobile */
@media (max-width: 768px) {
    .inner-screenshots-content { padding: 48px 20px 40px; }
    .inner-ss-slide { --ss-slide-w: 88%; }
    .inner-screenshots-header { flex-direction: column; align-items: flex-start; gap: 16px; }
    .inner-screenshots-nav { align-self: flex-end; }
    .inner-screenshots-body { max-width: 100%; }
}

/* ════════════════════════════════════════════════════════════════
   STORY PAGE — Factions Block
   ════════════════════════════════════════════════════════════════
   A standalone block on page-the-story.php that appears between
   story sections 2 and 3. Displays 4 faction cards in a 2×2 grid
   (desktop) or stacked vertically (mobile).

   Each faction card has: icon image, name heading, description,
   and an optional link. All content is Customizer-editable
   (see functions.php Faction Block section in panel 09).
   ════════════════════════════════════════════════════════════════ */

.story-factions-block {
    position: relative;
    background: var(--color-bg-deep);
}

/* Fading gold separator — matches inner-section::before */
.story-factions-block::before {
    content: '';
    position: absolute;
    top: 0; left: 0; right: 0;
    height: 1px;
    background: linear-gradient(90deg, transparent, rgba(var(--color-gold-rgb),0.22), transparent);
    z-index: 1;
}

.sfb-inner {
    max-width: 1200px;
    margin: 0 auto;
    padding: 4rem 40px;
}

.sfb-header {
    margin-bottom: 1.8rem;
    text-align: center;
}

.sfb-title {
    font-family: var(--font-display);
    font-size: 0.9rem;
    font-weight: 700;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--color-text-primary);
}

.sfb-num {
    font-family: var(--font-display);
    font-size: 0.78rem;
    color: rgba(var(--color-gold-rgb),0.5);
    letter-spacing: 0.12em;
    margin-right: 0.5em;
    vertical-align: middle;
}

.sfb-desc {
    font-family: var(--font-body);
    font-size: 0.85rem;
    color: var(--color-text-muted);
    text-align: center;
    max-width: 600px;
    margin: 0 auto 2.5rem;
    line-height: 1.75;
}

/* 2×2 grid */
.sfb-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 1px;
    background: rgba(255,255,255,0.06);
}

.sfb-faction {
    display: flex;
    align-items: center;
    gap: 1.2rem;
    padding: 1.6rem 1.8rem;
    background: var(--color-bg-deep);
    text-decoration: none;
    position: relative;
    transition: background 0.2s ease;
}

.sfb-faction::after {
    content: '↓';
    position: absolute;
    bottom: 0.85rem;
    right: 1.1rem;
    font-size: 0.65rem;
    color: transparent;
    transition: color 0.2s ease;
}

.sfb-faction:hover {
    background: rgba(var(--color-gold-rgb),0.05);
}

.sfb-faction:hover::after {
    color: rgba(var(--color-gold-rgb),0.6);
}

.sfb-faction:hover .sfb-icon {
    border-color: rgba(var(--color-gold-rgb),0.5);
}

/* Icon circle */
.sfb-icon {
    width: 54px;
    height: 54px;
    border-radius: 50%;
    border: 1px solid rgba(255,255,255,0.18);
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    overflow: hidden;
    transition: border-color 0.2s ease;
}

.sfb-icon img {
    width: 32px;
    height: 32px;
    object-fit: contain;
    filter: brightness(0) invert(1);
    opacity: 0.75;
}

.sfb-icon--placeholder {
    background: rgba(255,255,255,0.04);
}

/* Text */
.sfb-name {
    font-family: var(--font-display);
    font-size: 0.78rem;
    font-weight: 700;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--color-gold);
    margin-bottom: 0.35rem;
}

.sfb-text {
    font-family: var(--font-body);
    font-size: 0.88rem;
    color: rgba(255,255,255,0.6);
    line-height: 1.65;
}

/* ── Back link ──────────────────────────────────────────────── */
.press-back-section { padding: 2rem 0 !important; text-align: center; }
.press-back-sep {
    height: 1px;
    background: linear-gradient(90deg, transparent, rgba(var(--color-gold-rgb),0.15), transparent);
    margin-bottom: 2rem;
}

/* Mobile */
@media (max-width: 768px) {
    .sfb-inner { padding: 3rem 20px; }
    .sfb-grid { grid-template-columns: 1fr; }
    .sfb-faction::after { display: none; }
}

/* ════════════════════════════════════════════════════════════════
   ARCHIVE PAGE — News list (archive.php)
   ════════════════════════════════════════════════════════════════
   The full news/blog archive page — lists all published posts.
   Accessible via the "View all news" link from the homepage.

   Features:
   - Page title bar with optional background image
   - Card grid matching the homepage news card style
   - Animated pulsing dot on the latest post (disabled by the
     .archive-no-pulse body class from Customizer)
   - Pagination at the bottom (standard WordPress pagination)

   The header is always solid (not transparent) on this page
   because there's no hero image to overlap — controlled via
   the .single-post body class rule in the Header section.
   ════════════════════════════════════════════════════════════════ */

.archive-page {
    background: var(--color-bg-deep);
    min-height: 100vh;
}

/* ── Banner ────────────────────────────────────────────────────── */
.archive-banner {
    position: relative;
    min-height: 280px;
    display: flex;
    align-items: flex-end;
    background: var(--color-bg-section) center/cover no-repeat;
    overflow: hidden;
}

.archive-banner-overlay {
    position: absolute;
    inset: 0;
    background: linear-gradient(to top,
        rgba(0,0,0,0.92) 0%,
        rgba(0,0,0,0.5)  50%,
        rgba(0,0,0,0.2)  100%
    );
}

.archive-banner-content {
    position: relative;
    z-index: 1;
    width: 100%;
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 40px 48px;
}

.archive-banner-eyebrow {
    font-family: var(--font-display);
    font-size: 0.6rem;
    font-weight: 700;
    letter-spacing: 0.25em;
    text-transform: uppercase;
    color: var(--color-gold);
    margin-bottom: 0.5rem;
}

.archive-banner-title {
    font-family: var(--font-display);
    font-size: clamp(2.5rem, 5vw, 4rem);
    font-weight: 700;
    letter-spacing: 0.15em;
    text-transform: uppercase;
    color: var(--color-text-primary);
    line-height: 1;
    margin-bottom: 0.5rem;
}

.archive-banner-sub {
    font-family: var(--font-body);
    font-size: 0.9rem;
    color: var(--color-text-muted);
}

/* ── Wrap ──────────────────────────────────────────────────────── */
.archive-wrap {
    max-width: 1200px;
    margin: 0 auto;
    padding: 70px 40px 80px;
    display: flex;
    flex-direction: column;
    gap: 3rem;
}

/* Space between rows */
.archive-rows {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.archive-featured {
    display: flex;
    align-items: flex-end;
    position: relative;
    width: 100%;
    height: 320px;
    border-radius: 3px;
    overflow: hidden;
    background: var(--color-bg-card);
    text-decoration: none;
    transition: border-color 0.2s ease, box-shadow 0.2s ease;
}
/* Background image on ::before so it can be scaled independently */
.archive-featured::before {
    content: '';
    position: absolute;
    inset: 0;
    background: inherit;
    background-size: cover;
    background-position: center;
    transition: transform 0.5s ease;
    z-index: 0;
}
.archive-featured:hover::before {
    transform: scale(1.04);
}

/* Gold frame on hover via inset box-shadow */
.archive-featured::after {
    content: '';
    position: absolute;
    inset: 0;
    border: 1px solid transparent;
    border-radius: 3px;
    pointer-events: none;
    z-index: 3;
    transition: border-color 0.2s ease;
}

.archive-featured:hover::after {
    border-color: var(--color-gold);
}

.archive-featured:hover {
    box-shadow: 0 4px 20px rgba(var(--color-gold-rgb),0.08);
}

/* Stronger overlay — covers bottom 75% for badge readability */
.archive-featured-overlay {
    position: absolute;
    inset: 0;
    z-index: 1;
    background: linear-gradient(to top,
        rgba(0,0,0,0.92) 0%,
        rgba(0,0,0,0.75) 25%,
        rgba(0,0,0,0.45) 50%,
        rgba(0,0,0,0.12) 75%,
        transparent      100%
    );
}

.archive-featured-content {
    position: relative;
    z-index: 2;
    padding: 2.5rem;
    max-width: 900px;
}

.archive-featured-title {
    font-family: var(--font-display);
    font-size: clamp(1.4rem, 2.5vw, 2rem);
    font-weight: 700;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--color-text-primary);
    line-height: 1.2;
    margin: 0.5rem 0;
    transition: color 0.2s ease;
}

/* Title stays white on hover for featured post */
.archive-featured:hover .archive-featured-title {
    color: var(--color-text-primary);
}

.archive-featured-meta {
    font-family: var(--font-display);
    font-size: 0.6rem;
    letter-spacing: 0.15em;
    text-transform: uppercase;
    color: rgba(255,255,255,0.4);
}

/* Date + Read More on same line for featured */
.archive-featured-footer {
    display: flex;
    align-items: center;
    gap: 1.5rem;
    margin-top: 0.75rem;
}


/* ── Archive: Latest News badge on featured post ────────────── */
.archive-featured-badges {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    margin-bottom: 0.5rem;
}
/* Override to add border, flex layout for dot+text, and gold colour */
.archive-latest-badge {
    display: inline-flex !important;
    align-items: center;
    gap: 6px;
    color: rgba(255,255,255,0.9);
    border: 1px solid rgba(var(--color-gold-rgb),0.35);
    background: transparent;
    padding-top: 2px;
}
/* Dot: a simple SVG circle — no pseudo overflow issues */
.archive-live-dot {
    display: inline-block;
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: rgba(var(--color-gold-rgb),0.9);
    flex-shrink: 0;
    box-shadow: 0 0 0 0 rgba(var(--color-gold-rgb),0.4);
    animation: archive-dot-ring 2s ease-out infinite;
}
@keyframes archive-dot-ring {
    0%   { box-shadow: 0 0 0 0 rgba(var(--color-gold-rgb),0.4); }
    70%  { box-shadow: 0 0 0 5px rgba(var(--color-gold-rgb),0); }
    100% { box-shadow: 0 0 0 0 rgba(var(--color-gold-rgb),0); }
}
.archive-no-pulse .archive-live-dot {
    animation: none;
    box-shadow: none;
}
/* ── Timeline month groups ─────────────────────────────────────── */
#archiveRows {
    display: flex;
    flex-direction: column;
    gap: 3rem;
}

.archive-month-group {
    display: flex;
    gap: 0;
    align-items: stretch; /* rail stretches full height of cards */
}

/* Left rail */
/* Month on top, year below */
.archive-month-label {
    font-family: var(--font-display);
    font-size: 0.62rem;
    font-weight: 700;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: rgba(255,255,255,0.75);
    text-align: center;
    line-height: 1.4;
    white-space: pre-line;
    margin-bottom: 16px;
}
.archive-month-dot {
    width: 8px;
    height: 8px;
    background: var(--color-gold);
    transform: rotate(45deg);
    flex-shrink: 0;
    margin-bottom: 8px;
}

/* Longer gold line — fills full height of the group */
.archive-month-line {
    width: 1px;
    flex: 1;
    min-height: 40px;
    background: linear-gradient(to bottom, rgba(var(--color-gold-rgb),0.35), rgba(var(--color-gold-rgb),0.04));
    margin-top: 5px;
}

/* Card grid — slightly smaller */
.archive-card-grid {
    flex: 1;
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 14px;
    align-items: stretch;
}

.archive-card {
    border-radius: 3px;
    overflow: hidden;
    text-decoration: none;
    position: relative;
    transition: border-color 0.2s ease, box-shadow 0.2s ease;
    display: flex;
    flex-direction: column;
}

.archive-card::after {
    content: '';
    position: absolute;
    inset: 0;
    border: 1px solid transparent;
    border-radius: 3px;
    pointer-events: none;
    z-index: 3;
    transition: border-color 0.2s ease;
}

.archive-card:hover::after {
    border-color: var(--color-gold);
}

.archive-card:hover {
    box-shadow: 0 0 16px rgba(var(--color-gold-rgb),0.08);
}

.archive-card-img {
    height: 160px;
    background: var(--color-bg-card) center/cover no-repeat;
    opacity: 0.85;
    transition: opacity 0.3s ease;
    flex-shrink: 0;
}

/* Left rail — add right margin for breathing room from cards */
.archive-month-rail {
    display: flex;
    flex-direction: column;
    align-items: center;
    width: 72px;
    flex-shrink: 0;
    padding-top: 2px;
    margin-right: 20px;
}

.archive-card-img--empty {
    background: var(--color-bg-card);
}

.archive-card:hover .archive-card-img { opacity: 1; }

.archive-card-body {
    flex: 1; /* fills remaining height so all cards stretch equally */
    padding: 0.8rem;
    background: var(--color-bg-section);
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
}

.archive-card-title {
    font-family: var(--font-display);
    font-size: 0.82rem;
    font-weight: 700;
    letter-spacing: 0.07em;
    text-transform: uppercase;
    color: var(--color-text-primary);
    line-height: 1.3;
    flex: 1; /* pushes footer to bottom regardless of title length */
}

.archive-card:hover .archive-card-title { color: var(--color-gold); }

/* ── Infinite scroll spinner ───────────────────────────────────── */
#archiveLoadMore {
    display: flex;
    justify-content: center;
    padding: 3rem 0;
}

.archive-spinner {
    display: flex;
    gap: 6px;
    align-items: center;
}

.archive-spinner span {
    width: 6px;
    height: 6px;
    background: var(--color-gold);
    border-radius: 50%;
    opacity: 0.4;
    animation: archivePulse 1.2s ease-in-out infinite;
}

.archive-spinner span:nth-child(2) { animation-delay: 0.2s; }
.archive-spinner span:nth-child(3) { animation-delay: 0.4s; }

@keyframes archivePulse {
    0%, 100% { opacity: 0.2; transform: scale(0.8); }
    50%       { opacity: 1;   transform: scale(1.1); }
}

.archive-empty {
    text-align: center;
    padding: 6rem 0;
    font-family: var(--font-body);
    color: var(--color-text-muted);
}

/* ════════════════════════════════════════════════════════════════
   SINGLE POST (single.php)
   ════════════════════════════════════════════════════════════════
   Individual blog post pages. The header is always solid on
   single posts (.single-post #site-header rule in Header section).

   Layout:
   - Full-width featured image hero at top
   - Content column (max ~760px, centred)
   - Post meta: date, reading time, optional author
   - Body prose: paragraphs, headings, images, quotes
   - oEmbed wrapper (.es2-embed-wrap) makes YouTube responsive

   The author display is controlled by the 'blog_show_author'
   Customizer checkbox (Site Settings → Section Visibility).

   Reading time is calculated by es2_reading_time() in
   functions.php at 200 words per minute, minimum 1 min.
   ════════════════════════════════════════════════════════════════ */

.single-post {
    background: var(--color-bg-deep);
}

/* ── Hero ──────────────────────────────────────────────────────── */
.single-hero {
    position: relative;
    min-height: 45vh;
    display: flex;
    align-items: flex-end;
    background: var(--color-bg-section) center/cover no-repeat;
    overflow: hidden;
}

/* Stronger overlay — matches homepage hero */
.single-hero-overlay {
    position: absolute;
    inset: 0;
    background: linear-gradient(
        180deg,
        rgba(var(--color-bg-deep-rgb),0.35)  0%,
        rgba(var(--color-bg-deep-rgb),0.15) 25%,
        rgba(var(--color-bg-deep-rgb),0.65) 60%,
        rgba(var(--color-bg-deep-rgb),0.95) 85%,
        rgba(var(--color-bg-deep-rgb),1.0)  100%
    );
}

/* Shared container — hero, meta strip, article all align on same column */
.single-hero-content,
.single-meta-inner,
.single-article {
    width: 100%;
    max-width: 900px;
    margin-left: auto;
    margin-right: auto;
    padding-left: 40px;
    padding-right: 40px;
}

.single-hero-content {
    position: relative;
    z-index: 1;
    padding-bottom: 2.5rem;
    padding-top: 2rem;
}

.single-title {
    font-family: var(--font-display);
    font-size: clamp(1.5rem, 3vw, 2.4rem);
    font-weight: 700;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--color-text-primary);
    line-height: 1.15;
    margin-top: 0.6rem;
    text-shadow: 0 2px 12px rgba(0,0,0,0.8), 0 1px 3px rgba(0,0,0,0.9);
}

/* ── Separator between hero and meta strip ─────────────────────── */
.single-hero + .single-sep-bar {
    height: 1px;
    background: linear-gradient(90deg, transparent, var(--color-gold-dim), transparent);
}

/* ── Meta strip ────────────────────────────────────────────────── */
.single-meta-strip {
    background: var(--color-bg-alt);
    border-bottom: 1px solid rgba(255,255,255,0.05);
}

.single-meta-inner {
    display: flex;
    align-items: center;
    padding-top: 0.95rem;
    padding-bottom: 0.75rem;
    flex-wrap: wrap;
    gap: 0.4rem;
}

.single-meta-item {
    font-family: var(--font-display);
    font-size: 0.6rem;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: rgba(255,255,255,0.4);
}

.single-meta-dot {
    display: inline-block;
    width: 3px;
    height: 3px;
    background: rgba(255,255,255,0.25);
    border-radius: 50%;
    margin: 0 0.4rem;
    vertical-align: middle;
    font-size: 0;
    overflow: hidden;
}

.single-back-link {
    margin-left: auto;
    font-family: var(--font-display);
    font-size: 0.6rem;
    font-weight: 700;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: rgba(var(--color-gold-rgb),0.6);
    text-decoration: none;
    transition: color 0.2s ease;
    display: inline-flex;
    align-items: center;
    gap: 0.4em;
}

.single-back-link:hover { color: var(--color-gold); }

.single-back-link .arrow-icon {
    display: inline-block;
    transition: transform 0.25s ease;
}

.single-back-link:hover .arrow-icon {
    transform: translateX(-4px);
}

/* ── Article ───────────────────────────────────────────────────── */
.single-article {
    padding-top: 2.5rem;
    padding-bottom: 2rem;
}

/* ── Content (Classic Editor output) ───────────────────────────── */
.single-content {
    font-family: var(--font-body);
    font-size: 1.1rem;
    color: rgba(255,255,255,0.78);
    line-height: 1.85;
    letter-spacing: normal;
}

.single-content p     { margin-bottom: 1.4rem; }
.single-content p:last-child { margin-bottom: 0; }

.single-content h2,
.single-content h3 {
    font-family: var(--font-display);
    font-weight: 700;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--color-text-primary);
    margin: 2.5rem 0 1.25rem;
    padding-left: 0.75rem;
    border-left: 2px solid var(--color-gold);
}

.single-content h2 { font-size: 1.15rem; }
.single-content h3 { font-size: 1rem; }

/* Links — gold, no underline, opens new tab handled via JS */
.single-content a {
    color: var(--color-gold);
    text-decoration: none;
    transition: opacity 0.2s ease;
}

.single-content a:hover { opacity: 0.75; }

/* Images — don't change size when caption added */
.single-content img,
.single-content video {
    width: 100%;
    height: auto;
    border-radius: 3px;
    margin: 1.5rem 0 0;
    display: block;
}

/* iframe (YouTube etc) — let WP handle sizing naturally */
.single-content iframe {
    display: block;
    margin: 1.5rem 0;
    border-radius: 3px;
}

/* Figure: caption doesn't affect image dimensions */
.single-content figure {
    margin: 1.5rem 0;
    display: block;
    width: 100% !important;
    max-width: 100% !important;
}

.single-content figure img {
    margin: 0;
    width: 100%;
    height: auto;
    display: block;
}

.single-content figcaption {
    font-size: 0.75rem;
    color: rgba(255,255,255,0.35);
    text-align: center;
    margin-top: 0.5rem;
    font-style: italic;
    font-family: var(--font-body);
}

/* WordPress embed blocks — force full content width */
.single-content .wp-block-embed,
.single-content .wp-block-embed__wrapper,
.single-content .wp-block-embed-youtube,
.single-content .wp-block-embed-vimeo,
.single-content .es2-embed-wrap,
.single-content .embed-youtube,
.single-content .embed-vimeo {
    width: 100% !important;
    max-width: 100% !important;
    margin: 1.5rem 0;
    display: block;
}

/* All iframes inside content — 16:9 full width */
.single-content iframe,
.single-content .wp-block-embed__wrapper iframe,
.single-content .es2-embed-wrap iframe,
.single-content .embed-youtube iframe,
.single-content .embed-vimeo iframe {
    display: block;
    width: 100% !important;
    max-width: 100% !important;
    min-height: 0;
    height: auto;
    aspect-ratio: 16 / 9;
    border-radius: 3px;
    margin: 0;
}

.single-content ul,
.single-content ol {
    padding-left: 1.5rem;
    margin-bottom: 1.4rem;
}

.single-content ul {
    list-style: none;
    padding-left: 1.2rem;
}

.single-content ul li {
    position: relative;
    padding-left: 1.2rem;
}

.single-content ul li::before {
    content: '';
    position: absolute;
    left: 0;
    top: calc(0.85em - 2px);
    width: 4px;
    height: 4px;
    background: rgba(255,255,255,0.7);
    border-radius: 50%;
}

.single-content ol li::marker {
    color: rgba(255,255,255,0.7);
}

.single-content li { margin-bottom: 0; }

.single-content blockquote {
    border-left: 2px solid var(--color-gold-dim);
    padding: 0.5rem 0 0.5rem 1.25rem;
    margin: 1.5rem 0;
    color: rgba(255,255,255,0.5);
    font-style: italic;
}

.single-content hr {
    border: 1px solid transparent;
    border-top: 1px solid rgba(255,255,255,0.08);
    margin: 2rem 0;
}

/* ── Tags ──────────────────────────────────────────────────────── */
.single-tags {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
    margin-top: 2.5rem;
    padding-top: 1.5rem;
    border-top: 1px solid rgba(255,255,255,0.06);
}

.single-tag {
    font-family: var(--font-display);
    font-size: 0.58rem;
    font-weight: 700;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: rgba(255,255,255,0.4);
    border: 1px solid rgba(255,255,255,0.1);
    padding: 0.25em 0.7em;
    border-radius: 2px;
}

/* ── Prev / Next navigation ────────────────────────────────────── */
.single-post-nav {
    border-top: 1px solid rgba(255,255,255,0.06);
    background: var(--color-bg-alt);
}

.single-post-nav-inner {
    max-width: 900px;
    margin: 0 auto;
    padding: 1.5rem 40px;
    display: flex;
    justify-content: space-between;
    gap: 2rem;
}

.single-nav-link {
    display: flex;
    flex-direction: column;
    gap: 0.3rem;
    text-decoration: none;
    max-width: 45%;
}

.single-nav-link--next {
    text-align: right;
    align-items: flex-end;
}

.single-nav-dir {
    font-family: var(--font-display);
    font-size: 0.58rem;
    font-weight: 700;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: rgba(var(--color-gold-rgb),0.55);
    transition: color 0.2s ease;
    display: inline-flex;
    align-items: center;
    gap: 0.4em;
}

.single-nav-link:hover .single-nav-dir { color: var(--color-gold); }

/* Animate arrows */
.single-nav-link--prev .nav-arrow { display: inline-block; transition: transform 0.25s ease; }
.single-nav-link--prev:hover .nav-arrow { transform: translateX(-4px); }
.single-nav-link--next .nav-arrow { display: inline-block; transition: transform 0.25s ease; }
.single-nav-link--next:hover .nav-arrow { transform: translateX(4px); }

.single-nav-title {
    font-family: var(--font-display);
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: rgba(255,255,255,0.5);
    line-height: 1.3;
    transition: color 0.2s ease;
}

.single-nav-link:hover .single-nav-title { color: var(--color-text-primary); }

/* ── Archive responsive ────────────────────────────────────────── */
@media (max-width: 768px) {
    .archive-wrap { padding: 80px 20px 60px; gap: 2.5rem; }
    .archive-banner-content { padding: 0 20px 36px; }
    .archive-featured { height: 280px; }
    .archive-featured-content { padding: 1.5rem; }
    .archive-row { flex-direction: column; }
    .archive-row-img { width: 100%; height: 180px; }
    .archive-row-body { padding: 1rem; }
    .archive-card-grid { gap: 14px; }
}

/* ── Single responsive ─────────────────────────────────────────── */
@media (max-width: 768px) {
    .single-hero { min-height: 35vh; }
    .single-hero-content,
    .single-meta-inner,
    .single-article { padding-left: 20px; padding-right: 20px; }
    .single-post-nav-inner { padding: 1.2rem 20px; }
}

/* ── Shared row footer (used by featured + cards) ──────────────── */
.archive-row-footer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-top: 0.3rem;
}

.archive-row-meta {
    font-family: var(--font-display);
    font-size: 0.56rem;
    letter-spacing: 0.15em;
    text-transform: uppercase;
    color: rgba(255,255,255,0.3);
}

.archive-row-read-more {
    font-family: var(--font-display);
    font-size: 0.56rem;
    font-weight: 700;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: rgba(136,139,154,0.45);
    display: inline-flex;
    align-items: center;
    gap: 0.4em;
    transition: color 0.2s ease;
}

.archive-featured:hover .archive-row-read-more,
.archive-card:hover .archive-row-read-more {
    color: var(--color-text-muted);
}

.archive-row-read-more .arrow-icon {
    display: inline-block;
    transition: transform 0.25s ease;
}

.archive-featured:hover .archive-row-read-more .arrow-icon,
.archive-card:hover .archive-row-read-more .arrow-icon {
    transform: translateX(4px);
}

/* ── Back link ──────────────────────────────────────────────── */
.press-back-section { padding: 2rem 0 !important; text-align: center; }
.press-back-sep {
    height: 1px;
    background: linear-gradient(90deg, transparent, rgba(var(--color-gold-rgb),0.15), transparent);
    margin-bottom: 2rem;
}

/* Mobile */
@media (max-width: 768px) {
    .archive-month-group { flex-direction: column; gap: 16px; }
    .archive-month-rail {
        flex-direction: row;
        width: 100%;
        align-items: center;
        gap: 10px;
        padding: 0 0 10px;
        margin-right: 0;
    }
    .archive-month-label {
        white-space: nowrap;
        margin-bottom: 0;
    }
    .archive-month-dot { display: flex; margin-bottom: 0; }
    .archive-month-line {
        flex: 1;
        min-height: 0;
        height: 1px;
        width: auto;
        background: linear-gradient(to right, rgba(var(--color-gold-rgb),0.35), rgba(var(--color-gold-rgb),0.04));
        margin-top: 0;
    }
    .archive-card-grid { grid-template-columns: 1fr; }
}

/* ════════════════════════════════════════════════════════════════
   DLC PAGE (page-dlc.php)
   ════════════════════════════════════════════════════════════════
   The DLC page template is shared by all DLC pages. Each page
   selects which Customizer panel (Slot 1, 2, or 3) to read from
   via the 'dlc_slot' post meta field set in the page editor
   (see functions.php section 8 — DLC Slot Meta Box).

   Page structure:
   1. Hero        — full-screen bg, logo, title, tagline, CTAs,
                    scores, platform pills, scroll indicator
   2. Content     — description section + feature bullet points,
                    each with its own background image
   3. Media       — 4 video thumbnails + 8 screenshot grid
                    (lightbox on click for both)
   4. Buy         — store button row (same platforms as homepage)
   5. Navigation  — Back link + Next CTA button

   The .dlc-lightbox is a full-screen overlay with arrow nav
   for browsing screenshots without leaving the page.
   ════════════════════════════════════════════════════════════════ */

.dlc-page { background: var(--color-bg-deep); min-height: 100vh; }

/* ── Hero ───────────────────────────────────────────────────────── */
.dlc-hero {
    position: relative;
    height: 100vh;
    min-height: 600px;
    display: flex;
    align-items: center;
    justify-content: center;
    text-align: center;
    overflow: hidden;
    padding-top: var(--header-height);
    padding-bottom: 8vh;
}

.dlc-hero-bg {
    position: absolute;
    inset: 0;
    background: var(--color-bg-section) center/cover no-repeat;
}

.dlc-hero-video {
    position: absolute;
    inset: 0;
    width: 100%; height: 100%;
    object-fit: cover;
    opacity: 0.55;
    z-index: 0;
}

.dlc-hero-overlay {
    position: absolute;
    inset: 0;
    background: linear-gradient(
        to bottom,
        rgba(0,0,0,0.2) 0%,
        rgba(0,0,0,0.05) 40%,
        rgba(0,0,0,0.6) 80%,
        var(--color-bg-deep) 100%
    );
    z-index: 1;
}

.dlc-hero-content {
    position: relative;
    z-index: 3;
    max-width: 820px;
    padding: 0 40px;
    animation: heroFadeIn 1.2s ease both;
}

.dlc-hero-eyebrow {
    font-family: var(--font-display);
    font-size: 0.6rem;
    font-weight: 700;
    letter-spacing: 0.25em;
    text-transform: uppercase;
    color: var(--color-gold);
    display: block;
    margin-bottom: 1rem;
}

.dlc-hero-logo {
    margin: 0 auto 1.5rem;
    max-width: 600px;
}
.dlc-hero-logo img {
    width: 100%; height: auto;
    filter: drop-shadow(0 0 30px rgba(var(--color-gold-rgb),0.35));
}

.dlc-hero-title {
    font-family: var(--font-display);
    font-size: clamp(2rem, 5vw, 3.5rem);
    font-weight: 700;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--color-text-primary);
    line-height: 1.1;
    margin-bottom: 1.2rem;
}

.dlc-hero-tagline {
    font-family: var(--font-display);
    font-size: 0.75rem;
    font-weight: 400;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: var(--color-text-muted);
    margin-bottom: 2rem;
}

.dlc-hero-ctas {
    display: flex;
    gap: 1rem;
    justify-content: center;
    flex-wrap: wrap;
    margin-bottom: 2.5rem;
}

.dlc-hero-platforms {
    margin-top: 1.5rem;
    text-align: center;
}
.dlc-hero-plat-label {
    font-family: var(--font-display);
    font-size: 0.55rem;
    font-weight: 700;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: rgba(255,255,255,0.25);
    margin-bottom: 0.55rem;
}
.dlc-hero-plat-row {
    display: flex;
    flex-wrap: wrap;
    gap: 5px;
    align-items: center;
    justify-content: center;
}

/* ── Shared section inner ─────────────────────────────────────────── */
.dlc-section-inner {
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 48px;
}

/* ── Description ─────────────────────────────────────────────────── */
.dlc-description-section {
    padding: var(--section-padding);
    position: relative;
    background:
        radial-gradient(ellipse at 15% 50%, rgba(60,15,100,0.18) 0%, transparent 60%),
        radial-gradient(ellipse at 85% 20%, rgba(40,10,80,0.12) 0%, transparent 50%);
}
.dlc-description-section::before {
    content: '';
    position: absolute;
    top: 0; left: 0; right: 0;
    height: 1px;
    background: linear-gradient(90deg, transparent, var(--color-gold-dim), transparent);
}
.dlc-content-body {
    font-size: 1rem;
    color: rgba(255,255,255,0.6);
    line-height: 1.85;
}
.dlc-content-body p { margin-bottom: 1.1em; }
.dlc-content-body p:last-child { margin-bottom: 0; }

/* ── Shared section titles and separator ─────────────────────────── */
.dlc-section-title {
    font-family: var(--font-display);
    font-size: clamp(1rem, 2vw, 1.4rem);
    font-weight: 700;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--color-text-primary);
    margin-bottom: 0.8rem;
}
.dlc-section-sep {
    height: 1px;
    background: linear-gradient(90deg, rgba(var(--color-gold-rgb),0.35), transparent);
    margin-bottom: 1.8rem;
}

/* ── Bullets section — reuses inner-section structure ───────────── */
/* .inner-section and .inner-section-overlay already defined above  */
.dlc-bullets-section {
    background-color: var(--color-bg-alt);
    background-position: 65% center;
}
/* Align bracket-frame left edge with dlc-section-inner content */
.dlc-bullets-section .inner-section-content {
    max-width: 1200px;
}

/* Numbered bullet list inside bracket frame */
.dlc-bullets {
    list-style: none;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 0.6rem;
    margin-top: 0.5rem;
}
.dlc-bullet {
    display: flex;
    align-items: baseline;
    gap: 0.85rem;
    line-height: 1.55;
}
.dlc-bullet-num {
    font-family: var(--font-display);
    font-size: 0.75rem;
    font-weight: 700;
    color: rgba(var(--color-gold-rgb),0.4);
    letter-spacing: 0.08em;
    flex-shrink: 0;
    min-width: 1.6rem;
    text-align: right;
}
.dlc-bullet-text {
    font-size: 0.88rem;
    color: rgba(255,255,255,0.75);
    line-height: 1.55;
}

/* ── Gallery section ─────────────────────────────────────────────── */
.dlc-gallery-section {
    padding: var(--section-padding);
    position: relative;
}
.dlc-gallery-section::before {
    content: '';
    position: absolute;
    top: 0; left: 0; right: 0;
    height: 1px;
    background: linear-gradient(90deg, transparent, var(--color-gold-dim), transparent);
}

.dlc-gallery-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 8px;
}



.dlc-media-item {
    position: relative;
    aspect-ratio: 16 / 9;
    background: var(--color-bg-card) center/cover no-repeat;
    background-clip: padding-box;
    border-radius: 3px;
    overflow: hidden;
    border: 1px solid transparent;
    transition: border-color 0.2s ease, box-shadow 0.2s ease;
}
.dlc-media-item:hover {
    border-color: var(--color-gold);
    box-shadow: 0 4px 20px rgba(var(--color-gold-rgb),0.08);
}

.dlc-media-play {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(0,0,0,0.3);
    transition: background 0.2s ease;
}
.dlc-media-play:hover { background: rgba(0,0,0,0.5); }

.dlc-play-icon {
    width: 36px;
    height: 36px;
    border-radius: 50%;
    border: 1.5px solid rgba(255,255,255,0.7);
    display: flex;
    align-items: center;
    justify-content: center;
}
.dlc-play-icon::after {
    content: '';
    border-left: 11px solid rgba(255,255,255,0.9);
    border-top: 7px solid transparent;
    border-bottom: 7px solid transparent;
    margin-left: 3px;
}

/* ── Back link ──────────────────────────────────────────────── */
.press-back-section { padding: 2rem 0 !important; text-align: center; }
.press-back-sep {
    height: 1px;
    background: linear-gradient(90deg, transparent, rgba(var(--color-gold-rgb),0.15), transparent);
    margin-bottom: 2rem;
}

/* Mobile */
@media (max-width: 768px) {
    .dlc-section-inner { padding: 0 20px; }
    .dlc-bullets { grid-template-columns: 1fr; }
    .dlc-gallery-grid { grid-template-columns: repeat(2, 1fr); }
}

/* ── DLC section bg overlay ────────────────────────────────────── */
.dlc-description-section,
.dlc-bullets-section,
.dlc-gallery-section {
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
}
.dlc-section-bg-overlay {
    position: absolute;
    inset: 0;
    background: rgba(var(--color-bg-deep-rgb),0.78);
    pointer-events: none;
    z-index: 0;
}
.dlc-description-section,
.dlc-bullets-section,
.dlc-gallery-section { position: relative; }
.dlc-description-section .dlc-section-inner,
.dlc-bullets-section .dlc-section-inner,
.dlc-gallery-section .dlc-section-inner { position: relative; z-index: 1; }

/* ── Media trigger button ──────────────────────────────────────── */
.dlc-media-trigger {
    position: absolute;
    inset: 0;
    width: 100%; height: 100%;
    background: transparent;
    border: none;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    opacity: 0;
    transition: opacity 0.2s ease, background 0.2s ease;
}
.dlc-media-item:hover .dlc-media-trigger,
.press-keyart-item:hover .dlc-media-trigger {
    opacity: 1;
    background: rgba(0,0,0,0.4);
}
.dlc-media-item--video .dlc-media-trigger { opacity: 1; background: rgba(0,0,0,0.25); }
.dlc-media-item--video:hover .dlc-media-trigger { background: rgba(0,0,0,0.5); }

.dlc-media-item--image img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
    display: block;
    pointer-events: none;
}

.dlc-zoom-icon { color: rgba(255,255,255,0.85); }

/* ── Lightbox ──────────────────────────────────────────────────── */
.dlc-lightbox {
    position: fixed;
    inset: 0;
    z-index: 9999;
    background: rgba(0,0,0,0.92);
    display: flex;
    align-items: center;
    justify-content: center;
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.25s ease;
}
.dlc-lightbox--open {
    opacity: 1;
    pointer-events: all;
}
.dlc-lightbox-inner {
    position: relative;
    max-width: min(1200px, 92vw);
    max-height: 88vh;
    width: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
}
.dlc-lightbox-content {
    width: 100%;
}
.dlc-lightbox-content img {
    width: 100%;
    height: auto;
    max-height: 85vh;
    object-fit: contain;
    display: block;
    border-radius: 2px;
}
.dlc-lightbox-video {
    position: relative;
    width: 100%;
    aspect-ratio: 16 / 9;
}
.dlc-lightbox-video iframe {
    position: absolute;
    inset: 0;
    width: 100%; height: 100%;
    border-radius: 2px;
}
.dlc-lightbox-close,
.dlc-lightbox-prev,
.dlc-lightbox-next {
    position: fixed;
    background: rgba(255,255,255,0.08);
    border: 1px solid rgba(255,255,255,0.15);
    color: rgba(255,255,255,0.8);
    border-radius: 2px;
    cursor: pointer;
    /* opacity included so the mobile auto-hide fade works */
    transition: background 0.2s ease, color 0.2s ease, opacity 0.4s ease;
    line-height: 1;
    z-index: 10000;
}
/* Mobile auto-hide: controls fade out after 5s of inactivity.
   JS adds this class to .dlc-lightbox; any touch removes it again. */
@media (max-width: 768px) {
    .dlc-lightbox.controls-hidden .dlc-lightbox-close,
    .dlc-lightbox.controls-hidden .dlc-lightbox-prev,
    .dlc-lightbox.controls-hidden .dlc-lightbox-next {
        opacity: 0;
        pointer-events: none;
    }
}
.dlc-lightbox-close:hover,
.dlc-lightbox-prev:hover,
.dlc-lightbox-next:hover { background: rgba(255,255,255,0.18); color: #fff; }
.yt-error {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 1.2rem;
    width: 100%;
    height: 100%;
    min-height: 200px;
    color: rgba(255,255,255,0.5);
    font-family: var(--font-display);
    font-size: 0.75rem;
    letter-spacing: 0.15em;
    text-transform: uppercase;
}
.yt-error-close {
    background: transparent;
    border: 0.5px solid rgba(255,255,255,0.2);
    border-radius: 2px;
    color: rgba(255,255,255,0.5);
    padding: 0.4rem 1rem;
    cursor: pointer;
    font-size: 0.65rem;
    letter-spacing: 0.15em;
    text-transform: uppercase;
    transition: border-color 0.2s ease, color 0.2s ease;
}
.yt-error-close:hover { border-color: rgba(255,255,255,0.4); color: rgba(255,255,255,0.8); }

.dlc-lightbox-close { top: 1.2rem; right: 1.2rem; width: 40px; height: 40px; font-size: 1.4rem; display: flex; align-items: center; justify-content: center; line-height: 1; }
.dlc-lightbox-prev  { top: 50%; left: 1.5rem; transform: translateY(-50%); width: 48px; height: 48px; display: flex; align-items: center; justify-content: center; }
.dlc-lightbox-next  { top: 50%; right: 1.5rem; transform: translateY(-50%); width: 48px; height: 48px; display: flex; align-items: center; justify-content: center; }
/* SVGs inside arrow buttons — display:block kills the inline baseline gap */
.dlc-lightbox-prev svg,
.dlc-lightbox-next svg { display: block; width: 16px; height: 16px; }

@media (max-width: 768px) {
    /* Give the image full width and pull it up to leave room for the button bar */
    .dlc-lightbox-inner {
        max-width: 100vw;
        flex-direction: column;
        max-height: calc(100vh - 80px); /* reserve bottom bar height */
        margin-bottom: 64px;
    }

    /* Close button — smaller, tucked into top-right corner */
    .dlc-lightbox-close {
        top: 0.6rem;
        right: 0.6rem;
        width: 36px;
        height: 36px;
        font-size: 1.2rem;
    }

    /* Move prev/next out of the image area into a bottom bar */
    .dlc-lightbox-prev,
    .dlc-lightbox-next {
        top: auto;
        bottom: 0;
        transform: none;
        width: 50vw;       /* each arrow takes half the screen width */
        height: 56px;
        border-radius: 0;
        border-top: 1px solid rgba(255,255,255,0.15);
        border-left: none;
        border-right: none;
        border-bottom: none;
        background: rgba(0,0,0,0.7);
    }
    .dlc-lightbox-prev { left: 0; border-right: 1px solid rgba(255,255,255,0.1); }
    .dlc-lightbox-next { right: 0; }

    /* Make the arrows a bit bigger for fat fingers */
    .dlc-lightbox-prev svg,
    .dlc-lightbox-next svg { width: 20px; height: 20px; }
}

/* Hide back-to-top when lightbox is open so it doesn't bleed over the overlay */
body.lightbox-open #back-to-top { display: none !important; }
/* ════════════════════════════════════════════════════════════════
   ARTBOOKS & SOUNDTRACKS PAGE (page-extras.php)
   ════════════════════════════════════════════════════════════════
   Dedicated page for digital extras — artbooks and soundtracks.
   All content is managed via Customizer panel 13.

   Page structure:
   1. Hero           — background, logo, group anchor links
                       (jump to Artbooks / Soundtracks)
   2. Extras Group Bar — sticky horizontal bar with anchor links
   3. Artbook 1 & 2  — description, 8 screenshots, store buttons,
                        streaming/reading platform band
   4. Soundtrack 1   — description, album art, audio sample,
                        tabbed tracklist (up to 4 discs × 15 tracks),
                        store buttons, streaming platforms
   5. Soundtrack 2   — same as Soundtrack 1, single disc, 25 tracks
   6. Navigation     — Back and optional Next link

   The tracklist tabs are toggled by JS in main.js.
   Active disc tab gets class .active.
   The audio sample player is a native HTML5 <audio> element.
   ════════════════════════════════════════════════════════════════ */

/* ── Group bar ───────────────────────────────────────────────────── */
.extras-group-bar {
    padding: 0.75rem 0;
    max-width: 1200px;
    margin: 0 auto;
}
.extras-group > .extras-group-bar {
    padding: 0.75rem 40px;
    max-width: none;
    background: rgba(var(--color-gold-rgb),0.06);
    border-top: 1px solid rgba(var(--color-gold-rgb),0.18);
    border-bottom: 1px solid rgba(var(--color-gold-rgb),0.18);
}
/* When hero is hidden, first group needs header offset */
.extras-page--no-hero .extras-group:first-child > .extras-group-bar {
    margin-top: var(--header-height);
}
.extras-group > .extras-group-bar .extras-group-label {
    display: block;
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 48px;
}
.extras-group-label {
    font-family: var(--font-display);
    font-size: 0.58rem;
    font-weight: 700;
    letter-spacing: 0.26em;
    text-transform: uppercase;
    color: rgba(var(--color-gold-rgb),0.75);
}

/* ── Item divider — between items within a group only, standard gold gradient ── */
.extras-item-divider {
    height: 1px;
    background: linear-gradient(90deg, transparent, var(--color-gold-dim), transparent);
}

/* ── Item ─────────────────────────────────────────────────────────── */
.extras-item {
    padding: var(--section-padding);
    position: relative;
    background-size: cover;
    background-position: center;
    background-repeat: no-repeat;
}
.extras-item--alt {
    background-color: var(--color-bg-alt);
}
.extras-item-bg-overlay {
    position: absolute;
    inset: 0;
    background: rgba(var(--color-bg-deep-rgb),0.82);
    pointer-events: none;
}

/* Artbook wrapper — full-width header above two-col grid */
.extras-item-wrap {
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 48px;
    position: relative;
    z-index: 1;
}
.extras-item-wrap .extras-soundtrack-header {
    margin-bottom: 1.5rem;
}
.extras-item-wrap .extras-item-inner {
    max-width: none;
    padding: 0;
    margin: 0;
}

/* Artbook image grid — centered vertically in the row */
.extras-item-inner {
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 48px;
    position: relative;
    z-index: 1;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 3.5rem;
    align-items: center;
}

.extras-item-num {
    font-family: var(--font-display);
    font-size: 0.58rem;
    font-weight: 700;
    letter-spacing: 0.2em;
    color: rgba(var(--color-gold-rgb),0.45);
    display: block;
    margin-bottom: 0.4rem;
}
.extras-item-title {
    font-family: var(--font-display);
    font-size: clamp(1rem, 2vw, 1.4rem);
    font-weight: 700;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--color-text-primary);
    margin-bottom: 0.8rem;
    line-height: 1.2;
}
.extras-item-sep-line {
    height: 1px;
    background: linear-gradient(90deg, rgba(var(--color-gold-rgb),0.35), transparent);
    margin-bottom: 1.2rem;
}
.extras-item-body {
    font-size: 0.95rem;
    color: rgba(255,255,255,0.6);
    line-height: 1.8;
    margin-bottom: 0;
}
.extras-item-body p { margin-bottom: 0.85em; }
.extras-item-body p:last-child { margin-bottom: 0; }

/* Separator before CTA */
.extras-cta-sep {
    height: 1px;
    background: rgba(255,255,255,0.07);
    margin: 1.4rem 0 1.4rem;
}

/* Store buttons */
.extras-stores {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
}

/* ── Artbook image grid (up to 8) ─────────────────────────────────── */
.extras-media-grid {
    display: grid;
    gap: 6px;
}
/* 1–4 items: first spans full width, rest fill a 2-col row */
.extras-media-grid--1 { grid-template-columns: 1fr; }
.extras-media-grid--2 { grid-template-columns: 1fr 1fr; }
.extras-media-grid--3 { grid-template-columns: 1fr 1fr; }
.extras-media-grid--3 .extras-media-item:first-child { grid-column: 1 / -1; }
.extras-media-grid--4 { grid-template-columns: 1fr 1fr; }
/* 5–8 items: 2-col grid, items fill naturally */

.extras-media-item {
    position: relative;
    aspect-ratio: 16 / 9;
    background: transparent center / cover no-repeat;
    border-radius: 3px;
    overflow: hidden;
    border: 1px solid transparent;
    transition: border-color 0.2s ease, box-shadow 0.2s ease;
}
.extras-media-item:hover { border-color: var(--color-gold); box-shadow: 0 4px 20px rgba(var(--color-gold-rgb),0.08); }

.extras-zoom-btn {
    position: absolute;
    inset: 0;
    width: 100%; height: 100%;
    background: transparent;
    border: none;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    color: rgba(255,255,255,0.85);
    opacity: 0;
    transition: opacity 0.2s ease, background 0.2s ease;
}
.extras-media-item:hover .extras-zoom-btn {
    opacity: 1;
    background: rgba(0,0,0,0.4);
}

.extras-soundtrack-cover {
    width: 100%;
    aspect-ratio: 1 / 1;
    background: var(--color-bg-card) center / cover no-repeat;
    border-radius: 3px;
    border: 1px solid transparent;
    margin-bottom: 1rem;
}

/* ── Soundtrack layout: cover+header top, disc tabs+tracks below ─ */
/* Soundtrack items — fixed height like The Game sections */
/* Soundtrack items use extras-soundtrack-inner for horizontal padding only */
.extras-item:has(.extras-soundtrack-inner) {
    padding-left: 0;
    padding-right: 0;
}
.extras-soundtrack-inner {
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 48px;
    position: relative;
    z-index: 1;
    width: 100%;
}

/* Full-width header above two-col grid */
.extras-soundtrack-header {
    margin-bottom: 1.5rem;
}
.extras-soundtrack-header .extras-item-sep-line {
    margin-bottom: 0;
}

/* Top row: left (cover/sample/stores) + right (desc/tabs) */
.extras-soundtrack-top {
    display: grid;
    grid-template-columns: 220px 1fr;
    gap: 2.5rem;
    align-items: start;
}
.extras-soundtrack-left {
    display: flex;
    flex-direction: column;
}
.extras-soundtrack-cover-sm {
    width: 100%;
    aspect-ratio: 1 / 1;
    background: var(--color-bg-card) center / cover no-repeat;
    border-radius: 3px;
    border: 1px solid transparent;
    margin-bottom: 1rem;
}
.extras-soundtrack-right { flex: 1; }

/* Disc tab row */
.extras-disc-tabs-section { margin-top: 1.8rem; }
.extras-disc-tab-row {
    display: flex;
    gap: 4px;
    flex-wrap: wrap;
    margin-bottom: 0;
    border-bottom: 1px solid rgba(var(--color-gold-rgb),0.15);
    padding-bottom: 0;
}
.extras-disc-tab {
    font-family: var(--font-display);
    font-size: 0.6rem;
    font-weight: 700;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    padding: 0.5rem 1rem;
    border: 1px solid transparent;
    border-bottom: none;
    border-radius: 3px 3px 0 0;
    background: transparent;
    color: rgba(255,255,255,0.35);
    cursor: pointer;
    transition: background 0.2s ease, color 0.2s ease, border-color 0.2s ease;
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin-bottom: -1px;
}
.extras-disc-tab:hover {
    color: rgba(var(--color-gold-rgb),0.7);
    background: rgba(var(--color-gold-rgb),0.05);
}
.extras-disc-tab.is-active {
    color: var(--color-gold);
    background: rgba(var(--color-gold-rgb),0.08);
    border-color: rgba(var(--color-gold-rgb),0.2);
    border-bottom-color: var(--color-bg-section);
}
.extras-item--alt .extras-disc-tab.is-active {
    border-bottom-color: var(--color-bg-alt);
}
.extras-disc-tab-count {
    font-size: 0.52rem;
    color: rgba(255,255,255,0.25);
    letter-spacing: 0.05em;
}
.extras-disc-tab.is-active .extras-disc-tab-count {
    color: rgba(var(--color-gold-rgb),0.45);
}

/* Tab section — grid so all panels stack in the same cell */
.extras-disc-tabs-section {
    margin-top: 1.8rem;
    display: grid;
    grid-template-rows: auto 1fr;
}
.extras-disc-tab-row {
    grid-column: 1;
    grid-row: 1;
}
/* All panels occupy the same cell — height always driven by the tallest */
.extras-disc-panel {
    grid-column: 1;
    grid-row: 2;
    padding: 1rem 0 0;
    visibility: hidden;
}
.extras-disc-panel.is-active {
    visibility: visible;
}

/* Two-column tracklist: 1-8 left, 9+ right */
.extras-tracklist-cols {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0 2rem;
}
.extras-tracklist {
    list-style: none;
    padding: 0;
}
.extras-track {
    display: grid;
    grid-template-columns: 1.8rem 1fr auto;
    align-items: center;
    gap: 0 0.5rem;
    padding: 0.45rem 0;
    border-bottom: 1px solid rgba(255,255,255,0.05);
}
.extras-track:last-child { border-bottom: none; }
.extras-track-num {
    font-family: var(--font-display);
    font-size: 0.65rem;
    color: rgba(var(--color-gold-rgb),0.45);
    letter-spacing: 0.06em;
    text-align: right;
}
.extras-track-name {
    font-size: 0.88rem;
    color: rgba(255,255,255,0.75);
    line-height: 1.3;
    padding-left: 0.6rem;
}
.extras-track-dur {
    font-family: var(--font-display);
    font-size: 0.65rem;
    color: rgba(255,255,255,0.3);
    letter-spacing: 0.04em;
    padding-left: 1rem;
    text-align: right;
}

/* ── Sample player ────────────────────────────────────────────────── */
.extras-sample-player {
    margin-top: 1.2rem;
    margin-bottom: 0;
    padding: 0.9rem 1rem;
    background: rgba(255,255,255,0.03);
    border: 1px solid transparent;
    border-radius: 3px;
}
.extras-sample-label {
    font-family: var(--font-display);
    font-size: 0.55rem;
    font-weight: 700;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: rgba(var(--color-gold-rgb),0.6);
    margin-bottom: 0.7rem;
}
.extras-audio-player {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    background: rgba(0,0,0,0.25);
    border: 1px solid rgba(var(--color-gold-rgb),0.2);
    border-radius: 3px;
    padding: 0.6rem 0.9rem;
}
.eap-play {
    width: 30px; height: 30px;
    border-radius: 50%;
    border: 1.5px solid rgba(var(--color-gold-rgb),0.5);
    background: rgba(var(--color-gold-rgb),0.1);
    color: var(--color-gold);
    display: flex; align-items: center; justify-content: center;
    cursor: pointer; flex-shrink: 0;
    transition: background 0.2s ease, border-color 0.2s ease;
}
.eap-play:hover { background: rgba(var(--color-gold-rgb),0.2); border-color: rgba(var(--color-gold-rgb),0.8); }
.eap-progress-wrap { flex: 1; }
.eap-bar {
    height: 3px;
    background: rgba(255,255,255,0.1);
    border-radius: 2px;
    cursor: pointer;
    position: relative;
}
.eap-fill {
    height: 100%;
    background: var(--color-gold);
    border-radius: 2px;
    width: 0%;
    transition: width 0.1s linear;
}
.eap-time, .eap-dur {
    font-family: var(--font-display);
    font-size: 0.6rem;
    letter-spacing: 0.06em;
    color: rgba(255,255,255,0.4);
    flex-shrink: 0;
}
.eap-dur { color: rgba(255,255,255,0.2); }


/* ── Streaming / availability band ───────────────────────────── */
/* ── Streaming / availability band ───────────────────────────── */
.extras-stream-band {
    margin-top: 1.4rem;
    display: flex;
    align-items: center;
    gap: 0.75rem;
    flex-wrap: wrap;
}
.extras-stream-label {
    font-family: var(--font-display);
    font-size: 0.5rem;
    font-weight: 700;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: rgba(255,255,255,0.7);
    white-space: nowrap;
    flex-shrink: 0;
}
.extras-stream-links {
    display: flex;
    gap: 0.5rem;
    flex-wrap: wrap;
    align-items: center;
}
.extras-stream-btn {
    display: flex;
    align-items: center;
    gap: 0.45rem;
    padding: 0.35rem 0.75rem;
    border-radius: 2px;
    border: 1px solid rgba(255,255,255,0.1);
    background: transparent;
    color: rgba(255,255,255,0.4);
    font-family: var(--font-display);
    font-size: 0.5rem;
    font-weight: 600;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    transition: border-color 0.2s ease, color 0.2s ease;
}
.extras-stream-btn:hover {
    border-color: var(--stream-color, rgba(255,255,255,0.35));
    color: var(--stream-color, rgba(255,255,255,0.8));
}
.extras-stream-icon {
    width: 13px;
    height: 13px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: rgba(255,255,255,0.35);
    flex-shrink: 0;
    transition: color 0.2s ease;
}
.extras-stream-btn:hover .extras-stream-icon { color: var(--stream-color, rgba(255,255,255,0.7)); }
.extras-stream-icon svg { width: 13px; height: 13px; }
.extras-stream-icon img { width: 13px; height: 13px; object-fit: contain; }

/* ── Back link ────────────────────────────────────────────────────── */
.extras-back {
    padding: 2.5rem 0;
    background: #0a0814;
    position: relative;
    overflow: hidden;
}
.extras-back::before {
    content: '';
    position: absolute;
    top: 0; left: 0; right: 0;
    height: 1px;
    background: linear-gradient(90deg, transparent, var(--color-gold-dim), transparent);
}
.extras-back::after {
    content: '';
    position: absolute;
    inset: 0;
    background: radial-gradient(
        ellipse 70% 120% at 50% 50%,
        rgba(40,15,90,0.25) 0%,
        rgba(20,5,50,0.1)   50%,
        transparent         75%
    );
    pointer-events: none;
}
.extras-back-inner {
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 48px;
    text-align: center;
    position: relative;
    z-index: 1;
}

/* ── Back link ──────────────────────────────────────────────── */
.press-back-section { padding: 2rem 0 !important; text-align: center; }
.press-back-sep {
    height: 1px;
    background: linear-gradient(90deg, transparent, rgba(var(--color-gold-rgb),0.15), transparent);
    margin-bottom: 2rem;
}

/* Mobile */
@media (max-width: 768px) {
    .extras-item-inner {
        grid-template-columns: 1fr;
        gap: 2rem;
        padding: 0 20px;
    }
    .extras-soundtrack-inner { padding: 0 20px; }
    .extras-soundtrack-top {
        grid-template-columns: 1fr;
        gap: 1.5rem;
    }
    .extras-soundtrack-right { padding-top: 0; }
    .extras-group > .extras-group-bar { padding: 0.75rem 20px; }
    .extras-group > .extras-group-bar .extras-group-label { padding: 0; }
    .extras-media-grid--2,
    .extras-media-grid--3,
    .extras-media-grid--4 { grid-template-columns: 1fr 1fr; }
    .extras-media-grid--3 .extras-media-item:first-child { grid-column: 1; }
    .extras-back-inner { padding: 0 20px; }
}

/* ════════════════════════════════════════════════════════════════
   PRESS KIT PAGE (page-press.php)
   ════════════════════════════════════════════════════════════════
   The media/press kit page. All content managed via Customizer
   panel 14. Targeted at journalists and content creators.

   Page structure:
   1. Sticky sub-nav bar — jumps to each section on click
   2. Screenshots        — up to 24 images in masonry grid
                           with lightbox on click
   3. Videos             — up to 30 YouTube thumbnails,
                           opens YouTube embed lightbox on click
   4. Logos              — up to 10 logo files with download links
   5. Key Art            — up to 10 key art images with size info
   6. Press Quotes       — up to 6 review quotes with source
   7. Fact Sheet         — 2-column key/value table (12 rows)
   8. Press Contact      — email, studio, social handle
   9. Press Kit download — single button linking to Dropbox/zip

   All section titles and sub-nav labels are editable via
   Customizer → 14 — Press Kit → General.

   The lightbox for screenshots uses arrow keys for navigation.
   ════════════════════════════════════════════════════════════════ */

.press-page {
    background: var(--color-bg-deep); position: relative;
}
.press-page::before {
    content: ''; position: fixed; top: 0; left: 0; right: 0; height: 100vh;
    background:
        radial-gradient(ellipse at 80% 10%, rgba(var(--color-purple-deep-rgb),0.35) 0%, transparent 55%),
        radial-gradient(ellipse at 10% 60%, rgba(var(--color-purple-deep-rgb),0.2)  0%, transparent 50%);
    pointer-events: none; z-index: 0;
}
.press-container { position: relative; z-index: 1; }

/* ── Sticky nav ──────────────────────────────────────────────── */
.press-nav {
    position: fixed; top: var(--header-height); left: 0; right: 0; z-index: 89;
    background: rgba(var(--color-bg-deep-rgb),0.96);
    border-bottom: 1px solid rgba(var(--color-gold-rgb),0.12);
    backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
}
.press-nav-inner {
    max-width: 1200px; margin: 0 auto; padding: 0 48px;
    display: flex; align-items: center; justify-content: space-between;
    gap: 1rem; height: 56px;
}
.press-nav-links { display: flex; height: 100%; }
.press-nav-link {
    font-family: var(--font-display); font-size: 0.58rem; font-weight: 700;
    letter-spacing: 0.14em; text-transform: uppercase;
    color: rgba(255,255,255,0.38); text-decoration: none;
    padding: 0 1rem; height: 100%; display: flex; align-items: center;
    border-bottom: 2px solid transparent; margin-bottom: -1px;
    transition: color 0.2s ease, border-color 0.2s ease;
}
.press-nav-link:hover  { color: rgba(255,255,255,0.7); }
.press-nav-link.active { color: var(--color-gold); border-bottom-color: var(--color-gold); }
/* Press Kit nav link — always slightly highlighted */
.press-nav-link--kit {
    color: rgba(var(--color-gold-rgb),0.55);
    margin-left: 0.5rem;
    padding-left: 1rem;
}
.press-nav-link--kit:hover { color: var(--color-gold); }
.press-nav-link--kit.active { color: var(--color-gold); border-bottom-color: var(--color-gold); }

/* ── Layout ──────────────────────────────────────────────────── */
.press-container { max-width: 1200px; margin: 0 auto; padding: 0 48px; }
.press-container--padded { padding-top: 16px; }
.press-section { padding: 72px 0; scroll-margin-top: var(--header-height); }
#press-info { scroll-margin-top: var(--header-height); }
.press-section-title {
    font-family: var(--font-display); font-size: 0.7rem; font-weight: 700;
    letter-spacing: 0.2em; text-transform: uppercase; color: var(--color-text-primary);
    display: flex; align-items: center; gap: 0.75rem; margin-bottom: 2rem;
}
.press-section-title::after {
    content: ''; flex: 1; height: 1px;
    background: linear-gradient(90deg, rgba(var(--color-gold-rgb),0.25), transparent);
}
.press-count {
    font-family: var(--font-display); font-size: 0.54rem; letter-spacing: 0.1em;
    color: rgba(255,255,255,0.28); font-weight: 400;
    border: 1px solid rgba(255,255,255,0.12); border-radius: 20px;
    display: inline-flex; align-items: center; justify-content: center;
    height: 20px; padding: 0 9px; flex-shrink: 0;
    line-height: 1;
}

/* ── Show more ───────────────────────────────────────────────── */
.press-show-more {
    display: flex; align-items: center; gap: 0;
    margin: 1.6rem 0 0; width: 100%;
    background: transparent; border: 1px solid transparent; cursor: pointer;
}
/* Hidden grid items — animate in on reveal */
.press-hidden-item.is-visible,
.press-hidden-logo.is-visible {
    animation: pressReveal 0.3s ease both;
}
@keyframes pressReveal {
    from { opacity: 0; transform: translateY(6px); }
    to   { opacity: 1; transform: translateY(0); }
}
.press-show-more-line {
    flex: 1; height: 0.5px; background: rgba(var(--color-gold-rgb),0.2);
}
.press-show-more-inner {
    display: flex; align-items: center; gap: 12px; padding: 0 1.6rem; flex-shrink: 0;
}
.press-show-more-pill {
    display: inline-flex; align-items: center; gap: 8px;
    padding: 8px 14px; border-radius: 20px;
    background: rgba(255,255,255,0.05); border: 0.5px solid rgba(255,255,255,0.15);
    transition: background 0.2s ease, border-color 0.2s ease;
}
.press-show-more:hover .press-show-more-pill {
    background: rgba(255,255,255,0.09); border-color: rgba(255,255,255,0.25);
}
.press-show-more-label {
    font-family: var(--font-display); font-size: 0.54rem; font-weight: 700;
    letter-spacing: 0.18em; line-height: 1; text-transform: uppercase; color: rgba(255,255,255,0.6);
    transform: translateY(-1px);
}
.press-show-more-sep {
    width: 0.5px; height: 12px; background: rgba(255,255,255,0.2); flex-shrink: 0;
}
.press-show-more-count {
    font-family: var(--font-display); font-size: 0.54rem; font-weight: 700;
    letter-spacing: 0.1em; line-height: 1; color: rgba(var(--color-gold-rgb),0.85);
    transform: translateY(-1px);
}
.press-show-more-chevron {
    width: 20px; height: 20px; border-radius: 50%;
    border: 0.5px solid rgba(var(--color-gold-rgb),0.35);
    position: relative; flex-shrink: 0;
    transition: transform 0.2s ease;
}
.press-show-more-chevron svg {
    position: absolute; top: 50%; left: 50%;
    transform: translate(-50%, -50%);
    width: 9px; height: 9px;
}
.press-show-more.is-expanded .press-show-more-chevron { transform: rotate(180deg); }

/* ── Grids ───────────────────────────────────────────────────── */
.press-shots-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 6px; }
.press-shots-grid .dlc-media-item { aspect-ratio: 16 / 9; }

/* Video overlay meta */
.press-video-meta {
    position: absolute; bottom: 0; left: 0; right: 0;
    padding: 0.4rem 0.6rem;
    background: linear-gradient(to top, rgba(var(--color-bg-deep-rgb),0.85) 0%, transparent 100%);
    display: flex; align-items: baseline; justify-content: space-between;
    pointer-events: none;
}
.press-video-type {
    font-family: var(--font-display); font-size: 0.42rem; font-weight: 700;
    letter-spacing: 0.12em; text-transform: uppercase;
    color: var(--color-gold); opacity: 0.8; flex-shrink: 0;
}
.press-video-label {
    font-family: var(--font-display); font-size: 0.52rem; font-weight: 700;
    letter-spacing: 0.08em; text-transform: uppercase;
    color: #fff; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.press-video-dur {
    font-family: var(--font-display); font-size: 0.45rem;
    color: rgba(255,255,255,0.45); flex-shrink: 0; margin-left: 0.5rem;
}

/* ── Logos ───────────────────────────────────────────────────── */
.press-logos-grid { display: grid; grid-template-columns: repeat(4,1fr); gap: 8px; }
.press-logo-item {
    position: relative; aspect-ratio: 3/2; border-radius: 3px; overflow: hidden;
    border: 1px solid transparent; cursor: pointer;
    background: var(--color-bg-deep) center/contain no-repeat;
    transition: border-color 0.2s ease, box-shadow 0.2s ease;
}
.press-logo-item:hover {
    border-color: var(--color-gold); box-shadow: 0 4px 20px rgba(var(--color-gold-rgb),0.08);
}
.press-logo-item:hover .dlc-media-trigger {
    opacity: 1; background: rgba(0,0,0,0.4);
}
.press-logo-caption {
    position: absolute; bottom: 0; left: 0; right: 0; padding: 0.5rem 0.75rem;
    background: linear-gradient(to top, rgba(var(--color-bg-deep-rgb),0.9) 0%, rgba(var(--color-bg-deep-rgb),0.4) 60%, transparent 100%);
    display: flex; align-items: baseline; justify-content: space-between; gap: 1rem;
    z-index: 2; pointer-events: none;
}
.press-logo-name { font-family: var(--font-display); font-size: 0.52rem; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; color: #fff; }
.press-logo-desc { font-size: 0.62rem; color: rgba(255,255,255,0.45); flex-shrink: 0; }

/* ── Key Art ─────────────────────────────────────────────────── */
.press-keyart-item {
    position: relative; overflow: hidden; border-radius: 3px; cursor: pointer; aspect-ratio: 16/9;
    border: 1px solid transparent; transition: border-color 0.2s ease, box-shadow 0.2s ease;
}
.press-keyart-item:hover { border-color: var(--color-gold); box-shadow: 0 4px 20px rgba(var(--color-gold-rgb),0.08); }
.press-keyart-bg {
    position: absolute; inset: 0; background: center/cover no-repeat; transition: transform 0.3s ease;
}
.press-keyart-item:hover .press-keyart-bg { transform: scale(1.03); }
.press-keyart-caption {
    position: absolute; bottom: 0; left: 0; right: 0; padding: 0.5rem 0.75rem;
    background: linear-gradient(to top, rgba(var(--color-bg-deep-rgb),0.9) 0%, rgba(var(--color-bg-deep-rgb),0.4) 60%, transparent 100%);
    display: flex; align-items: baseline; justify-content: space-between; gap: 1rem;
    z-index: 2; pointer-events: none;
}
.press-keyart-name { font-family: var(--font-display); font-size: 0.55rem; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; color: #fff; }
.press-keyart-meta { font-size: 0.62rem; color: rgba(255,255,255,0.45); flex-shrink: 0; }

/* ── Info ────────────────────────────────────────────────────── */
.press-info-section { display: grid; grid-template-columns: 2fr 1.3fr 0.85fr; gap: 3rem; align-items: start; }
.press-quotes-list { display: flex; flex-direction: column; gap: 0.75rem; }
.press-quote { border-left: 2px solid rgba(var(--color-gold-rgb),0.3); padding: 0.55rem 0.85rem; }
.press-quote-text { font-size: 0.95rem; color: rgba(255,255,255,0.7); line-height: 1.6; margin-bottom: 0.4rem; }
.press-quote-meta { display: flex; align-items: center; gap: 0.5rem; }
.press-quote-score { font-family: var(--font-display); font-size: 0.48rem; font-weight: 700; letter-spacing: 0.1em; color: var(--color-gold); border: 1px solid var(--color-gold-dim); border-radius: 20px; padding: 3px 7px; line-height: 1; transform: translateY(1px); }
.press-quote-source { font-family: var(--font-display); font-size: 0.48rem; letter-spacing: 0.1em; text-transform: uppercase; color: rgba(255,255,255,0.28); }
.press-facts-table { border: 1px solid rgba(var(--color-gold-rgb),0.1); border-radius: 2px; overflow: hidden; }
.press-fact-row { display: flex; align-items: center; gap: 1.5rem; padding: 0.65rem 0.85rem; border-bottom: 1px solid rgba(255,255,255,0.04); }
.press-fact-row:last-child { border-bottom: none; }
.press-fact-key { font-family: var(--font-display); font-size: 0.48rem; letter-spacing: 0.1em; text-transform: uppercase; color: rgba(255,255,255,0.3); width: 140px; flex-shrink: 0; transform: translateY(1px); }
.press-fact-val { font-size: 0.92rem; color: rgba(255,255,255,0.72); font-weight: 500; line-height: 1.4; }
.press-contact-block { display: flex; flex-direction: column; gap: 0.85rem; }
.press-contact-btn {
    display: inline-flex; align-items: center; gap: 0.6rem;
    font-family: var(--font-display); font-size: 0.52rem; font-weight: 700;
    letter-spacing: 0.1em; text-transform: uppercase; line-height: 1;
    color: var(--color-gold); text-decoration: none;
    border: 1px solid var(--color-gold-dim); border-radius: 2px;
    padding: 0.55rem 0.85rem;
    align-self: flex-start;
    transition: background 0.2s ease;
}
.press-contact-btn:hover { background: var(--color-gold-glow); }
.press-contact-btn svg { flex-shrink: 0; opacity: 0.8; }
.press-contact-btn span { transform: translateY(-1px); }
.press-contact-studio { font-size: 0.82rem; color: rgba(255,255,255,0.4); line-height: 1.6; }
.press-contact-social { font-size: 0.78rem; color: rgba(255,255,255,0.28); }

/* ── Press Kit CTA — premium ─────────────────────────────────── */
.press-kit-section { border-top: 1px solid rgba(var(--color-gold-rgb),0.15); scroll-margin-top: calc(var(--header-height) + 56px + 24px); }
.press-kit-cta {
    position: relative; overflow: hidden;
    display: flex; align-items: center; justify-content: space-between; gap: 2rem; flex-wrap: wrap;
    padding: 2.5rem 2.5rem;
    background:
        linear-gradient(135deg, rgba(var(--color-gold-rgb),0.08) 0%, transparent 60%),
        rgba(var(--color-gold-rgb),0.03);
    background-size: cover;
    background-position: center;
    border-radius: 3px;
    box-shadow: inset 0 0 0 1px rgba(var(--color-gold-rgb),0.2);
}
.press-kit-cta::before {
    content: '';
    position: absolute; top: 0; left: 0; right: 0; height: 1px;
    background: linear-gradient(90deg, transparent, rgba(var(--color-gold-rgb),0.6), transparent);
    z-index: 1;
}
.press-kit-cta::after {
    content: '';
    position: absolute; bottom: 0; left: 0; right: 0; height: 1px;
    background: linear-gradient(90deg, transparent, rgba(var(--color-gold-rgb),0.3), transparent);
    z-index: 1;
}
.press-kit-cta-overlay {
    position: absolute; inset: 0; z-index: 0;
    background:
        linear-gradient(135deg, rgba(var(--color-bg-deep-rgb),0.88) 0%, rgba(var(--color-bg-deep-rgb),0.72) 100%),
        linear-gradient(135deg, rgba(var(--color-gold-rgb),0.06) 0%, transparent 60%);
}
.press-kit-cta-content { position: relative; z-index: 1; }
.press-kit-cta .press-section-title { margin-bottom: 0.5rem; color: var(--color-gold); position: relative; z-index: 1; }
.press-kit-cta .press-section-title::after { background: linear-gradient(90deg, rgba(var(--color-gold-rgb),0.4), transparent); }
.press-kit-desc { font-size: 0.88rem; color: rgba(255,255,255,0.45); line-height: 1.6; max-width: 620px; }
.press-kit-cta-btn { flex-shrink: 0; font-size: 0.6rem !important; padding: calc(0.65rem + 1px) 1.6rem calc(0.65rem - 1px) !important; letter-spacing: 0.14em !important; position: relative; z-index: 1; }

/* ── Back link ──────────────────────────────────────────────── */
.press-back-section { padding: 2rem 0 !important; text-align: center; }
.press-back-sep {
    height: 1px;
    background: linear-gradient(90deg, transparent, rgba(var(--color-gold-rgb),0.15), transparent);
    margin-bottom: 2rem;
}

/* Mobile */
@media (max-width: 768px) {
    .press-container { padding: 0 24px; }
    .press-nav-inner { padding: 0 24px; height: 52px; }

/* ── Press nav — swipeable on small phones ─────────────── */
@media (max-width: 480px) {
    .press-nav-inner {
        padding: 0 16px;
        height: 48px;
    }
    .press-nav-links {
        overflow-x: auto;
        overflow-y: hidden;
        -webkit-overflow-scrolling: touch;
        scrollbar-width: none;
        -ms-overflow-style: none;
        flex-wrap: nowrap;
        padding-right: 16px;
    }
    .press-nav-links::-webkit-scrollbar { display: none; }
    .press-nav-link {
        white-space: nowrap;
        flex-shrink: 0;
        padding: 0 0.7rem;
        font-size: 0.48rem;
    }
    .press-nav-link--kit {
        margin-left: 0;
        padding-left: 0.7rem;
    }
}
    .press-shots-grid { grid-template-columns: 1fr 1fr; }
    .press-logos-grid { grid-template-columns: 1fr 1fr; }
    .press-info-section { grid-template-columns: 1fr; gap: 2rem; }
    .press-kit-cta { flex-direction: column; align-items: flex-start; padding: 1.5rem; }
    .press-nav-link--kit { margin-left: 0; padding-left: 0.85rem; }
}

@media (prefers-reduced-motion: reduce) {
    html { scroll-behavior: auto; }
    *, *::before, *::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
        scroll-behavior: auto !important;
    }
    #heroParticles,
    .hero-scroll-hint { display: none !important; }
}

/* ════════════════════════════════════════════════════════════════
   404 PAGE
   ════════════════════════════════════════════════════════════════ */
.error404-main {
    position: relative;
    min-height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
}

/* Background image — covers full viewport including header area */
.error404-bg {
    position: absolute;
    inset: 0;
    background-color: var(--color-bg-deep);
    background-image: radial-gradient(ellipse 80% 60% at 50% 40%, rgba(40,15,90,0.55) 0%, rgba(20,5,50,0.2) 50%, transparent 75%);
    background-size: cover;
    background-position: center;
    z-index: 0;
}

/* Dark vignette overlay */
.error404-overlay {
    position: absolute;
    inset: 0;
    z-index: 1;
    background:
        radial-gradient(ellipse 80% 70% at 50% 50%, rgba(var(--color-bg-deep-rgb),0.4) 0%, rgba(var(--color-bg-deep-rgb),0.85) 100%),
        linear-gradient(to top, rgba(var(--color-bg-deep-rgb),0.95) 0%, transparent 50%);
}

.error404-wrap {
    position: relative;
    z-index: 3;
    width: min(640px, calc(100vw - 48px));
    text-align: center;
}

.error404-content {
    position: relative;
    z-index: 1;
    padding: 3.5rem;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0;
}

/* 404 code — large yellow bold */
.error404-nav {
    background: transparent;
    border: 1px solid transparent;
    padding: 0;
    border-radius: 0;
    margin-top: 0;
    justify-content: center;
}

.error404-code {
    font-family: var(--font-display);
    font-size: clamp(3rem, 8vw, 5.5rem);
    font-weight: 700;
    letter-spacing: 0.12em;
    color: var(--color-gold);
    line-height: 1;
    margin-bottom: 1rem;
}

.error404-headline {
    font-family: var(--font-display);
    font-size: clamp(1.4rem, 3.5vw, 2rem);
    font-weight: 700;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--color-text-white);
    line-height: 1.1;
    margin-bottom: 1.2rem;
}

.error404-copy {
    font-size: 0.92rem;
    color: rgba(255,255,255,0.55);
    line-height: 1.9;
    max-width: 480px;
    margin: 0 auto 2.5rem;
}

.error404-actions {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 1.5rem;
    flex-wrap: wrap;
}

/* Mobile */
@media (max-width: 600px) {
    .error404-wrap { width: calc(100vw - 32px); }
    .error404-content { padding: 2.5rem 1.75rem; }
    .error404-actions { flex-direction: column; gap: 1rem; }
}

/* ============================================================
   FAQ PAGE (page-faq.php)
   ============================================================
   Support/FAQ accordion page. All content managed via Customizer
   section 'FAQ Page'.

   Page structure:
   1. Page title bar   — title, eyebrow text, optional intro,
                         optional background image
   2. FAQ categories   — up to 6 categories, each with a heading
                         and up to 10 collapsible Q&A items
   Clicking a question expands/collapses the answer via JS.
   Active questions get class .open on their parent .faq-item.
   Leave a category title blank to hide that entire category.
   ============================================================ */

/* ============================================================
   PAGE TITLE BAR — reusable header component
   ============================================================
   Used by: FAQ, Privacy Policy, Legal, and other inner pages.
   Provides a consistent page heading area with:
   - Optional background image with dark overlay
   - Eyebrow label (small uppercase text above the title)
   - Page title (large display heading)
   - Optional intro paragraph
   Padding-top accounts for the fixed header height so the
   title isn't hidden behind the navigation bar.
   ============================================================ */
.page-title-bar {
    background: var(--color-bg-deep);
    padding: 120px 0 72px;
    border-bottom: 1px solid rgba(255,255,255,0.08);
    position: relative;
    overflow: hidden;
}
.page-title-bar::after {
    content: '';
    position: absolute;
    inset: 0;
    background:
        radial-gradient(ellipse at 20% 50%, rgba(60,30,100,0.2) 0%, transparent 60%),
        radial-gradient(ellipse at 80% 50%, rgba(20,15,60,0.15) 0%, transparent 60%);
    pointer-events: none;
    z-index: 0;
}

.page-title-bar__bg {
    position: absolute;
    inset: 0;
    background-size: cover;
    background-position: center;
    z-index: 1;
}
.page-title-bar__bg::after {
    content: '';
    position: absolute;
    inset: 0;
    background: linear-gradient(to right, rgba(var(--color-bg-deep-rgb),0.92) 40%, rgba(var(--color-bg-deep-rgb),0.5) 100%);
}

.page-title-bar-inner {
    max-width: 700px;
    position: relative;
    z-index: 1;
}

.page-title-bar-eyebrow {
    font-family: var(--font-display);
    font-size: 0.6rem;
    font-weight: 700;
    letter-spacing: 0.28em;
    text-transform: uppercase;
    color: var(--color-gold);
    display: block;
    margin-bottom: 8px;
}

.page-title-bar-title {
    font-family: var(--font-display);
    font-size: clamp(1.6rem, 3vw, 2.4rem);
    font-weight: 700;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--color-text-white);
}

.page-title-bar-intro {
    font-family: var(--font-body);
    font-size: 0.88rem;
    line-height: 1.7;
    color: var(--color-text-muted);
    margin: 10px 0 0;
}

@media (max-width: 768px) {
    .page-title-bar { padding: 60px 0 36px; }
}

/* FAQ-specific overrides */

/* Body */
.faq-body {
    padding: 80px 0 80px;
    background: var(--color-bg-primary);
}

/* Groups */
.faq-group {
    margin-bottom: 48px;
}
.faq-group:last-child { margin-bottom: 0; }

.faq-group-title {
    font-family: var(--font-display);
    font-size: 0.95rem;
    font-weight: 700;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: var(--color-gold);
    margin: 0 0 12px;
    padding-bottom: 12px;
    border-bottom: 1px solid rgba(var(--color-gold-rgb),0.2);
}

/* Accordion */
.faq-accordion {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.faq-item {
    background: var(--color-bg-card);
    border: 1px solid transparent;
    border-radius: 3px;
    overflow: hidden;
    transition: border-color 0.2s ease;
}
.faq-item.is-open {
    border-color: rgba(var(--color-gold-rgb),0.25);
}

/* Question button */
.faq-question {
    width: 100%;
    display: flex;
    align-items: stretch;
    justify-content: space-between;
    gap: 1.5rem;
    padding: 0 24px;
    margin: 0;
    min-height: 64px;
    background: none;
    border: none;
    border-radius: 0;
    cursor: pointer;
    text-align: left;
    transition: background 0.2s ease;
    box-sizing: border-box;
    -webkit-appearance: none;
    appearance: none;
}
.faq-question:hover {
    background: rgba(255,255,255,0.03);
}
.faq-item.is-open .faq-question {
    background: rgba(var(--color-gold-rgb),0.05);
}

.faq-question-text {
    font-family: var(--font-display);
    font-size: 0.78rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--color-text-primary);
    line-height: 1;
    transition: color 0.2s ease;
    display: flex;
    align-items: center;
    flex: 1;
    transform: translateY(2px);
}
.faq-item.is-open .faq-question-text,
.faq-question:hover .faq-question-text {
    color: var(--color-gold);
}

/* +/− icon */
.faq-icon {
    flex-shrink: 0;
    width: 20px;
    height: 20px;
    position: relative;
    opacity: 0.5;
    transition: opacity 0.2s ease;
    align-self: center;
}
.faq-icon::before,
.faq-icon::after {
    content: '';
    position: absolute;
    background: var(--color-text-primary);
    border-radius: 1px;
    transition: transform 0.25s ease, opacity 0.25s ease;
}
.faq-icon::before { width: 12px; height: 1.5px; top: 50%; left: 50%; transform: translate(-50%,-50%); }
.faq-icon::after  { width: 1.5px; height: 12px; top: 50%; left: 50%; transform: translate(-50%,-50%); }

.faq-item.is-open .faq-icon { opacity: 1; }
.faq-item.is-open .faq-icon::after { transform: translate(-50%,-50%) scaleY(0); opacity: 0; }
.faq-item.is-open .faq-icon::before { background: var(--color-gold); }

/* Answer panel — linear so close speed matches content height */
.faq-answer {
    overflow: hidden;
    max-height: 0;
    transition: none;
    border-top: 0px solid rgba(255,255,255,0.06);
}
.faq-item.is-open .faq-answer {
    max-height: none;
    border-top-width: 1px;
}

.faq-answer-inner {
    padding: 20px 24px;
    font-family: var(--font-body);
    font-size: 0.9rem;
    line-height: 1.75;
    color: var(--color-text-white);
}
.faq-answer-inner p { margin: 0 0 0.75em; }
.faq-answer-inner p:last-child { margin-bottom: 0; }
.faq-answer-inner a { color: var(--color-gold); text-decoration: none; }
.faq-answer-inner a:hover { text-decoration: underline; }
.faq-answer-inner ul,
.faq-answer-inner ol { padding-left: 1.5em; margin: 0 0 0.75em; }
.faq-answer-inner strong { color: #ffffff; font-weight: 700; }

.faq-empty {
    color: var(--color-text-muted);
    font-size: 0.9rem;
    text-align: center;
    padding: 60px 0;
}

/* Responsive */
@media (max-width: 768px) {
    .faq-body { padding: 60px 0 80px; }
    .faq-question { padding: 16px 18px; }
    .faq-answer-inner { padding: 18px 18px; }
}


/* ============================================================
   LEGAL / PRIVACY PAGE
   ============================================================
   Styles for Privacy Policy, Cookie Policy, Imprint, and any
   other legal content pages. These use the default WordPress
   page template (page.php) with the .page-content prose styles
   defined in the Page Content section above.

   The .page-title-bar component provides the page header.
   The #inner-page-legal wrapper adds extra top padding and
   overrides specific spacing for the legal content layout.
   ============================================================ */

#inner-page-legal .page-title-bar {
    padding-top: 120px;
    padding-bottom: 72px;
}
#inner-page-legal .page-title-bar .container {
    max-width: 900px;
    padding-left: 40px;
    padding-right: 40px;
}

.es2-legal-wrap {
    background: var(--color-bg-primary);
}

/* TOC bar */
.es2-legal-toc {
    background: var(--color-bg-alt);
    border-bottom: 1px solid rgba(255,255,255,0.05);
    border-top: 1px solid rgba(var(--color-gold-rgb),0.2);
}

.es2-legal-toc-inner {
    max-width: 900px;
    margin: 0 auto;
    padding: 0 40px;
    display: flex;
    align-items: center;
    height: 56px;
}

.es2-legal-toc a {
    font-family: var(--font-display);
    font-size: 0.58rem;
    font-weight: 700;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: rgba(255,255,255,0.38);
    text-decoration: none;
    padding: 0 1rem;
    height: 100%;
    display: flex;
    align-items: center;
    border-bottom: 2px solid transparent;
    margin-bottom: -1px;
    white-space: nowrap;
    transition: color 0.2s ease, border-color 0.2s ease;
}
.es2-legal-toc a:first-child { padding-left: 0; }
.es2-legal-toc a:hover { color: rgba(255,255,255,0.7); }
.es2-legal-toc a.is-active {
    color: var(--color-gold);
    border-bottom-color: var(--color-gold);
}

/* Content */
.es2-legal-content {
    max-width: 900px;
    margin: 0 auto;
    padding: 48px 40px 80px;
}

.es2-legal-content h1 {
    font-family: var(--font-display);
    font-size: 1rem !important;
    font-weight: 700;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--color-text-white);
    margin: 3rem 0 0.6rem;
    padding-bottom: 0.5rem;
    border-bottom: 1px solid rgba(255,255,255,0.08);
    line-height: 1.2;
    scroll-margin-top: 120px;
}
.es2-legal-content h1:first-child { margin-top: 0; }

.es2-legal-content h2 {
    font-family: var(--font-display);
    font-size: 0.72rem !important;
    font-weight: 700;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--color-gold);
    margin: 1.5rem 0 0.4rem;
    line-height: 1.2;
}

.es2-legal-content p {
    font-family: var(--font-body);
    font-size: 0.9rem;
    line-height: 1.85;
    color: var(--color-text-white);
    margin: 0 0 0.6rem;
}
.es2-legal-content p:empty { display: none; }

.es2-legal-content ul,
.es2-legal-content ol {
    font-family: var(--font-body);
    font-size: 0.9rem;
    line-height: 1.85;
    color: var(--color-text-white);
    margin: 0 0 1rem 1.5rem;
}
.es2-legal-content ul { list-style: disc; }
.es2-legal-content ol { list-style: decimal; }
.es2-legal-content li { margin-bottom: 0.3rem; }

.es2-legal-content a {
    color: var(--color-gold);
    text-decoration: underline;
    text-decoration-color: var(--color-gold-dim);
}
.es2-legal-content a:hover { color: var(--color-gold-light); }
.es2-legal-content strong { color: #fff; font-weight: 700; }
.es2-legal-content em { font-style: italic; color: rgba(255,255,255,0.45); }
.es2-legal-content hr {
    border: none;
    border-top: 1px solid rgba(255,255,255,0.06);
    margin: 1.5rem 0;
}

@media (max-width: 768px) {
    .es2-legal-toc-inner { padding: 0 20px; }
    .es2-legal-content { padding: 32px 20px 60px; }
    #inner-page-legal .page-title-bar .container { padding-left: 20px; }
}