/*
Theme Name: Kadence r66 Child
Template: kadence
Version: 3.12.0
Description: liveonroute66.com child theme. Route 66 brand system per docs/design-tokens.md (approved 2026-07-09). Brand book is canon. 2.1.0: events list Load More (events-fix brief Task C, additive only). 2.2.0: events list critique remediation (2026-07-11): desktop two-column layout that does not depend on TEC breakpoint JS, visible Playfair page title, Tonight/Today/On-now badge, neighborhood and ticket metadata, image-failure collapse, 44px tap targets, subscribe list trimmed, legacy side-stripe removed. 3.0.0: Candy & Chrome palette (2026-07-13) replaces the Southwest-reflex triad sitewide; turquoise token renamed cobalt. 3.3.0: "Central This Week" corridor lens on the homepage (P3/lever 4) — an owned almanac rendered as an editorial scoreboard (signage numerals, voice lede, hairline dividers), deliberately not boxed KPI cards. 3.4.0: semantic-motion pass (P5/lever 5) — Load-More rows announce arrival (staggered opacity+rise), the "On now" pill breathes wherever it appears, and a cached badge that flips live mid-session gets a one-shot pop; all reduced-motion-safe. 3.5.0: bolder type program (P5/lever 3, Broadsheet) — two fluid display rungs (disp-hero, disp-section); the events archive title becomes a real masthead (up to 72px) and the Tonight / Central This Week statements unify on one fluid section scale, with Playfair tightened at display size. Lists-over-tiles audit: passed (archive is list-based; Guidebook has no card grid yet). 3.6.0: the Guidebook index — /guide/ renders live from the page tree (venue profiles, neighborhood guides, spotlights, the Route 66 anchor) as an editorial contents page, name + rule + one line. Deliberately not a thumbnail card grid despite every child page carrying a hero image.
3.7.0: restores register_post_meta for page REST meta (_kad_post_layout/_kad_post_title/_r66_zone). This lived only on the live server and every deploy of functions.php silently reverted it, which would have 400d W12-W17 page creation. Adds the "Off the route" disclosure to Guidebook venue entries.
3.8.0: impeccable optimize/adapt/polish - preload the hero shield (LCP element, was a CSS background invisible to the preload scanner and not starting until ~1293ms); .r66-tonight__seam raised to a compliant target size (was 23px, 1px under WCAG 2.5.8 AA); brand gold focus ring reclaimed from TEC on /events/; last hard-coded color tokenized (--r66-red-deep).
3.9.0: display face is now Zilla Slab, set upright (canon). Replaces Playfair Display italic sitewide across all 10 display rules (mastheads, section titles, the hero wordmark). Playfair dropped from the font load; --r66-font-display points at Zilla; forced 900 weights lowered to 700 (Zilla's heaviest, avoids faux-bold). Oswald / Source Sans 3 / Bebas unchanged. Moves the type program out of the editorial-typographic reflex lane.
3.10.0: critique batch 1 - single pagination model on /events/ (hide the redundant tribe nav when Load More is active); Tonight band picks de-duplicated from the list below (server-side post__not_in on the default list page 1); tap-target fixes via inline-flex so min-height applies on the Tonight Tickets CTA and the TEC subscribe toggle (were rendering ~16-17px, WCAG 2.5.8).
3.11.0: venue profiles show "Upcoming at this venue" live (kills the dead-end where the CTA linked to the unfiltered calendar); matched to the tribe_venue by name, gated to not double W12 baked lists. Hero "on" contrast confirmed WCAG-exempt (decorative aria-hidden neon glyph, full gold under reduced-motion) - left as designed.
3.12.0: critique batch 2 (2026-07-17), two P0 regressions and the corridor promise.
 - FRONT DOOR: the hero and the "Central This Week" lens each had their own kadence_after_header hook with divergent guards. Setting a static front page tripped the hero's bail-out (the page content carries [r66_hero]) but not the lens's, so the lens inherited the fold and the homepage opened on a stats block: the hero-metric template, an absolute ban, with the wordmark 722px down (986 on mobile) and an H2 before the H1. Both now render from one composer (r66_front_door_html) above the content wrap, so the order cannot drift again and neither module sits in .single-content, where Kadence's (0,1,1) element rules were silently beating five of this theme's spacing declarations. The hero's "24px beat" comment described spacing that never rendered; the real grouping (20 / 48) is now declared and does.
 - CORRIDOR SCOPE: the ingest is city-wide and the corridor was a filter applied after the fact, so /events/ ran half "Off the route" (Corrales, the far NE Heights) while Launchpad, Effex and Marble sat behind a chip. zone=metro is now excluded at the query and from the facet rail, matching what r66_tonight_picks() and r66_corridor_week() already did alone. post__not_in of the Tonight picks is GONE: it made the unfiltered view a strict subset of its own facets (Everywhere 8 rows / "10 found", Nob Hill 9). The picks stay in the list and drop only their teaser (.r66-row-is-pick). Unknown facet values now match nothing instead of silently returning the full list.
 - TEC BAND: --tec-font-family-* were never set, so the events bar shipped in Helvetica Neue, a fourth face. Tokens + explicit roles (Oswald labels, Source Sans input). "Subscribe to Calendar" -> "Add to calendar" (it collided with the nav's newsletter Subscribe). Datepicker date re-freshens client-side (its <time datetime> and input were baked at cache-write time; same fix class as freshenBadges). Result count now recomputed on init, because the render-side dedup guard drops rows AFTER found_posts counts them.
 - /guide/: carries content-width-fullwidth, so Kadence zeroed the container and prose sat at left:0 with 552px dead space, ~109ch measure, and NO mobile gutter at all. The module owns its column now (--r66-list, 900, same axis as /events/) rather than trusting per-page meta a workflow can flip.
 - Targets: .r66-week__cta and .r66-guide__back a were 22.75/20px (bare 13px inline links are one line box). Fourth and fifth instances of the pattern v3.8.0 and v3.10.0 each fixed locally.
Author: CTRL-X Gen
*/

/* Fonts are enqueued from functions.php (one css2 URL, preconnected). No @import here. */

/* ============================================================
   1. TOKENS
   ============================================================ */
:root {
    /* Core palette — Candy & Chrome (approved 2026-07-13). Extracted from
       real Route 66 / Central Ave night photography; supersedes the
       Southwest-reflex turquoise-gold-terracotta triad. All values WCAG-AA
       verified on their grounds. Canon: docs/DESIGN.md. */
    --r66-gold:      #E6B23A;   /* metalflake gold, primary accent */
    --r66-red:       #C41F3C;   /* candy red, urgency (cream-on-pill 4.7:1) */
    --r66-cobalt:    #4C86F0;   /* candy electric blue, links + venue (was turquoise) */
    --r66-asphalt:   #121011;   /* near-neutral black so the jewels pop */
    --r66-deep:      #1B181A;
    --r66-surface:   #262227;

    /* Neutrals */
    --r66-cream:     #EFE6D6;   /* warm tungsten off-white, body ink */
    --r66-sand:      #BCA98C;   /* aged sand, secondary */
    --r66-muted:     #8E8790;   /* warm gray, tertiary */

    /* Derived neutrals */
    --r66-hairline:  #332E33;
    --r66-gold-dim:  #8A6A22;
    --r66-red-deep:  #8E1630;   /* candy red, shadowed edge (the "On now" pill border) */

    /* Alpha ladder (states are alpha math, never new hues) */
    --r66-gold-10:      rgba(230, 178, 58, 0.10);
    --r66-gold-30:      rgba(230, 178, 58, 0.30);
    --r66-gold-50:      rgba(230, 178, 58, 0.50);
    --r66-red-30:       rgba(196, 31, 60, 0.30);
    --r66-cobalt-30:    rgba(76, 134, 240, 0.30);
    --r66-cobalt-50:    rgba(76, 134, 240, 0.50);
    --r66-cream-06:     rgba(239, 230, 214, 0.06);
    --r66-cream-60:     rgba(239, 230, 214, 0.60);

    /* Interactive */
    --r66-gold-bright: #F2C24E; /* hover brightens, never darkens */

    /* Faces */
    --r66-font-display: 'Zilla Slab', Georgia, serif;
    --r66-font-head:    'Oswald', Arial, sans-serif;
    --r66-font-impact:  'Bebas Neue', 'Oswald', Arial, sans-serif;
    --r66-font-body:    'Source Sans 3', Arial, sans-serif;

    /* Type: utility ladder (the listing machine) */
    --r66-text-2xs: 11px;
    --r66-text-xs:  12px;
    --r66-text-sm:  13px;
    --r66-text-md:  14px;
    --r66-text-rg:  16px;

    /* Type: display ladder (ratio 1.25 from 16) */
    --r66-disp-1: 20px;
    --r66-disp-2: 25px;
    --r66-disp-3: 31px;
    --r66-disp-4: 39px;
    --r66-disp-5: 49px;
    --r66-disp-6: 62px;

    /* Fluid statement moments (v3.5.0, P5/lever 3 — Broadsheet). Two rungs
       above the fixed ladder: a top-of-page masthead and an in-page section
       statement. Both scale with the viewport so the display type is bold on
       a wide screen and never overflows a phone. */
    --r66-disp-hero:    clamp(42px, 6.6vw, 72px);
    --r66-disp-section: clamp(30px, 4.4vw, 48px);

    /* Body copy: 17px floor, full-opacity cream (the contrast fix) */
    --r66-body-size: 17px;
    --r66-body-lh:   1.75;
    --r66-prose-size: 19px;
    --r66-prose-lh:   1.7;

    /* Spacing: 4px base */
    --r66-sp-1: 4px;
    --r66-sp-2: 8px;
    --r66-sp-3: 12px;
    --r66-sp-4: 16px;
    --r66-sp-5: 20px;
    --r66-sp-6: 24px;
    --r66-sp-8: 32px;
    --r66-sp-10: 40px;
    --r66-sp-12: 48px;
    --r66-sp-16: 64px;

    /* Containers */
    --r66-shell: 1200px;
    --r66-list:  900px;
    --r66-prose: 728px;

    /* Radii */
    --r66-radius-btn:  2px;
    --r66-radius-card: 8px;
    --r66-radius-pill: 999px;
}

/* Kadence global palette override: re-brands parent theme output wholesale */
:root {
    --global-palette1: #E6B23A;
    --global-palette2: #8A6A22;
    --global-palette3: #EFE6D6;
    --global-palette4: #EFE6D6;
    --global-palette5: #BCA98C;
    --global-palette6: #332E33;
    --global-palette7: #262227;
    --global-palette8: #1B181A;
    --global-palette9: #121011;
    --global-body-font-family: var(--r66-font-body);
    --global-heading-font-family: var(--r66-font-head);
}

/* The Events Calendar tokens: single-point theming, same lever Southwest
   Contemporary uses on the identical plugin. body .tribe-common outguns
   TEC's own :root definitions regardless of stylesheet load order. */
:root,
body .tribe-common {
    --tec-color-text-primary: var(--r66-cream);
    --tec-color-text-primary-light: var(--r66-sand);
    --tec-color-text-secondary: var(--r66-sand);
    --tec-color-text-disabled: var(--r66-muted);
    --tec-color-icon-primary: var(--r66-sand);
    --tec-color-icon-primary-alt: var(--r66-cream);
    --tec-color-icon-secondary: var(--r66-muted);
    --tec-color-icon-active: var(--r66-gold);
    --tec-color-accent-primary: var(--r66-gold);
    --tec-color-accent-primary-hover: var(--r66-gold-bright);
    --tec-color-accent-primary-active: var(--r66-gold-bright);
    --tec-color-accent-primary-background: var(--r66-gold-10);
    --tec-color-accent-secondary: var(--r66-cream);
    --tec-color-link-primary: var(--r66-cream);
    --tec-color-link-accent: var(--r66-cobalt);
    --tec-color-link-accent-hover: var(--r66-gold);
    --tec-color-button-primary: var(--r66-gold);
    --tec-color-button-primary-hover: var(--r66-gold-bright);
    --tec-color-background: var(--r66-asphalt);
    --tec-color-background-events: transparent;
    --tec-color-background-transparent: transparent;
    --tec-color-background-secondary: var(--r66-deep);
    --tec-color-background-secondary-hover: var(--r66-surface);
    --tec-color-border-default: var(--r66-hairline);
    --tec-color-border-secondary: var(--r66-hairline);
    --tec-color-border-active: var(--r66-gold);
    --tec-color-day-marker-current-month: var(--r66-cream);
    --tec-color-day-marker-past-month: var(--r66-muted);

    /* Font tokens. This block themed every TEC colour and none of its type,
       so the plugin's own sans stack ("Helvetica Neue") rendered untouched on
       the events bar: keyword search, the List/Month/Day switcher, Today, the
       datepicker and the .ics button all shipped in a fourth typeface the
       three-font system never sanctioned, in the middle of the site's most
       important page. Setting the tokens fixes the whole control band at the
       source rather than selector by selector. */
    --tec-font-family-sans-serif: var(--r66-font-body);
    --tec-font-family-base: var(--r66-font-body);
}

/* ============================================================
   2. BASE
   ============================================================ */
body {
    background-color: var(--r66-asphalt);
    color: var(--r66-cream);
    font-family: var(--r66-font-body);
    font-weight: 300;
    font-size: var(--r66-body-size);
    line-height: var(--r66-body-lh);
}

::selection {
    background: var(--r66-gold);
    color: var(--r66-asphalt);
}

/* Heading system: Zilla Slab once per view (page title), Oswald owns structure */
h1, h2, h3, h4, h5, h6 {
    color: var(--r66-cream);
    margin-top: 0;
}
h1 {
    font-family: var(--r66-font-display);
    font-style: normal;
    font-weight: 700;
    font-size: var(--r66-disp-4);
    line-height: 1.15;
    letter-spacing: 0;
}
h2 {
    font-family: var(--r66-font-head);
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    font-size: var(--r66-disp-2);
    line-height: 1.28;
}
h3 {
    font-family: var(--r66-font-head);
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    font-size: var(--r66-disp-1);
    line-height: 1.4;
}
h4, h5, h6 {
    font-family: var(--r66-font-head);
    font-weight: 500;
    font-size: var(--r66-text-rg);
    line-height: 1.4;
}

p { margin-top: 0; }

/* Links: candy cobalt owns links, gold owns hover states */
a {
    color: var(--r66-cobalt);
    text-decoration: none;
    transition: color 0.15s ease;
}
a:hover, a:focus {
    color: var(--r66-gold);
}
:focus-visible {
    outline: 2px solid var(--r66-gold);
    outline-offset: 2px;
}
/* TEC ships `.tribe-common a:focus { outline: auto }` at specificity (0,2,1),
   which outguns the bare `:focus-visible` above (0,1,0). The result was the
   generic UA ring on /events/ and the brand ring everywhere else. Match TEC's
   specificity to take it back. `:focus:not(:focus-visible)` also suppresses
   TEC's ring on mouse click, where a focus ring is just noise. */
.tribe-common a:focus-visible,
.tribe-common button:focus-visible,
.tribe-common input:focus-visible,
.tribe-common select:focus-visible,
.tribe-common [tabindex]:focus-visible {
    outline: 2px solid var(--r66-gold);
    outline-offset: 2px;
}
.tribe-common a:focus:not(:focus-visible),
.tribe-common button:focus:not(:focus-visible) {
    outline: none;
}

/* Buttons: SWC spec, colors swapped. Hover brightens, never darkens. */
.wp-element-button,
.wp-block-button__link,
.kb-button,
button,
input[type="submit"] {
    background: var(--r66-gold);
    color: var(--r66-asphalt);
    font-family: var(--r66-font-head);
    font-weight: 500;
    font-size: var(--r66-text-sm);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    border: none;
    border-radius: var(--r66-radius-btn);
    padding: 10px 24px;
    transition: background 0.15s ease;
    cursor: pointer;
}
.wp-element-button:hover,
.wp-block-button__link:hover,
.kb-button:hover,
button:hover,
input[type="submit"]:hover {
    background: var(--r66-gold-bright);
    color: var(--r66-asphalt);
}

/* Ghost secondary (last.fm inset-ring pattern) */
.r66-btn-ghost {
    background: transparent;
    color: var(--r66-cream);
    box-shadow: inset 0 0 0 1px var(--r66-cream-60);
}
.r66-btn-ghost:hover {
    background: transparent;
    color: var(--r66-cream);
    box-shadow: inset 0 0 0 1px var(--r66-cream);
}

/* Forms */
input[type="text"],
input[type="email"],
input[type="search"],
input[type="tel"],
textarea,
select {
    background: var(--r66-surface);
    border: 1px solid var(--r66-hairline);
    border-radius: var(--r66-radius-btn);
    color: var(--r66-cream);
    font-family: var(--r66-font-body);
    font-size: 15px;
    padding: 10px 12px;
}
input:focus, textarea:focus, select:focus {
    border-color: var(--r66-gold);
    outline: none;
}
::placeholder { color: var(--r66-muted); opacity: 1; }

/* ============================================================
   3. SIGNATURE ELEMENTS
   ============================================================ */

/* The center line: highway lane marking. MAJOR SECTION BREAKS ONLY,
   never between cards or rows (approval constraint 2026-07-09).

   Currently emitted by nothing. Its only caller was the hero-to-content
   break, where the corridor lens's own 2px gold top rule made it the second
   gold rule inside 34px and the echo destroyed its job. Kept because it is a
   canon brand element (DESIGN.md) and it remains correct for a major break
   where no module supplies its own edge; use it there, not as decoration. */
.r66-centerline {
    border: none;
    height: 2px;
    width: min(280px, 60%);
    margin: var(--r66-sp-12) auto;
    background: repeating-linear-gradient(
        90deg,
        var(--r66-gold-50) 0 26px,
        transparent 26px 44px
    );
}

/* Plain gold rule: the fallback divider and default hr */
hr, .r66-divider {
    border: none;
    height: 2px;
    background: var(--r66-gold);
    margin: var(--r66-sp-8) auto;
    width: 48px;
}

/* Shield rule, glow removed (brand book bans glow on brand elements) */
.r66-shield-rule {
    display: flex;
    align-items: center;
    gap: 1rem;
    margin: var(--r66-sp-8) 0;
}
.r66-shield-rule::before,
.r66-shield-rule::after {
    content: '';
    flex: 1;
    height: 1px;
    background: var(--r66-gold-50);
}
.r66-shield-rule .shield {
    color: var(--r66-gold);
}

/* Eyebrow label */
.r66-eyebrow,
.wp-block-heading.is-style-eyebrow {
    font-family: var(--r66-font-head);
    font-weight: 300;
    font-size: var(--r66-text-2xs);
    letter-spacing: 0.22em;
    text-transform: uppercase;
    color: var(--r66-sand);
}

/* One pill spec sitewide (Broadsheet law) */
.r66-vibe-tag,
.r66-pill {
    display: inline-block;
    font-family: var(--r66-font-head);
    font-weight: 500;
    font-size: var(--r66-text-xs);
    letter-spacing: 0.05em;
    text-transform: uppercase;
    color: var(--r66-cobalt);
    border: 1px solid var(--r66-cobalt);
    border-radius: var(--r66-radius-pill);
    padding: 4px 10px;
    margin: 2px 4px 2px 0;
}
.r66-pill-tonight {
    color: var(--r66-cream);
    background: var(--r66-red);
    border-color: var(--r66-red-deep);
}
.r66-pill-status {
    color: var(--r66-sand);
    border-color: var(--r66-sand);
}

/* ============================================================
   4. HEADER / NAV
   ============================================================ */
#masthead,
.site-header,
.site-header-row-container-inner {
    background: var(--r66-asphalt);
}
.site-header-upper-wrap,
.site-main-header-wrap {
    border-bottom: 1px solid var(--r66-hairline);
}

/* Kill the Kadence sticky white flash (matches parent selector, later cascade) */
#masthead .kadence-sticky-header.item-is-fixed:not(.item-at-start):not(.site-header-row-container):not(.site-main-header-wrap),
#masthead .kadence-sticky-header.item-is-fixed:not(.item-at-start) > .site-header-row-container-inner {
    background: var(--r66-asphalt);
    border-bottom: 1px solid var(--r66-hairline);
}

/* Site title: Bebas signage voice. The full three-face lockup lives in the hero. */
.site-branding .site-title {
    font-family: var(--r66-font-impact);
    font-weight: 400;
    font-size: 24px;
    line-height: 1.1;
    letter-spacing: 0.04em;
    color: var(--r66-cream);
}
.site-branding a:hover .site-title,
.site-branding a:focus .site-title {
    color: var(--r66-gold);
}

/* Primary nav: Oswald tracked caps */
.main-navigation .primary-menu-container > ul > li.menu-item > a,
.header-navigation .header-menu-container > ul > li > a {
    font-family: var(--r66-font-head);
    font-weight: 300;
    font-size: var(--r66-text-sm);
    letter-spacing: 0.15em;
    text-transform: uppercase;
    color: var(--r66-sand);
}
.main-navigation .primary-menu-container > ul > li.menu-item > a:hover,
.header-navigation .header-menu-container > ul > li > a:hover {
    color: var(--r66-cream);
}
.main-navigation .primary-menu-container > ul > li.menu-item.current-menu-item > a,
.header-navigation .header-menu-container > ul > li.current-menu-item > a {
    color: var(--r66-cream);
    box-shadow: inset 0 -2px 0 0 var(--r66-gold);
}

/* The live customizer hides the site title on tablet and mobile
   (vs-md-false / vs-sm-false), leaving the small-screen header brandless.
   Brand presence wins: show it everywhere. */
.mobile-site-branding .site-title.vs-md-false,
.mobile-site-branding .site-title.vs-sm-false {
    display: block !important;
}

/* Mobile drawer */
.popup-drawer .drawer-inner,
#mobile-drawer .drawer-inner {
    background: var(--r66-deep);
}
.popup-drawer .drawer-inner a,
#mobile-drawer .mobile-navigation a {
    color: var(--r66-cream);
}
.menu-toggle-open,
.search-toggle-open {
    color: var(--r66-cream);
}

/* ============================================================
   5. HERO (homepage; markup from functions.php [r66_hero])
   ============================================================ */
.r66-hero {
    position: relative;
    display: flex;
    align-items: center;
    min-height: 640px;
    overflow: hidden;
    background: var(--r66-asphalt);
    /* No border-bottom: .r66-week follows immediately and supplies the seam
       with its own 2px gold rule. A hairline here made a third line inside
       34px of the gold one. */
}

/* Kinetic layer: right 75 percent, z1, clipped, dimmed toward the text side.
   The gradient is baked into the layer so cream text always passes contrast. */
.r66-hero-plate {
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    width: 75%;
    z-index: 1;
    background-size: cover;
    background-position: right center;
    background-repeat: no-repeat;
}
.r66-hero-plate::before {
    content: '';
    position: absolute;
    inset: 0;
    background: linear-gradient(
        90deg,
        var(--r66-asphalt) 0%,
        rgba(18, 16, 17, 0.88) 18%,
        rgba(18, 16, 17, 0.35) 45%,
        rgba(18, 16, 17, 0.05) 70%,
        rgba(18, 16, 17, 0.25) 100%
    );
}

/* Gold sheen: a slow light sweep across the plate, roughly 8s, low opacity.
   Animates light, not the scene. */
.r66-hero-plate::after {
    content: '';
    position: absolute;
    inset: 0;
    background: linear-gradient(
        105deg,
        transparent 0%,
        transparent 40%,
        rgba(230, 178, 58, 0.09) 50%,
        transparent 60%,
        transparent 100%
    );
    background-size: 300% 100%;
    animation: r66-sheen 8s linear infinite;
    mix-blend-mode: screen;
}
@keyframes r66-sheen {
    0%   { background-position: 120% 0; }
    100% { background-position: -60% 0; }
}

/* Ignition flicker on load, then steady. Opacity only, no glow. */
.r66-hero-plate {
    animation: r66-ignite 1.6s ease-out 1 both;
}
@keyframes r66-ignite {
    0%   { opacity: 0.25; }
    7%   { opacity: 0.85; }
    11%  { opacity: 0.35; }
    18%  { opacity: 0.95; }
    23%  { opacity: 0.55; }
    32%  { opacity: 1; }
    100% { opacity: 1; }
}

/* Text block: z2, overlapping the plate from the left */
.r66-hero-inner {
    position: relative;
    z-index: 2;
    width: 100%;
    max-width: var(--r66-shell);
    margin: 0 auto;
    padding: var(--r66-sp-16) var(--r66-sp-6);
}

/* The wordmark lockup (brand book 02.1) */
.r66-wordmark {
    margin: 0 0 var(--r66-sp-5) 0;
    line-height: 1;
}
.r66-wordmark span { display: block; }
.r66-wm-live {
    font-family: var(--r66-font-display);
    font-style: normal;
    font-weight: 400;
    font-size: clamp(42px, 6vw, 64px);
    color: var(--r66-cream);
    line-height: 1.05;
}
.r66-wm-on {
    font-family: var(--r66-font-head);
    font-weight: 300;
    font-size: clamp(16px, 2vw, 20px);
    letter-spacing: 0.22em;
    text-transform: uppercase;
    color: var(--r66-gold);
    margin: var(--r66-sp-2) 0;
}
.r66-wm-route {
    font-family: var(--r66-font-impact);
    font-weight: 400;
    font-size: clamp(56px, 9vw, 96px);
    letter-spacing: 0.02em;
    color: var(--r66-cream);
    line-height: 0.95;
}

/* The one bold move: neon tube power-on for the "on". Homepage hero only
   (approval constraint). Two flickers, then ignites and holds. Color and
   opacity only, no text-shadow, no glow. */
.r66-hero .r66-wm-on {
    animation: r66-power-on 2s ease-out 1 both;
}
@keyframes r66-power-on {
    0%   { color: var(--r66-gold-dim); opacity: 0.45; }
    38%  { color: var(--r66-gold-dim); opacity: 0.45; }
    44%  { color: var(--r66-gold); opacity: 1; }    /* flicker 1 */
    50%  { color: var(--r66-gold-dim); opacity: 0.4; }
    58%  { color: var(--r66-gold); opacity: 1; }    /* flicker 2 */
    64%  { color: var(--r66-gold-dim); opacity: 0.5; }
    72%  { color: var(--r66-gold); opacity: 1; }    /* ignition */
    100% { color: var(--r66-gold); opacity: 1; }
}

/* Wordmark, lede and CTA are one group then one exit: the lede binds tight to
   the wordmark (20), the CTA separates (48). The old comment here claimed a
   flat "24px beat" for both gaps, but that beat never rendered — the hero sat
   inside .entry-content, where Kadence's .single-content h1/p rules (0,1,1)
   overrode it to a font-size-derived 19.5/56. The hero now renders above the
   content wrap, so these values are real; a flat 24/24 would bind nothing. */
.r66-hero-lede {
    font-family: var(--r66-font-body);
    font-weight: 300;
    font-size: 18px;
    line-height: 1.35;
    color: var(--r66-sand);
    margin: 0 0 var(--r66-sp-12) 0;
    max-width: 34ch;
}
.r66-hero .r66-btn-big {
    display: inline-flex;
    align-items: center;
    background: var(--r66-gold);
    color: var(--r66-asphalt);
    font-family: var(--r66-font-head);
    font-weight: 500;
    font-size: var(--r66-text-md);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    border-radius: var(--r66-radius-btn);
    min-height: 48px;
    padding: 0 var(--r66-sp-6);
    line-height: 1.4;
}
.r66-hero .r66-btn-big:hover {
    background: var(--r66-gold-bright);
    color: var(--r66-asphalt);
}

/* Mobile hero: overlap becomes stack (last.fm mechanic) */
@media (max-width: 767px) {
    .r66-hero {
        min-height: 0;
        display: block;
        padding-top: 56vw;
    }
    .r66-hero-plate {
        width: 100%;
        height: 56vw;
        bottom: auto;
        background-position: right 30%; /* keep the shield's crown in frame */
    }
    .r66-hero-plate::before {
        background: linear-gradient(
            180deg,
            rgba(17, 17, 17, 0.15) 0%,
            rgba(17, 17, 17, 0.05) 55%,
            var(--r66-asphalt) 100%
        );
    }
    .r66-hero-inner {
        padding: var(--r66-sp-8) var(--r66-sp-4) var(--r66-sp-12);
    }
    .r66-hero .r66-btn-big {
        display: block;
        text-align: center;
    }
}

/* ============================================================
   6. EVENT LISTINGS (The Events Calendar list view)
   ============================================================ */

/* Editorial column cap (SWC law). Kadence's TEC compat sheet sets
   `#primary .tribe-common .tribe-common-l-container { max-width: none }`
   at (1,1,1); the #primary variant here matches at (1,2,0) and wins by
   specificity, not load order. */
#primary .tribe-common .tribe-common-l-container,
.tribe-events .tribe-events-l-container,
#tribe-events-pg-template {
    max-width: var(--r66-list);
    padding-left: var(--r66-sp-4);
    padding-right: var(--r66-sp-4);
    margin-left: auto;
    margin-right: auto;
}
.tribe-events-view {
    background: transparent;
}

/* Page title. TEC 6.15.16+ ships the archive h1 screen-reader-only; the
   child override at tribe/events/v2/components/content-title.php restores
   the visible display masthead (Zilla Slab) with these classes. */
.tribe-events-header__title,
.tribe-events-header__title-text,
.tribe-common .tribe-events-header__content-title-text.r66-events-title {
    font-family: var(--r66-font-display) !important;
    font-style: normal;
    font-weight: 700 !important;
    font-size: var(--r66-disp-hero) !important;
    line-height: 1.02;
    color: var(--r66-cream);
    text-transform: none;
    /* the slab closes up at masthead scale */
    letter-spacing: -0.015em;
    margin: 0;
    text-wrap: balance;
}
.r66-events-header,
.tribe-common .tribe-events-header__content-title.r66-events-header {
    /* TEC turns content-title into a flex row at full breakpoint, which
       squeezes the note into a skinny second column beside the h1 */
    display: block;
    margin: var(--r66-sp-4) 0 var(--r66-sp-2);
}
/* The standing qualifier: freshness signal plus the call-ahead rule the
   voice guide requires wherever times appear */
.r66-events-note {
    font-family: var(--r66-font-head);
    font-weight: 300 !important;
    font-size: var(--r66-text-xs);
    letter-spacing: 0.15em;
    text-transform: uppercase;
    color: var(--r66-sand);
    margin: var(--r66-sp-2) 0 0;
}

/* Events bar (search) */
.tribe-events-c-events-bar {
    background: var(--r66-deep);
    border: 1px solid var(--r66-hairline);
    border-radius: var(--r66-radius-card);
}
.tribe-events-c-events-bar--border { border-color: var(--r66-hairline); }
.tribe-events-c-search__input,
.tribe-events-c-events-bar input[type="text"] {
    background: var(--r66-surface);
    color: var(--r66-cream);
}

/* The TEC control band, on the three-font system.
   The --tec-font-family-* tokens above catch most of it, but TEC hardcodes
   its own stack on several of these, so the roles are assigned explicitly
   here. Per DESIGN.md: Oswald carries labels and navigation, Source Sans 3
   carries anything the reader types into. This band is the seam where the
   bespoke work stopped and the plugin started; it is kept (two filter models
   is a deliberate call) but it should not announce itself in a fourth face. */
.tribe-events .tribe-events-c-search__input,
.tribe-events .tribe-events-c-events-bar input[type="text"],
.tribe-events .tribe-events-c-events-bar input[type="search"] {
    font-family: var(--r66-font-body) !important;
    font-weight: 300;
    font-size: var(--r66-text-rg) !important;
}
.tribe-events .tribe-events-c-search__button,
.tribe-events .tribe-events-c-view-selector__list-item-text,
.tribe-events .tribe-events-c-top-bar__today-button,
.tribe-events .tribe-events-c-subscribe-dropdown__button-text,
.tribe-events .tribe-events-c-subscribe-dropdown__list-item-link {
    font-family: var(--r66-font-head) !important;
    font-weight: 500 !important;
    font-size: var(--r66-text-sm) !important;
    letter-spacing: 0.12em;
    text-transform: uppercase;
}
/* The datepicker's own calendar grid: TEC renders the day numerals and the
   weekday header in its plugin stack. Numerals take the signage face, the
   weekday row takes the same tracked Oswald caps the date rail uses. */
.tribe-events .tribe-events-c-top-bar__datepicker .datepicker-days td,
.tribe-events .tribe-events-c-top-bar__datepicker .datepicker-switch {
    font-family: var(--r66-font-head) !important;
    font-weight: 400;
}
.tribe-events .tribe-events-c-top-bar__datepicker .datepicker-days th.dow {
    font-family: var(--r66-font-head) !important;
    font-weight: 300;
    font-size: var(--r66-text-2xs) !important;
    letter-spacing: 0.15em;
    text-transform: uppercase;
    color: var(--r66-sand) !important;
}
.tribe-events-c-search__button {
    background: var(--r66-gold);
    color: var(--r66-asphalt);
}
.tribe-events-c-search__button:hover {
    background: var(--r66-gold-bright);
}

/* Top bar date range readout */
.tribe-events-c-top-bar__datepicker-button,
.tribe-events-c-top-bar__datepicker-button .tribe-events-c-top-bar__datepicker-time {
    font-family: var(--r66-font-head) !important;
    font-weight: 500 !important;
    font-size: var(--r66-disp-1) !important;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    color: var(--r66-cream);
}

/* Month separator: temporal band, same language as the day bands */
.tribe-events-calendar-list__month-separator {
    margin: var(--r66-sp-10) 0 var(--r66-sp-5);
}
.tribe-events-calendar-list__month-separator-text {
    display: block;
    font-family: var(--r66-font-head) !important;
    font-weight: 500 !important;
    font-size: var(--r66-text-md) !important;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--r66-sand) !important;
    background: var(--r66-surface) !important;
    border-bottom: 2px solid var(--r66-gold) !important;
    padding: 6px 12px 4px;
}

/* The row */
.tribe-events-calendar-list__event-row {
    position: relative;
    padding-bottom: var(--r66-sp-5);
    margin-bottom: var(--r66-sp-5);
    border: none;
    transition: background 0.15s ease;
}
.tribe-events-calendar-list__event-row:hover {
    background: var(--r66-cream-06);
}

/* Textured row separator (Oh My Rockness law: never a plain hairline).
   The only textured element in the system. */
.tribe-events-calendar-list__event-row::after {
    content: '';
    position: absolute;
    left: calc(-1 * var(--r66-sp-4));
    right: calc(-1 * var(--r66-sp-4));
    bottom: 0;
    height: 5px;
    background-image: radial-gradient(circle, var(--r66-hairline) 1px, transparent 1.6px);
    background-size: 8px 5px;
    background-repeat: repeat-x;
    background-position: 0 center;
}
.tribe-events-calendar-list__event-row:last-child::after { display: none; }

/* The date rail: the metronomic brand stamp (SWC + OMR) */
.tribe-events-calendar-list__event-date-tag {
    width: 56px;
    flex: none;
    text-align: center;
}
.tribe-events-calendar-list__event-date-tag-weekday {
    display: block;
    /* !important on font declarations only: TEC's compound selectors
       (.tribe-common--breakpoint-medium.tribe-common .x) outgun any
       polite selector here, and load order is not guaranteed */
    font-family: var(--r66-font-head) !important;
    font-weight: 300;
    font-size: var(--r66-text-2xs);
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--r66-sand);
    margin-bottom: -2px;
}
.tribe-events-calendar-list__event-date-tag-daynum {
    display: block;
    font-family: var(--r66-font-impact) !important;
    font-weight: 400 !important;
    font-size: var(--r66-disp-2) !important;
    line-height: 1.1;
    color: var(--r66-cream);
}

/* Venue plate: the editorial fallback for an imageless slot (2.4.0).
   Signage voice: Bebas venue name on a deep panel with real noise
   texture (SVG turbulence, per the brand rule: photo or noise, never
   geometric decoration). Never a bare void, especially on Tonight rows. */
.r66-thumb-link { display: block; }
/* Scoped under .tribe-common: TEC's common-skeleton reset zeroes padding
   via `.tribe-common div` (specificity 0,1,1), which outranks a bare
   `.r66-venue-plate` (0,1,0). Matching the .tribe-common context restores
   the inset. Same reason the name's padding-bottom is scoped below. */
.tribe-common .r66-venue-plate,
.r66-venue-plate {
    position: relative;
    aspect-ratio: 3 / 2;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--r66-deep);
    border: 1px solid var(--r66-hairline);
    border-radius: var(--r66-radius-btn);
    overflow: hidden;
    padding: var(--r66-sp-4);
    transition: border-color 0.15s ease;
}
.r66-venue-plate::before {
    content: '';
    position: absolute;
    inset: 0;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)' opacity='0.5'/%3E%3C/svg%3E");
    opacity: 0.07;
    pointer-events: none;
}
.tribe-common .r66-venue-plate__name,
.r66-venue-plate__name {
    position: relative;
    font-family: var(--r66-font-impact);
    font-weight: 400;
    font-size: clamp(20px, 3vw, 31px);
    line-height: 1.1;
    letter-spacing: 0.03em;
    text-transform: uppercase;
    color: var(--r66-cream);
    text-align: center;
    padding-bottom: var(--r66-sp-3);
    max-width: 100%;
}
.r66-venue-plate__name::after {
    content: '';
    position: absolute;
    left: 50%;
    bottom: 0;
    transform: translateX(-50%);
    width: 48px;
    height: 2px;
    background: var(--r66-gold);
}
.r66-thumb-link:hover .r66-venue-plate {
    border-color: var(--r66-gold-50);
}

/* Featured image: locked to 3:2 (POW normalization) */
.tribe-events-calendar-list__event-featured-image-wrapper {
    margin-bottom: 0;
}
.tribe-events-calendar-list__event-featured-image {
    aspect-ratio: 3 / 2;
    object-fit: cover;
    width: 100%;
    border-radius: var(--r66-radius-btn);
    transition: opacity 0.2s ease;
}
.tribe-events-calendar-list__event-featured-image-wrapper a:hover img {
    opacity: 0.8; /* SWC: interaction is subtractive */
}

/* Title: Oswald structure voice, data not display */
.tribe-events-calendar-list__event-title {
    font-family: var(--r66-font-head) !important;
    font-weight: 500 !important;
    font-size: var(--r66-text-rg);
    line-height: 1.5;
    letter-spacing: 0.01em;
    text-transform: none;
}
.tribe-events-calendar-list__event-title-link {
    color: var(--r66-cream);
}
.tribe-events-calendar-list__event-title-link:hover {
    color: var(--r66-gold);
    text-decoration: underline;
    text-decoration-thickness: 2px;
    text-underline-offset: 3px;
}

/* Datetime: tabular numerals (Pollstar) */
.tribe-events-calendar-list__event-datetime-wrapper {
    font-family: var(--r66-font-body) !important;
    font-weight: 300 !important;
    font-size: var(--r66-text-md);
    color: var(--r66-sand);
    font-variant-numeric: tabular-nums;
}

/* Venue: candy cobalt link ink, pipe pattern */
.tribe-events-calendar-list__event-venue {
    font-family: var(--r66-font-head) !important;
    font-weight: 300;
    font-size: var(--r66-text-xs);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    font-style: normal;
}
.tribe-events-calendar-list__event-venue-title {
    color: var(--r66-cobalt);
    /* TEC's b2--bold asks for 700; Oswald loads 300/500 only, so the
       browser synthesizes faux-bold without this. Same story for size:
       TEC's b2 compound wins 14px over the venue block's 12px scale. */
    font-weight: 500 !important;
    font-size: var(--r66-text-xs) !important;
}
.tribe-events-calendar-list__event-venue-address {
    color: var(--r66-muted);
}

/* Description: hidden on mobile (Broadsheet), 2-line clamp from 768px up.
   TEC hides it behind `.tribe-common-a11y-hidden` (!important) and unhides
   at its JS-applied breakpoint classes with `display: block !important` at
   (0,3,0); the compound selectors below match that weight and win by load
   order, with or without the breakpoint classes present. */
.tribe-events-calendar-list__event-description {
    font-family: var(--r66-font-body) !important;
    font-weight: 300 !important; /* the book's one explicit body rule */
    font-size: var(--r66-text-rg) !important;
    line-height: 1.5;
    color: var(--r66-cream);
}
/* Surface the teaser at every width (P2, lever 2 — the voice is the soul;
   hiding it on mobile deleted the one line of it on the smallest screen).
   Beats TEC's tribe-common-a11y-hidden display:none !important. */
.tribe-events .tribe-events-calendar-list__event-description.tribe-common-a11y-hidden,
.tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-list__event-description {
    display: -webkit-box !important;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
/* The three rows the "Tonight on Central" band just promoted sit directly
   under it, same three, same order. They stay in the list — removing them
   from the query is what made the unfiltered view a subset of its own facets
   — but they do not repeat the teaser prose the band printed in full 200px
   above. Every fact and every link survives; only the echo is dropped. This
   is de-emphasis, which is what the band being a promotion actually means.
   Scoped to the unfiltered view because that is the only place the band
   renders (see the r66-row-is-pick filter in functions.php). */
.r66-row-is-pick .tribe-events-calendar-list__event-description,
.tribe-common--breakpoint-medium.tribe-events .r66-row-is-pick .tribe-events-calendar-list__event-description {
    display: none !important;
}

.tribe-events-calendar-list__event-description p { margin-bottom: 0; }
.tribe-events-calendar-list__event-description a {
    color: var(--r66-cobalt);
}

/* Pagination: numbered, current cell asphalt-on-gold (OMR) */
.tribe-events-c-nav {
    border-top: none;
    padding-top: var(--r66-sp-6);
}
.tribe-events-c-nav__prev,
.tribe-events-c-nav__next {
    font-family: var(--r66-font-head);
    font-weight: 500;
    font-size: var(--r66-text-sm);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--r66-cobalt);
    background: var(--r66-deep);
    border: 1px solid var(--r66-hairline);
    border-radius: var(--r66-radius-btn);
    padding: 8px 16px;
}
.tribe-events-c-nav__prev:hover,
.tribe-events-c-nav__next:hover {
    color: var(--r66-asphalt);
    background: var(--r66-gold);
    border-color: var(--r66-gold);
}
.tribe-events-c-nav__prev:disabled,
.tribe-events-c-nav__next:disabled {
    color: var(--r66-muted);
    background: transparent;
}

/* Load More (2.1.0, events-fix Task C): hero CTA treatment, replaces the
   prev/next click-through on the list view when JS is available */
.r66-load-more,
.tribe-common .r66-load-more {
    display: block;
    width: min(320px, 100%);
    margin: var(--r66-sp-8) auto var(--r66-sp-4);
    background: var(--r66-gold);
    color: var(--r66-asphalt);
    font-family: var(--r66-font-head);
    font-weight: 500;
    font-size: var(--r66-text-md);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    text-align: center;
    border: none;
    border-radius: 3px;
    min-height: 48px;
    padding: 12px 25px;
    cursor: pointer;
    transition: background 0.15s ease;
}
.r66-load-more:hover,
.tribe-common .r66-load-more:hover { background: var(--r66-gold-bright); color: var(--r66-asphalt); }
.r66-load-more:disabled,
.tribe-common .r66-load-more:disabled {
    background: var(--r66-surface);
    color: var(--r66-sand);
    cursor: wait;
}
.r66-load-more,
.tribe-common .r66-load-more {
    box-sizing: border-box;
    white-space: normal;
}
/* With Load More active, only the Next link is redundant. Previous Events
   (the past-events path) stays reachable as a quiet trailing link. */
/* Load More owns forward pagination on the list, so the whole tribe nav is
   redundant here. Hiding only __next left "Previous Events" (a link into PAST
   shows) beside Load More: two pagination models on a forward-looking list.
   The class is JS-added, so the no-JS fallback nav still renders. */
.tribe-events-c-nav.r66-nav-replaced { display: none; }
.tribe-events-c-nav.r66-nav-replaced .tribe-events-c-nav__next { display: none; }
.tribe-events-c-nav.r66-nav-replaced .tribe-events-c-nav__prev {
    background: transparent;
    border: none;
    color: var(--r66-muted);
    font-weight: 300;
    letter-spacing: 0.12em;
}
.tribe-events-c-nav.r66-nav-replaced .tribe-events-c-nav__prev:hover {
    background: transparent;
    color: var(--r66-cobalt);
}

/* Row extras: neighborhood, Free marker, ticket CTA (metadata line, per
   the brand book's events-list spec). TEC's stacked header is a flex
   column with order 1/2/3 on datetime/title/venue; without an order the
   injected extras sort to the top of every row. */
.r66-event-extras {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: var(--r66-sp-1) var(--r66-sp-4);
    margin-top: var(--r66-sp-2);
    order: 4;
}
.r66-nbhd,
.r66-vibe-kick {
    font-family: var(--r66-font-head);
    font-weight: 300;
    font-size: var(--r66-text-2xs);
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--r66-sand);
}
/* Vibe reads one step quieter than the neighborhood it follows */
.r66-vibe-kick { color: var(--r66-muted); }
.r66-free {
    font-family: var(--r66-font-head);
    font-weight: 500;
    font-size: var(--r66-text-2xs);
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--r66-cobalt);
}
.r66-ticket-link,
.tribe-common .r66-ticket-link {
    font-family: var(--r66-font-head);
    font-weight: 500;
    font-size: var(--r66-text-xs);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--r66-gold);
    padding: 4px 0;
}
.r66-ticket-link:hover,
.tribe-common .r66-ticket-link:hover {
    color: var(--r66-gold-bright);
    text-decoration: underline;
    text-decoration-thickness: 2px;
    text-underline-offset: 3px;
}

/* On-now badge in list rows: the only red on the page (policy v3) */
.tribe-events-calendar-list__event-header .r66-pill-tonight {
    align-self: flex-start;
    margin: 0 0 var(--r66-sp-2);
}
/* Same-day marker: datetime register, no alarm color. order 1 folds it
   into the datetime cluster of TEC's flex-ordered header. */
.r66-day-token,
.tribe-common .r66-day-token {
    order: 1;
    align-self: flex-start;
    font-family: var(--r66-font-head);
    font-weight: 500;
    font-size: var(--r66-text-2xs);
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--r66-sand);
    margin: 2px 0 0;
}

/* Facet rail: neighborhood + vibe chips under the page title (2.3.0).
   Chips are interactive controls, so they take the surface treatment,
   distinct from the passive cobalt vibe tags. Active flips to gold. */
.r66-facets {
    display: flex;
    flex-direction: column;
    gap: var(--r66-sp-2);
    margin: var(--r66-sp-4) 0 0;
}
.r66-facet-row {
    display: flex;
    flex-wrap: wrap;
    gap: var(--r66-sp-2);
}
.r66-chip,
.tribe-common .r66-chip {
    display: inline-flex;
    align-items: center;
    font-family: var(--r66-font-head);
    font-weight: 300;
    font-size: var(--r66-text-xs);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--r66-cream);
    background: var(--r66-surface);
    border: 1px solid var(--r66-hairline);
    border-radius: var(--r66-radius-pill);
    padding: 7px 14px;
    min-height: 36px;
    box-sizing: border-box;
    transition: border-color 0.15s ease, background 0.15s ease, color 0.15s ease;
}
.r66-chip:hover,
.tribe-common .r66-chip:hover {
    color: var(--r66-cream);
    border-color: var(--r66-gold-50);
}
/* Touch comfort: facet chips now meet the WCAG 2.5.8 AAA 44px target size for
   every pointer, not just touch (polish pass). They keep their horizontal
   padding and rhythm; only the tap height grows. */
.r66-chip,
.tribe-common .r66-chip { min-height: 44px; }
.r66-chip.is-active,
.tribe-common .r66-chip.is-active {
    background: var(--r66-gold);
    color: var(--r66-asphalt);
    border-color: var(--r66-gold);
    font-weight: 500;
}
.r66-chip.is-active:hover,
.tribe-common .r66-chip.is-active:hover {
    background: var(--r66-gold-bright);
    color: var(--r66-asphalt);
}
/* Vibe row reads one register quieter than neighborhoods */
.r66-facet-vibe .r66-chip {
    background: transparent;
    color: var(--r66-sand);
}
@media (pointer: coarse) {
    .r66-chip, .tribe-common .r66-chip { min-height: 44px; padding: 10px 16px; }
}
/* Mobile: each facet row is one swipeable line (adapt pass 2026-07-13).
   Wrapped chips stacked ~296px between the title and the first event;
   one line per facet keeps the whole rail near 100px. Rows scroll
   internally, the page never scrolls sideways. */
@media (max-width: 767px) {
    .r66-chip, .tribe-common .r66-chip { min-height: 44px; }
    .r66-facet-row {
        flex-wrap: nowrap;
        overflow-x: auto;
        overscroll-behavior-x: contain;
        -webkit-overflow-scrolling: touch;
        scrollbar-width: none;
        scroll-padding-left: var(--r66-sp-4);
        padding-bottom: 2px;
    }
    .r66-facet-row::-webkit-scrollbar { display: none; }
    .r66-facet-row .r66-chip {
        flex: none;
        white-space: nowrap;
    }
    /* Right-edge fade only while more chips wait off-screen (JS toggles);
       a static fade would dim the last chip once fully scrolled */
    .r66-facet-row.r66-scroll-more {
        -webkit-mask-image: linear-gradient(90deg, #000 calc(100% - 32px), transparent);
        mask-image: linear-gradient(90deg, #000 calc(100% - 32px), transparent);
    }
}

/* Clear-all: quiet trailing link, appears only when a facet is active */
.r66-facet-clear,
.tribe-common .r66-facet-clear {
    align-self: flex-start;
    margin-top: var(--r66-sp-1);
    font-family: var(--r66-font-head);
    font-weight: 300;
    font-size: var(--r66-text-2xs);
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--r66-muted);
    text-decoration: underline;
    text-decoration-color: var(--r66-hairline);
    text-underline-offset: 3px;
    padding: 6px 0;
}
.r66-facet-clear:hover,
.tribe-common .r66-facet-clear:hover {
    color: var(--r66-sand);
    text-decoration-color: var(--r66-sand);
}

/* Off-corridor marker: candid, quiet */
.r66-offroute {
    font-family: var(--r66-font-head);
    font-weight: 300;
    font-size: var(--r66-text-2xs);
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--r66-muted);
}

/* Kadence header toggles sit outside TEC's band; same 44px floor */
.menu-toggle-open,
.search-toggle-open {
    min-height: 44px;
    min-width: 44px;
}

/* Comfortable touch targets on the TEC control band (44px floor) */
.tribe-events .tribe-events-c-events-bar button,
.tribe-events .tribe-events-c-search__button,
.tribe-events .tribe-events-c-search__input,
.tribe-events .tribe-events-c-view-selector__button,
.tribe-events .tribe-events-c-subscribe-dropdown__button,
.tribe-events .tribe-events-c-top-bar__datepicker-button,
.tribe-events .tribe-events-c-nav__prev,
.tribe-events .tribe-events-c-nav__next {
    min-height: 44px;
}
.tribe-events .tribe-events-c-subscribe-dropdown__list-item-link {
    padding-top: 10px;
    padding-bottom: 10px;
}
/* The subscribe control is a __button-text <button> nested inside this styled
   dropdown div. The div reaches 44px, but the nested button — the element a
   pointer/keyboard user actually activates — stayed 16px (the div's vertical
   padding did the spacing). So the real target failed WCAG 2.5.8. Zero the
   wrapper's vertical padding and move the 44px onto the button itself. */
.tribe-events .tribe-events-c-subscribe-dropdown__button {
    display: inline-flex;
    align-items: center;
    padding-top: 0;
    padding-bottom: 0;
}
.tribe-events .tribe-events-c-subscribe-dropdown__button-text {
    display: inline-flex;
    align-items: center;
    min-height: 44px;
}
.tribe-events .tribe-events-c-view-selector__button {
    min-width: 44px;
}

/* Dead chrome under the empty state: a nav whose both controls are
   disabled serves nobody */
.tribe-events .tribe-events-c-nav:has(.tribe-events-c-nav__prev:disabled):has(.tribe-events-c-nav__next:disabled) {
    display: none;
}

/* Empty state carries the voice (message text set in functions.php);
   the panel should read as ours, not the plugin's */
.tribe-events .tribe-events-c-messages__message {
    background: var(--r66-deep);
    border: 1px solid var(--r66-hairline);
    border-radius: var(--r66-radius-card);
    color: var(--r66-cream);
    font-family: var(--r66-font-body);
    font-weight: 300 !important;
    font-size: var(--r66-body-size);
    line-height: var(--r66-body-lh);
    padding: var(--r66-sp-5) var(--r66-sp-6);
}

/* Desktop rows: two-column editorial layout from 768px up. Media-query
   owned, so it holds with or without TEC's JS-applied breakpoint classes;
   the grid overrides TEC's flex in both states. */
@media (min-width: 768px) {
    .tribe-events .tribe-events-calendar-list__event {
        display: grid !important;
        grid-template-columns: 300px minmax(0, 1fr);
        gap: 0 var(--r66-sp-6);
        align-items: start;
        margin-left: 0 !important;
        margin-right: 0 !important;
    }
    .tribe-events .tribe-events-calendar-list__event:not(:has(.tribe-events-calendar-list__event-featured-image-wrapper)) {
        grid-template-columns: minmax(0, 1fr);
    }
    .tribe-events .tribe-events-calendar-list__event-featured-image-wrapper {
        width: auto !important;
        max-width: none !important;
        padding: 0 !important;
        margin: 0;
    }
    .tribe-events .tribe-events-calendar-list__event-details {
        width: auto !important;
        max-width: none !important;
        padding: 0 !important;
        min-width: 0;
    }
    /* Title steps up one display size beside the thumbnail column */
    .tribe-common .tribe-events-calendar-list__event-title {
        font-size: var(--r66-disp-1) !important;
        line-height: 1.35;
    }
    /* Datetime holds its size even when TEC's breakpoint classes fail to
       attach on a cold load (the small-screen compound otherwise wins) */
    .tribe-common .tribe-events-calendar-list__event-datetime-wrapper {
        font-size: var(--r66-text-md) !important;
    }
}

/* Mobile rows: stacked cards, title promoted. Descriptions now stay
   (P2, lever 2): one clamped line of voice on every row, every screen. */
@media (max-width: 767px) {
    .tribe-common .tribe-events-calendar-list__event-title { font-size: 19px !important; }
    /* the base daynum rule carries !important; this must too, or it is dead */
    .tribe-events-calendar-list__event-date-tag-daynum { font-size: 19px !important; }
    .tribe-events-calendar-list__event-row { min-height: 105px; }
    .tribe-events .tribe-events-calendar-list__event-description,
    .tribe-common--breakpoint-medium.tribe-events .tribe-events-calendar-list__event-description {
        -webkit-line-clamp: 2;
    }
    /* Narrow viewports are touch in practice; don't wait for pointer:coarse */
    .r66-ticket-link,
    .tribe-common .r66-ticket-link {
        display: inline-flex;
        align-items: center;
        min-height: 44px;
        padding: 0;
    }
}

/* Touch devices: the ticket CTA needs a 44px target */
@media (pointer: coarse) {
    .r66-ticket-link,
    .tribe-common .r66-ticket-link {
        display: inline-flex;
        align-items: center;
        min-height: 44px;
        padding: 0;
    }
}

/* ============================================================
   6b. TONIGHT ON CENTRAL — opinionated picks band (v3.1.0)
   The editorial top zone of /events/: ranked picks with voice.
   Flat rows on the page ground, hairline-separated (not boxed tiles).
   ============================================================ */
.r66-tonight {
    max-width: var(--r66-list);
    margin: var(--r66-sp-6) auto var(--r66-sp-4);
    padding: 0 var(--r66-sp-4);
}
.r66-tonight__head {
    border-top: 2px solid var(--r66-gold);
    padding-top: var(--r66-sp-4);
    margin-bottom: var(--r66-sp-5);
}
/* The single display moment for this zone (type-program statement) */
.r66-tonight__title {
    font-family: var(--r66-font-display) !important;
    font-style: normal;
    font-weight: 700 !important;
    font-size: var(--r66-disp-section) !important;
    line-height: 1.04;
    letter-spacing: -0.01em;
    text-transform: none;
    color: var(--r66-cream);
    margin: 0;
    text-wrap: balance;
}
.r66-tonight__stamp {
    font-family: var(--r66-font-head);
    font-weight: 300;
    font-size: var(--r66-text-2xs);
    letter-spacing: 0.22em;
    text-transform: uppercase;
    color: var(--r66-sand);
    margin: var(--r66-sp-2) 0 0;
}
.r66-tonight__list { list-style: none; margin: 0; padding: 0; }

.r66-tonight__pick {
    display: grid;
    grid-template-columns: 132px minmax(0, 1fr);
    gap: var(--r66-sp-5);
    align-items: start;
    padding: var(--r66-sp-5) 0;
    border-bottom: 1px solid var(--r66-hairline);
}
.r66-tonight__pick:first-child { padding-top: 0; }
.r66-tonight__pick .r66-thumb-link { display: block; }
.r66-tonight__img,
.r66-tonight__pick .r66-venue-plate {
    width: 100%;
    aspect-ratio: 3 / 2;
    object-fit: cover;
    border-radius: var(--r66-radius-btn);
    display: block;
}
.r66-tonight__pickbody { min-width: 0; display: flex; flex-direction: column; }
.r66-tonight__pickbody .r66-pill-tonight,
.r66-tonight__pickbody .r66-day-token { align-self: flex-start; margin: 0 0 var(--r66-sp-2); }
.r66-tonight__kickers {
    display: flex; flex-wrap: wrap; gap: var(--r66-sp-1) var(--r66-sp-4);
    margin: 0 0 var(--r66-sp-1);
}
.r66-tonight__vibe {
    font-family: var(--r66-font-head); font-weight: 300;
    font-size: var(--r66-text-2xs); letter-spacing: 0.18em; text-transform: uppercase;
    color: var(--r66-sand);
}
.r66-tonight__name {
    font-family: var(--r66-font-head) !important;
    font-weight: 500 !important;
    font-size: var(--r66-disp-2);
    line-height: 1.25;
    letter-spacing: 0.01em;
    text-transform: none;
    margin: 0 0 var(--r66-sp-2);
}
.r66-tonight__name a { color: var(--r66-cream); }
.r66-tonight__name a:hover {
    color: var(--r66-gold);
    text-decoration: underline; text-decoration-thickness: 2px; text-underline-offset: 3px;
}
/* The voice line — surfaced at every width, incl. mobile (the P2 fix, previewed here) */
.r66-tonight__teaser {
    font-family: var(--r66-font-body);
    font-weight: 300;
    font-size: var(--r66-text-rg);
    line-height: 1.5;
    color: var(--r66-cream);
    margin: 0 0 var(--r66-sp-3);
    display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.r66-tonight__meta {
    font-family: var(--r66-font-head);
    font-weight: 300;
    font-size: var(--r66-text-xs);
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--r66-sand);
    margin: auto 0 0;
}
.r66-tonight__time { font-variant-numeric: tabular-nums; color: var(--r66-cream); }
.r66-tonight__at { color: var(--r66-cobalt); }
/* inline-flex so min-height actually applies (min-height is a no-op on inline
   elements); 24px clears WCAG 2.5.8, coarse pointers get 44px below. */
.r66-tonight__cta { color: var(--r66-gold); font-weight: 500; display: inline-flex; align-items: center; min-height: 24px; }
.r66-tonight__cta:hover { color: var(--r66-gold-bright); }

/* Seam into the full chronological list */
.r66-tonight__seam {
    /* Standalone block link, so it does not qualify for WCAG 2.5.8's inline-text
       exception. It measured 23px tall: one pixel under the 24x24 minimum. */
    display: inline-flex;
    align-items: center;
    min-height: 24px;
    margin-top: var(--r66-sp-4);
    font-family: var(--r66-font-head); font-weight: 500;
    font-size: var(--r66-text-sm); letter-spacing: 0.08em; text-transform: uppercase;
    color: var(--r66-sand);
}
.r66-tonight__seam::after { content: ' \2193'; color: var(--r66-gold); }
.r66-tonight__seam:hover { color: var(--r66-gold); }

.r66-tonight__empty {
    font-family: var(--r66-font-body); font-weight: 300;
    font-size: var(--r66-prose-size); line-height: 1.5;
    color: var(--r66-sand); margin: 0;
}
.r66-tonight__empty a { color: var(--r66-gold); }

/* Live pulse: motion that says "happening right now". The "On now" pill
   means exactly one thing — the show is live — so it breathes wherever it
   appears (the Tonight band and the list rows alike), not only in the band.
   Opacity-only, bounded, reduced-motion-safe. */
.r66-pill-tonight {
    animation: r66-livepulse 2.4s ease-in-out infinite;
}
@keyframes r66-livepulse {
    0%, 100% { opacity: 1; }
    50%      { opacity: 0.62; }
}

@media (max-width: 767px) {
    .r66-tonight__pick { grid-template-columns: 96px minmax(0, 1fr); gap: var(--r66-sp-4); }
    .r66-tonight__name { font-size: var(--r66-disp-1); }
    .r66-tonight__cta { display: inline-flex; align-items: center; min-height: 44px; }
}
@media (pointer: coarse) {
    /* the external ticket link needs a real touch target */
    .r66-tonight__cta,
    .r66-tonight__seam {
        display: inline-flex; align-items: center; min-height: 44px;
    }
}
@media (prefers-reduced-motion: reduce) {
    .r66-pill-tonight { animation: none; }
}

/* ------------------------------------------------------------
   Semantic motion (v3.4.0, P4/lever 5). Motion only where it
   carries meaning: content that just arrived, or a state that
   just changed. Nothing decorative, nothing looping except the
   live pulse above. All reduced-motion-safe.
   ------------------------------------------------------------ */

/* Arrival: rows fetched by "Load more events" announce themselves once,
   staggered, then settle. Opacity + a small rise — never a card flash. */
@keyframes r66-arrive {
    from { opacity: 0; transform: translateY(6px); }
    to   { opacity: 1; transform: translateY(0); }
}
.tribe-events-calendar-list__event-row.r66-arrive {
    animation: r66-arrive 0.5s ease-out both;
    animation-delay: calc(var(--r66-arrive-i, 0) * 70ms);
}

/* Went-live: a cached "Tonight" token whose show starts while the page
   sits open flips to "On now" — a one-shot pop marks the moment, then the
   pill returns to its steady live breath. */
@keyframes r66-went-live {
    0%   { transform: scale(1); }
    30%  { transform: scale(1.14); }
    100% { transform: scale(1); }
}
.r66-pill-tonight.r66-went-live {
    animation: r66-went-live 0.7s ease-out;
    transform-origin: center;
}

@media (prefers-reduced-motion: reduce) {
    .tribe-events-calendar-list__event-row.r66-arrive,
    .r66-pill-tonight.r66-went-live { animation: none; }
}

/* ============================================================
   6c. CENTRAL THIS WEEK — the corridor lens (v3.3.0, P3/lever 4)
   An owned almanac rendered as an editorial scoreboard: signage
   numerals + a voice line + hairline dividers. Deliberately NOT boxed
   KPI cards (no backgrounds, no radius on the stats) to stay clear of
   the hero-metric SaaS template.
   ============================================================ */
.r66-week {
    background: var(--r66-deep);
    border-top: 2px solid var(--r66-gold);
    border-bottom: 1px solid var(--r66-hairline);
}
.r66-week__inner {
    max-width: var(--r66-shell);
    margin: 0 auto;
    /* 48, not 40: this sits directly under the hero's 64 now, and 40 read as
       dashboard density on a brand surface. The lens earns less air than the
       hero, but not that much less. */
    padding: var(--r66-sp-12) var(--r66-sp-6);
}
.r66-week__head { margin-bottom: var(--r66-sp-8); max-width: var(--r66-prose); }
.r66-week__title {
    font-family: var(--r66-font-display) !important;
    font-style: normal;
    font-weight: 700 !important;
    font-size: var(--r66-disp-section) !important;
    line-height: 1.04;
    letter-spacing: -0.01em;
    text-transform: none;
    color: var(--r66-cream);
    margin: 0;
}
.r66-week__lede {
    font-family: var(--r66-font-body);
    font-weight: 300;
    font-size: var(--r66-prose-size);
    line-height: 1.5;
    color: var(--r66-sand);
    margin: var(--r66-sp-3) 0 0;
    text-wrap: pretty;
}
.r66-week__stats {
    display: grid;
    /* minmax(0, 1fr), not 1fr: 1fr floors at min-content, and the one stat
       whose numeral slot holds a word ("Saturday") rather than a digit blew
       its column out by 13px, so the dividers landed at an irregular
       interval. On a scoreboard the even interval IS the form. */
    grid-template-columns: repeat(5, minmax(0, 1fr));
}
.r66-week__stat {
    display: flex;
    flex-direction: column;
    padding: 0 var(--r66-sp-5);
}
/* hairline dividers between stats — a scoreboard, not boxes */
.r66-week__stat + .r66-week__stat { border-left: 1px solid var(--r66-hairline); }
.r66-week__stat:first-child { padding-left: 0; }
.r66-week__num {
    font-family: var(--r66-font-impact);
    font-weight: 400;
    font-size: clamp(38px, 5.5vw, 64px);
    line-height: 0.95;
    letter-spacing: 0.01em;
    color: var(--r66-gold);
}
.r66-week__label {
    font-family: var(--r66-font-head);
    font-weight: 500;
    font-size: var(--r66-text-sm);
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--r66-cream);
    margin-top: var(--r66-sp-2);
}
.r66-week__foot {
    font-family: var(--r66-font-head);
    font-weight: 300;
    font-size: var(--r66-text-2xs);
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--r66-muted);
    margin-top: var(--r66-sp-1);
}
/* The stat's own spacing is expressed here (num > label > foot binding)
   rather than as a flex gap: a 2px gap compounded with the label's 8px
   margin into an off-ladder 10px. */
.r66-week__cta {
    /* inline-flex + min-height, not inline-block: an inline-block at 13px
       with no padding is exactly one line box (13 x 1.75 = 22.75px), which
       is under the WCAG 2.5.8 24px target minimum. This is the same
       off-by-one already fixed on .r66-tonight__seam (v3.8.0) and two more
       in v3.10.0; the pattern is any bare 13px inline link in this theme. */
    display: inline-flex;
    align-items: center;
    min-height: 24px;
    /* 48, against the 32 above it: statement / scoreboard / exit, not a flat
       32-32-32 beat across three different acts. */
    margin-top: var(--r66-sp-12);
    font-family: var(--r66-font-head);
    font-weight: 500;
    font-size: var(--r66-text-sm);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--r66-gold);
}
.r66-week__cta::after { content: ' \2192'; }
.r66-week__cta:hover { color: var(--r66-gold-bright); }

@media (max-width: 767px) {
    .r66-week__inner { padding: var(--r66-sp-8) var(--r66-sp-4); }
    .r66-week__stats { grid-template-columns: repeat(2, 1fr); gap: var(--r66-sp-6) 0; }
    .r66-week__stat { padding: 0 var(--r66-sp-4); }
    /* reset the desktop divider logic for a 2-col grid: rule only on the
       right column's items (every 2nd), left column flush */
    .r66-week__stat + .r66-week__stat { border-left: none; }
    .r66-week__stat:nth-child(odd) { padding-left: 0; }
    .r66-week__stat:nth-child(even) { border-left: 1px solid var(--r66-hairline); }
}

/* ============================================================
   6e. THE GUIDEBOOK INDEX (v3.6.0)
   An editorial contents page: name, rule, one line. The child pages all
   carry hero images and it would be easy to tile them into a 3-up card
   grid; that is the exact synthetic-signal pattern the lists-over-tiles
   audit rejected. Type and hairlines carry this, nothing else.
   ============================================================ */
/* The Guidebook owns its column.

   /guide/ and every shelf under it carry the body class content-width-fullwidth,
   so Kadence's global.min.css sets .content-container.site-container
   { max-width: none; padding: 0 }. .r66-guide supplied no container of its own,
   so on desktop the prose sat at left:0 with ~552px of dead space to its right
   and the teaser ran ~109ch, and on mobile every element ran edge to edge with
   no gutter at all. That body class is per-page meta (_kad_post_layout), which
   is REST-registered at functions.php and therefore writable by W12-W17: a
   brand surface's measure must not be a database field a workflow can flip.
   So the module carries its own column, the way .r66-hero-inner and
   .r66-week__inner already do.

   Scoped to .entry-content, not .r66-guide, because the masthead h1 is a
   sibling of .r66-guide (the_content filter): capping only .r66-guide would
   strand the h1 at left:0 and create a new misalignment.

   --r66-list (900) is the same axis /events/ uses. The site's two index
   surfaces should share one. It also lands .r66-guide__desc at ~75ch. */
.r66-guidebook .entry-content {
    max-width: var(--r66-list);
    margin-inline: auto;
    padding-inline: var(--r66-sp-6);
}

/* the masthead takes the statement scale (P5: one hero moment per page) */
.r66-guidebook .entry-content h1 {
    font-family: var(--r66-font-display);
    font-style: normal;
    font-weight: 700;
    font-size: var(--r66-disp-hero);
    line-height: 1.02;
    letter-spacing: -0.015em;
    color: var(--r66-cream);
    text-wrap: balance;
}

.r66-guide { margin-top: var(--r66-sp-10); }

/* The anchor piece leads the index. 48 below it, against the 40 that closes
   an ordinary shelf: the gold rule and the kicker privilege it, so the space
   should too. */
.r66-guide__lead {
    border-top: 2px solid var(--r66-gold);
    padding-top: var(--r66-sp-5);
    margin-bottom: var(--r66-sp-12);
}
.r66-guide__kicker {
    display: block;
    font-family: var(--r66-font-head);
    font-weight: 500;
    font-size: var(--r66-text-2xs);
    letter-spacing: 0.22em;
    text-transform: uppercase;
    color: var(--r66-gold);
    margin-bottom: var(--r66-sp-2);
}
.r66-guide__lead-title,
.r66-guide__sec-title {
    font-family: var(--r66-font-display) !important;
    font-style: normal;
    font-weight: 700 !important;
    font-size: var(--r66-disp-section) !important;
    line-height: 1.04;
    letter-spacing: -0.01em;
    text-transform: none;
    color: var(--r66-cream);
    margin: 0;
}
.r66-guide__lead-title a,
.r66-guide__sec-title a { color: var(--r66-cream); text-decoration: none; }
.r66-guide__lead-title a:hover,
.r66-guide__sec-title a:hover { color: var(--r66-gold); }

/* Section pages (/guide/venues/ etc) get a way back up. */
.r66-guide__back {
    margin: var(--r66-sp-8) 0 0;
    font-family: var(--r66-font-head);
    font-weight: 500;
    font-size: var(--r66-text-sm);
    letter-spacing: 0.08em;
    text-transform: uppercase;
}
/* Same 2.5.8 pattern as .r66-week__cta: a bare 13px link standing alone in
   its own <p> is one line box (20px here), not a link inline in a sentence,
   so the inline exception does not cover it. */
.r66-guide__back a {
    display: inline-flex;
    align-items: center;
    min-height: 24px;
    color: var(--r66-gold);
    text-decoration: none;
}
.r66-guide__back a::before { content: '\2190  '; }
.r66-guide__back a:hover { color: var(--r66-gold-bright); }
.r66-guide__lead-sub,
.r66-guide__sec-lede {
    font-family: var(--r66-font-body);
    font-weight: 300;
    font-size: var(--r66-prose-size);
    line-height: 1.5;
    color: var(--r66-sand);
    max-width: var(--r66-prose);
    text-wrap: pretty;
}
/* These four rules restate spacing this module already declares, at a
   specificity that can actually win. The Guidebook renders inside
   .entry-content.single-content, where Kadence's content.min.css carries
   (0,1,1) element rules — .single-content p, .single-content ul,
   .single-content h1..h6 — that outrank a bare (0,1,0) class. The declared
   values were losing silently: the lede's designed 8/24 grouping rendered as
   a near-equidistant 24/32 (so the lede floated free of its title) and the
   list was indented 34px off its own section title's axis by
   .single-content ul { padding-left: 2em }. Do not "simplify" these back to
   single-class selectors; they will stop applying. */
.single-content .r66-guide__list { padding: 0; }
.single-content .r66-guide__lead-sub { margin: var(--r66-sp-3) 0 0; }
.single-content .r66-guide__sec-lede { margin: var(--r66-sp-2) 0 var(--r66-sp-8); }
.single-content .r66-guide__lead-title { margin: 0 0 var(--r66-sp-3); }

.r66-guide__lead-sub { margin: var(--r66-sp-3) 0 0; }
.r66-guide__sec-lede { margin: var(--r66-sp-2) 0 var(--r66-sp-6); }

.r66-guide__sec { margin-bottom: var(--r66-sp-10); }

/* The index proper: hairline-ruled rows, name against its one line. */
.r66-guide__list { list-style: none; margin: 0; padding: 0; }
.r66-guide__item {
    display: grid;
    grid-template-columns: minmax(180px, 30%) 1fr;
    gap: var(--r66-sp-6);
    align-items: baseline;
    padding: var(--r66-sp-5) 0;
    border-top: 1px solid var(--r66-hairline);
}
.r66-guide__item:last-child { border-bottom: 1px solid var(--r66-hairline); }
.r66-guide__name {
    font-family: var(--r66-font-head);
    font-weight: 500;
    font-size: var(--r66-disp-1);
    line-height: 1.2;
    color: var(--r66-cream);
    text-decoration: none;
}
.r66-guide__name:hover { color: var(--r66-gold); }
.r66-guide__desc {
    font-family: var(--r66-font-body);
    font-weight: 300;
    font-size: var(--r66-text-rg);
    line-height: 1.6;
    color: var(--r66-muted);
    text-wrap: pretty;
}

@media (max-width: 767px) {
    .r66-guide__item {
        grid-template-columns: 1fr;
        gap: var(--r66-sp-2);
        padding: var(--r66-sp-4) 0;
    }
}
@media (pointer: coarse) {
    .r66-guide__name { display: inline-flex; align-items: center; min-height: 44px; }
}

/* ============================================================
   7. GENERATED CONTENT (via the render shim in functions.php)
   ============================================================ */

/* Scope wrapper: replaces the stripped Georgia wrapper */
.r66-gen {
    max-width: var(--r66-prose);
    margin: 0 auto;
    padding: var(--r66-sp-2) var(--r66-sp-4) var(--r66-sp-10);
    font-family: var(--r66-font-body);
}
.r66-gen-center { text-align: center; }

/* Per-template measures (stable page and parent ids from production) */
.page-id-1159 .r66-gen { max-width: 860px; }   /* this weekend */
.page-id-1149 .r66-gen { max-width: 560px; text-align: center; }   /* subscribe */
.page-id-1149 .r66-gen form { text-align: left; }

/* Generated typography */
.r66-gen h1 {
    font-family: var(--r66-font-display);
    font-style: normal;
    font-weight: 700;
    font-size: var(--r66-disp-4);
    line-height: 1.15;
    color: var(--r66-cream);
    margin: 0 0 var(--r66-sp-2);
}
.r66-gen h2 {
    font-family: var(--r66-font-head);
    font-weight: 500;
    font-size: var(--r66-disp-1);
    line-height: 1.4;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    color: var(--r66-gold);
    margin: var(--r66-sp-8) 0 var(--r66-sp-3);
}
.r66-gen p {
    font-size: var(--r66-body-size);
    line-height: var(--r66-body-lh);
    color: var(--r66-cream);
    margin: 0 0 var(--r66-sp-4);
}

/* Longform surfaces step up to the prose recipe (POW) */
.parent-pageid-1156 .r66-gen p,
.parent-pageid-1157 .r66-gen p,
.parent-pageid-1158 .r66-gen p,
.parent-pageid-1155 .r66-gen p {
    font-size: var(--r66-prose-size);
    line-height: var(--r66-prose-lh);
}

/* Kicker (was: inline letter-spacing 2px caps) */
.r66-kicker,
.r66-gen .r66-kicker {
    font-family: var(--r66-font-head);
    font-weight: 300;
    font-size: var(--r66-text-2xs);
    letter-spacing: 0.22em;
    text-transform: uppercase;
    color: var(--r66-gold);
    margin: 0 0 var(--r66-sp-2);
}

/* Feature panel (was: gold-bordered #1A1A1A box). Top Pick, signup card. */
.r66-panel {
    background: var(--r66-deep);
    border: 1px solid var(--r66-gold-50);
    border-radius: var(--r66-radius-card);
    padding: var(--r66-sp-6);
    margin: 0 0 var(--r66-sp-8);
}

/* Plain card (was: unbordered #1A1A1A box) */
.r66-card {
    background: var(--r66-deep);
    border: 1px solid var(--r66-hairline);
    border-radius: var(--r66-radius-card);
    padding: var(--r66-sp-4);
    margin: 0 0 var(--r66-sp-3);
    transition: border-color 0.15s ease;
}
.r66-card:hover {
    border-color: var(--r66-gold-50);
}

/* Event name lines inside generated cards */
.r66-event-name {
    font-family: var(--r66-font-head);
    font-weight: 500;
    font-size: var(--r66-text-rg);
    line-height: 1.4;
    color: var(--r66-cream);
    margin: 0 0 var(--r66-sp-1);
}
.r66-panel .r66-event-name {
    font-family: var(--r66-font-impact);
    font-weight: 400;
    font-size: var(--r66-disp-2);
    line-height: 1.15;
    letter-spacing: 0.02em;
}

/* Metadata lines */
.r66-line-gold,
.r66-gen .r66-line-gold {
    font-family: var(--r66-font-head);
    font-weight: 300;
    font-size: var(--r66-text-sm);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--r66-cobalt);
    margin: 0 0 var(--r66-sp-1);
}
.r66-line-muted,
.r66-gen .r66-line-muted {
    font-size: var(--r66-text-md);
    color: var(--r66-sand);
    font-variant-numeric: tabular-nums;
    margin: 0 0 var(--r66-sp-2);
}
.r66-credit,
.r66-gen .r66-credit {
    font-size: var(--r66-text-2xs);
    color: var(--r66-muted);
    margin: var(--r66-sp-1) 0 var(--r66-sp-4);
}

/* Day bands on This Weekend (OMR #shDate port): full-bleed within the column.
   Doubled selectors outgun .r66-gen h2 / .r66-gen p on shared properties. */
.r66-day-band,
.r66-gen .r66-day-band {
    font-family: var(--r66-font-head);
    font-weight: 500;
    font-size: var(--r66-text-rg);
    line-height: 1.4;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--r66-cream);
    background: var(--r66-surface);
    border-left: none;
    border-bottom: 2px solid var(--r66-gold);
    padding: 8px 12px 6px;
    margin: var(--r66-sp-8) 0 var(--r66-sp-4);
}

/* Generated hr (was: border-top #333 divs): quiet hairline, NOT the center line */
.r66-hr {
    border: none;
    border-top: 1px solid var(--r66-hairline);
    height: 0;
    margin: var(--r66-sp-6) 0;
}

/* Generated buttons and links */
.r66-btn {
    display: inline-block;
    background: var(--r66-gold);
    color: var(--r66-asphalt);
    font-family: var(--r66-font-head);
    font-weight: 500;
    font-size: var(--r66-text-sm);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    border: none;
    border-radius: var(--r66-radius-btn);
    padding: 10px 24px;
    cursor: pointer;
    transition: background 0.15s ease;
}
.r66-btn:hover {
    background: var(--r66-gold-bright);
    color: var(--r66-asphalt);
}
.r66-link {
    color: var(--r66-cobalt);
    font-size: var(--r66-text-sm);
    text-decoration: underline;
    text-decoration-color: var(--r66-cobalt-50);
    text-underline-offset: 3px;
}
.r66-link:hover {
    color: var(--r66-gold);
    text-decoration-color: var(--r66-gold);
}

/* Generated inputs */
.r66-input {
    display: block;
    width: 100%;
    box-sizing: border-box;
    background: var(--r66-surface);
    border: 1px solid var(--r66-hairline);
    border-radius: var(--r66-radius-btn);
    color: var(--r66-cream);
    font-family: var(--r66-font-body);
    font-size: 15px;
    padding: 10px 12px;
    margin: 0 0 var(--r66-sp-3);
}
.r66-input:focus {
    border-color: var(--r66-gold);
    outline: none;
}

/* Generated images */
.r66-img {
    width: 100%;
    height: auto;
    display: block;
    border-radius: var(--r66-radius-btn);
    aspect-ratio: 3 / 2;
    object-fit: cover;
}

/* Signup forms (post-shim) */
.r66-gen form.r66-panel button,
.r66-gen form .r66-btn {
    display: block;
    width: 100%;
    text-align: center;
    padding: 12px 24px;
}

/* ============================================================
   8. LONGFORM AND PAGES (venue profiles, guides, spotlights)
   ============================================================ */

/* Kill Kadence's boxed-content shadows; content sits on the asphalt */
.entry.single-entry,
.entry.loop-entry {
    box-shadow: none;
    background: transparent;
}
.entry-content-wrap { padding-left: 0; padding-right: 0; }

/* Page titles (Kadence hero title area) */
.entry-header .entry-title,
.site-main-header-inner-wrap .entry-title {
    font-family: var(--r66-font-display);
    font-style: normal;
    font-weight: 700;
    color: var(--r66-cream);
}

/* Blog index cards (until the static front page lands) */
.loop-entry {
    background: var(--r66-deep);
    border: 1px solid var(--r66-hairline);
    border-radius: var(--r66-radius-card);
}
.loop-entry .entry-title a { color: var(--r66-cream); }
.loop-entry .entry-title a:hover { color: var(--r66-gold); }

/* Guide index (hand-built page): give the h1 the display voice */
.page-id-1155 .entry-content h1 {
    font-family: var(--r66-font-display);
    font-style: normal;
    font-weight: 700;
    color: var(--r66-cream);
}

/* Cover blocks (guide tiles): Broadsheet dark-tile recipe */
.wp-block-cover {
    border-radius: var(--r66-radius-card);
    overflow: hidden;
}
.wp-block-cover img { transition: opacity 0.25s linear, transform 0.25s linear; }
@media (hover: hover) {
    a .wp-block-cover:hover img,
    .wp-block-cover a:hover img {
        opacity: 0.35;
        transform: scale(1.06);
    }
}

/* ============================================================
   9. LEGACY r66 CLASSES (kept, re-tokened)
   ============================================================ */
/* Side-stripe accent removed 2026-07-11 (critique remediation): the gold
   left border was the one banned pattern in the system. Full hairline
   border with the gold hover wash carries the same affordance. */
.r66-event-card {
    background: var(--r66-deep);
    border: 1px solid var(--r66-hairline);
    border-radius: var(--r66-radius-btn);
    padding: var(--r66-sp-5) var(--r66-sp-6);
    margin-bottom: var(--r66-sp-4);
    transition: border-color 0.15s ease;
}
.r66-event-card:hover { border-color: var(--r66-gold-50); }
.r66-event-card .event-title {
    font-family: var(--r66-font-head);
    font-weight: 500;
    font-size: var(--r66-disp-1);
    color: var(--r66-cream);
    margin-bottom: var(--r66-sp-1);
}
.r66-event-card .event-meta {
    font-family: var(--r66-font-head);
    font-weight: 300;
    font-size: var(--r66-text-xs);
    color: var(--r66-sand);
    letter-spacing: 0.08em;
    text-transform: uppercase;
}
.r66-event-card .event-description {
    font-size: var(--r66-text-rg);
    line-height: 1.6;
    color: var(--r66-cream);
    margin-top: var(--r66-sp-2);
}
.r66-event-card .admission-free { color: var(--r66-cobalt); font-weight: 400; }
.r66-event-card .admission-paid { color: var(--r66-sand); }

/* ============================================================
   10. FOOTER
   ============================================================ */
.site-footer,
.site-footer .site-footer-row-container-inner {
    background: var(--r66-deep);
}
.site-footer-wrap {
    border-top: 1px solid var(--r66-hairline);
}
.site-footer,
.site-footer p {
    color: var(--r66-sand);
    font-size: var(--r66-text-md);
}
.site-footer a { color: var(--r66-cobalt); }
.site-footer a:hover { color: var(--r66-gold); }
.site-footer .widget-title,
.site-footer h2 {
    font-family: var(--r66-font-head);
    font-weight: 500;
    font-size: var(--r66-text-sm);
    letter-spacing: 0.15em;
    text-transform: uppercase;
    color: var(--r66-cream);
}
.site-info { border-top: 1px solid var(--r66-hairline); }
.site-info, .site-info .copyright {
    color: var(--r66-muted);
    font-size: var(--r66-text-xs);
}

/* ============================================================
   11. MOTION DISCIPLINE
   ============================================================ */
@media (prefers-reduced-motion: reduce) {
    .r66-hero-plate,
    .r66-hero-plate::after,
    .r66-hero .r66-wm-on {
        animation: none;
    }
    .r66-hero-plate { opacity: 1; }
    .r66-hero-plate::after { display: none; }
    .r66-hero .r66-wm-on { color: var(--r66-gold); opacity: 1; }
    *, *::before, *::after {
        transition-duration: 0.01ms !important;
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
    }
}
