/* =============================================================================
   MMD Parent Theme 2026 — Main Stylesheet
   ============================================================================= */

/* ── Design tokens ──────────────────────────────────────────────────────────
   The 2026 palette. Two groups below:

   1. NEW tokens — the real scale. Reach for these in new/rewritten rules.
   2. LEGACY tokens — the original names, remapped onto the new palette. They
      exist because ~1039 lines of this stylesheet already reference them (53
      rules use --mmd-accent alone). Remapping instead of renaming keeps the
      whole site coherent while sections are rebuilt one at a time. As each
      section is rewritten onto the new scale, its legacy references go away;
      when the last one does, delete the legacy group.

   Colors were read off the mobile mockups by eye, not sampled — expect to
   nudge them once exact values are confirmed.
   -------------------------------------------------------------------------- */
:root {
    /* ── Brand: oxblood ─────────────────────────────────────── */
    /* CONFIRMED from Figma: --mmd-ox-800 #210000. The other three are derived
       from it and still need confirming against the design file. */
    --mmd-ox-900:       #100000;  /* derived — inset cards over oxblood */
    --mmd-ox-800:       #210000;  /* CONFIRMED — page shell, header, bottom bar */
    --mmd-ox-700:       #3A0A0A;  /* derived — raised dark sections */
    --mmd-ox-600:       #5A1A1A;  /* derived — hover / raised on dark */

    /* ── Ink ────────────────────────────────────────────────── */
    /* CONFIRMED from Figma: body text on oxblood is #D9D9D9, NOT white. Worth
       keeping — pure white on #210000 glares. Don't "fix" it to #fff. */
    --mmd-ink-on-dark:  #D9D9D9;

    /* Body text on cream/paper. Deliberately NOT --mmd-ox-800: that token is
       rgb(33,0,0) — a pure dark RED, not a neutral. It's right for large areas
       of colour, but at body size on white the anti-aliasing blends toward the
       red hue and the text reads brown-orange rather than black. Use this for
       running text on any light surface; keep --mmd-ox-800 for fills. */
    --mmd-ink-on-paper: #2B2B2B;

    /* ── Brand: paper ───────────────────────────────────────── */
    --mmd-cream:        #E9E2D0;  /* light section background */
    --mmd-cream-200:    #DED6C2;  /* lead-form background, input wells */
    --mmd-cream-400:    #C9BFA6;  /* hairlines on cream */
    --mmd-paper-white:  #FDFCF8;  /* notebook / evidence surfaces */

    /* ── Brand: accent ──────────────────────────────────────── */
    /* --mmd-red vs --mmd-accent is a real choice, not a synonym. A city can set
       its own Primary Accent Color (Location Settings); main.js applies it as an
       inline --mmd-accent on <html>, which beats this block by design. So:
         --mmd-accent → recolors per city. Use for anything a site may re-brand.
         --mmd-red    → brand-fixed. Use where every city must look the same.
       Picking the wrong one is invisible on a default site and only shows up on
       a city that has set a color, so decide per rule. */
    --mmd-red:          #C0392B;  /* unchanged — carries over from the current design */
    --mmd-red-ink:      #A02622;  /* dashed connectors, rubber-stamp marks */
    --mmd-red-deep:     #940000;  /* Private Events "How To" panel — a darker, bloodier red */

    /* ── Type families ──────────────────────────────────────── */
    /* Display — Playfair Display 400, Regular + Italic. Signed off by the
       designer.

       History worth keeping, because it explains the sizing: the Figma file is
       set in Warbler Display (DJR), a licensed Bulmer revival whose optical
       "Display" cut is drawn for 48pt — which is why the mockup's hero is
       45.91px rather than a round number. Playfair is the agreed Google Fonts
       stand-in: same late-18th-century Baskerville-to-Bodoni territory, same
       ball terminals and bracketed serifs. It runs a touch heavier and wider
       than Warbler, so sizes lifted straight from Figma may need a nudge —
       trust the eye over the Figma number where they disagree. */
    --mmd-font-display: 'Playfair Display', Georgia, 'Times New Roman', serif;

    /* Body — Quicksand, confirmed. Geometric sans with rounded terminals, which
       is what makes the design's soft/rounded feel hold together with the pill
       buttons and the big corner radii.

       CAVEAT: Quicksand ships NO italic. Ask for one and the browser fakes an
       oblique by shearing the upright, which looks wrong next to a real drawn
       italic. All italics in this design are the display serif's — keep it that
       way. If body italic is ever genuinely needed, that's a font decision, not
       a CSS one. Weights available: 300–700. */
    --mmd-font-sans:    'Quicksand', 'Century Gothic', 'Trebuchet MS', Arial, sans-serif;

    /* Marker — Permanent Marker, used for the hand-drawn accents on the Private
       Events "How To" panel (the sticky-note lead and the numbered step titles).
       Single weight, no italic. Loaded in header.php. */
    --mmd-font-marker:  'Permanent Marker', 'Comic Sans MS', cursive;

    /* ── Type scale (mobile-first; 1.25 major third) ────────── */
    --mmd-text-xs:      0.75rem;   /* 12px — legal, consent copy */
    --mmd-text-sm:      0.875rem;  /* 14px — captions */
    --mmd-text-base:    1rem;      /* 16px — body */
    --mmd-text-lg:      1.25rem;   /* 20px — lead paragraph */
    --mmd-text-xl:      1.5rem;    /* 24px — h3 */
    --mmd-text-2xl:     1.875rem;  /* 30px — h2 */
    --mmd-text-3xl:     2.25rem;   /* 36px — h1 */
    --mmd-text-4xl:     2.75rem;   /* 44px — hero */

    /* ── Spacing (4px base) ─────────────────────────────────── */
    --mmd-space-1:      0.25rem;
    --mmd-space-2:      0.5rem;
    --mmd-space-3:      0.75rem;
    --mmd-space-4:      1rem;
    --mmd-space-6:      1.5rem;
    --mmd-space-8:      2rem;
    --mmd-space-10:     2.5rem;
    --mmd-space-12:     3rem;
    --mmd-space-16:     4rem;
    --mmd-space-24:     6rem;

    /* ── Radius ─────────────────────────────────────────────── */
    --mmd-radius-sm:    8px;    /* inputs */
    --mmd-radius-md:    16px;
    --mmd-radius-lg:    24px;   /* cards, images */
    --mmd-radius-xl:    32px;   /* section shells */
    --mmd-radius-pill:  999px;  /* buttons, phone chip */

    /* ── Layout ─────────────────────────────────────────────── */
    /* Height of the fixed bottom CTA bar. A token because two things need to
       agree on it — the bar itself and the body padding that stops it covering
       the footer. Change it here or they drift apart. */
    --mmd-bottom-bar-h: 56px;

    /* Horizontal page gutter. .mmd-main pads by this; full-bleed sections cancel
       it with a matching negative margin. Same reasoning as above — two rules
       must agree, so the number lives in one place. */
    --mmd-gutter: var(--mmd-space-4);

    /* Vertical gap between stacked homepage sections. One knob for the whole
       page's rhythm — see the owl selector on .mmd-main. */
    --mmd-section-gap: var(--mmd-space-8);

    /* Max width of the centred content column on desktop. The header and bottom
       bar cap their inner content to this too, so everything lines up. */
    --mmd-content-max: 1200px;
    /* Max width of a contained copy block (About, feature rows, etc.). ONE knob so
       the homepage and Private Events size their copy columns identically — change
       here to reflow every contained section on both pages. */
    --mmd-copy-max: 1000px;
    /* Width of the story/occasions notebook card — shared by the homepage story and
       the Private Events occasions notebook so the two match exactly. */
    --mmd-notebook-max: 620px;

    /* ── Legacy — remapped onto the palette above ───────────── */
    --mmd-dark:         var(--mmd-ox-800);
    --mmd-dark-2:       var(--mmd-ox-700);
    --mmd-gray:         #5C4A4A;
    --mmd-light-gray:   var(--mmd-cream-200);
    --mmd-paper:        var(--mmd-cream);
    --mmd-white:        #ffffff;
    --mmd-border:       var(--mmd-cream-400);
    --mmd-accent:       var(--mmd-red);
    --mmd-font-body:      var(--mmd-font-sans);
    --mmd-font-heading:   var(--mmd-font-display);
    --mmd-font-condensed: var(--mmd-font-sans);
}

/* ── Reset ──────────────────────────────────────────────────── */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
img { max-width: 100%; height: auto; display: block; }
a { color: var(--mmd-accent); text-decoration: none; }
a:hover { text-decoration: underline; }
ul { list-style: none; }

/* ── Base ───────────────────────────────────────────────────── */
body {
    font-family: var(--mmd-font-body);
    color: var(--mmd-dark);
    /* Cream, not oxblood: on desktop .mmd-main caps at 1200 and the body shows
       at the sides. Cream keeps those side strips light (matching the content)
       rather than framing the page in dark red. The header and bottom bar carry
       their own full-bleed oxblood, so the page still has its dark anchors top
       and bottom. */
    background: var(--mmd-cream);
    font-size: 16px;
    line-height: 1.6;
    /* Clearance for the fixed bottom bar. Without this it sits on top of the
       footer — including the Site Map and phone links, which would be
       unclickable. env() adds the iOS home-indicator inset and resolves to 0
       everywhere else. */
    padding-bottom: calc( var(--mmd-bottom-bar-h) + env( safe-area-inset-bottom, 0px ) );
}
/* The design sets headings at weight 400 and separates levels by size alone —
   Playfair at 700 is much heavier than the mockups. Size comes from the type
   scale; per-section overrides are being removed as sections are migrated. */
h1, h2, h3, h4, h5, h6 { font-family: var(--mmd-font-heading); line-height: 1.15; margin-bottom: var(--mmd-space-3); font-weight: 400; }
h1 { font-size: var(--mmd-text-3xl); }
h2 { font-size: var(--mmd-text-2xl); }
h3 { font-size: var(--mmd-text-xl); }
p  { margin-bottom: var(--mmd-space-4); }

/* =============================================================================
   SITE WRAPPER
   =============================================================================
   Was: a fixed ~1005px "sheet of paper on a dark table" — body-bg.webp behind
   everything, paper-body.png tiling down .mmd-main, both capped at 1005-1007px
   and centered. The 2026 design is the opposite structure: a full-bleed oxblood
   shell with content bands stacked inside it.

   .mmd-main is the shared <main> for all 18 page templates, so this rule is the
   whole site's canvas.

   Why cream and not transparent: transparent over oxblood is closer to the final
   design, but ~40 sections across inc/sections/ still set their text to #111,
   which is invisible on #210000. Cream keeps every not-yet-migrated page legible
   while sections opt into dark one at a time. Once the last section owns its own
   background, this can drop to transparent.
   ============================================================================= */
.mmd-site-top {
    background: var(--mmd-ox-800);
    width: 100%;
    position: sticky;
    top: 0;
    z-index: 100;
}
.mmd-main {
    background: var(--mmd-cream);
    width: 100%;
    position: relative;
    padding: var(--mmd-space-6) var(--mmd-gutter) var(--mmd-space-16);
}
/* One gap between every stacked section, set in one place. Sections used to each
   carry their own margin-bottom — some space-4, most none — so they sat flush.
   The owl selector spaces any two adjacent children (shortcode sections OR
   editor blocks) and skips the first, so the hero stays flush to the header and
   a newly-added section is spaced automatically instead of forgetting to. */
.mmd-main > * + * { margin-top: var(--mmd-section-gap); }

/* ── Desktop: contain the content column ─────────────────────────────────────
   The whole theme is mobile-first and full-bleed, which is right on a phone but
   sprawls edge-to-edge on a monitor — short copy floats in a huge field and
   reading columns run too long. Capping .mmd-main and centring it turns the page
   into one deliberate composition. The oxblood body shows at the sides, which
   reads as content on a dark table — the same framing the original "paper on a
   dark table" design had, brought back deliberately rather than by accident.

   The header and bottom bar live OUTSIDE .mmd-main, so they stay full-bleed;
   their inner content is capped to the same column so everything lines up.
   -------------------------------------------------------------------------- */
@media ( min-width: 769px ) {
    .mmd-main {
        max-width: var(--mmd-content-max);
        margin-inline: auto;
        padding-left: var(--mmd-space-8);
        padding-right: var(--mmd-space-8);
    }
    /* Bottom bar bg is full-bleed; its inner content caps to the same column.
       The header is centred separately, via padding on .mmd-site-top, because it
       flexes two children onto one row (see the header desktop block). */
    .mmd-bottom-bar__inner { max-width: var(--mmd-content-max); margin-inline: auto; }
}

/* =============================================================================
   HERO — video + overlay heading
   =============================================================================
   Markup comes from [mmd_home_hero] (inc/sections/home.php), which wraps the
   shared hero-video block rather than modifying it. The <video> elements and
   their inline CSS belong to mmd-network/hero-video/ and are deliberately not
   styled here — that package's <style> is printed in the body, after this file
   loads from the head, so an equal-specificity rule here would lose to it. If
   the video ever needs restyling from the theme, it needs an extra class or
   element to out-specify, not !important.
   ============================================================================= */
/* Grid stacking, not absolute positioning. Both children occupy the same cell,
   so the row is as tall as the taller of them and the band physically cannot
   escape the wrap.

   That matters: the band was `position: absolute; bottom: 0`, which anchors it
   to the video's bottom edge and lets it grow UPWARD off the video and under
   the sticky header once the heading runs past ~2 lines. Sizing the text fixed
   today's case, but the heading is an editable field — the next person to type
   a longer line would have reintroduced it. This makes the failure impossible
   rather than unlikely. */
.mmd-hero-overlay-wrap {
    display: grid;
    /* Full-bleed: cancel .mmd-main's gutter. Both sides use --mmd-gutter so
       they cannot drift apart. */
    margin-inline: calc( -1 * var(--mmd-gutter) );
    position: relative;
}

/* Double-rule masthead divider from the comp: two cream lines across the top of
   the hero, the lower one shorter and centred. Pseudo-elements, not markup — it
   is pure decoration. Absolute over the grid (which stacks video + overlay in
   one cell), pointer-events:none so it never intercepts a click on the video. */
.mmd-hero-overlay-wrap::before,
.mmd-hero-overlay-wrap::after {
    content: '';
    position: absolute;
    left: 50%;
    transform: translateX( -50% );
    height: 2px;
    background: var(--mmd-cream);
    z-index: 2;
    pointer-events: none;
}
.mmd-hero-overlay-wrap::before { top: var(--mmd-space-4); width: 88%; }
.mmd-hero-overlay-wrap::after  { top: calc( var(--mmd-space-4) + 14px ); width: 52%; }

/* ── Hero height ─────────────────────────────────────────────────────────────
   The hero-video package gives the stage no height: its first clip is
   `position: relative; height: 100%`, and 100% of an auto-height parent computes
   to auto, so the stage ends up however tall the clip's own aspect ratio makes
   it. A 16:9 clip is ~219px at 390px wide — about two thirds of the comp, which
   is why the heading had no room and swallowed the video.

   The comp's hero is ~345px tall in a ~333px frame, so ~1:1. Pinning the ratio
   here makes the hero the design's height regardless of what the clips happen to
   be shot at; object-fit: cover (the package's own rule) crops them to fit.

   These two rules out-specify the package deliberately, and the `body` prefix is
   how: the package's <style> is printed in the body, AFTER this file loads from
   the head, so equal specificity loses. Package selectors are (0,2,0) and
   (0,3,0); `body` makes these (0,2,1) and (0,3,1). No !important needed — but
   note this is a real coupling. If hero-video's CSS changes, check here.
   -------------------------------------------------------------------------- */
body .mmd-hero--video .mmd-hero-video__stage { aspect-ratio: 1 / 1; }
/* The first clip must leave the flow too, or it keeps sizing the stage itself
   and the aspect-ratio above never takes effect. */
body .mmd-hero--video .mmd-hero-video__clip:first-child { position: absolute; inset: 0; }

@media ( min-width: 769px ) {
    /* Extrapolated: a 1:1 hero is enormous on a desktop viewport. The comp is
       mobile-only, so this is a judgement call and wants review. */
    body .mmd-hero--video .mmd-hero-video__stage { aspect-ratio: 16 / 9; }
}
.mmd-hero-overlay-wrap > * { grid-area: 1 / 1; min-width: 0; }
.mmd-hero-overlay {
    align-self: end;
    /* position + z-index are REQUIRED, not tidying. The hero-video package sets
       `.mmd-hero--video { position: relative }`, and positioned elements paint in
       a later layer than static ones no matter what DOM order says — so a static
       overlay disappears behind the video even though it comes after it. This
       puts the band back in the positioned layer, above the video. */
    position: relative;
    z-index: 1;
    background: rgba( 33, 0, 0, 0.72 ); /* --mmd-ox-800 at 72% — needs an alpha, so it can't be the token */
    padding: var(--mmd-space-3) var(--mmd-gutter);
}
.mmd-hero-overlay__h1 {
    font-family: var(--mmd-font-display);
    /* Figma sets a flat 45.91px (Warbler Display is cut for 48pt), but scaled
       rather than copied: a flat size only works for the city it was drawn with,
       and a longer name than "Chicago" wraps and the oxblood band grows tall
       enough to overtake the video.

       8vw lands on ~31px at a 390px viewport — small enough that "Sacramento's
       Experts" stays close to one line, so the band keeps to ~2 lines and leaves
       the video visible, while shorter cities still read large. The cap stops it
       running away on tablets. A city can hand-tune its own breaks: the Homepage
       Content field takes <br>. */
    font-size: clamp( 1.6rem, 8vw, 2.75rem );
    font-weight: 400;
    line-height: 1.05;
    color: var(--mmd-ink-on-dark);
    margin: 0;
}
.mmd-hero-overlay__h1 em { font-style: italic; }

/* Desktop hero heading: the comp floats it as a centred, rounded oxblood band
   straddling the video/cream boundary, rather than the mobile full-width band at
   the video's bottom. */
@media ( min-width: 1024px ) {
    .mmd-hero-overlay {
        justify-self: center;
        width: min( 78%, 880px );
        text-align: center;
        background: rgba( 33, 0, 0, 0.85 );
        border-radius: var(--mmd-radius-xl);
        padding: var(--mmd-space-8) var(--mmd-space-12);
        /* Straddle the boundary: align-self:end already sits the band at the
           video's bottom edge; translate it down so its lower half rests on the
           cream, as in the comp. A fixed value, not a %, so a taller (wrapped)
           heading can't push the band down onto the tagline below it. */
        transform: translateY( 2.5rem );
        z-index: 3;
    }
    .mmd-hero-overlay__h1 { font-size: clamp( 2.5rem, 4vw, 3.5rem ); text-align: center; }
}

/* No video (the hero-video package is file_exists()-guarded, so this is real):
   nothing to sit on, so the band stops pretending to be an overlay. Grid already
   handles the layout — only the transparency needs undoing. */
.mmd-hero-overlay-wrap--no-video .mmd-hero-overlay { background: var(--mmd-ox-800); }

/* =============================================================================
   HEADER — mobile-first
   =============================================================================
   Was: an 80px wordmark absolutely positioned at `left: 38%` (a magic number
   that only centred at one viewport width), with the phone stacked at the right
   and the nav below as hand-torn paper tabs.

   Now: one flex bar — hamburger · phone chip · wordmark — on the oxblood shell,
   sticky via .mmd-site-top.
   ============================================================================= */
.mmd-header { background: var(--mmd-ox-800); width: 100%; }
.mmd-header__bar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--mmd-space-2);
    padding: var(--mmd-space-3);
    /* The bar must never overflow: the wordmark asset is a wide lockup and the
       phone number cannot wrap, so any overflow lands the logo on top of the
       number. See the flex sizing on each child below. */
    overflow: hidden;
}

/* Hamburger — visible by default now; the desktop breakpoint hides it, not the
   other way round. Class names and the .is-open transform are unchanged: main.js
   toggles .is-open here and on #mmd-nav-list. */
.mmd-nav__hamburger {
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 5px;
    background: var(--mmd-cream);
    border: none;
    cursor: pointer;
    padding: 0.65rem 0.7rem;
    border-radius: var(--mmd-radius-sm);
    flex: 0 0 auto;
    z-index: 300;
}
.mmd-nav__hamburger span { display: block; width: 22px; height: 2px; background: var(--mmd-ox-800); transition: all 0.25s ease; transform-origin: center; }
.mmd-nav__hamburger.is-open span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.mmd-nav__hamburger.is-open span:nth-child(2) { opacity: 0; transform: scaleX(0); }
.mmd-nav__hamburger.is-open span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

/* Phone chip. The label and status are hidden here, not deleted — see the note
   in header.php. They are real features (an editable field and a live JS status)
   that the mobile comp simply doesn't show; the desktop breakpoint restores them. */
/* Cream pill, dark text — the comp's phone chip. Brand-fixed on --mmd-cream (not
   --mmd-accent), so it never recolours on a city that sets its own accent. */
.mmd-header__phone {
    display: inline-flex;
    align-items: center;
    gap: var(--mmd-space-2);
    background: var(--mmd-cream);
    border-radius: var(--mmd-radius-pill);
    padding: var(--mmd-space-1) var(--mmd-space-3) var(--mmd-space-1) var(--mmd-space-1);
    color: var(--mmd-ox-800);
    text-decoration: none;
    /* Protected: the number can't wrap, so this must not be the thing that
       shrinks. The wordmark yields instead. */
    flex: 0 0 auto;
}
.mmd-header__phone:hover { text-decoration: none; color: var(--mmd-ox-800); }
/* Dark circle, light glyph — inverted from the pill so the phone icon keeps its
   contrast now that the pill itself is cream. */
.mmd-header__phone-icon {
    width: 26px;
    height: 26px;
    border-radius: 50%;
    background: var(--mmd-ox-800);
    color: var(--mmd-cream);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 auto;
}
.mmd-header__phone-icon svg { width: 15px; height: 15px; display: block; }
.mmd-header__phone-body { display: flex; flex-direction: column; min-width: 0; }
.mmd-header__phone-number {
    font-family: var(--mmd-font-sans);
    font-size: var(--mmd-text-sm);
    font-weight: 700;
    color: var(--mmd-ox-800);
    line-height: 1.2;
    white-space: nowrap;
}
.mmd-header__phone-label,
.mmd-header__phone-status { display: none; }
.mmd-header__phone-status span { color: #4CAF50; font-weight: 700; }

/* Wordmark.
   ASSET GAP: the design uses a compact ~1:1 badge. Every logo in this theme is
   a wide lockup — the one below is 1036x302 (3.43:1), so at the mockup's ~46px
   height it wants 158px of bar. Hamburger + phone chip + gaps already spend
   ~290px of a 375px screen, so it cannot fit and used to overflow onto the
   phone number. logo-small.png / logo-black.png are 2.2:1 but black, which is
   invisible on #210000.

   Until the badge asset arrives this shrinks to fit: `flex: 0 1 auto` with
   `min-width: 0` lets it give way, and max-height (rather than height) keeps it
   proportional as it does. The phone chip is `flex: 0 0 auto` — it is the CTA,
   so the logo yields to it, not the reverse. */
.mmd-header__wordmark { flex: 0 1 auto; min-width: 0; display: block; }
.mmd-header__wordmark img { max-height: 40px; width: auto; }

/* =============================================================================
   NAV — mobile-first drawer
   =============================================================================
   Was: paper tabs on a paper-top.png strip, each item given a different
   hand-tuned margin-bottom (0/19/9/0/7px) via :nth-child to look torn — which
   silently broke the moment an item was added, removed, or reordered, and the
   "Other" dropdown is conditional, so that could happen from the admin.

   Now: a plain drawer. Order-independent.
   ============================================================================= */
.mmd-nav-wrap { width: 100%; position: relative; }
.mmd-nav { background: none; width: 100%; height: auto; }
.mmd-nav__list {
    display: none;
    flex-direction: column;
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    background: var(--mmd-ox-700);
    z-index: 250;
    max-height: 75vh;
    overflow-y: auto;
}
.mmd-nav__list.is-open { display: flex; }
.mmd-nav__item { background: transparent; border-radius: 0; position: relative; border-bottom: 1px solid rgba( 217, 217, 217, 0.14 ); }
.mmd-nav__item:last-child { border-bottom: none; }
.mmd-nav__item > a {
    display: block;
    color: var(--mmd-ink-on-dark);
    padding: var(--mmd-space-3) var(--mmd-space-4);
    font-family: var(--mmd-font-display);
    font-size: var(--mmd-text-lg);
    font-weight: 400;
    white-space: normal;
    transition: background 0.15s;
}
.mmd-nav__item > a:hover { background: rgba( 255, 255, 255, 0.06 ); text-decoration: none; color: var(--mmd-white); }
.mmd-nav__item--has-dropdown > a::after { content: ' ▾'; font-size: 0.8rem; }

/* Dropdowns open on tap (main.js toggles .is-dropdown-open on the <li>). The
   hover-to-open rule belongs to desktop only — on a touch drawer it would fire
   on tap and fight the JS. */
.mmd-nav__dropdown { display: none; position: static; background: var(--mmd-ox-900); min-width: 0; }
.mmd-nav__item--has-dropdown.is-dropdown-open .mmd-nav__dropdown { display: block; }
.mmd-nav__dropdown li a {
    display: block;
    color: var(--mmd-ink-on-dark);
    padding: var(--mmd-space-3) var(--mmd-space-8);
    font-family: var(--mmd-font-display);
    font-size: var(--mmd-text-base);
    border-bottom: 1px solid rgba( 217, 217, 217, 0.10 );
    transition: background 0.15s;
}
.mmd-nav__dropdown li:last-child a { border-bottom: none; }
.mmd-nav__dropdown li a:hover { background: rgba( 255, 255, 255, 0.06 ); text-decoration: none; }

/* ── Header + nav, desktop ───────────────────────────────────────────────────
   Colocated with the component on purpose, rather than pooled in the RESPONSIVE
   blocks at the bottom of this file. That pooling is why the old stylesheet hid
   a `position: relative` on .mmd-site-top 900 lines away from .mmd-site-top —
   which silently disabled the sticky header on exactly the widths the design is
   drawn for. New sections should keep their breakpoints next to their rules.

   NOTE: the mockups are mobile-only, so everything below is extrapolated and
   needs review — the drawer becoming a horizontal bar, and the phone chip
   reclaiming its label and live status because there's room for them.

   Breakpoint is 1024px, NOT 769px like the rest of desktop: logo + phone chip +
   four nav pills need more than ~800px to sit on one line, and below that they
   overflow the right edge. Tablet widths (769–1023) keep the hamburger drawer,
   which is the layout that fits there.
   -------------------------------------------------------------------------- */
@media ( min-width: 1024px ) {
    /* One row, evenly distributed: logo, phone chip, then the four nav pills
       spread across to the right edge — the comp's layout.

       The trick is display:contents on every wrapper (.mmd-header, __bar,
       nav-wrap, nav, nav__list): their boxes vanish and their children — the
       wordmark, the phone chip and the four nav <li> — become direct flex
       children of .mmd-site-top. justify-content: space-between then distributes
       all six evenly, logo hard-left and BLOG hard-right, without restructuring
       the markup (which mobile still needs as-is). */
    .mmd-site-top {
        display: flex;
        align-items: center;
        justify-content: space-between;
        gap: var(--mmd-space-3);
        padding-block: var(--mmd-space-3);
        padding-inline: max( var(--mmd-space-8), calc( ( 100% - var(--mmd-content-max) ) / 2 ) );
    }
    .mmd-header,
    .mmd-header__bar,
    .mmd-nav-wrap,
    .mmd-nav,
    .mmd-nav__list { display: contents; }

    /* order:-1 puts the wordmark first; in DOM the phone precedes it inside the
       bar, and without this the phone would lead. */
    .mmd-header__wordmark { order: -1; }
    .mmd-header__wordmark img { max-height: 56px; display: block; }
    /* The comp shows a number-only pill on desktop too — NOT the "Talk to a real
       person / Current Status" label. Showing them (an earlier extrapolation)
       both missed the comp and made the chip too wide. They stay hidden; the
       availability JS still runs, just unshown, and the markup keeps them. */
    .mmd-header__phone-number { font-size: var(--mmd-text-base); }

    .mmd-nav__hamburger { display: none; }
    /* Nav items are outlined pills, per the comp — the same treatment as
       .mmd-btn--secondary, applied to the nav links. */
    .mmd-nav__item { border-bottom: none; }
    .mmd-nav__item > a {
        font-family: var(--mmd-font-sans);
        font-size: var(--mmd-text-xs);
        font-weight: 600;
        text-transform: uppercase;
        letter-spacing: 0.04em;
        color: var(--mmd-cream);
        border: 2px solid var(--mmd-cream);
        border-radius: var(--mmd-radius-pill);
        padding: var(--mmd-space-2) var(--mmd-space-4);
        white-space: nowrap;
    }
    .mmd-nav__item > a:hover { background: var(--mmd-cream); color: var(--mmd-ox-800); }
    /* Only "Other" is a dropdown now (Public Shows became a direct link). */
    .mmd-nav__item--has-dropdown > a::after { content: none; }
    .mmd-nav__dropdown {
        position: absolute;
        top: 100%;
        /* FLUSH to the pill — no margin-top. The gap that used to sit here was a
           dead zone: hovering the pill opened the menu, but moving the mouse down
           to click an item crossed the gap, lost :hover, and closed it before you
           got there. Flush means the menu box starts at the pill's bottom edge,
           so the pointer never leaves the hovered item. A little top padding gives
           visual breathing room while staying inside the hoverable box. */
        left: 0;
        min-width: 200px;
        padding-top: var(--mmd-space-2);
        border-radius: 0 0 var(--mmd-radius-md) var(--mmd-radius-md);
        overflow: hidden;
        z-index: 200;
    }
    /* "Other" is the last item, hard right — open the menu leftward so it can't
       run off the screen edge. */
    .mmd-nav__item:last-child .mmd-nav__dropdown { left: auto; right: 0; }
    .mmd-nav__item--has-dropdown:hover .mmd-nav__dropdown { display: block; }
    .mmd-nav__dropdown li a { padding: var(--mmd-space-3) var(--mmd-space-4); border-radius: 0; border: none; text-transform: none; }
}

/* =============================================================================
   HOMEPAGE 2026 — new sections
   =============================================================================
   These are new components for the 2026 narrative, not restyles. The existing
   home sections below (HOMEPAGE — REBUILT) still render underneath and are
   untouched so far.
   ============================================================================= */

/* Tagline — the one-line hook under the hero. */
.mmd-home-tagline {
    padding: var(--mmd-space-8) 0;
    text-align: center;
}
.mmd-home-tagline__text {
    font-family: var(--mmd-font-sans);
    font-size: var(--mmd-text-lg);
    color: var(--mmd-ink-on-paper);
    margin: 0;
}
.mmd-home-tagline__text strong { font-weight: 700; }
/* Desktop only: the hero band is translated down 2.5rem to straddle the video/cream
   boundary (see .mmd-hero-overlay @1024), which eats into the gap ABOVE this tagline.
   Add that 2.5rem back to the top padding so the line sits evenly between the hero
   band and the about card below. Below 1024px there's no translate, so the base
   symmetric padding already balances. */
@media ( min-width: 1024px ) {
    /* The hero band is transform: translateY(2.5rem) down to straddle the video/cream
       boundary; transforms don't affect layout, so this line was spaced from the video
       edge, not the band's visible bottom — shrinking the gap above it. Add the 2.5rem
       back to the top so it sits evenly against the about card below.
       The compound .mmd-home-tagline.mmd-home-section selector is REQUIRED: this section
       also carries .mmd-home-section, whose `padding` shorthand is defined LATER in the
       file (~line 1541) and at equal specificity would otherwise win — which is why
       every earlier single-class .mmd-home-tagline padding tweak did nothing. Bottom
       padding stays at .mmd-home-section's space-8, so the two gaps match. */
    .mmd-home-tagline.mmd-home-section {
        padding-top: calc( var(--mmd-space-8) + 2.5rem );
    }
}

/* About card — dark panel, photo on top, two paragraphs under it. */
.mmd-home-about {
    background: var(--mmd-ox-900);
    border-radius: var(--mmd-radius-xl);
    padding: var(--mmd-space-4) var(--mmd-space-4) var(--mmd-space-8);
    text-align: center;
}
.mmd-home-about__image {
    width: 100%;
    /* The comp's photo is near-square, but this slot is option-driven — a city
       can upload any crop. Fixing the ratio and cropping to fill keeps the card
       the same shape whatever gets uploaded, instead of the layout lurching
       around someone's portrait snapshot. */
    aspect-ratio: 4 / 3;
    object-fit: cover;
    border-radius: var(--mmd-radius-lg);
    margin-bottom: var(--mmd-space-6);
}
.mmd-home-about__body p {
    font-family: var(--mmd-font-sans);
    font-size: var(--mmd-text-base);
    line-height: 1.6;
    color: var(--mmd-ink-on-dark);
    margin: 0 0 var(--mmd-space-4);
}
.mmd-home-about__body p:last-child { margin-bottom: 0; }
.mmd-home-about__body strong { font-weight: 700; }
/* The card sits on dark oxblood, so any heading an editor drops into this field
   (h1–h6) must take the on-dark ink — otherwise it inherits the default dark
   heading colour and all but disappears against the panel. */
.mmd-home-about__body :is(h1, h2, h3, h4, h5, h6) {
    font-family: var(--mmd-font-display);
    font-weight: 400;
    line-height: 1.15;
    color: var(--mmd-ink-on-dark);
    margin: 0 0 var(--mmd-space-4);
}

/* ── Evidence notebook ───────────────────────────────────────────────────────
   Heading on oxblood, then a torn notebook page with case props down it.
   -------------------------------------------------------------------------- */
.mmd-home-story {
    background: var(--mmd-ox-800);
    border-radius: var(--mmd-radius-xl);
    padding: var(--mmd-space-8) var(--mmd-space-4) var(--mmd-space-4);
}
.mmd-home-story__heading {
    font-family: var(--mmd-font-display);
    font-size: clamp( 1.5rem, 6.5vw, 2.25rem );
    font-weight: 400;
    line-height: 1.15;
    text-align: center;
    color: var(--mmd-ink-on-dark);
    margin: 0 0 var(--mmd-space-6);
}
.mmd-home-story__heading em { font-style: italic; }

/* The page itself. paper-body.webp is a horizontal strip whose torn, perforated
   left edge runs its full height, so it tiles down — the same repeat-y trick the
   old theme used for its paper, redrawn for this design. The page grows with the
   copy and the texture just keeps going, which a fixed-height image could not. */
.mmd-home-story__paper {
    /* Positioning context for the JS connector overlay (.mmd-story-connectors). */
    position: relative;
    background: var(--mmd-paper-white) url('../images/home_page_assets/paper-body.webp') top left repeat-y;
    background-size: 100% auto;
    border-radius: var(--mmd-radius-sm);
    /* Left padding clears the torn edge and the dotted margin rule printed into
       the texture; text sitting on top of them would look like a mistake. */
    padding: var(--mmd-space-6) var(--mmd-space-4) var(--mmd-space-6) var(--mmd-space-8);
    /* Capped and centred so it stays the compact width the props and weaving
       connectors were tuned at. The connectors are a single SVG stretched to the
       paper width (preserveAspectRatio:none); the wider the paper, the more the
       curves flatten and read wrong. 620px keeps them close to their mobile
       proportions, centred in the wider oxblood panel, and keeps paper-body.webp
       near native resolution. Trade-off: a narrower notebook on very wide
       screens — nudge this up if more presence is wanted, at the cost of
       flatter connectors. */
    max-width: var(--mmd-notebook-max);
    margin-inline: auto;
}

.mmd-home-story__row {
    display: flex;
    align-items: center;
    gap: var(--mmd-space-2);
    position: relative;
    z-index: 1; /* props sit over the connectors, as in the comp */
}
/* Prop on the right instead of the left. row-reverse rather than a second rule:
   the DOM order stays image-then-text everywhere, so a screen reader gets the
   same sequence regardless of which side the picture is drawn on. */
.mmd-home-story__row--reverse { flex-direction: row-reverse; }

/* The props BLEED past the paper's edges, as drawn — the magnifier hangs off the
   torn left edge, the typewriter off the right. That overhang is most of what
   makes the page read as a real desk rather than a tidy two-column layout, so
   the negative margins are the design, not a hack. They cancel .__paper's
   padding and then some. */
.mmd-home-story__prop {
    flex: 0 0 46%;
    max-width: 46%;
    height: auto;
    object-fit: contain;
}
.mmd-home-story__row:not(.mmd-home-story__row--reverse) .mmd-home-story__prop {
    margin-left: calc( -1 * var(--mmd-space-12) );
}
.mmd-home-story__row--reverse .mmd-home-story__prop {
    margin-right: calc( -1 * var(--mmd-space-8) );
}
/* The props are shot at different scales, so one uniform width reads unevenly —
   these nudge them into looking like a single set. */
.mmd-home-story__prop--magnifier  { flex-basis: 58%; max-width: 58%; }
.mmd-home-story__prop--typewriter { flex-basis: 56%; max-width: 56%; }
.mmd-home-story__prop--cuffs      { flex-basis: 54%; max-width: 54%; }
/* The bottle is shot upright but the comp lays it over, so the tilt comes from
   CSS. NEGATIVE degrees — anticlockwise, neck to the upper left. rotate() is
   visual only (the flex box stays upright), so the width is set below what the
   art occupies and the rotation spills into the padding rather than shoving the
   copy sideways. */
.mmd-home-story__prop--poison {
    flex-basis: 56%;
    max-width: 56%;
    transform: rotate( -22deg );
    transform-origin: center;
    /* Sits high in its row rather than centred — the comp hangs it up near the
       connector arriving from the handcuffs. */
    align-self: flex-start;
    margin-top: calc( -1 * var(--mmd-space-4) );
}
/* Bleeds further right than the other props: it is the widest piece of art here
   and the comp runs it well off the page edge. Needs the row--reverse selector
   to out-specify that rule's own margin-right. */
.mmd-home-story__row--reverse .mmd-home-story__prop--poison {
    margin-right: calc( -1 * var(--mmd-space-16) );
}

.mmd-home-story__text {
    font-family: var(--mmd-font-sans);
    /* Scales with the viewport: the props take roughly half the page, so the
       copy has to fit the remaining column at any width. */
    font-size: clamp( 0.65rem, 2.8vw, 0.8rem );
    line-height: 1.4;
    color: var(--mmd-ink-on-paper);
    margin: 0;
}
.mmd-home-story__text strong { font-weight: 700; color: var(--mmd-ox-900); }
.mmd-home-story__text--full {
    margin: var(--mmd-space-6) 0 0;
    padding-top: var(--mmd-space-6);
    border-top: 1px solid var(--mmd-ink-on-paper);
}

/* The line that closes the page. It lives INSIDE .__paper on purpose: the comp
   runs one continuous sheet from the first prop through this line, and only then
   does the oxblood take over for the button. It was briefly its own floating
   white box in a separate section, which put a seam across the middle of what
   the design draws as a single sheet. */
.mmd-home-story__close {
    font-family: var(--mmd-font-display);
    font-size: clamp( 1.125rem, 5vw, 1.5rem );
    font-weight: 400;
    line-height: 1.25;
    color: var(--mmd-ink-on-paper);
    margin: var(--mmd-space-6) 0 0;
}

/* Plan My Party. Part of this section rather than its own: the comp puts it in
   the same oxblood block as the notebook, and two adjacent oxblood sections each
   with their own radius pinch at the seam. */
.mmd-home-story__btn {
    display: block;
    margin-top: var(--mmd-space-8);
    background: var(--mmd-accent);
    color: var(--mmd-white);
    font-family: var(--mmd-font-display);
    /* Scales — the label is editable, so a flat size overflows the moment
       someone types something longer than "Plan My Party". */
    font-size: clamp( 1.5rem, 7vw, 2.25rem );
    font-weight: 400;
    text-align: center;
    border-radius: var(--mmd-radius-pill);
    padding: var(--mmd-space-4) var(--mmd-space-6);
    transition: opacity 0.15s;
}
.mmd-home-story__btn:hover { opacity: 0.85; color: var(--mmd-white); text-decoration: none; }

/* Dashed connectors. Pulled INTO the rows above and below with negative margins
   so each curve starts and ends under a prop rather than floating in its own
   band — that overlap is what makes the line read as running between the props.
   The props sit above it via the row's z-index.

   The ruled line is the connector's, not a row border: the comp rules the page
   between prop groups, and hanging it here keeps the rule and the curve that
   crosses it in one place. It bleeds past .__paper's padding to span the full
   page width. */
.mmd-home-story__link {
    color: var(--mmd-red-ink);
    /* aspect-ratio 4/1 matches the SVG's 400x100 viewBox, so the curve scales
       uniformly and holds its shape at every width — the whole point of the
       rebuild. Height therefore follows width (no fixed px height). The negative
       block margins pull the curve's ends up under the prop above and let the
       prop below overlap; the inline bleed lets the ends reach the props, which
       hang outside the paper's padding. */
    aspect-ratio: 4 / 1;
    margin-block: calc( -1 * var(--mmd-space-8) );
    margin-inline: calc( -1 * var(--mmd-space-8) );
    position: relative;
}
/* Ruled line between prop rows removed by request — the dashed weave alone now
   carries the eye between sections (the spacer height is kept). */
.mmd-home-story__link::before {
    display: none;
}
.mmd-home-story__link svg { width: 100%; height: 100%; display: block; position: relative; }

/* Connector overlay: one SVG per notebook (.mmd-home-story__paper), stretched over
   it. main.js draws the dashed prop-to-prop weave into it from the props' real
   positions, so it reconnects at any copy length. Sits behind the props (rows are
   z-index:1); overflow visible so curves can reach props that bleed past the paper.
   Colour matches each section's old static connectors. */
.mmd-story-connectors {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    pointer-events: none;
    overflow: visible;
    z-index: 0;
    color: var(--mmd-red-ink);
}
.mmd-story-connectors path {
    fill: none;
    stroke: currentColor;
    stroke-width: 2;
    stroke-dasharray: 0.1 7;
    stroke-linecap: round;
}
.mmd-pe-note .mmd-story-connectors { color: var(--mmd-accent); }


/* ── Straight from Off Broadway ──────────────────────────────────────────────
   Newsprint panel with a torn top edge, the Off Broadway line, two photo/copy
   blocks, then the "Reserve your seats" close.
   -------------------------------------------------------------------------- */
.mmd-home-broadway {
    /* Newspp_BG2 carries its own torn newsprint edge at the top and crumples
       downward. It is a 1:2 image, so at `100% auto` it only ever covered ~2x
       the section's width in height — on a section this tall the texture simply
       STOPPED partway down and the flat colour took over, leaving a seam.

       `cover` fixes it and does NOT lose the tear, contrary to the obvious
       worry: on a box narrower than the image's aspect, cover crops
       HORIZONTALLY, not vertically. `top` keeps the tear pinned to the section's
       top edge and the crumple runs the full height however long the copy gets.
       The colour behind is transparent, so the page background shows through
       rather than a flat fill (e.g. if the image ever fails to load). */
    background: transparent url('../images/home_page_assets/Newspp_BG2.webp') top center / cover no-repeat;
    border-radius: var(--mmd-radius-sm);
    padding: var(--mmd-space-16) var(--mmd-space-4) var(--mmd-space-8);
}

.mmd-home-broadway__banner { margin-bottom: var(--mmd-space-8); }
.mmd-home-broadway__line {
    font-family: var(--mmd-font-display);
    font-size: clamp( 1.5rem, 7.5vw, 2.5rem );
    font-weight: 400;
    line-height: 1.15;
    color: var(--mmd-ink-on-paper);
    margin: 0;
}
.mmd-home-broadway__line em { font-style: italic; }
/* The redaction bar between the two lines. Hung off the first line rather than
   added as its own element: it is pure decoration, so it doesn't earn markup. */
.mmd-home-broadway__line:not( .mmd-home-broadway__line--end )::after {
    content: '';
    display: block;
    height: 18px;
    background: var(--mmd-ox-800);
    margin-top: var(--mmd-space-2);
}
/* Second line reads right, as drawn — the two bracket the bar. */
.mmd-home-broadway__line--end { text-align: right; margin-top: var(--mmd-space-2); }
/* The city name in brand red. --mmd-accent, not --mmd-red: this is the one word
   on the page naming the city, so a site that sets its own Primary Accent Color
   should get it here. */
.mmd-word-accent { color: var(--mmd-accent); }

.mmd-home-broadway__panel {
    display: flex;
    align-items: center;
    gap: var(--mmd-space-3);
    margin-bottom: var(--mmd-space-8);
}
.mmd-home-broadway__panel--reverse {
    flex-direction: row-reverse;
    /* First panel: top-align the copy with the photo so a longer paragraph grows
       downward from the image's top edge instead of staying vertically centred. */
    align-items: flex-start;
}
.mmd-home-broadway__pic {
    flex: 0 0 45%;
    max-width: 45%;
    /* Option-driven slot — a city can upload any crop, so the ratio is pinned
       and the image cropped to fill rather than letting the panel reflow around
       whatever shape arrives. */
    aspect-ratio: 3 / 4;
    object-fit: cover;
    border-radius: var(--mmd-radius-sm);
}
/* Panel copy runs in the body sans (Quicksand) to match the rest of the page. It
   was originally the display serif — the newspaper-column conceit — but has been
   unified to the site body font. Kept small and left-aligned to pack more copy
   into the narrow column. */
.mmd-home-broadway__text {
    font-family: var(--mmd-font-sans);
    font-size: clamp( 0.7rem, 3vw, 0.85rem );
    line-height: 1.35;
    text-align: left;
    color: var(--mmd-ink-on-paper);
    margin: 0;
    /* Column rule between the copy and the photo, as drawn. It sits on whichever
       side the photo is, which is why it's split across the two rules below
       rather than being a single border. */
    align-self: stretch;
    display: flex;
    align-items: center;
}
.mmd-home-broadway__panel--reverse .mmd-home-broadway__text {
    align-items: flex-start;
    /* Photo is on the right in this panel (row-reverse), so the copy aligns right,
       toward the image and the column rule. */
    text-align: right;
    border-right: 2px solid #B9B9B4;
    padding-right: var(--mmd-space-2);
}
.mmd-home-broadway__panel:not( .mmd-home-broadway__panel--reverse ) .mmd-home-broadway__text {
    /* Photo is on the left here, so the copy aligns left, toward the image. */
    text-align: left;
    border-left: 2px solid #B9B9B4;
    padding-left: var(--mmd-space-2);
}
.mmd-home-broadway__close {
    font-family: var(--mmd-font-sans);
    font-size: var(--mmd-text-base);
    line-height: 1.4;
    text-align: center;
    color: var(--mmd-ink-on-paper);
    margin: 0;
    padding-top: var(--mmd-space-6);
    border-top: 1px solid #C9C9C6;
}
.mmd-home-broadway__close em { font-style: italic; }

@media ( min-width: 769px ) {
    .mmd-home-broadway { padding: var(--mmd-space-24) var(--mmd-space-8) var(--mmd-space-12); }
    .mmd-home-broadway__panel { gap: var(--mmd-space-6); margin-bottom: var(--mmd-space-12); }
    .mmd-home-broadway__pic { flex-basis: 40%; max-width: 40%; aspect-ratio: 4 / 3; }
    .mmd-home-broadway__close { font-size: var(--mmd-text-base); }
    /* Desktop: both title lines align left. On mobile they stay left-then-right,
       bracketing the redaction bar, as drawn in the comp. */
    .mmd-home-broadway__line--end { text-align: left; }
    /* Narrow the copy from its NON-aligned (outer) side so the column reads taller
       and closer to the photo's height rather than running the full width. The
       aligned (image) side keeps its snug space-2 gap to the column rule. */
    .mmd-home-broadway__panel--reverse .mmd-home-broadway__text { margin-left: 20%; }
    .mmd-home-broadway__panel:not( .mmd-home-broadway__panel--reverse ) .mmd-home-broadway__text { margin-right: 20%; }
}

/* ── Shark Tank credential ───────────────────────────────────────────────── */
.mmd-home-sharktank {
    background: var(--mmd-ox-800);
    border-radius: var(--mmd-radius-xl);
    padding: var(--mmd-space-8) var(--mmd-space-6) var(--mmd-space-12);
    text-align: center;
}
.mmd-home-sharktank__eyebrow {
    font-family: var(--mmd-font-sans);
    font-size: var(--mmd-text-sm);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--mmd-ink-on-dark);
    margin: 0 0 var(--mmd-space-4);
}
/* The logo keeps its own brand colour — it is ABC's mark, not ours to re-tint. */
.mmd-home-sharktank__logo {
    width: 100%;
    max-width: 200px;
    height: auto;
    margin: 0 auto var(--mmd-space-8);
}
.mmd-home-sharktank__btn {
    display: block;
    background: var(--mmd-accent);
    color: var(--mmd-white);
    font-family: var(--mmd-font-display);
    /* Scales for the same reason as the Plan My Party button: the label is
       editable, so a flat size overflows the moment someone types a longer one. */
    font-size: clamp( 1.25rem, 6vw, 1.875rem );
    font-weight: 400;
    border-radius: var(--mmd-radius-pill);
    padding: var(--mmd-space-4) var(--mmd-space-6);
    transition: opacity 0.15s;
}
.mmd-home-sharktank__btn:hover { opacity: 0.85; color: var(--mmd-white); text-decoration: none; }

@media ( min-width: 769px ) {
    .mmd-home-tagline__text { font-size: var(--mmd-text-xl); }
    .mmd-home-story__btn { width: fit-content; margin-inline: auto; padding: var(--mmd-space-4) var(--mmd-space-16); }
    .mmd-home-sharktank__btn { display: inline-block; padding: var(--mmd-space-4) var(--mmd-space-16); }
    .mmd-home-sharktank__logo { max-width: 260px; }
    /* Extrapolated — the comps are mobile-only. Photo beside the copy rather
       than a very wide, very short image. */
    .mmd-home-about {
        display: grid;
        grid-template-columns: 1fr 1fr;
        gap: var(--mmd-space-8);
        align-items: center;
        text-align: left;
        padding: var(--mmd-space-8);
    }
    .mmd-home-about__image { aspect-ratio: 1 / 1; margin-bottom: 0; }
}

/* =============================================================================
   BUTTONS
   ============================================================================= */
/* Pills, per the design. Every button on the site runs through these three, so
   they carry most of the visual change on the pages that aren't the homepage.
   Kept as uppercase sans (not the display serif) — the serif is reserved for the
   two hero buttons, which is what makes those read as the primary action. */
.mmd-btn {
    display: inline-block;
    background: var(--mmd-accent);
    color: var(--mmd-white);
    padding: var(--mmd-space-3) var(--mmd-space-6);
    font-family: var(--mmd-font-sans);
    font-size: var(--mmd-text-sm);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    border: none;
    border-radius: var(--mmd-radius-pill);
    cursor: pointer;
    transition: opacity 0.2s;
    margin: var(--mmd-space-2) auto;
}
.mmd-btn:hover { opacity: 0.85; text-decoration: none; color: var(--mmd-white); }
.mmd-btn--full { display: block; width: 100%; text-align: center; margin-top: var(--mmd-space-4); }
.mmd-btn--primary {
    display: inline-block;
    background: var(--mmd-accent);
    color: var(--mmd-white);
    padding: var(--mmd-space-3) var(--mmd-space-6);
    font-family: var(--mmd-font-sans);
    font-size: var(--mmd-text-sm);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    border: none;
    border-radius: var(--mmd-radius-pill);
    cursor: pointer;
    transition: opacity 0.2s;
    margin-top: auto;
    text-align: center;
}
.mmd-btn--primary:hover { opacity: 0.85; text-decoration: none; color: var(--mmd-white); }
.mmd-btn--secondary {
    display: inline-block;
    background: transparent;
    color: var(--mmd-accent);
    padding: var(--mmd-space-3) var(--mmd-space-6);
    font-family: var(--mmd-font-sans);
    font-size: var(--mmd-text-sm);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    border: 2px solid var(--mmd-accent);
    border-radius: var(--mmd-radius-pill);
    cursor: pointer;
    transition: all 0.2s;
    text-align: center;
}
.mmd-btn--secondary:hover { background: var(--mmd-accent); color: var(--mmd-white); text-decoration: none; }

/* =============================================================================
   LEAD FORM
   =============================================================================
   These rules serve all SIX lead-form templates and the popup, not just the one
   in the comp. Anything added here has to survive event-details' date input,
   select and range slider too — see the end of this block.
   ============================================================================= */
.mmd-lead-form {
    /* Chunky oxblood frame per the comp. The horizontal padding drops so the
       thicker border eats into the padding rather than the field width. */
    padding: var(--mmd-space-8) var(--mmd-space-2);
    background-color: var(--mmd-cream-200);
    border: 20px solid var(--mmd-ox-700);
    border-radius: var(--mmd-radius-lg);
}
.mmd-lead-form__inner { padding: 0; }
/* The comp sets the form heading in the SANS, not the display serif — it's the
   one heading on the page that does. Deliberate, so don't "fix" it to Playfair. */
.mmd-lead-form h2 {
    font-family: var(--mmd-font-sans);
    font-size: var(--mmd-text-2xl);
    font-weight: 700;
    color: var(--mmd-ink-on-paper);
    margin-bottom: var(--mmd-space-2);
    text-align: left;
}
.mmd-lead-form p {
    color: var(--mmd-ink-on-paper);
    font-size: var(--mmd-text-base);
    margin-bottom: var(--mmd-space-6);
    text-align: left;
}
.mmd-form__row { display: flex; gap: var(--mmd-space-3); }
.mmd-form__field { flex: 1; display: flex; flex-direction: column; margin-bottom: var(--mmd-space-3); min-width: 0; }

/* Labels are visually hidden, NOT removed. The comp labels fields with
   placeholders alone; a placeholder is not a label — it vanishes on input, is
   read inconsistently by screen readers, and fails contrast at this size. This
   way the design gets its look and assistive tech keeps a real label.

   Scoped with :has() to fields that actually carry a placeholder. This is not
   fussiness — hiding every label would also hit event-details.php, whose date
   input, <select> and range slider CANNOT have placeholders. Those would become
   genuinely unlabelled controls: a bare dropdown with no clue what it selects.

   If :has() is unsupported the rule is skipped, labels stay visible, and the
   form is merely un-designed rather than unusable — the right way round. */
.mmd-form__field:has( input[type="text"] ) label,
.mmd-form__field:has( input[type="email"] ) label,
.mmd-form__field:has( input[type="tel"] ) label,
.mmd-form__field:has( textarea ) label {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect( 0 0 0 0 );
    clip-path: inset( 50% );
    white-space: nowrap;
    border: 0;
}

/* Labels that stay visible (date, select, guest-count slider in event-details) */
.mmd-form__field label { font-weight: 600; font-size: var(--mmd-text-sm); margin-bottom: var(--mmd-space-2); color: var(--mmd-ink-on-paper); }
.mmd-form__field input[type="text"],
.mmd-form__field input[type="email"],
.mmd-form__field input[type="tel"],
.mmd-form__field textarea {
    border: 1px solid var(--mmd-cream-400);
    border-radius: var(--mmd-radius-sm);
    padding: var(--mmd-space-3);
    font-size: var(--mmd-text-base);
    font-family: var(--mmd-font-body);
    width: 100%;
    background: transparent;
    color: var(--mmd-ink-on-paper);
}
.mmd-form__field input::placeholder,
.mmd-form__field textarea::placeholder { color: var(--mmd-gray); opacity: 1; }
.mmd-form__field input:focus-visible,
.mmd-form__field textarea:focus-visible { outline: 2px solid var(--mmd-ox-800); outline-offset: 1px; }
.mmd-form__field textarea { resize: vertical; }

/* Checkboxes: the label here is the consent copy itself, so it must stay
   visible. This undoes the sr-only treatment above — without it, the marketing
   consent text disappears and the form starts collecting consent nobody can
   read, which is a legal problem, not a visual one. */
.mmd-form__field--checkbox { flex-direction: row; align-items: flex-start; gap: var(--mmd-space-2); }
.mmd-form__field--checkbox input { margin-top: 0.2rem; flex-shrink: 0; }
.mmd-form__field--checkbox label {
    position: static;
    width: auto;
    height: auto;
    margin: 0;
    overflow: visible;
    clip: auto;
    clip-path: none;
    white-space: normal;
    font-weight: 400;
    font-size: 0.62rem;
    color: var(--mmd-gray);
    line-height: 1.45;
}

/* Send button — black pill with the paper-plane glyph, per the comp.
   Deliberately scoped to `.mmd-lead-form .mmd-btn` rather than a modifier class:
   all six lead-form templates render a bare `.mmd-btn`, so a modifier would have
   restyled only the one template the comp happens to show and left the other
   five looking like the old design. (0,2,0) beats the (0,1,0) .mmd-btn base. */
.mmd-lead-form .mmd-btn {
    display: inline-flex;
    align-items: center;
    gap: var(--mmd-space-2);
    background: var(--mmd-ox-900);
    color: var(--mmd-cream);
    /* Rectangular, not a pill (comp). */
    border-radius: 4px;
    font-family: var(--mmd-font-sans);
    font-size: var(--mmd-text-sm);
    font-weight: 600;
    text-transform: none;
    letter-spacing: 0;
    padding: var(--mmd-space-3) var(--mmd-space-6);
    margin: var(--mmd-space-2) 0 0;
}
.mmd-lead-form .mmd-btn:hover { background: var(--mmd-ox-800); color: var(--mmd-cream); opacity: 1; }

/* The glyph is a masked pseudo-element, not markup, for the same reason: the
   templates are meant to be copied to make variants (see the docblock in
   standard.php), so drawing it here means a new variant gets it for free
   instead of someone remembering to paste an <svg>. `background: currentColor`
   through the mask keeps it the same colour as the label. */
.mmd-lead-form .mmd-btn::after {
    content: '';
    width: 16px;
    height: 16px;
    flex: 0 0 auto;
    background: currentColor;
    /* Tilted paper-plane "send" glyph (comp), replacing the flat right-pointing one. */
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M22 2 15 22 11 13 2 9 22 2z'/%3E%3C/svg%3E") center / contain no-repeat;
            mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M22 2 15 22 11 13 2 9 22 2z'/%3E%3C/svg%3E") center / contain no-repeat;
}
/* Popup legal line, shown in place of the opt-in labels on sites that hide the
   marketing opt-ins (mmd_show_marketing_optins). Matches the label treatment. */
.mmd-popup__legal { font-weight: 400; font-size: 0.8rem; color: var(--mmd-gray); margin-top: 0.5rem; }
.mmd-lead-form__success { background: #d4edda; color: #155724; padding: 1rem; margin-bottom: 1rem; border: 1px solid #c3e6cb; }
/* JS validation (assets/js/main.js) — invalid fields + inline error text.
   Applies to every .mmd-form: lead form templates and the popup. */
.mmd-form .is-invalid { border-color: #C0392B !important; background: #fdf3f2; }
.mmd-form__error { display: block; color: #C0392B; font-size: 0.78rem; font-weight: 600; margin-top: 0.25rem; }
.mmd-form__error:empty { display: none; }
/* Compact lead form template (template-parts/lead-forms/compact.php): narrower,
   single-column. Fields stack because the template omits the .mmd-form__row
   two-up wrappers; this just centers and constrains the width. */
.mmd-lead-form--compact .mmd-lead-form__inner { max-width: 480px; margin: 0 auto; }

/* Event Details template (template-parts/lead-forms/event-details.php): date,
   select and guest-count slider. Match the text-input treatment above. */
.mmd-form__field input[type="date"], .mmd-form__field select { border: 1px solid var(--mmd-cream-400); padding: 0.5rem 0.65rem; font-size: 0.95rem; font-family: var(--mmd-font-body); width: 100%; background: var(--mmd-paper-white); color: #222; }
.mmd-form__field--range { margin-bottom: 1rem; }
.mmd-form__range-value { font-weight: 800; color: var(--mmd-red, #C0392B); }
.mmd-form__field--range input[type="range"] { width: 100%; accent-color: var(--mmd-red, #C0392B); margin: 0.35rem 0 0.2rem; }
.mmd-form__range-scale { display: flex; justify-content: space-between; font-size: 0.75rem; color: var(--mmd-gray); }
/* "Not sure yet" toggle — disables the slider so no GuestCount is submitted. */
.mmd-form__range-skip { flex-direction: row; align-items: center; gap: 0.4rem; font-weight: 400; font-size: 0.8rem; color: var(--mmd-gray); margin-top: 0.4rem; cursor: pointer; }
.mmd-form__range-skip input { width: auto; margin: 0; }
.mmd-form__field--range.is-skipped .mmd-form__range-value { color: var(--mmd-gray); font-weight: 400; }
.mmd-form__field--range.is-skipped input[type="range"] { opacity: 0.4; }

/* =============================================================================
   PAGE HEADER + generic page body
   =============================================================================
   The header and body of every non-home page. Brought onto the 2026 system:
   the display serif at its natural case (not uppercase 800-weight Raleway) on
   the paper ink, Quicksand body. These sit in .mmd-main and stack with the same
   owl-selector gap the homepage sections use, so no card background is needed —
   cream-on-cream separated by space reads as the section rhythm.
   ============================================================================= */
.mmd-page-header { padding: var(--mmd-space-8) var(--mmd-space-6) var(--mmd-space-4); text-align: center; }
.mmd-page-header h1 {
    font-family: var(--mmd-font-display);
    font-size: clamp( 1.75rem, 5vw, 2.5rem );
    font-weight: 400;
    color: var(--mmd-ink-on-paper);
    text-transform: none;
    line-height: 1.15;
    margin-bottom: var(--mmd-space-3);
}
.mmd-page-header h1 em { font-style: italic; }
.mmd-page-header p { color: var(--mmd-ink-on-paper); font-family: var(--mmd-font-sans); font-size: var(--mmd-text-base); max-width: 700px; margin: 0 auto; line-height: 1.6; }

.mmd-page-body { padding: var(--mmd-space-4) var(--mmd-space-6) var(--mmd-space-8); }
.mmd-page-body__inner { max-width: 860px; margin: 0 auto; color: var(--mmd-ink-on-paper); font-family: var(--mmd-font-sans); font-size: var(--mmd-text-base); line-height: 1.65; }
.mmd-page-body__inner h2 { font-family: var(--mmd-font-display); font-size: var(--mmd-text-2xl); font-weight: 400; color: var(--mmd-ink-on-paper); margin: var(--mmd-space-8) 0 var(--mmd-space-3); }
.mmd-page-body__inner h3 { font-family: var(--mmd-font-sans); font-weight: 700; color: var(--mmd-ink-on-paper); margin: var(--mmd-space-6) 0 var(--mmd-space-2); }
.mmd-page-body__inner p { margin-bottom: var(--mmd-space-4); }
.mmd-page-body__inner a { color: var(--mmd-accent); }
.mmd-page-body__inner img { border-radius: var(--mmd-radius-md); }

/* =============================================================================
   FAQ
   ============================================================================= */
/* The old yellow paper tabs (#FFFABE) belonged to the paper-on-a-desk metaphor
   that the 2026 shell replaced — they were the last of it left on the site. */
.mmd-faq-tabs { display: flex; gap: var(--mmd-space-2); margin-bottom: var(--mmd-space-6); }
.mmd-faq-tab {
    display: inline-block;
    padding: var(--mmd-space-2) var(--mmd-space-4);
    background: var(--mmd-cream-200);
    border: none;
    border-radius: var(--mmd-radius-pill);
    color: var(--mmd-ink-on-paper);
    font-family: var(--mmd-font-sans);
    font-size: var(--mmd-text-sm);
    font-weight: 600;
    transition: background 0.15s;
}
.mmd-faq-tab:hover { background: var(--mmd-cream-400); text-decoration: none; color: var(--mmd-ink-on-paper); }
.mmd-faq-tab--active { background: var(--mmd-ox-800); color: var(--mmd-cream); }
.mmd-faq-tab--active:hover { background: var(--mmd-ox-700); color: var(--mmd-cream); }

.mmd-faq { padding: 0 var(--mmd-gutter) var(--mmd-space-8); }
/* Each Q+A is a card rather than a row between hairlines — matches every other
   card on the page, and gives the accordion an obvious hit target. */
.mmd-faq__item { border: none; border-radius: var(--mmd-radius-md); overflow: hidden; margin-bottom: var(--mmd-space-2); }
.mmd-faq__item:first-child { border-top: none; }
.mmd-faq__question {
    width: 100%;
    background: var(--mmd-paper-white);
    border: none;
    padding: var(--mmd-space-4);
    text-align: left;
    font-size: var(--mmd-text-base);
    font-weight: 600;
    color: var(--mmd-ink-on-paper);
    cursor: pointer;
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: var(--mmd-space-4);
    font-family: var(--mmd-font-sans);
    margin-top: 0;
    transition: background 0.15s;
}
.mmd-faq__question:hover { background: var(--mmd-cream); }
.mmd-faq__question[aria-expanded="true"] { background: var(--mmd-cream); }
.mmd-faq__question:focus-visible { outline: 2px solid var(--mmd-ox-800); outline-offset: -2px; }
.mmd-faq__icon { font-size: 1.4rem; font-weight: 300; flex-shrink: 0; transition: transform 0.2s; color: var(--mmd-accent); }
.mmd-faq__question[aria-expanded="true"] .mmd-faq__icon { transform: rotate( 45deg ); }
.mmd-faq__answer { padding: 0 var(--mmd-space-4) var(--mmd-space-4); background: var(--mmd-cream); }
.mmd-faq__answer p { margin: 0; color: var(--mmd-ink-on-paper); line-height: 1.6; font-size: var(--mmd-text-sm); }

/* =============================================================================
   404 / CONTENT
   ============================================================================= */
.mmd-content { padding: var(--mmd-space-8) var(--mmd-space-6); }
.mmd-content__header { margin-bottom: var(--mmd-space-6); border-bottom: 2px solid var(--mmd-accent); padding-bottom: var(--mmd-space-3); }
.mmd-content__body p { margin-bottom: var(--mmd-space-4); color: var(--mmd-ink-on-paper); }
.mmd-content--404 { text-align: center; padding: var(--mmd-space-24) var(--mmd-space-6); }
.mmd-content--404 ul { margin: 1.5rem 0; }
.mmd-content--404 li { margin-bottom: 0.5rem; }

/* =============================================================================
   SLIDESHOW
   ============================================================================= */
.mmd-slideshow { background: transparent; padding: 0; }
.mmd-slideshow__inner { position: relative; overflow: hidden; border-radius: var(--mmd-radius-lg); }
.mmd-slideshow__track { display: flex; transition: transform 0.4s ease; }
.mmd-slideshow__slide { min-width: 100%; }
.mmd-slideshow__slide img { width: 100%; display: block; }
.mmd-slideshow__prev, .mmd-slideshow__next { position: absolute; top: 50%; transform: translateY(-50%); background: rgba(33,0,0,0.6); color: var(--mmd-cream); border: none; padding: 0.75rem 0.6rem; cursor: pointer; font-size: 1rem; z-index: 10; }
.mmd-slideshow__prev { left: 0; }
.mmd-slideshow__next { right: 0; }

/* =============================================================================
   TESTIMONIALS
   ============================================================================= */
.mmd-testimonials { padding: 1rem 2rem; }
.mmd-testimonial-slider { position: relative; overflow: hidden; }
.mmd-testimonial-slider__track { display: flex; transition: transform 0.4s ease; }
.mmd-testimonial-slider__slide { min-width: 100%; }
.mmd-testimonial-slider__slide img { width: 100%; max-width: 700px; margin: 0 auto; }
.mmd-testimonial-slider__prev, .mmd-testimonial-slider__next { position: absolute; top: 50%; transform: translateY(-50%); background: rgba(0,0,0,0.4); color: var(--mmd-ink-on-dark); border: none; padding: 0.75rem 0.6rem; cursor: pointer; font-size: 1rem; z-index: 10; }
.mmd-testimonial-slider__prev { left: 0; }
.mmd-testimonial-slider__next { right: 0; }

/* =============================================================================
   HOMEPAGE — LEGACY (removed)
   =============================================================================
   This block styled a homepage that no longer exists. It sat directly above
   "HOMEPAGE — REBUILT" and had done for some time; nothing rendered any of it.

   Audited before deleting — every class was checked against every PHP file in
   the theme: .mmd-page-intro, .mmd-home-top(__inner/__shows/__form),
   .mmd-shows-box(__empty), .mmd-about(__heading/__cols/__text), .mmd-booking,
   .mmd-video-wrapper, .mmd-virtual(__inner/__image/__text) and .mmd-shows-cta
   had zero references. .mmd-clients was the only survivor and is kept below.

   Related: the "YouTube Embed ID" field in Location Settings
   (mmd_youtube_embed_id) is what .mmd-video-wrapper existed for. The field is
   still registered, but NOTHING renders it — an admin can set it and nothing
   happens. Removing the field is a separate call, so it is left alone here.
   ============================================================================= */
.mmd-clients { padding: var(--mmd-space-4) 0; text-align: center; }
.mmd-clients img { margin: 0 auto; max-width: 100%; }

/* =============================================================================
   HOMEPAGE — REBUILT
   ============================================================================= */
/* ── Split hero ──────────────────────────────────────────────────────────────
   The public/private two-up. Not a .mmd-home-section, so it carries its own
   shell. Stacks on mobile — it was a hard two-column grid, which gave each
   column ~160px on a phone.

   This section is load-bearing beyond its looks: mmd_home_upcoming() inside it
   is what emits the homepage's Event schema. Restyle it, don't remove it.
   -------------------------------------------------------------------------- */
.mmd-hero-split {
    background: var(--mmd-cream);
    border-radius: var(--mmd-radius-xl);
    padding: var(--mmd-space-8) var(--mmd-space-6);
}
.mmd-hero-split__h1 {
    font-family: var(--mmd-font-display);
    font-size: clamp( 1.5rem, 6vw, 2.25rem );
    font-weight: 400;
    color: var(--mmd-ink-on-paper);
    text-transform: none;
    text-align: center;
    margin-bottom: var(--mmd-space-6);
    line-height: 1.15;
}
.mmd-hero-split__cols { display: grid; grid-template-columns: 1fr; gap: var(--mmd-space-4); }
.mmd-hero-split__col-inner {
    padding: var(--mmd-space-6);
    height: 100%;
    display: flex;
    flex-direction: column;
    border-radius: var(--mmd-radius-lg);
    border: none;
}
.mmd-hero-split__col--public .mmd-hero-split__col-inner { background: var(--mmd-paper-white); }
.mmd-hero-split__col--private .mmd-hero-split__col-inner { background: var(--mmd-ox-900); }
.mmd-hero-split__eyebrow {
    font-family: var(--mmd-font-sans);
    font-size: var(--mmd-text-xs);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: var(--mmd-accent);
    margin-bottom: var(--mmd-space-2);
    display: block;
}
.mmd-hero-split__h2 {
    font-family: var(--mmd-font-display);
    font-size: var(--mmd-text-xl);
    font-weight: 400;
    margin-bottom: var(--mmd-space-3);
    line-height: 1.2;
}
.mmd-hero-split__col--public .mmd-hero-split__h2 { color: var(--mmd-ink-on-paper); }
.mmd-hero-split__col--private .mmd-hero-split__h2 { color: var(--mmd-ink-on-dark); }
.mmd-hero-split__col--public p { color: var(--mmd-ink-on-paper); font-size: var(--mmd-text-sm); }
.mmd-hero-split__col--private p { color: var(--mmd-ink-on-dark); font-size: var(--mmd-text-sm); }
.mmd-hero-split__dates { margin: var(--mmd-space-3) 0; flex: 1; }
.mmd-hero-split__dates li { display: flex; justify-content: space-between; align-items: center; padding: var(--mmd-space-2) 0; border-bottom: 1px solid var(--mmd-cream-400); font-size: var(--mmd-text-sm); color: var(--mmd-ink-on-paper); gap: var(--mmd-space-2); }
.mmd-hero-split__dates li:last-child { border-bottom: none; }
.mmd-hero-split__date-venue { color: var(--mmd-gray); font-size: var(--mmd-text-xs); display: block; }
.mmd-hero-split__ticket-link { font-size: var(--mmd-text-xs); font-weight: 700; color: var(--mmd-accent); white-space: nowrap; flex-shrink: 0; }
.mmd-hero-split__ticket-link:hover { text-decoration: underline; }
.mmd-hero-split__occasions { margin: var(--mmd-space-3) 0; flex: 1; }
.mmd-hero-split__occasions li { padding: var(--mmd-space-2) 0; border-bottom: 1px solid rgba( 217, 217, 217, 0.18 ); font-size: var(--mmd-text-sm); color: var(--mmd-ink-on-dark); }
.mmd-hero-split__col--public .mmd-hero-split__occasions li { border-bottom: 1px solid var(--mmd-cream-400); color: var(--mmd-ink-on-paper); }
.mmd-hero-split__occasions li:last-child { border-bottom: none; }

@media ( min-width: 769px ) {
    .mmd-hero-split__cols { grid-template-columns: 1fr 1fr; gap: var(--mmd-space-6); }
}

/* ── The shared section shell ────────────────────────────────────────────────
   Every pre-existing home section (public, private, corporate, why-us, local,
   themes, social proof, FAQ) wraps in .mmd-home-section, so this one rule is
   most of what makes them belong with the 2026 narrative above.

   Was: a flat 2rem block separated by a 1px hairline, with UPPERCASE Raleway
   headings at weight 400 and #444 body. Now: a rounded cream card with the
   design's serif heading at its natural case, on the neutral paper ink.

   Headings are NOT uppercase any more — the comp sets everything in Playfair at
   its natural case, and forcing caps on a high-contrast serif wrecks it.
   -------------------------------------------------------------------------- */
.mmd-home-section {
    background: var(--mmd-cream);
    border-radius: var(--mmd-radius-xl);
    padding: var(--mmd-space-8) var(--mmd-space-6);
}
.mmd-home-section h2 {
    font-family: var(--mmd-font-display);
    font-size: clamp( 1.5rem, 6vw, 2.25rem );
    font-weight: 400;
    line-height: 1.15;
    text-transform: none;
    color: var(--mmd-ink-on-paper);
    margin-bottom: var(--mmd-space-4);
}
.mmd-home-section h2 em { font-style: italic; }
.mmd-home-section__intro {
    font-family: var(--mmd-font-sans);
    color: var(--mmd-ink-on-paper);
    font-size: var(--mmd-text-base);
    line-height: 1.6;
    margin-bottom: var(--mmd-space-6);
    max-width: 800px;
}
.mmd-home-section__intro a { color: var(--mmd-accent); }
.mmd-home-section__cta { margin-top: var(--mmd-space-6); }

/* ── Section rhythm ──────────────────────────────────────────────────────────
   Left as a wall of identical cream cards, this run reads as filler under the
   narrative above. Three surfaces alternate instead — cream, newsprint, oxblood
   — so the page keeps a cadence all the way down.

   Newsprint is Newspp_clean.webp — a crop of Newspp_BG2 with its printed top strip
   removed. That strip (torn edge, faint column text, two dark rules) sat behind
   body copy and fought the text; positioning alone couldn't hide it, because a
   tall mobile section has almost the same aspect as the 1:2 sheet, so `cover`
   barely crops and the whole strip showed. The cropped texture is clean crumpled
   paper end to end, so it reads cleanly at any section height. Off Broadway keeps
   the FULL Newspp_BG2 with `top` — its printed masthead is the point there.
   -------------------------------------------------------------------------- */
.mmd-home-public,
.mmd-home-whyus,
.mmd-home-social-proof {
    background: #E8E8E6 url('../images/home_page_assets/Newspp_clean.webp') center center / cover no-repeat;
}
.mmd-home-corporate,
.mmd-home-themes-preview {
    background: var(--mmd-ox-800);
}
/* One rule flips every text colour on the dark sections, rather than each
   component restating it — anything added to them inherits correctly by
   default, instead of arriving black-on-oxblood. */
.mmd-home-corporate,
.mmd-home-corporate h2,
.mmd-home-corporate h3,
.mmd-home-corporate h4,
.mmd-home-corporate p,
.mmd-home-corporate .mmd-home-section__intro,
.mmd-home-themes-preview,
.mmd-home-themes-preview h2,
.mmd-home-themes-preview span,
.mmd-home-themes-preview .mmd-home-section__intro { color: var(--mmd-ink-on-dark); }
.mmd-home-corporate .mmd-btn--secondary,
.mmd-home-themes-preview .mmd-btn--secondary { color: var(--mmd-cream); border-color: var(--mmd-cream); }
.mmd-home-corporate .mmd-btn--secondary:hover,
.mmd-home-themes-preview .mmd-btn--secondary:hover { background: var(--mmd-cream); color: var(--mmd-ox-800); }

/* ── Shared card treatment ───────────────────────────────────────────────────
   The occasion, why-us and review cards were three near-identical 1px-bordered
   white boxes written out three times. They are one look, so they are one rule:
   the borders go, the radius and the paper ink come in. Corporate is the same
   card on the dark surface.
   -------------------------------------------------------------------------- */
.mmd-occasion-card,
.mmd-whyus__item,
.mmd-review-card {
    background: var(--mmd-paper-white);
    border: none;
    border-radius: var(--mmd-radius-md);
    padding: var(--mmd-space-6) var(--mmd-space-4);
    text-align: center;
}
.mmd-corporate-feature {
    background: var(--mmd-ox-900);
    border: none;
    border-radius: var(--mmd-radius-md);
    padding: var(--mmd-space-6) var(--mmd-space-4);
}
.mmd-occasion-card h3,
.mmd-whyus__item h4,
.mmd-corporate-feature h4 {
    font-family: var(--mmd-font-sans);
    font-size: var(--mmd-text-base);
    font-weight: 700;
    margin-bottom: var(--mmd-space-2);
}
.mmd-occasion-card h3,
.mmd-whyus__item h4 { color: var(--mmd-ink-on-paper); }
.mmd-corporate-feature h4 { color: var(--mmd-accent); }
.mmd-occasion-card p,
.mmd-whyus__item p { font-size: var(--mmd-text-sm); color: var(--mmd-gray); margin: 0; line-height: 1.5; }
.mmd-corporate-feature p { font-size: var(--mmd-text-sm); color: var(--mmd-ink-on-dark); margin: 0; line-height: 1.5; }
.mmd-occasion-card__icon,
.mmd-whyus__icon { font-size: 2rem; margin-bottom: var(--mmd-space-2); }

/* ── Grids ───────────────────────────────────────────────────────────────────
   Mobile-first: two-up. These were repeat(4, 1fr) with a bottom breakpoint block
   unwinding them 400 lines away — the same pooling that hid the sticky-header
   bug. The breakpoint lives with the grid now.
   -------------------------------------------------------------------------- */
.mmd-home-occasions__grid,
.mmd-home-corporate__grid,
.mmd-whyus__grid {
    display: grid;
    grid-template-columns: repeat( 2, 1fr );
    gap: var(--mmd-space-3);
    margin-bottom: var(--mmd-space-4);
}
.mmd-themes-preview__grid {
    display: grid;
    grid-template-columns: repeat( 3, 1fr );
    gap: var(--mmd-space-2);
    margin-bottom: var(--mmd-space-4);
}
.mmd-reviews__grid {
    display: grid;
    grid-template-columns: 1fr;
    gap: var(--mmd-space-3);
    margin-bottom: var(--mmd-space-6);
}
.mmd-home-public__cols { display: grid; grid-template-columns: 1fr; gap: var(--mmd-space-6); align-items: start; }

@media ( min-width: 769px ) {
    .mmd-home-occasions__grid,
    .mmd-home-corporate__grid,
    .mmd-whyus__grid { grid-template-columns: repeat( 4, 1fr ); gap: var(--mmd-space-4); }
    .mmd-themes-preview__grid { grid-template-columns: repeat( 6, 1fr ); }
    .mmd-reviews__grid { grid-template-columns: repeat( 3, 1fr ); }
    .mmd-home-public__cols { grid-template-columns: 1fr 1fr; }
}

/* ── Public shows ──────────────────────────────────────────────────────────── */
.mmd-home-public__text p { color: var(--mmd-ink-on-paper); font-size: var(--mmd-text-base); }
.mmd-home-public__ideal {
    /* Translucent rather than a flat fill, so the newsprint reads through it. */
    background: rgba( 255, 255, 255, 0.55 );
    border-left: 3px solid var(--mmd-accent);
    border-radius: 0 var(--mmd-radius-sm) var(--mmd-radius-sm) 0;
    padding: var(--mmd-space-3) var(--mmd-space-4);
    margin: var(--mmd-space-4) 0;
    font-size: var(--mmd-text-sm);
    color: var(--mmd-ink-on-paper);
}
.mmd-home-public__ideal strong { color: var(--mmd-ox-900); }
.mmd-home-public__image img { border-radius: var(--mmd-radius-lg); }

/* ── Local ─────────────────────────────────────────────────────────────────── */
.mmd-home-local__body p { color: var(--mmd-ink-on-paper); font-size: var(--mmd-text-base); margin-bottom: var(--mmd-space-3); }
.mmd-home-local__areas { font-size: var(--mmd-text-sm); color: var(--mmd-gray); font-style: italic; }
.mmd-home-local__areas strong { color: var(--mmd-ink-on-paper); font-style: normal; }

/* ── Themes preview ────────────────────────────────────────────────────────── */
.mmd-themes-preview__item { display: flex; flex-direction: column; text-align: center; text-decoration: none; transition: transform 0.2s; }
.mmd-themes-preview__item:hover { transform: translateY(-2px); text-decoration: none; }
.mmd-themes-preview__item img { width: 100%; aspect-ratio: 1; object-fit: cover; margin-bottom: var(--mmd-space-2); border: none; border-radius: var(--mmd-radius-sm); }
.mmd-themes-preview__item span { font-size: var(--mmd-text-xs); line-height: 1.3; }

/* ── Social proof ──────────────────────────────────────────────────────────── */
.mmd-review-card { text-align: left; display: flex; flex-direction: column; }
/* Stars take --mmd-accent so they match the Google reviews block, which is
   bridged onto the same token — see the shared-packages section. Two different
   review UIs on one page disagreeing about star colour is the kind of thing
   nobody files but everybody notices. */
.mmd-review-card__stars { color: var(--mmd-accent); font-size: 1rem; margin-bottom: var(--mmd-space-2); letter-spacing: 0.1em; }
.mmd-review-card__text { font-size: var(--mmd-text-sm); color: var(--mmd-ink-on-paper); line-height: 1.6; flex: 1; font-style: italic; margin-bottom: var(--mmd-space-3); }
.mmd-review-card__author { font-size: var(--mmd-text-xs); font-weight: 700; color: var(--mmd-gray); margin: 0; }
.mmd-review-card__company { font-weight: 400; }
.mmd-home-companies { margin-top: var(--mmd-space-6); text-align: center; }
.mmd-home-companies h3 { font-family: var(--mmd-font-sans); font-size: var(--mmd-text-base); font-weight: 700; color: var(--mmd-ink-on-paper); margin-bottom: var(--mmd-space-2); }
.mmd-home-companies__list { font-size: var(--mmd-text-sm); color: var(--mmd-gray); font-style: italic; }

.mmd-home-faq .mmd-faq__inner { max-width: 800px; }
.mmd-hero-split__ticket-link {
    background: none;
    border: none;
    cursor: pointer;
    padding: 0;
}

/* ── Paper-texture sections, non-home pages ──────────────────────────────────
   Gives the inner pages the same cream / newsprint rhythm as the homepage:
   these content sections get the clean newsprint texture (Newspp_clean.webp — the
   strip-cropped sheet; see the homepage newsprint note above) as a rounded card,
   so the run down each page alternates surface instead of being a wall of flat
   cream. Their text is already ink-on-paper from the migration, so it stays
   legible. */
.mmd-private-intro,
.mmd-private-venues,
.mmd-public-what-to-expect,
.mmd-public-good-to-know,
.mmd-shows-faq-teaser,
.mmd-themes-cta {
    background: #E8E8E6 url('../images/home_page_assets/Newspp_clean.webp') center center / cover no-repeat;
    border-radius: var(--mmd-radius-xl);
}

/* ── Card radius, non-home pages ─────────────────────────────────────────────
   The colour migration recoloured these cards' borders to a palette tone but
   left square corners. One grouped rule rounds them and their images to match
   the homepage cards, so the whole site's cards share a shape. Kept as a sweep
   rather than editing each rule inline — the real page comps are still pending,
   so this is deliberately light-touch. */
.mmd-theme-card,
.mmd-theme-details,
.mmd-theme-sidebar__box,
.mmd-private-occasion,
.mmd-public-expect__item,
.mmd-good-to-know__item,
.mmd-venue-info__inner,
.mmd-venue-section__no-widget,
.mmd-public-shows__empty,
.mmd-shows-box,
.mmd-eb-event { border-radius: var(--mmd-radius-md); overflow: hidden; }
.mmd-theme-card__image img,
.mmd-theme-hero__image img,
.mmd-theme-sidebar__poster img,
.mmd-private-hero__image img { border-radius: var(--mmd-radius-md); }

/* =============================================================================
   SHOW THEMES
   ============================================================================= */
.mmd-themes { padding: 0 2rem 2rem; }
.mmd-themes__empty { text-align: center; padding: var(--mmd-space-8) var(--mmd-space-4); color: var(--mmd-ink-on-paper); font-family: var(--mmd-font-sans); font-size: var(--mmd-text-base); line-height: 1.6; }
.mmd-themes__empty a { color: var(--mmd-accent); }
.mmd-themes__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.5rem; }
.mmd-theme-card { display: block; border: 1px solid var(--mmd-cream-400); background: var(--mmd-paper-white); transition: box-shadow 0.2s, transform 0.2s; color: var(--mmd-dark); }
.mmd-theme-card:hover { box-shadow: 0 4px 16px rgba(0,0,0,0.15); transform: translateY(-2px); text-decoration: none; }
.mmd-theme-card__image img { width: 100%; height: 180px; object-fit: cover; }
.mmd-theme-card__content { padding: 1rem; }
.mmd-theme-card__content h3 { color: var(--mmd-accent); font-size: 1rem; margin-bottom: 0.4rem; }
.mmd-theme-card__content p { font-size: 0.85rem; color: var(--mmd-gray); margin: 0; }
.mmd-theme-badge { display: inline-block; font-size: 0.72rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.05em; padding: 0.2rem 0.6rem; border-radius: 2px; margin-right: 0.4rem; margin-top: 0.5rem; }
.mmd-theme-badge--private { background: var(--mmd-accent); color: var(--mmd-ink-on-dark); }
.mmd-theme-badge--public { background: var(--mmd-ox-800); color: var(--mmd-ink-on-dark); }
.mmd-theme-card__badges { margin-top: 0.5rem; }
.mmd-themes-cta { padding: 2rem; text-align: center; border-top: 1px solid var(--mmd-cream-400); background: var(--mmd-cream); }
.mmd-themes-cta__inner h2 { font-family: var(--mmd-font-display); font-size: 1.2rem; font-weight: 400; color: var(--mmd-ink-on-paper); margin-bottom: 0.5rem; }
.mmd-themes-cta__inner p { color: var(--mmd-gray); font-size: 0.95rem; margin-bottom: 1.25rem; }
.mmd-themes-cta__btns { display: flex; gap: 1rem; justify-content: center; flex-wrap: wrap; }
.mmd-theme-hero { position: relative; }
/* Frame the poster on dark and let it sit at its natural aspect, capped by the
   box — the WHOLE artwork always shows (portrait posters are letterboxed on the
   sides rather than cropped top/bottom, which is what "cover" did before). */
.mmd-theme-hero__image { background: var(--mmd-ox-900); text-align: center; }
.mmd-theme-hero__image img { max-width: 100%; max-height: 500px; width: auto; display: inline-block; vertical-align: middle; }
.mmd-theme-hero__content { padding: 1.5rem 2rem 1rem; background: var(--mmd-paper-white); border-bottom: 1px solid var(--mmd-cream-400); }
.mmd-theme-hero__content h1 { font-family: var(--mmd-font-heading); font-size: 1.8rem; font-weight: 400; color: var(--mmd-ink-on-paper); margin-bottom: 0.4rem; line-height: 1.2; }
.mmd-theme-hero__tagline { font-size: 1rem; color: var(--mmd-gray); font-style: italic; margin: 0; }
.mmd-theme-content { padding: 2rem; }
.mmd-theme-content__inner { display: grid; grid-template-columns: 1fr 280px; gap: 2rem; align-items: start; }
.mmd-theme-content__description { font-size: 0.95rem; color: var(--mmd-ink-on-paper); line-height: 1.8; margin-bottom: 1.5rem; }
.mmd-theme-content__description p { color: var(--mmd-ink-on-paper); }
.mmd-theme-details { background: var(--mmd-cream); border: 1px solid var(--mmd-cream-400); margin-bottom: 1.5rem; }
.mmd-theme-detail { display: flex; padding: 0.65rem 1rem; border-bottom: 1px solid var(--mmd-cream-400); font-size: 0.88rem; }
.mmd-theme-detail:last-child { border-bottom: none; }
.mmd-theme-detail__label { font-weight: 700; color: var(--mmd-ink-on-paper); flex: 0 0 120px; }
.mmd-theme-detail__value { color: var(--mmd-gray); }
.mmd-theme-ctas { display: flex; gap: 1rem; flex-wrap: wrap; }
.mmd-theme-sidebar__poster { margin-bottom: 1.25rem; }
.mmd-theme-sidebar__poster img { width: 100%; border: 1px solid var(--mmd-cream-400); }
.mmd-theme-sidebar__box { background: var(--mmd-ox-800); padding: 1.25rem; margin-bottom: 1rem; }
.mmd-theme-sidebar__box h4 { font-family: var(--mmd-font-display); font-size: 1rem; font-weight: 400; color: var(--mmd-ink-on-dark); margin-bottom: 0.5rem; }
.mmd-theme-sidebar__box p { font-size: 0.85rem; color: var(--mmd-ink-on-dark); margin-bottom: 0.75rem; }
.mmd-theme-sidebar__phone { display: block; background: var(--mmd-accent); color: var(--mmd-ink-on-dark); text-align: center; padding: 0.65rem; font-family: var(--mmd-font-heading); font-size: 1rem; font-weight: 700; }
.mmd-theme-sidebar__phone:hover { opacity: 0.85; text-decoration: none; color: var(--mmd-ink-on-dark); }
.mmd-theme-sidebar__back { display: block; font-size: 0.85rem; color: var(--mmd-accent); text-align: center; padding: 0.5rem; }
.mmd-theme-sidebar__back:hover { text-decoration: underline; }
.mmd-theme-related { padding: 2rem; border-top: 1px solid var(--mmd-cream-400); }
.mmd-theme-related__inner h2 { font-family: var(--mmd-font-display); font-size: 1.2rem; font-weight: 400; color: var(--mmd-ink-on-paper); margin-bottom: 1.25rem; }

/* =============================================================================
   PRIVATE EVENTS
   ============================================================================= */

/* ── Private Events 2026: About ──────────────────────────────────────────────
   Under the hero + tagline: full-bleed photos (they reach the screen edge, comp),
   the tightened "Since 2002" intro, a photo/copy two-column, then the small
   lead-in line into the form. Cream surface, paper ink; photos wear a thin red
   frame. Full-bleed on mobile so the images touch the edge; the copy re-pads. */
.mmd-pe-about { margin-inline: calc( -1 * var(--mmd-gutter) ); padding: var(--mmd-space-8) 0; }
/* Hero photo: INSET with spacing around it (comp) — not full-bleed — dark-red frame. */
.mmd-pe-about__photo {
    display: block;
    width: calc( 100% - 2 * var(--mmd-gutter) );
    margin: 0 auto var(--mmd-space-8);
    border: 3px solid var(--mmd-red-deep);
}
.mmd-pe-about__intro { text-align: center; padding: 0 var(--mmd-gutter); margin-bottom: var(--mmd-space-8); }
.mmd-pe-about__intro p {
    font-family: var(--mmd-font-sans);
    font-size: var(--mmd-text-sm);
    line-height: 1.65;
    color: var(--mmd-ink-on-paper);
    margin: 0;
}
/* Emphasised phrases run in the display serif, bold italic (comp). */
.mmd-pe-about__intro em,
.mmd-pe-about__lead-in em { font-family: var(--mmd-font-display); font-style: italic; font-weight: 700; }
.mmd-pe-about__twocol {
    display: flex;
    align-items: center;
    gap: var(--mmd-space-6);
    margin-bottom: var(--mmd-space-8);
}
/* Two-col photo: nudged a hair off the left edge with a small gap, framed in
   dark-red on all four sides. The gap is deliberately tiny to leave room for the copy. */
.mmd-pe-about__col-photo {
    flex: 0 0 42%;
    max-width: 42%;
    margin-left: var(--mmd-space-2);
    aspect-ratio: 3 / 4;
    object-fit: cover;
    border: 3px solid var(--mmd-red-deep);
}
.mmd-pe-about__col-text {
    font-family: var(--mmd-font-sans);
    font-size: 0.85rem;
    line-height: 1.65;
    color: var(--mmd-ink-on-paper);
    margin: 0;
    padding-right: var(--mmd-gutter);
}
.mmd-pe-about__lead-in {
    text-align: center;
    padding: 0 var(--mmd-gutter);
    font-family: var(--mmd-font-display);
    font-size: var(--mmd-text-lg);
    line-height: 1.5;
    color: var(--mmd-ink-on-paper);
    margin: 0;
}

@media ( min-width: 769px ) {
    .mmd-pe-about { max-width: var(--mmd-copy-max); margin-inline: auto; }
    .mmd-pe-about__intro p { font-size: var(--mmd-text-base); }
    .mmd-pe-about__col-photo { flex-basis: 42%; max-width: 42%; }
    /* Copy fills the rest of the two-column instead of leaving the right side empty. */
    .mmd-pe-about__col-text { flex: 1; min-width: 0; font-size: var(--mmd-text-base); }
    .mmd-pe-about__lead-in { font-size: var(--mmd-text-xl); }
}

/* ── Private Events 2026: Occasions notebook ─────────────────────────────────
   The homepage story notebook re-skinned to the comp: a CREAM paper card with a
   dark-red (oxblood) perforated dashed border, dark paper ink, props anchored to
   the top of each block, and a red dashed trail weaving between five occasion
   props. Reuses .mmd-home-story__row / __prop / __link for layout; the surface,
   text and connector colours change here. */
/* Plain cream section background (the cream-tear.webp torn texture was removed by
   request), full-bleed so the framed card can reach the screen edges. */
.mmd-pe-occasions {
    margin-inline: calc( -1 * var(--mmd-gutter) );
    background: var(--mmd-cream);
    /* Less bottom padding than top so the How-To paper below scoots up closer. */
    padding: var(--mmd-space-8) 0 var(--mmd-space-4);
}
.mmd-pe-occasions__header { padding: 0 var(--mmd-gutter) var(--mmd-space-10); text-align: center; }
.mmd-pe-occasions__header h2 {
    font-family: var(--mmd-font-display);
    font-size: clamp( 1.75rem, 7vw, 2.75rem );
    font-weight: 400;
    line-height: 1.1;
    color: var(--mmd-ink-on-paper);
    margin: 0;
}
.mmd-pe-occasions__header em { font-style: italic; }
/* Optional lead paragraph under the heading (only rendered when the field is set). */
.mmd-pe-occasions__intro {
    max-width: 620px;
    margin: var(--mmd-space-4) auto 0;
    font-family: var(--mmd-font-sans);
    font-size: var(--mmd-text-base);
    line-height: 1.6;
    color: var(--mmd-ink-on-paper);
}

/* Just a wrapper now — no background of its own (the torn paper lives on the
   section) and no side padding, so the framed card runs edge to edge. */
.mmd-pe-note { padding: 0; }

/* The card: NOTEBOOK-EDGE paper (paper-body, inherited from .mmd-home-story__paper
   — the torn/spiral notebook sheet the text sits on) inside a THICK oxblood frame,
   same 20px treatment as the lead form, full-bleed to the screen edges. `color`
   drives the connector SVGs (stroke currentColor) red on the paper. */
.mmd-pe-note__paper {
    max-width: none;
    margin-inline: 0;
    /* Drop .mmd-home-story__paper's torn paper-body.webp edge — plain sheet here,
       to match the comp. No visible tear. */
    background: var(--mmd-paper-white);
    border: 20px solid var(--mmd-ox-700);
    border-radius: var(--mmd-radius-lg);
    padding: var(--mmd-space-6);
    color: var(--mmd-accent);
}
/* Props anchor to the TOP of each block, beside the heading, as in the comp. */
.mmd-pe-note .mmd-home-story__row { align-items: flex-start; }
.mmd-pe-note__text { flex: 1; min-width: 0; }
.mmd-pe-note__text h3 {
    font-family: var(--mmd-font-display);
    font-style: italic;
    font-size: var(--mmd-text-base);
    font-weight: 700;
    color: var(--mmd-ink-on-paper);
    margin: 0 0 var(--mmd-space-1);
}
.mmd-pe-note__text p {
    font-family: var(--mmd-font-sans);
    font-size: 0.75rem;
    line-height: 1.45;
    color: var(--mmd-ink-on-paper);
    margin: 0;
}
/* Props sit large against the inner edge of the frame (cancel the paper padding so
   they reach the border, but don't overlap the thick solid frame). */
.mmd-pe-note__prop { flex-basis: 56%; max-width: 56%; }
.mmd-pe-note .mmd-home-story__row:not(.mmd-home-story__row--reverse) .mmd-home-story__prop { margin-left: calc( -1 * var(--mmd-space-10) ); }
.mmd-pe-note .mmd-home-story__row--reverse .mmd-home-story__prop { margin-right: calc( -1 * var(--mmd-space-10) ); }
/* Cock the props back and forth at different angles. The tilt classes CYCLE
   (--r0..--r4) so any number of occasion cards alternate naturally; the first five
   keep the original angles. */
.mmd-pe-note__prop--r0 { transform: rotate( -6deg ); }
.mmd-pe-note__prop--r1 { transform: rotate(  6deg ); }
.mmd-pe-note__prop--r2 { transform: rotate( -9deg ); }
.mmd-pe-note__prop--r3 { transform: rotate(  7deg ); }
.mmd-pe-note__prop--r4 { transform: rotate( -5deg ); }
/* Copy aligns to the outer edge, away from the prop (comp): right-aligned when the
   prop is on the left, left-aligned when the prop is on the right. */
.mmd-pe-note .mmd-home-story__row:not(.mmd-home-story__row--reverse) .mmd-pe-note__text { text-align: right; }
.mmd-pe-note .mmd-home-story__row--reverse .mmd-pe-note__text { text-align: left; }

/* Connectors: a red dashed trail on the notebook paper. Endpoints (in
   private-events.php) swing left↔right to sit under the alternating props; the
   taller aspect + deeper block overlap let each curve sweep from one prop down to
   the next rather than sitting flat in the gap. margin-inline spans the paper
   inside the frame. */
.mmd-pe-note .mmd-home-story__link {
    color: var(--mmd-accent);
    aspect-ratio: 3 / 1;
    margin-inline: calc( -1 * var(--mmd-space-6) );
    margin-block: calc( -1 * var(--mmd-space-10) );
}
/* No ruled line between occasions — the perforated border and the dashed red trail
   are the design; the story's solid horizontal rule just clutters the curve here. */
.mmd-pe-note .mmd-home-story__link::before { display: none; }

@media ( min-width: 769px ) {
    .mmd-pe-note__paper { max-width: var(--mmd-notebook-max); margin-inline: auto; padding: var(--mmd-space-10) var(--mmd-space-8); }
    .mmd-pe-note__text h3 { font-size: var(--mmd-text-xl); }
    /* Cap the props so they don't balloon on the now-wider centred notebook — a % of
       a 1000px paper made them huge. Fixed cap keeps them a sensible size; the copy
       takes the freed space and the JS connectors re-weave to match. */
    .mmd-pe-note__prop { max-width: 240px; }
}

/* ── Private Events 2026: How To Throw (red steps panel) ─────────────────────
   A cream intro (Plan My Party pill + serif heading) leading into a full-bleed
   deep-red panel with a torn top edge: a taped sticky note, three numbered steps
   in Permanent Marker with hand-drawn arrow doodles, and a party photo. */
.mmd-pe-howto {
    /* Full-bleed: cancel .mmd-main's gutter so the red panel runs edge to edge. */
    margin-inline: calc( -1 * var(--mmd-gutter) );
    /* No gap to the occasions section above (overrides the .mmd-main owl space-8); the
       scoot is handled by trimming that section's bottom padding. */
    margin-top: 0;
}
.mmd-pe-howto__intro {
    position: relative;
    /* z-index:1 lifts the whole paper sheet (::before) above the red panel below. */
    z-index: 1;
    text-align: center;
    padding: var(--mmd-space-4) var(--mmd-gutter) var(--mmd-space-8);
}
/* ONE torn-paper sheet as an overlapping image: it fills the intro and hangs down
   past its bottom, overlapping the top of the red panel. The image's torn bottom edge
   is transparent, so the red shows through where it tears. z-index:-1 puts the sheet
   BEHIND the button + heading (which sit on top of it); the intro's z-index:1 keeps
   the whole sheet above the red panel. Lower the negative `bottom` to hang deeper. */
.mmd-pe-howto__intro::before {
    content: '';
    position: absolute;
    left: 0;
    right: 0;
    top: 0;
    bottom: calc( -1 * var(--mmd-space-12) );
    background: url('../images/private/cream-tear.webp') top center / 100% auto no-repeat;
    z-index: -1;
    pointer-events: none;
}
.mmd-pe-howto__label {
    display: inline-block;
    background: var(--mmd-red-deep);
    color: var(--mmd-cream);
    font-family: var(--mmd-font-display);
    font-size: var(--mmd-text-xl);
    letter-spacing: 0.02em;
    text-transform: uppercase;
    padding: var(--mmd-space-2) var(--mmd-space-8);
    border-radius: var(--mmd-radius-pill);
    margin-bottom: var(--mmd-space-6);
    transition: opacity 0.15s;
}
.mmd-pe-howto__label:hover { color: var(--mmd-cream); opacity: 0.85; text-decoration: none; }
.mmd-pe-howto__heading {
    font-family: var(--mmd-font-display);
    font-size: clamp( 1.35rem, 5.5vw, 2rem );
    font-weight: 400;
    line-height: 1.15;
    color: var(--mmd-ink-on-paper);
    margin: 0;
}

.mmd-pe-howto__body {
    position: relative;
    background: var(--mmd-red-deep);
    color: var(--mmd-white);
    /* Top padding clears the cream tear (.mmd-pe-howto__intro::after) that overhangs
       the top of this panel — keep it >= the tear's height so content sits below it. */
    padding: var(--mmd-space-16) var(--mmd-gutter) var(--mmd-space-16);
}

/* Taped sticky note. The graphic is square with the tape baked in; text sits on
   the yellow with padding insetting it from the tape corners. */
.mmd-pe-howto__note {
    max-width: 360px;
    aspect-ratio: 1 / 1;
    margin: 0 auto var(--mmd-space-10);
    background: url('../images/private/sticky-note.webp') center / contain no-repeat;
    display: flex;
    align-items: center;
    justify-content: center;
}
.mmd-pe-howto__note-inner {
    /* Cap the column well inside the yellow so the copy never overflows the note
       or its tape (the note art is square via aspect-ratio; the flex parent
       centres this). */
    max-width: 70%;
    padding: var(--mmd-space-4) 0;
    color: var(--mmd-ink-on-paper);
    text-align: center;
}
.mmd-pe-howto__note-lead {
    font-family: var(--mmd-font-marker);
    font-size: 1rem;
    line-height: 1.25;
    margin: 0 0 var(--mmd-space-2);
}
.mmd-pe-howto__note-inner p:last-child {
    font-family: var(--mmd-font-sans);
    font-size: 0.78rem;
    line-height: 1.45;
    margin: 0;
}

/* Numbered steps, white on red. */
.mmd-pe-howto__steps { list-style: none; margin: 0 auto; padding: 0; max-width: 560px; }
.mmd-pe-howto__step { position: relative; margin-bottom: var(--mmd-space-2); }
.mmd-pe-howto__step-title {
    font-family: var(--mmd-font-marker);
    /* Permanent Marker renders large for its point size; the comp keeps these
       small. */
    font-size: 1.05rem;
    font-weight: 400;
    color: var(--mmd-white);
    line-height: 1.3;
    margin: 0 0 var(--mmd-space-2);
}
.mmd-pe-howto__step p {
    font-family: var(--mmd-font-sans);
    font-size: var(--mmd-text-sm);
    line-height: 1.6;
    color: var(--mmd-cream);
    margin: 0;
    /* Narrow column (as in the comp): leaves room for the arrows in the margin and
       lets the circle frame step 2's copy tightly. */
    max-width: 290px;
}
.mmd-pe-howto__step em { font-style: italic; font-weight: 600; color: var(--mmd-white); }
/* Offset the steps side to side (odd stays left, even shifts right) so the notes read
   like scattered hand annotations rather than a straight stack. The title right-aligns
   and the copy box / circle / underline move to the right on even steps; the
   alternating arrows already bridge from one side to the other between steps. */
.mmd-pe-howto__step:nth-child(even) { text-align: right; }
.mmd-pe-howto__step:nth-child(even) .mmd-pe-howto__step p,
.mmd-pe-howto__step:nth-child(even) .mmd-pe-howto__circled {
    margin-left: auto;
    margin-right: 0;
    text-align: left;
}
.mmd-pe-howto__step:nth-child(even) .mmd-pe-howto__doodle--underline {
    margin-left: auto;
    margin-right: 0;
}

/* Hand-drawn arrow doodles between steps, each rotated to point down toward the
   next step. --1 (after step 1) is the curvy arrow sweeping down-right; --2 (after
   step 2) is the straight arrow flipped to point down on the left. */
.mmd-pe-howto__arrow { display: block; height: auto; pointer-events: none; }
.mmd-pe-howto__arrow--1 {
    width: 250px;
    /* Negative TOP margin lifts the arrow up so its top rests BESIDE step 1's
       paragraph (on the empty right side), and pulls step 2 up with it; the negative
       bottom margin keeps step 2 close underneath. So the arrow is large but adds
       almost no gap. */
    margin: calc( -1 * var(--mmd-space-24) ) 4% calc( -1 * var(--mmd-space-8) ) auto; /* right side */
    transform: rotate( -120deg );
}
.mmd-pe-howto__arrow--2 {
    width: 150px;
    /* Top margin drops the arrow clear of the enlarged step-2 ellipse; negative
       bottom margin overlaps it into the gap so step 3 stays close. */
    margin: var(--mmd-space-12) auto calc( -1 * var(--mmd-space-12) ) 8%; /* left side */
    transform: rotate( 180deg );
}

/* Underline doodles under the step titles + the circle around step 2's copy. */
.mmd-pe-howto__doodle { display: block; pointer-events: none; }
.mmd-pe-howto__doodle--underline {
    width: 64%;
    max-width: 300px;
    height: auto;
    margin: calc( -1 * var(--mmd-space-1) ) 0 var(--mmd-space-3);
}
/* Step 3's underline runs wider than step 1's little squiggle. */
.mmd-pe-howto__doodle--wide { width: 92%; max-width: 400px; }
/* The circle wraps step 2's now-narrow paragraph box. */
.mmd-pe-howto__circled { position: relative; max-width: 290px; margin-top: var(--mmd-space-3); }
/* Step 2's copy matches the other steps now that the ellipse is enlarged enough to
   wrap it at the same size. */
.mmd-pe-howto__circled p { font-size: var(--mmd-text-sm); line-height: 1.6; }
.mmd-pe-howto__doodle--circle {
    position: absolute;
    /* Define the box with INSET (all four edges) rather than a percentage height:
       the copy box is auto-height, so `height: 100%` did not resolve and the loop
       sized off its own aspect ratio and landed below the text. Inset gives a
       definite box = copy box + an even margin, on every width. */
    inset: -2.75rem -5.5rem;
}
/* The <svg> fills the definite span box; its centred ellipse then wraps the copy. */
.mmd-pe-howto__doodle--circle svg { display: block; width: 100%; height: 100%; }

/* All the hand-drawn ink — underlines, arrows, and the step-2 ellipse — sits BEHIND
   the step copy so a stroke never crosses a word. Give the FLAT (static) doodles and
   arrows position:relative so their z-index takes — but do NOT set position on the
   broad .mmd-pe-howto__doodle, or it clobbers the circle's own position:absolute
   (equal specificity, later source) and drops the loop out of its overlay into the
   flow below the paragraph. That override was why the loop kept landing below. */
.mmd-pe-howto__doodle,
.mmd-pe-howto__arrow { z-index: 0; }
.mmd-pe-howto__doodle--underline,
.mmd-pe-howto__arrow { position: relative; }
.mmd-pe-howto__step-title,
.mmd-pe-howto__step p { position: relative; z-index: 1; }

.mmd-pe-howto__photo {
    display: block;
    width: 100%;
    max-width: 560px;
    margin: var(--mmd-space-8) auto 0;
}

@media ( min-width: 769px ) {
    .mmd-pe-howto__heading { font-size: clamp( 1.8rem, 3.2vw, 2.4rem ); }
    .mmd-pe-howto__note { max-width: 400px; }
    .mmd-pe-howto__step-title { font-size: 1.3rem; }
}

/* ── Private Events 2026: photo features (Why [City] Chooses / You) ──────────
   Alternating photo + copy rows on cream, with an oxblood eyebrow band + italic
   serif heading. Shared by the Why-Chooses and You sections; photos wear the same
   oxblood frame as the rest of the page. */
/* Full-bleed so the photos can reach the screen edge (comp): cancel .mmd-main's
   gutter; the header and copy re-pad, only the images touch the edge. */
.mmd-pe-features { margin-inline: calc( -1 * var(--mmd-gutter) ); padding: var(--mmd-space-8) 0; }
.mmd-pe-features__header { text-align: center; padding: 0 var(--mmd-gutter); margin-bottom: var(--mmd-space-6); }
.mmd-pe-features__eyebrow {
    display: block;
    background: var(--mmd-ox-800);
    color: var(--mmd-cream);
    font-family: var(--mmd-font-display);
    font-size: var(--mmd-text-xl);
    padding: var(--mmd-space-3) var(--mmd-space-4);
    border-radius: 0;
    margin-bottom: var(--mmd-space-3);
}
.mmd-pe-features__heading {
    font-family: var(--mmd-font-display);
    font-style: italic;
    font-size: clamp( 1.35rem, 5.5vw, 1.9rem );
    font-weight: 700;
    text-align: center;
    color: var(--mmd-ink-on-paper);
    margin: 0 0 var(--mmd-space-3);
}
/* Second oxblood bar under the heading — the comp's title-plaque motif. Square corners. */
.mmd-pe-features__rule { height: 2.1rem; background: var(--mmd-ox-800); border-radius: 0; }
.mmd-pe-feature { display: flex; align-items: center; gap: var(--mmd-space-4); margin-bottom: var(--mmd-space-8); }
.mmd-pe-feature--reverse { flex-direction: row-reverse; }
/* Photo bleeds to the screen edge on its side — no frame, no radius. */
.mmd-pe-feature__img {
    flex: 0 0 44%;
    max-width: 44%;
    aspect-ratio: 3 / 4;
    object-fit: cover;
}
.mmd-pe-feature__body { padding-right: var(--mmd-gutter); }
.mmd-pe-feature--reverse .mmd-pe-feature__body { padding-right: 0; padding-left: var(--mmd-gutter); }
/* Text-only features (no photo) have nothing on their left, so the copy would run
   to the screen edge — give them a real left indent (with a matching right pad) so
   the text sits in from the edge like a proper margin. */
.mmd-pe-feature:not( :has( .mmd-pe-feature__img ) ) .mmd-pe-feature__body {
    padding-left: var(--mmd-space-8);
    padding-right: var(--mmd-gutter);
}
.mmd-pe-feature__body h3 {
    font-family: var(--mmd-font-display);
    font-style: italic;
    font-size: var(--mmd-text-base);
    font-weight: 700;
    color: var(--mmd-ink-on-paper);
    margin: 0 0 var(--mmd-space-2);
}
.mmd-pe-feature__body p {
    font-family: var(--mmd-font-sans);
    font-size: var(--mmd-text-xs);
    line-height: 1.6;
    color: var(--mmd-ink-on-paper);
    margin: 0;
}
/* Since 2002 — centred recap into the Shark Tank close. */
.mmd-pe-since { text-align: center; max-width: 520px; margin: 0 auto; padding: var(--mmd-space-2) var(--mmd-gutter) 0; }
.mmd-pe-since h3 {
    font-family: var(--mmd-font-display);
    font-style: italic;
    font-size: var(--mmd-text-lg);
    font-weight: 400;
    color: var(--mmd-ink-on-paper);
    margin: 0 0 var(--mmd-space-2);
}
.mmd-pe-since p {
    font-family: var(--mmd-font-sans);
    font-size: var(--mmd-text-xs);
    line-height: 1.6;
    color: var(--mmd-ink-on-paper);
    margin: 0;
}
.mmd-pe-since em, .mmd-pe-feature__body em { font-style: italic; }

@media ( min-width: 769px ) {
    /* Desktop = "the phone layout, but bigger": contain the row to a comfortable
       width and centre it (it was full-bleed and sprawling across 1200px), keep the
       images LARGE (they were shrunk to 34%), and let the copy fill its side instead
       of leaving a big empty gap. */
    .mmd-pe-features { max-width: var(--mmd-copy-max); margin-inline: auto; }
    .mmd-pe-feature { gap: var(--mmd-space-8); }
    .mmd-pe-feature__img { flex-basis: 44%; max-width: 44%; }
    .mmd-pe-feature__body { flex: 1; min-width: 0; }
    .mmd-pe-feature__body h3 { font-size: var(--mmd-text-lg); }
    .mmd-pe-feature__body p, .mmd-pe-since p { font-size: var(--mmd-text-sm); }
}

/* ── Private Events 2026: Popular Themes carousel ────────────────────────────
   A dark-red (oxblood) card with light text (comp): cream serif heading, intro,
   then a swipeable one-at-a-time carousel of theme posters with prev/next
   controls, and the View All Themes button. */
.mmd-pe-themes {
    background: var(--mmd-ox-800);
    color: var(--mmd-ink-on-dark);
    border-radius: var(--mmd-radius-xl);
    padding: var(--mmd-space-8) var(--mmd-space-6);
}
.mmd-pe-themes__eyebrow {
    display: block;
    color: var(--mmd-cream);
    font-family: var(--mmd-font-display);
    font-size: clamp( 1.4rem, 6vw, 2rem );
    line-height: 1.15;
    margin-bottom: var(--mmd-space-4);
}
.mmd-pe-themes__intro p {
    font-family: var(--mmd-font-sans);
    font-size: var(--mmd-text-sm);
    line-height: 1.6;
    color: var(--mmd-ink-on-dark);
    margin: 0 0 var(--mmd-space-6);
}
.mmd-pe-themes__intro strong { color: var(--mmd-cream); }
/* View All Themes button on the oxblood — cream outline, not the red one. */
.mmd-pe-themes .mmd-btn--secondary { color: var(--mmd-cream); border-color: var(--mmd-cream); }
.mmd-pe-themes .mmd-btn--secondary:hover { background: var(--mmd-cream); color: var(--mmd-ox-800); }

.mmd-pe-carousel { position: relative; }
.mmd-pe-carousel__track {
    display: flex;
    gap: var(--mmd-space-4);
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    scroll-behavior: smooth;
    scrollbar-width: none;
    -webkit-overflow-scrolling: touch;
}
.mmd-pe-carousel__track::-webkit-scrollbar { display: none; }
.mmd-pe-carousel__slide {
    flex: 0 0 100%;
    scroll-snap-align: center;
    display: block;
    text-decoration: none;
    color: var(--mmd-ink-on-paper);
}
.mmd-pe-carousel__slide img {
    display: block;
    width: 100%;
    aspect-ratio: 1;
    object-fit: cover;
    background: var(--mmd-cream-200);
}
.mmd-pe-carousel__caption {
    display: block;
    text-align: center;
    font-family: var(--mmd-font-display);
    font-size: var(--mmd-text-lg);
    color: var(--mmd-cream);
    margin-top: var(--mmd-space-2);
}
.mmd-pe-carousel__nav {
    position: absolute;
    top: 38%;
    transform: translateY( -50% );
    z-index: 2;
    width: 42px;
    height: 42px;
    border: none;
    border-radius: 50%;
    background: var(--mmd-cream);
    color: var(--mmd-ox-800);
    font-size: 1.2rem;
    line-height: 1;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    opacity: 0.92;
    transition: opacity 0.15s;
}
.mmd-pe-carousel__nav:hover { opacity: 1; }
.mmd-pe-carousel__nav--prev { left: var(--mmd-space-2); }
.mmd-pe-carousel__nav--next { right: var(--mmd-space-2); }
.mmd-pe-themes__cta { text-align: center; margin-top: var(--mmd-space-6); }

@media ( min-width: 769px ) {
    .mmd-pe-themes { max-width: 720px; margin-inline: auto; }
    .mmd-pe-carousel__slide { flex-basis: 60%; }
    .mmd-pe-carousel__track { scroll-padding-inline: 20%; }
}

/* Private Events (and Public Shows) reuse the homepage Shark Tank block, but their
   comps run it full-bleed (no floating card). Scope the override to those body
   classes (added in inc/sections/private-events.php and inc/page-sections.php) so
   the homepage's rounded card is untouched. */
/* Shark Tank: the dark oxblood panel holds just the eyebrow + logo; the Get Party
   Pricing button drops BELOW it onto the cream, per the comp. The section is a
   transparent, full-bleed container so the panel and button own their backgrounds. */
.mmd-page-private-events .mmd-home-sharktank,
.mmd-page-public-shows .mmd-home-sharktank {
    margin-inline: calc( -1 * var(--mmd-gutter) );
    background: transparent;
    border-radius: 0;
    padding: 0;
}
/* Dark panel wraps only the eyebrow + logo (full-bleed — the section already cancels
   the gutter, and this has no side margin of its own). */
.mmd-page-private-events .mmd-home-sharktank__panel,
.mmd-page-public-shows .mmd-home-sharktank__panel {
    background: var(--mmd-ox-800);
    padding: var(--mmd-space-8) var(--mmd-space-6);
}
/* Button sits on the cream below the panel — uppercase, squared, deep red. */
.mmd-page-private-events .mmd-home-sharktank__btn,
.mmd-page-public-shows .mmd-home-sharktank__btn {
    background: var(--mmd-red-deep);
    color: var(--mmd-white);
    text-transform: uppercase;
    letter-spacing: 0.03em;
    border-radius: var(--mmd-radius-sm);
    margin: var(--mmd-space-6) var(--mmd-gutter) 0;
}

/* Full-bleed the lead-form frame on the PE page so the thick dark-red border runs
   ALL the way to the screen edges (comp). Cancels .mmd-main's gutter; scoped so
   other pages' forms are untouched. */
.mmd-page-private-events .mmd-lead-form { margin-inline: calc( -1 * var(--mmd-gutter) ); }

/* Contain the page's intentional decorative bleed — occasion props hanging off the
   notebook, the enlarged step-2 loop — at the screen edge so it never adds a
   horizontal scrollbar. `clip` (not `hidden`) so only the X axis is affected and the
   Y axis stays a normal, non-scroll-container flow. Scoped to this page. */
.mmd-page-private-events .mmd-main { overflow-x: clip; padding-bottom: var(--mmd-space-8); }

.mmd-private-hero { padding: 2rem; }
.mmd-private-hero__inner { margin: 0 auto; align-items: center; max-width: 900px; }
.mmd-private-hero__form { flex: 1; }
.mmd-private-hero__form h1 { font-family: var(--mmd-font-heading); font-size: 1.4rem; font-weight: 400; color: var(--mmd-ink-on-paper); margin-bottom: 1rem; }
.mmd-private-hero__tagline { font-size: 0.95rem; color: var(--mmd-gray); margin-bottom: 1.5rem; line-height: 1.6; }
.mmd-private-hero__image img { width: 80%; padding-bottom: 1rem; margin: 0 auto; display: block; }
.mmd-private-intro { padding: 0 2rem 1.5rem; text-align: center; }
.mmd-private-intro p { font-size: 1rem; color: var(--mmd-ink-on-paper); max-width: 700px; margin: 0 auto; }
.mmd-steps { background: var(--mmd-dark); padding: 2rem; }
.mmd-steps__inner { text-align: center; }
.mmd-steps__eyebrow { color: var(--mmd-accent); font-size: 0.8rem; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; }
.mmd-steps__heading { color: var(--mmd-ink-on-dark); font-size: 1.8rem; margin-bottom: 0.4rem; }
.mmd-steps__subheading { color: var(--mmd-ink-on-dark); font-size: 0.9rem; font-weight: 400; margin-bottom: 2rem; }
.mmd-steps__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.5rem; text-align: left; }
.mmd-step { display: flex; gap: 1rem; align-items: flex-start; }
.mmd-step__number { background: var(--mmd-accent); color: var(--mmd-ink-on-dark); font-size: 1.3rem; font-weight: 700; width: 44px; height: 44px; border-radius: 50%; display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
.mmd-step__content h4 { color: var(--mmd-ink-on-dark); margin-bottom: 0.4rem; font-size: 1rem; }
.mmd-step__content p { color: var(--mmd-ink-on-dark); font-size: 0.9rem; }
.mmd-private-about { padding: 2rem; }
.mmd-private-about__block { display: flex; gap: 2rem; align-items: center; margin-bottom: 2rem; padding-bottom: 2rem; border-bottom: 1px solid var(--mmd-cream-400); }
.mmd-private-about__block:last-child { border-bottom: none; margin-bottom: 0; padding-bottom: 0; }
.mmd-private-about__block--reverse { flex-direction: row-reverse; }
.mmd-private-about__content { flex: 1; }
.mmd-private-about__content h2 { color: var(--mmd-accent); margin-bottom: 0.75rem; font-size: 1.3rem; }
.mmd-private-about__content p { color: var(--mmd-ink-on-paper); font-size: 0.95rem; }
.mmd-private-about__image { flex: 0 0 300px; }
.mmd-private-about__image img { width: 100%; }
.mmd-private-occasions { padding: 2rem; }
.mmd-private-occasions__inner h2 { font-family: var(--mmd-font-heading); font-size: 1.4rem; font-weight: 400; color: var(--mmd-ink-on-paper); margin-bottom: 0.5rem; }
.mmd-private-occasions__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.25rem; margin-top: 1.5rem; }
.mmd-private-occasion { background: var(--mmd-paper-white); border: 1px solid var(--mmd-cream-400); padding: 1.25rem; }
.mmd-private-occasion__icon { font-size: 1.8rem; margin-bottom: 0.5rem; }
.mmd-private-occasion h3 { font-family: var(--mmd-font-heading); font-size: 0.95rem; font-weight: 700; color: var(--mmd-accent); margin-bottom: 0.4rem; }
.mmd-private-occasion p { font-size: 0.85rem; color: var(--mmd-gray); margin: 0; line-height: 1.6; }
.mmd-private-venues { padding: 2rem; background: var(--mmd-cream); border-top: 1px solid var(--mmd-cream-400); }
.mmd-private-venues__inner h2 { font-family: var(--mmd-font-heading); font-size: 1.2rem; font-weight: 400; color: var(--mmd-ink-on-paper); margin-bottom: 0.75rem; }
.mmd-private-venues__inner p { color: var(--mmd-ink-on-paper); font-size: 0.95rem; }
.mmd-private-venues__types, .mmd-private-venues__list { margin-top: 0.75rem; font-size: 0.9rem; color: var(--mmd-gray); padding: 0.75rem 1rem; background: var(--mmd-paper-white); border: 1px solid var(--mmd-cream-400); border-left: 3px solid var(--mmd-accent); }
.mmd-private-venues__types strong, .mmd-private-venues__list strong { color: var(--mmd-ink-on-paper); display: block; margin-bottom: 0.3rem; }
.mmd-private-themes { padding: 2rem; border-top: 1px solid var(--mmd-cream-400); }
.mmd-private-themes__inner h2 { font-family: var(--mmd-font-heading); font-size: 1.2rem; font-weight: 400; color: var(--mmd-ink-on-paper); margin-bottom: 0.75rem; }
.mmd-private-themes__inner p { color: var(--mmd-ink-on-paper); font-size: 0.95rem; margin-bottom: 1rem; }
.mmd-private-themes__grid { display: grid; grid-template-columns: repeat(6, 1fr); gap: 0.75rem; margin-bottom: 1rem; }
.mmd-private-whyus { padding: 2rem; background: var(--mmd-ox-800); border-radius: var(--mmd-radius-xl); }
.mmd-private-whyus__inner h2 { font-family: var(--mmd-font-heading); font-size: 1.2rem; font-weight: 400; color: var(--mmd-ink-on-dark); margin-bottom: 0.75rem; }
.mmd-private-whyus__inner > p { color: var(--mmd-ink-on-dark); font-size: 0.95rem; margin-bottom: 1.5rem; }
.mmd-private-whyus__grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1rem; }
.mmd-private-whyus__item { background: var(--mmd-ox-900); border: none; border-radius: var(--mmd-radius-md); padding: 1.25rem; }
.mmd-private-whyus__item h4 { font-family: var(--mmd-font-heading); font-size: 0.9rem; font-weight: 700; color: var(--mmd-accent); margin-bottom: 0.4rem; }
.mmd-private-whyus__item p { font-size: 0.82rem; color: var(--mmd-ink-on-dark); margin: 0; line-height: 1.6; }
.mmd-private-testimonials { padding: 2rem; border-top: 1px solid var(--mmd-cream-400); }
.mmd-private-testimonials__inner h2 { font-family: var(--mmd-font-display); font-size: 1.2rem; font-weight: 400; color: var(--mmd-ink-on-paper); margin-bottom: 1rem; }
.mmd-private-testimonials__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.25rem; }
.mmd-private-companies { padding: 1rem 2rem 1.5rem; text-align: center; border-top: 1px solid var(--mmd-cream-400); }
.mmd-private-companies h3 { font-family: var(--mmd-font-heading); font-size: 0.95rem; font-weight: 700; color: var(--mmd-ink-on-paper); margin-bottom: 0.4rem; }
.mmd-private-cta { padding: 2rem; background: var(--mmd-cream); border-top: 1px solid var(--mmd-cream-400); text-align: center; }
.mmd-private-cta__inner h2 { font-family: var(--mmd-font-display); font-size: 1.3rem; font-weight: 400; color: var(--mmd-ink-on-paper); margin-bottom: 0.75rem; }
.mmd-private-cta__inner p { color: var(--mmd-ink-on-paper); font-size: 0.95rem; margin-bottom: 1.5rem; }
.mmd-private-cta__inner a.mmd-btn { display: inline-block; }

/* =============================================================================
   PUBLIC SHOWS
   ============================================================================= */
.mmd-venue-info { padding: 0 2rem 1.5rem; }
.mmd-venue-info__inner { display: flex; flex-wrap: wrap; gap: 0; border: 1px solid var(--mmd-cream-400); background: var(--mmd-paper-white); }
.mmd-venue-info__item { display: flex; flex-direction: column; padding: 0.9rem 1.5rem; border-right: 1px solid var(--mmd-cream-400); flex: 1; min-width: 200px; }
.mmd-venue-info__item:last-child { border-right: none; }
.mmd-venue-info__label { font-size: 0.72rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.08em; color: var(--mmd-gray); margin-bottom: 0.25rem; }
.mmd-venue-info__value { font-size: 0.95rem; color: var(--mmd-ink-on-paper); font-weight: 600; }
a.mmd-venue-info__value { color: var(--mmd-accent); }
a.mmd-venue-info__value:hover { text-decoration: underline; }
.mmd-public-shows { padding: 0 2rem 1.5rem; }
.mmd-public-shows__empty { text-align: center; padding: 3rem; background: var(--mmd-paper-white); border: 1px solid var(--mmd-cream-400); color: var(--mmd-gray); }
.mmd-shows-faq-teaser { padding: 1.5rem 2rem; text-align: center; border-top: 1px solid var(--mmd-cream-400); }
.mmd-shows-faq-teaser h2 { font-family: var(--mmd-font-display); font-size: 1.2rem; font-weight: 400; color: var(--mmd-ink-on-paper); margin-bottom: 0.5rem; }
.mmd-shows-faq-teaser p { color: var(--mmd-gray); font-size: 0.95rem; }
.mmd-shows-faq-teaser a { color: var(--mmd-accent); }
.mmd-public-what-to-expect { padding: 1.5rem 2rem; }
.mmd-public-expect__grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1rem; margin-bottom: 1.25rem; }
.mmd-public-expect__item { background: var(--mmd-paper-white); border: 1px solid var(--mmd-cream-400); padding: 1.25rem; text-align: center; }
.mmd-public-expect__icon { font-size: 1.8rem; display: block; margin-bottom: 0.5rem; }
.mmd-public-expect__item h4 { font-family: var(--mmd-font-heading); font-size: 0.9rem; font-weight: 700; color: var(--mmd-ink-on-paper); margin-bottom: 0.4rem; }
.mmd-public-expect__item p { font-size: 0.82rem; color: var(--mmd-gray); margin: 0; }
.mmd-public-expect__ideal { background: var(--mmd-cream); border-left: 3px solid var(--mmd-accent); padding: 0.75rem 1rem; font-size: 0.9rem; color: var(--mmd-ink-on-paper); }
.mmd-public-expect__ideal strong { color: var(--mmd-ink-on-paper); }
.mmd-venue-section { padding: 1.5rem 2rem; border-top: 1px solid var(--mmd-cream-400); }
.mmd-venue-section__info h2 { font-family: var(--mmd-font-display); font-size: 1.3rem; font-weight: 400; color: var(--mmd-ink-on-paper); margin-bottom: 0.4rem; }
.mmd-venue-section__address { font-size: 0.9rem; margin-bottom: 0.5rem; }
.mmd-venue-section__address a { color: var(--mmd-accent); }
.mmd-venue-section__desc { font-size: 0.9rem; color: var(--mmd-ink-on-paper); margin-bottom: 0.5rem; }
.mmd-venue-section__parking { font-size: 0.85rem; color: var(--mmd-gray); }
.mmd-venue-section__parking strong { color: var(--mmd-ink-on-paper); }
.mmd-venue-section__no-widget { background: var(--mmd-cream); border: 1px solid var(--mmd-cream-400); padding: 1.5rem; text-align: center; color: var(--mmd-gray); font-size: 0.9rem; }
.mmd-venue-section__no-widget a { color: var(--mmd-accent); }
.mmd-public-good-to-know { padding: 1.5rem 2rem; background: var(--mmd-cream); border-top: 1px solid var(--mmd-cream-400); }
.mmd-public-good-to-know h2 { font-family: var(--mmd-font-display); font-size: 1.2rem; font-weight: 400; color: var(--mmd-ink-on-paper); margin-bottom: 1rem; }
.mmd-good-to-know__grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1rem; }
.mmd-good-to-know__item { background: var(--mmd-paper-white); border: 1px solid var(--mmd-cream-400); padding: 1rem; }
.mmd-good-to-know__item h4 { font-family: var(--mmd-font-heading); font-size: 0.88rem; font-weight: 700; color: var(--mmd-accent); margin-bottom: 0.4rem; }
.mmd-good-to-know__item p { font-size: 0.82rem; color: var(--mmd-gray); margin: 0; }
/* ── Venue header layout ────────────────────────────────────── */
.mmd-venue-section__header {
    display: flex;
    gap: 1.25rem;
    align-items: flex-start;
    margin-bottom: 1.5rem;
}
.mmd-venue-section__thumb {
    flex: 0 0 120px;
}
.mmd-venue-section__thumb img {
    width: 120px;
    height: 90px;
    object-fit: cover;
    border: 1px solid var(--mmd-cream-400);
    border-radius: 2px;
}
.mmd-venue-section__info { flex: 1; }
.mmd-venue-section__meta {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem 1.25rem;
    margin: 0.4rem 0 0.75rem;
}
.mmd-venue-meta__item {
    font-size: 0.88rem;
    color: var(--mmd-ink-on-paper);
}
.mmd-venue-meta__item a { color: var(--mmd-accent); }
.mmd-venue-meta__item a:hover { text-decoration: underline; }
.mmd-venue-section__arrival {
    font-size: 0.88rem;
    color: var(--mmd-gray);
    margin: 0.25rem 0;
}
.mmd-venue-section__logistics { margin-top: 0.5rem; }
.mmd-venue-section__parking,
.mmd-venue-section__transit {
    font-size: 0.85rem;
    color: var(--mmd-gray);
    margin: 0.2rem 0;
}

/* ── Dinner Menu ────────────────────────────────────────────── */
.mmd-venue-menu {
    background: var(--mmd-cream);
    border: 1px solid var(--mmd-cream-400);
    border-left: 3px solid var(--mmd-accent);
    padding: 1rem 1.25rem;
    margin-bottom: 1.5rem;
}
.mmd-venue-menu__heading {
    font-family: var(--mmd-font-heading);
    font-size: 0.95rem;
    font-weight: 700;
    color: var(--mmd-ink-on-paper);
    margin-bottom: 0.75rem;
}
.mmd-venue-menu__inner {
    display: flex;
    gap: 1.25rem;
    align-items: flex-start;
}
.mmd-venue-menu__photo {
    flex: 0 0 100px;
}
.mmd-venue-menu__photo img {
    width: 100px;
    height: 100px;
    object-fit: cover;
    border: 1px solid var(--mmd-cream-400);
}
.mmd-venue-menu__items { flex: 1; }
.mmd-venue-menu__course {
    display: flex;
    gap: 0.75rem;
    padding: 0.35rem 0;
    border-bottom: 1px solid var(--mmd-cream);
    font-size: 0.88rem;
}
.mmd-venue-menu__course:last-child { border-bottom: none; }
.mmd-venue-menu__course--note {
    font-style: italic;
    color: var(--mmd-gray);
    border-bottom: none;
    padding-top: 0.5rem;
}
.mmd-venue-menu__label {
    font-weight: 700;
    color: var(--mmd-ink-on-paper);
    flex: 0 0 110px;
    font-size: 0.82rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}
.mmd-venue-menu__value { color: var(--mmd-ink-on-paper); }
/* ── No Shows State ─────────────────────────────────────────── */
.mmd-no-shows-state {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 2.5rem;
    align-items: start;
    padding: 1.5rem 0;
}
.mmd-no-shows-state__message h2 {
    font-family: var(--mmd-font-display);
    font-size: 1.2rem;
    font-weight: 400;
    color: var(--mmd-ink-on-paper);
    text-transform: uppercase;
    margin-bottom: 0.75rem;
}
.mmd-no-shows-state__message p {
    color: var(--mmd-ink-on-paper);
    font-size: 0.95rem;
    margin-bottom: 1.25rem;
}
.mmd-no-shows-state__venue-cta {
    background: var(--mmd-cream);
    border: 1px solid var(--mmd-cream-400);
    border-top: 3px solid var(--mmd-accent);
    padding: 1.5rem;
}
.mmd-no-shows-state__venue-cta h3 {
    font-family: var(--mmd-font-display);
    font-size: 1rem;
    font-weight: 400;
    color: var(--mmd-ink-on-paper);
    text-transform: uppercase;
    margin-bottom: 0.5rem;
}
.mmd-no-shows-state__venue-cta p {
    color: var(--mmd-gray);
    font-size: 0.88rem;
    margin-bottom: 1.25rem;
}
.mmd-venue-inquiry-form .mmd-btn {
    margin-top: 0.5rem;
}
/* ── Shows Signup ───────────────────────────────────────────── */
.mmd-shows-signup {
    padding: 1.5rem 2rem;
    background: var(--mmd-cream);
    border-top: 1px solid var(--mmd-cream-400);
    text-align: center;
}
.mmd-shows-signup__inner h2 {
    font-family: var(--mmd-font-display);
    font-size: 1.1rem;
    font-weight: 400;
    color: var(--mmd-ink-on-paper);
    text-transform: uppercase;
    margin-bottom: 0.4rem;
}
.mmd-shows-signup__inner p {
    color: var(--mmd-gray);
    font-size: 0.9rem;
    margin-bottom: 1rem;
}
.mmd-no-shows-state__signup {
    margin-top: 1.5rem;
    padding-top: 1.5rem;
    border-top: 1px solid var(--mmd-cream-400);
}
.mmd-no-shows-state__signup p {
    font-size: 0.88rem;
    color: var(--mmd-ink-on-paper);
    margin-bottom: 0.75rem;
}
.mmd-shows-scroll-btn {
    display: inline-block;
    margin: 1rem auto;
}

@media ( max-width: 768px ) {
    .mmd-no-shows-state {
        grid-template-columns: 1fr;
    }
}
@media ( max-width: 768px ) {
    .mmd-venue-section__header { flex-direction: column; }
    .mmd-venue-section__thumb { flex: 0 0 auto; width: 100%; }
    .mmd-venue-section__thumb img { width: 100%; height: 160px; }
    .mmd-venue-menu__inner { flex-direction: column; }
    .mmd-venue-menu__photo { flex: 0 0 auto; width: 100%; }
    .mmd-venue-menu__photo img { width: 100%; height: auto; }
    .mmd-venue-menu__label { flex: 0 0 90px; }
}
/* =============================================================================
   EVENTBRITE
   ============================================================================= */
.mmd-eb-events { display: flex; flex-direction: column; gap: 0; }
.mmd-eb-event { display: flex; flex-wrap: wrap; align-items: center; gap: 1rem; padding: 1rem; background: var(--mmd-paper-white); border: 1px solid var(--mmd-cream-400); border-top: none; }
.mmd-eb-event:first-child { border-top: 1px solid var(--mmd-cream-400); }
.mmd-eb-event:nth-child(even) { background: var(--mmd-paper-white); }
.mmd-eb-event__poster { flex: 0 0 80px; }
.mmd-eb-event__poster img { width: 80px; height: 80px; object-fit: cover; border: 1px solid var(--mmd-cream-400); }
.mmd-eb-event__info { flex: 1; display: flex; flex-direction: column; gap: 0.2rem; }
.mmd-eb-event__name { flex: 1 1 100%; font-weight: 700; font-size: 0.9rem; color: var(--mmd-ink-on-paper); }
.mmd-eb-event__date { font-size: 0.9rem; color: var(--mmd-ink-on-paper); font-weight: 600; }
.mmd-eb-event__time { color: var(--mmd-gray); font-weight: 400; }
.mmd-eb-event__venue { font-size: 0.82rem; color: var(--mmd-gray); }
.mmd-eb-event__ticket-type { font-size: 0.78rem; color: var(--mmd-ink-on-dark); text-transform: uppercase; letter-spacing: 0.05em; }
.mmd-eb-event__action { flex: 0 0 auto; }
.mmd-eb-event__buy { background: var(--mmd-accent); color: var(--mmd-ink-on-dark); border: none; padding: 0.6rem 1.25rem; font-family: var(--mmd-font-heading); font-size: 0.82rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; cursor: pointer; transition: opacity 0.2s; }
.mmd-eb-event__buy:hover { opacity: 0.85; }
.mmd-eb-event__soldout { font-size: 0.82rem; font-weight: 700; color: var(--mmd-gray); text-transform: uppercase; letter-spacing: 0.04em; }
.mmd-eb-no-shows { background: var(--mmd-cream); border: 1px solid var(--mmd-cream-400); padding: 2rem; text-align: center; color: var(--mmd-gray); }
.mmd-eb-no-shows p { color: var(--mmd-gray); margin-bottom: 0.5rem; }
.mmd-eb-no-shows a { color: var(--mmd-accent); }

/* =============================================================================
   BLOG
   ============================================================================= */
.mmd-blog-archive { padding: 0 2rem 2rem; }
.mmd-blog-cats { display: flex; flex-wrap: wrap; gap: 0.5rem; margin-bottom: 2rem; padding-bottom: 1rem; border-bottom: 2px solid var(--mmd-cream-400); }
.mmd-blog-cat { display: inline-block; padding: 0.35rem 0.9rem; background: var(--mmd-cream-200); border: none; color: var(--mmd-ink-on-paper); font-family: var(--mmd-font-sans); font-weight: 600; font-size: 0.85rem; border-radius: var(--mmd-radius-pill); transition: background 0.15s; }
.mmd-blog-cat:hover { background: var(--mmd-cream-400); text-decoration: none; color: var(--mmd-ink-on-paper); }
.mmd-blog-cat--active { background: var(--mmd-accent); border-color: var(--mmd-accent); color: var(--mmd-ink-on-dark); }
.mmd-blog-cat--active:hover { background: var(--mmd-accent); color: var(--mmd-ink-on-dark); }
.mmd-blog-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2rem; }
.mmd-blog-card { background: var(--mmd-paper-white); border: 1px solid var(--mmd-cream-400); display: flex; flex-direction: column; transition: box-shadow 0.2s, transform 0.2s; }
.mmd-blog-card:hover { box-shadow: 0 4px 16px rgba(0,0,0,0.12); transform: translateY(-2px); }
.mmd-blog-card__image { display: block; overflow: hidden; aspect-ratio: 16/9; }
.mmd-blog-card__image img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.3s; }
.mmd-blog-card:hover .mmd-blog-card__image img { transform: scale(1.04); }
.mmd-blog-card__body { padding: 1.25rem; flex: 1; display: flex; flex-direction: column; }
.mmd-blog-card__meta { display: flex; align-items: center; gap: 0.75rem; margin-bottom: 0.6rem; }
.mmd-blog-card__cat { background: var(--mmd-accent); color: var(--mmd-ink-on-dark); font-size: 0.72rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.05em; padding: 0.2rem 0.6rem; border-radius: 2px; }
.mmd-blog-card__cat:hover { text-decoration: none; opacity: 0.85; }
.mmd-blog-card__date { font-size: 0.78rem; color: var(--mmd-gray); }
.mmd-blog-card__title { font-size: 1.05rem; font-weight: 700; margin-bottom: 0.6rem; line-height: 1.3; }
.mmd-blog-card__title a { color: var(--mmd-ink-on-paper); }
.mmd-blog-card__title a:hover { color: var(--mmd-accent); text-decoration: none; }
.mmd-blog-card__excerpt { font-size: 0.88rem; color: var(--mmd-gray); line-height: 1.6; flex: 1; margin-bottom: 1rem; }
.mmd-blog-card__excerpt p { margin: 0; color: var(--mmd-gray); font-size: 0.88rem; }
.mmd-blog-card__more { font-size: 0.85rem; font-weight: 700; color: var(--mmd-accent); text-transform: uppercase; letter-spacing: 0.03em; margin-top: auto; }
.mmd-blog-card__more:hover { text-decoration: underline; }
.mmd-blog-empty { text-align: center; padding: 3rem 0; color: var(--mmd-gray); font-style: italic; }
.mmd-pagination { margin-top: 2.5rem; display: flex; justify-content: center; }
.mmd-pagination .nav-links { display: flex; gap: 0.4rem; align-items: center; }
.mmd-pagination .page-numbers { display: inline-block; padding: 0.5rem 0.9rem; background: var(--mmd-cream-200); border: none; border-radius: var(--mmd-radius-pill); color: var(--mmd-ink-on-paper); font-family: var(--mmd-font-sans); font-weight: 600; font-size: 0.9rem; transition: background 0.15s; }
.mmd-pagination .page-numbers:hover { background: var(--mmd-cream-400); text-decoration: none; }
.mmd-pagination .page-numbers.current { background: var(--mmd-accent); border-color: var(--mmd-accent); color: var(--mmd-ink-on-dark); }
.mmd-pagination .page-numbers.dots { background: transparent; border: none; }

/* Single post */
.mmd-post-header { padding: 2rem 2rem 1rem; }
.mmd-post-header__inner { max-width: 800px; margin: 0 auto; }
.mmd-post-header__meta { display: flex; align-items: center; gap: 0.75rem; margin-bottom: 0.75rem; flex-wrap: wrap; }
.mmd-post-header__cat { background: var(--mmd-accent); color: var(--mmd-ink-on-dark); font-size: 0.72rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.05em; padding: 0.2rem 0.6rem; border-radius: 2px; }
.mmd-post-header__cat:hover { text-decoration: none; opacity: 0.85; }
.mmd-post-header__date { font-size: 0.82rem; color: var(--mmd-gray); }
.mmd-post-header__updated { font-size: 0.78rem; color: var(--mmd-gray); font-style: italic; }
.mmd-post-header__reading-time { font-size: 0.78rem; color: var(--mmd-gray); font-style: italic; }
.mmd-post-header__title { font-family: var(--mmd-font-display); font-size: 1.8rem; font-weight: 400; color: var(--mmd-ink-on-paper); line-height: 1.3; }
.mmd-post-featured-image { padding: 0 2rem 1.5rem; max-width: 860px; margin: 0 auto; }
.mmd-post-featured-image__img { width: 100%; max-height: 480px; object-fit: cover; }
.mmd-post-content { padding: 0 2rem 2rem; }
.mmd-post-content__inner { max-width: 800px; margin: 0 auto; }
.mmd-post-content__inner p { color: var(--mmd-ink-on-paper); font-size: 1rem; line-height: 1.8; margin-bottom: 1.25rem; }
.mmd-post-content__inner h2 { font-family: var(--mmd-font-display); font-size: 1.4rem; font-weight: 400; color: var(--mmd-ink-on-paper); margin: 2rem 0 0.75rem; }
.mmd-post-content__inner h3 { font-size: 1.1rem; font-weight: 700; color: var(--mmd-ink-on-paper); margin: 1.5rem 0 0.5rem; }
.mmd-post-content__inner ul, .mmd-post-content__inner ol { padding-left: 1.5rem; margin-bottom: 1.25rem; color: var(--mmd-ink-on-paper); }
.mmd-post-content__inner ul { list-style: disc; }
.mmd-post-content__inner ol { list-style: decimal; }
.mmd-post-content__inner li { margin-bottom: 0.4rem; line-height: 1.7; }
.mmd-post-content__inner a { color: var(--mmd-accent); }
.mmd-post-content__inner a:hover { text-decoration: underline; }
.mmd-post-content__inner blockquote { border-left: 4px solid var(--mmd-accent); padding: 0.75rem 1.25rem; margin: 1.5rem 0; background: var(--mmd-cream); font-style: italic; color: var(--mmd-gray); }
.mmd-post-footer { padding: 0 2rem 2rem; }
.mmd-post-footer__inner { max-width: 800px; margin: 0 auto; padding-top: 1.5rem; border-top: 2px solid var(--mmd-cream-400); }
.mmd-post-footer__cats { font-size: 0.85rem; color: var(--mmd-gray); margin-bottom: 1.5rem; }
.mmd-post-footer__cats span { margin-right: 0.4rem; }
.mmd-post-footer__cats a { color: var(--mmd-accent); margin-right: 0.4rem; }
.mmd-post-footer__cats a:hover { text-decoration: underline; }
.mmd-post-nav { display: flex; justify-content: space-between; gap: 1rem; }
.mmd-post-nav__prev, .mmd-post-nav__next { font-size: 0.85rem; font-weight: 700; color: var(--mmd-accent); max-width: 48%; line-height: 1.4; }
.mmd-post-nav__next { text-align: right; margin-left: auto; }
.mmd-post-nav__prev:hover, .mmd-post-nav__next:hover { text-decoration: underline; }
.mmd-breadcrumb { padding: 0.75rem 2rem; border-bottom: 1px solid var(--mmd-cream-400); }
.mmd-breadcrumb__list { display: flex; flex-wrap: wrap; gap: 0.25rem; list-style: none; font-size: 0.8rem; color: var(--mmd-gray); }
.mmd-breadcrumb__list li::after { content: ' ›'; margin-left: 0.25rem; color: var(--mmd-cream-400); }
.mmd-breadcrumb__list li:last-child::after { content: ''; }
.mmd-breadcrumb__list a { color: var(--mmd-accent); }
.mmd-breadcrumb__list a:hover { text-decoration: underline; }
.mmd-breadcrumb__list [aria-current="page"] { color: var(--mmd-gray); }
.mmd-author-bio { padding: 0 2rem 2rem; }
.mmd-author-bio__inner { max-width: 800px; margin: 0 auto; display: flex; gap: 1.5rem; align-items: flex-start; background: var(--mmd-cream); border: 1px solid var(--mmd-cream-400); padding: 1.5rem; }
.mmd-author-bio__avatar { width: 80px; height: 80px; border-radius: 50%; flex-shrink: 0; object-fit: cover; }
.mmd-author-bio__label { font-size: 0.72rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.08em; color: var(--mmd-gray); margin-bottom: 0.2rem; }
.mmd-author-bio__name { display: block; font-family: var(--mmd-font-display); font-size: 1.1rem; color: var(--mmd-ink-on-paper); margin-bottom: 0.5rem; }
.mmd-author-bio__name:hover { text-decoration: underline; }
.mmd-author-bio__text { font-size: 0.88rem; color: var(--mmd-gray); line-height: 1.7; margin: 0; }

/* =============================================================================
   POPUP
   ============================================================================= */
.mmd-popup { position: fixed; top: 0; left: 0; width: 100%; height: 100%; z-index: 9999; display: flex; align-items: center; justify-content: center; padding: 1rem; }
.mmd-popup__overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; z-index: 1; }
/* Rounded modal to match the site's cards. overflow: hidden (not just -y) so the
   rounded corners actually clip content that bleeds to the edges — e.g. the
   content-type top image. Vertical scrolling still works. */
.mmd-popup__modal { position: relative; z-index: 2; width: 100%; max-height: 90vh; overflow: hidden auto; padding: var(--mmd-space-8); border-radius: var(--mmd-radius-xl); box-shadow: 0 20px 60px rgba(33,0,0,0.45); }
.mmd-popup__close { position: absolute; top: 0.75rem; right: 0.75rem; background: none; border: none; font-size: 1.8rem; line-height: 1; cursor: pointer; color: var(--mmd-gray); padding: 0.25rem 0.5rem; z-index: 3; }
.mmd-popup__close:hover { color: var(--mmd-ink-on-paper); }
.mmd-popup__heading { font-family: var(--mmd-font-display); font-weight: 400; text-align: center; margin-bottom: var(--mmd-space-2); line-height: 1.15; padding-right: 2rem; }
.mmd-popup__subheading { text-align: center; font-family: var(--mmd-font-sans); font-size: var(--mmd-text-sm); color: var(--mmd-gray); margin-bottom: var(--mmd-space-6); }
.mmd-popup__form .mmd-form__field label span { color: var(--mmd-accent); }
/* Pill submit matching the site buttons — sans, uppercase. Its background colour
   comes from the popup's inline style (admin-set), so only the shape/type live here. */
.mmd-popup__submit { display: block; width: 100%; padding: var(--mmd-space-3) var(--mmd-space-6); font-family: var(--mmd-font-sans); font-size: var(--mmd-text-sm); font-weight: 600; text-transform: uppercase; letter-spacing: 0.04em; border: none; border-radius: var(--mmd-radius-pill); cursor: pointer; margin-top: var(--mmd-space-3); transition: opacity 0.2s; text-align: center; }
.mmd-popup__submit:hover { opacity: 0.85; }
.mmd-popup__bottom-image { margin-top: 1rem; text-align: center; }
.mmd-popup__bottom-image img { max-width: 100%; height: auto; margin: 0 auto; border-radius: var(--mmd-radius-md); }
.mmd-popup__choices { display: flex; flex-direction: column; gap: 1rem; margin-top: 1rem; }
.mmd-popup__choice { display: flex; flex-direction: column; padding: 1.25rem 1.5rem; text-decoration: none; transition: opacity 0.2s, transform 0.15s; border-radius: var(--mmd-radius-md); }
.mmd-popup__choice:hover { opacity: 0.9; transform: translateY(-1px); text-decoration: none; }
.mmd-popup__choice-label { font-family: var(--mmd-font-display); font-size: 1.1rem; color: var(--mmd-ink-on-dark); display: block; margin-bottom: 0.3rem; }
.mmd-popup__choice-desc { font-size: 0.82rem; color: rgba(255,255,255,0.75); display: block; }
/* The top image bleeds to the modal's top edge; round its top corners to sit
   inside the modal radius (the modal's overflow:hidden also clips it). */
.mmd-popup__top-image { margin: calc( -1 * var(--mmd-space-8) ) calc( -1 * var(--mmd-space-8) ) 1.25rem; overflow: hidden; border-radius: var(--mmd-radius-xl) var(--mmd-radius-xl) 0 0; }
.mmd-popup__top-image img { width: 100%; max-height: 200px; object-fit: cover; display: block; }
.mmd-popup__content-body { font-size: 0.95rem; color: var(--mmd-ink-on-paper); line-height: 1.7; margin-bottom: 1.25rem; }
.mmd-popup__content-body p { color: var(--mmd-ink-on-paper); }
.mmd-popup__content-btn { display: block; width: 100%; padding: var(--mmd-space-3) var(--mmd-space-6); text-align: center; font-family: var(--mmd-font-sans); font-size: var(--mmd-text-sm); font-weight: 600; text-transform: uppercase; letter-spacing: 0.04em; border-radius: var(--mmd-radius-pill); transition: opacity 0.2s; }
.mmd-popup__content-btn:hover { opacity: 0.85; text-decoration: none; color: inherit; }
/* ── Phone availability ─────────────────────────────────────── */
.mmd-header__phone-status { font-size: 0.75rem; }
.mmd-header__phone-status .mmd-status-label { font-weight: 700; }
#availability.available   .mmd-status-label { color: #2ecc71; }
#availability.unavailable .mmd-status-label { color: #e74c3c; }

/* =============================================================================
   SHARED NETWORK PACKAGES — palette bridge
   =============================================================================
   mmd-network/reviews/ loads from a mu-plugin on every site regardless of
   active theme, and reads no --mmd-* token at all. Left alone it renders
   Google-style white cards with #fbbc04 stars in -apple-system, in the middle
   of the oxblood design.

   The package declares its own CSS variables and documents redeclaring them as
   the supported override (reviews/README.md). Doing that HERE is what keeps it
   safe: this stylesheet only loads on 2026 sites, so the override is
   theme-scoped for free. No shared file is edited, the old parent theme's
   cities are untouched, and there is nothing extra to FTP.

   The `body` prefix is load-bearing, not decorative: the package declares these
   vars on .ait-rw itself from a <style> printed in the body, so a bare .ait-rw
   rule here would tie on specificity and lose to the later one.
   ============================================================================= */
body .ait-rw {
    --ait-star:   var(--mmd-accent);
    --ait-text:   var(--mmd-ox-800);
    --ait-muted:  var(--mmd-gray);
    --ait-border: var(--mmd-cream-400);
    --ait-bg:     var(--mmd-cream);
    font-family:  var(--mmd-font-sans);
}

/* =============================================================================
   BOTTOM CTA BAR — new in 2026
   =============================================================================
   The old theme had no fixed bottom bar; its only position:fixed element was
   the popup overlay. Body carries matching padding-bottom so this never covers
   the footer's Site Map and phone links — both keep the --mmd-bottom-bar-h
   token honest.

   z-index 90 is deliberate and sits below every other layer: sticky header
   (100), nav drawer (250), hamburger (300), popup (9999). The bar must never
   cover an open menu or a modal.
   ============================================================================= */
.mmd-bottom-bar {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 90;
    background: var(--mmd-ox-800);
    border-radius: var(--mmd-radius-lg) var(--mmd-radius-lg) 0 0;
    /* Keeps the bar's own content above the iOS home indicator. */
    padding-bottom: env( safe-area-inset-bottom, 0px );
}
.mmd-bottom-bar__inner {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--mmd-space-2);
    height: var(--mmd-bottom-bar-h);
    padding: 0 var(--mmd-space-2);
}
/* The pills (Get Tickets, Free Quote, FAQ, Site Map) plus the socials can outrun
   a narrow phone, so the pill group scrolls horizontally rather than shrinking
   the pills to nothing. A trailing ::after keeps the last pill off the clip edge
   — a plain padding-right is dropped by flex scroll containers in some browsers,
   so a zero-content spacer is the reliable way to reserve that end gap. The
   scrollbar is hidden; the row just slides. */
.mmd-bottom-bar__ctas {
    display: flex;
    gap: var(--mmd-space-2);
    min-width: 0;
    flex: 1 1 auto;
    overflow-x: auto;
    scrollbar-width: none;
    -webkit-overflow-scrolling: touch;
}
.mmd-bottom-bar__ctas::after { content: ''; flex: 0 0 var(--mmd-space-2); }
.mmd-bottom-bar__ctas::-webkit-scrollbar { display: none; }
.mmd-bottom-bar__btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: var(--mmd-cream);
    color: var(--mmd-ink-on-paper);
    border-radius: var(--mmd-radius-pill);
    padding: var(--mmd-space-2) var(--mmd-space-3);
    flex: 0 0 auto;
    font-family: var(--mmd-font-sans);
    font-size: var(--mmd-text-xs);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0;
    white-space: nowrap;
    transition: background 0.15s;
}
.mmd-bottom-bar__btn:hover { background: var(--mmd-white); color: var(--mmd-ox-800); text-decoration: none; }

.mmd-bottom-bar__socials { display: flex; gap: var(--mmd-space-2); flex: 0 0 auto; }
/* .mmd-social is generic, not bar-specific — the glyphs take their colour from
   `color` via fill="currentColor", so the same mark works on cream or oxblood
   wherever it's reused. */
.mmd-social {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    border-radius: 50%;
    background: var(--mmd-cream);
    color: var(--mmd-ox-800);
    flex: 0 0 auto;
    transition: background 0.15s;
}
.mmd-social:hover { background: var(--mmd-white); text-decoration: none; }
.mmd-social__glyph { width: 19px; height: 19px; display: block; }

@media ( min-width: 769px ) {
    /* Spread the pill menu across the full width like the header nav: the pill
       group fills the row and distributes its buttons edge to edge, with the
       socials at the far right. No horizontal scroll at this width, so the mobile
       end-spacer (::after) is dropped. */
    .mmd-bottom-bar__inner { padding: 0 var(--mmd-space-8); justify-content: space-between; gap: var(--mmd-space-6); }
    .mmd-bottom-bar__ctas { justify-content: space-between; overflow-x: visible; }
    .mmd-bottom-bar__ctas::after { display: none; }
    .mmd-bottom-bar__btn { font-size: var(--mmd-text-xs); padding: var(--mmd-space-2) var(--mmd-space-4); }
}

/* =============================================================================
   FOOTER
   =============================================================================
   .mmd-paper-bottom (the torn paper-bottom.png tear) is removed — it was the old
   paper-on-a-dark-table design's flourish and looked like a stray scrap under
   the 2026 layout. */
/* .mmd-footer* rules removed — the footer markup is gone; its links live in the
   bottom bar now. */
/* ── Legal Content ──────────────────────────────────────────── */
.mmd-legal-content {
    padding: 2rem;
}
.mmd-legal-content__inner {
    max-width: 800px;
    margin: 0 auto;
}
.mmd-legal-content__inner h2 {
    font-family: var(--mmd-font-display);
    font-size: 1rem;
    font-weight: 400;
    text-transform: uppercase;
    color: var(--mmd-ink-on-paper);
    margin: 2rem 0 0.5rem;
    padding-bottom: 0.25rem;
    border-bottom: 1px solid var(--mmd-cream-400);
}
.mmd-legal-content__inner p,
.mmd-legal-content__inner li {
    font-size: 0.9rem;
    color: var(--mmd-ink-on-paper);
    line-height: 1.7;
    margin-bottom: 0.75rem;
}
.mmd-legal-content__inner ul {
    padding-left: 1.5rem;
    margin-bottom: 1rem;
}
.mmd-legal-content__inner address {
    font-style: normal;
    font-size: 0.9rem;
    color: var(--mmd-ink-on-paper);
    line-height: 1.8;
    margin-top: 0.5rem;
}
.mmd-legal-content__inner a {
    color: var(--mmd-accent);
}
.mmd-legal-content__inner a:hover {
    text-decoration: underline;
}
/* ── Team Page ──────────────────────────────────────────────── */
.mmd-team { padding: 2rem; }
.mmd-team__inner { max-width: 800px; margin: 0 auto; }
.mmd-team__card {
    display: flex;
    gap: 2rem;
    align-items: flex-start;
}
.mmd-team__photo {
    flex: 0 0 200px;
}
.mmd-team__photo img {
    width: 200px;
    height: 200px;
    object-fit: cover;
    border-radius: 2px;
}
.mmd-team__content { flex: 1; }
.mmd-team__content h2 {
    font-family: var(--mmd-font-display);
    font-size: 1.3rem;
    font-weight: 400;
    text-transform: uppercase;
    margin-bottom: 0.25rem;
}
.mmd-team__location {
    font-size: 0.85rem;
    color: var(--mmd-gray);
    margin-bottom: 1rem;
}
.mmd-team__bio p {
    font-size: 0.95rem;
    color: var(--mmd-ink-on-paper);
    line-height: 1.7;
    margin-bottom: 0.75rem;
}
.mmd-team__socials {
    display: flex;
    gap: 0.75rem;
    margin-top: 1.25rem;
    flex-wrap: wrap;
}
.mmd-team__social-link {
    font-size: 0.82rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    padding: 0.35rem 0.75rem;
    border: 1px solid currentColor;
    text-decoration: none;
}
.mmd-team__social-link--facebook  { color: #1877f2; }
.mmd-team__social-link--instagram { color: #e1306c; }
.mmd-team__social-link--tiktok    { color: #000; }
.mmd-team__social-link--youtube   { color: #ff0000; }
.mmd-team__social-link:hover { opacity: 0.75; }

@media ( max-width: 768px ) {
    .mmd-team__card { flex-direction: column; }
    .mmd-team__photo { flex: 0 0 auto; width: 100%; }
    .mmd-team__photo img { width: 100%; height: 200px; }
}
/* =============================================================================
   RESPONSIVE — TABLET 900px
   ============================================================================= */
@media ( max-width: 900px ) {
    .mmd-home-top__inner { flex-direction: column; }
    .mmd-about__cols { flex-direction: column; }
    .mmd-about__cols .mmd-slideshow { flex: 0 0 auto; width: 100%; }
    .mmd-virtual__inner { flex-direction: column; }
    .mmd-private-hero__inner { flex-direction: column; }
    .mmd-private-hero__image { flex: 0 0 auto; width: 100%; }
    .mmd-private-about__block, .mmd-private-about__block--reverse { flex-direction: column; }
    .mmd-private-about__image { flex: 0 0 auto; width: 100%; }
    .mmd-steps__grid { grid-template-columns: 1fr; }
    .mmd-themes__grid { grid-template-columns: repeat(2, 1fr); }
    .mmd-blog-grid { grid-template-columns: repeat(2, 1fr); }
    /* Homepage-section grids removed from this pooled block — they now live
       mobile-first with their own min-width:769px step, colocated with the
       component. Leaving them here would override that at <=900px. */
    .mmd-private-occasions__grid { grid-template-columns: repeat(2, 1fr); }
    .mmd-private-whyus__grid { grid-template-columns: repeat(2, 1fr); }
    .mmd-private-testimonials__grid { grid-template-columns: 1fr; }
    .mmd-private-themes__grid { grid-template-columns: repeat(3, 1fr); }
    .mmd-public-expect__grid { grid-template-columns: repeat(2, 1fr); }
    .mmd-good-to-know__grid { grid-template-columns: repeat(2, 1fr); }
    .mmd-theme-content__inner { grid-template-columns: 1fr; }
    .mmd-theme-content__sidebar { order: -1; }
    .mmd-theme-sidebar__poster { display: none; }
}

/* =============================================================================
   RESPONSIVE — MOBILE 768px (hamburger activates)
   ============================================================================= */
@media ( max-width: 768px ) {
    /* Site wrapper — removed. The base rules are now full-bleed and mobile-first,
       so the old max-width unwinding here is redundant. The `position: relative`
       that used to live here would have overridden the sticky header on exactly
       the breakpoint the design is drawn for. */

    /* Header + Nav — removed. All of it moved into the base rules, which are now
       mobile-first, so this block was either duplicating them or fighting them.
       Two of its rules were actively wrong under the new markup: .mmd-header__top
       no longer exists (it is .mmd-header__bar), and the `margin-bottom: 0
       !important` on .mmd-nav__item existed only to beat the :nth-child paper-tab
       margins, which are gone. */

    /* Typography */
    .mmd-hero-split__h1 { font-size: 0.85rem; letter-spacing: 0.02em; }
    .mmd-hero-split__h2 { font-size: 0.85rem; }
    .mmd-home-section h2 { font-size: 1rem; }
    .mmd-page-header h1 { font-size: 1rem; text-align: center; }
    .mmd-private-occasions__inner h2, .mmd-private-venues__inner h2, .mmd-private-themes__inner h2,
    .mmd-private-whyus__inner h2, .mmd-private-testimonials__inner h2, .mmd-private-cta__inner h2,
    .mmd-themes-cta__inner h2, .mmd-theme-hero__content h1, .mmd-theme-related__inner h2,
    .mmd-public-good-to-know h2, .mmd-venue-section__info h2, .mmd-shows-faq-teaser h2,
    .mmd-about__heading h2, .mmd-virtual__text h3, .mmd-post-header__title { font-size: 1rem; }
    /* .mmd-lead-form h2 removed from the list above — it was shrinking the form
       heading to 1rem, overriding the 2026 size from ~1000 lines away. */
    .mmd-steps__heading { font-size: 1.2rem; }

    /* Section padding */
    .mmd-home-section { padding: 1.25rem 1rem; }
    .mmd-hero-split { padding: 1rem 1rem 0; }
    .mmd-blog-archive, .mmd-faq, .mmd-themes { padding: 0 1rem 1.5rem; }
    .mmd-private-hero, .mmd-private-occasions, .mmd-private-venues, .mmd-private-themes,
    .mmd-private-whyus, .mmd-private-testimonials, .mmd-private-cta { padding: 1rem; }
    .mmd-public-what-to-expect, .mmd-venue-section, .mmd-public-good-to-know { padding: 1rem; }
    .mmd-theme-content, .mmd-theme-related { padding: 1rem; }
    /* .mmd-lead-form__inner padding removed — the 2026 card carries its own. */
    .mmd-page-header { padding: 1.25rem 1rem 1rem; }
    .mmd-post-header { padding: 1.25rem 1rem 0.75rem; }
    .mmd-post-content { padding: 0 1rem 1.5rem; }
    .mmd-post-footer { padding: 0 1rem 1.5rem; }
    .mmd-author-bio { padding: 0 1rem 1.5rem; }
    .mmd-breadcrumb { padding: 0.5rem 1rem; }
    .mmd-steps { padding: 1.5rem 1rem; }
    .mmd-about, .mmd-booking, .mmd-virtual { padding: 1rem; }
    .mmd-clients, .mmd-testimonials { padding: 0.75rem 1rem; }
    .mmd-shows-cta { padding: 1rem; }
    .mmd-venue-info { padding: 0 1rem 1rem; }
    .mmd-public-shows { padding: 0 1rem 1rem; }
    .mmd-shows-faq-teaser, .mmd-themes-cta { padding: 1rem; }

    /* Grids — the homepage-section grids are gone from here too; their
       mobile-first defaults already produce these columns, colocated with each
       component. Only the sections not yet reworked (themes, private, blog)
       remain pooled. */
    .mmd-themes__grid { grid-template-columns: repeat(2, 1fr); gap: 0.75rem; }
    .mmd-blog-grid { grid-template-columns: 1fr; }
    .mmd-private-occasions__grid, .mmd-private-whyus__grid { grid-template-columns: repeat(2, 1fr); gap: 0.75rem; }
    .mmd-private-themes__grid { grid-template-columns: repeat(3, 1fr); gap: 0.5rem; }
    .mmd-public-expect__grid, .mmd-good-to-know__grid { grid-template-columns: repeat(2, 1fr); gap: 0.75rem; }

    /* Forms — the old `.mmd-form__row { flex-direction: column }` is removed.
       It stacked every two-up pair on mobile, which is precisely where the 2026
       comp wants First/Last and Phone/Zip side by side. The popup keeps its own
       stacking rule below — that panel really is too narrow for two-up. */

    /* Misc */
    .mmd-hero-split__col-inner { padding: 1rem; }
    .mmd-post-nav { flex-direction: column; }
    .mmd-post-nav__next { text-align: left; margin-left: 0; }
    .mmd-author-bio__inner { flex-direction: column; }
    .mmd-author-bio__avatar { width: 60px; height: 60px; }
    .mmd-themes-cta__btns { flex-direction: column; align-items: stretch; }
    .mmd-theme-ctas { flex-direction: column; }
    .mmd-venue-info__inner { flex-direction: column; }
    .mmd-venue-info__item { border-right: none; border-bottom: 1px solid var(--mmd-cream-400); }
    .mmd-venue-info__item:last-child { border-bottom: none; }
    .mmd-eb-event { flex-wrap: wrap; }
    .mmd-eb-event__poster { flex: 0 0 60px; }
    .mmd-eb-event__action { width: 100%; }
    .mmd-eb-event__buy { width: 100%; text-align: center; }
    /* More side margin so the modal doesn't run nearly edge-to-edge on a phone
       (was 1rem each side ≈ 91% width; 1.5rem reads as a contained card). */
    .mmd-popup { padding: var(--mmd-space-6); }
    .mmd-popup__modal { padding: 1.5rem 1rem; border-radius: var(--mmd-radius-lg); }
    .mmd-popup .mmd-form__row { flex-direction: column; gap: 0; }
}

/* =============================================================================
   RESPONSIVE — SMALL MOBILE 480px
   ============================================================================= */
@media ( max-width: 480px ) {
    .mmd-home-occasions__grid, .mmd-home-corporate__grid, .mmd-whyus__grid { grid-template-columns: 1fr; }
    .mmd-private-occasions__grid, .mmd-private-whyus__grid { grid-template-columns: 1fr; }
    .mmd-public-expect__grid, .mmd-good-to-know__grid { grid-template-columns: 1fr; }
    .mmd-themes__grid { grid-template-columns: 1fr; }
    .mmd-themes-preview__grid, .mmd-private-themes__grid { grid-template-columns: repeat(2, 1fr); }
    .mmd-header__phone-number { font-size: 1.1rem; }
    .mmd-header__wordmark img { height: 42px; }
}

/* =============================================================================
   PUBLIC SHOWS — 2026 REDESIGN
   Built on the shared tokens so this page reads as one system with the rest of
   the site: oxblood + deep-red panels, cream cards, Playfair display headings
   with italic accent words (<em>), Quicksand body. Rounded panels sit inside the
   .mmd-main content column (no full-bleed) — the big radii ARE the design.
   Mobile-first; desktop layout in the min-width:769px block below.
   ============================================================================= */

/* Display heading helper shared by the redesigned sections. Italic accent words
   are marked up with <em> in the copy (Playfair has a real italic; see tokens). */
.mmd-shows-happens__heading,
.mmd-shows-includes__heading,
.mmd-shows-variety__heading,
.mmd-shows-reserve__heading,
.mmd-shows-faq-head h2 {
    font-family: var(--mmd-font-display);
    font-weight: 400;
    line-height: 1.1;
}
.mmd-shows-happens__heading em,
.mmd-shows-includes__heading em,
.mmd-shows-variety__heading em,
.mmd-shows-reserve__heading em,
.mmd-shows-faq-head h2 em,
.mmd-shows-broadway__line em {
    font-style: italic;
}

/* ── Hero ────────────────────────────────────────────────────────────────────
   The hero reuses the shared homepage/Private-Events hero: .mmd-hero-overlay-wrap
   → .mmd-hero-overlay__h1 (see the HERO section earlier in this file). No
   public-shows-specific hero rules — that's the point, so all three heroes match. */

/* ── Intro band + scroll button ────────────────────────────────────────────── */
.mmd-shows-intro { text-align: center; }
.mmd-shows-intro__text {
    font-family: var(--mmd-font-sans);
    color: var(--mmd-ink-on-paper);
    font-size: var(--mmd-text-lg);
    line-height: 1.6;
    max-width: var(--mmd-copy-max);
    margin: 0 auto var(--mmd-space-4);
}
.mmd-shows-scroll-btn { display: inline-block; margin: var(--mmd-space-2) auto 0; }

/* ── Venue card cluster ────────────────────────────────────────────────────── */
/* Mobile: one column in the comp's order — pills, venue card, What's Included,
   dinner menu. The two desktop column wrappers are dissolved with
   display:contents so their children interleave; `order` sets the sequence.
   Desktop restores the wrappers as two real columns (see the min-width block). */
.mmd-shows-venue__grid { display: flex; flex-direction: column; gap: var(--mmd-space-8); }
.mmd-shows-venue__aside,
.mmd-shows-venue__main { display: contents; }
.mmd-shows-venue__pills    { order: 1; }
.mmd-shows-venue__card     { order: 2; }
.mmd-shows-included        { order: 3; }
.mmd-shows-menu            { order: 4; }

.mmd-shows-venue__pills {
    display: flex;
    flex-direction: column;
    gap: var(--mmd-space-3);
}
.mmd-shows-pill {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    gap: 2px;
    border: 2px solid var(--mmd-red-deep);
    border-radius: var(--mmd-radius-pill);
    padding: var(--mmd-space-3) var(--mmd-space-6);
    color: var(--mmd-ink-on-paper);
}
a.mmd-shows-pill:hover { background: var(--mmd-red-deep); color: var(--mmd-cream); }
a.mmd-shows-pill:hover .mmd-shows-pill__label { color: var(--mmd-cream); }
.mmd-shows-pill__label {
    font-family: var(--mmd-font-sans);
    font-size: var(--mmd-text-sm);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--mmd-red-deep);
    text-decoration: underline;
}
.mmd-shows-pill__value { font-family: var(--mmd-font-display); font-size: var(--mmd-text-lg); }

.mmd-shows-included__heading {
    font-family: var(--mmd-font-display);
    font-weight: 400;
    font-size: var(--mmd-text-2xl);
    color: var(--mmd-ink-on-paper);
    margin-bottom: var(--mmd-space-4);
    text-align: center;
}
.mmd-shows-included__heading em { font-style: italic; }
.mmd-shows-included__grid { display: flex; flex-direction: column; gap: var(--mmd-space-3); }
.mmd-shows-included__item {
    display: flex;
    align-items: center;
    gap: var(--mmd-space-4);
    background: var(--mmd-ox-800);
    color: var(--mmd-ink-on-dark);
    border-radius: var(--mmd-radius-lg);
    padding: var(--mmd-space-6) var(--mmd-space-8);
}
.mmd-shows-included__icon { font-size: 1.9rem; flex: 0 0 auto; line-height: 1; display: inline-flex; }
.mmd-shows-included__icon .mmd-shows-ico { width: 2.7rem; height: 2.7rem; }
.mmd-shows-included__body h4 {
    font-family: var(--mmd-font-sans);
    font-size: var(--mmd-text-base);
    font-weight: 700;
    color: var(--mmd-cream);
    margin: 0 0 2px;
}
.mmd-shows-included__body p { font-size: var(--mmd-text-sm); margin: 0; line-height: 1.4; }

/* Dark venue card — the oxblood "frame". The dark background full-bleeds to the
   viewport edges on mobile; the inner padding keeps the content off the edges.
   Desktop resets the bleed (there it's a grid column). */
.mmd-shows-venue__card {
    background: var(--mmd-ox-800);
    color: var(--mmd-ink-on-dark);
    border-radius: var(--mmd-radius-xl);
    padding: var(--mmd-space-6);
    margin-inline: calc( -1 * var(--mmd-gutter) );
}
.mmd-shows-venue__cardhead {
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: var(--mmd-space-2) var(--mmd-space-4);
    margin-bottom: var(--mmd-space-4);
}
.mmd-shows-venue__name {
    font-family: var(--mmd-font-display);
    font-weight: 400;
    font-size: var(--mmd-text-2xl);
    color: var(--mmd-cream);
    margin: 0;
}
.mmd-shows-venue__price {
    display: inline-flex;
    align-items: center;
    gap: var(--mmd-space-2);
    margin-left: auto;          /* keep the ticket + price to the right of the name */
    font-family: var(--mmd-font-sans);
    font-weight: 700;
    font-size: var(--mmd-text-base);
    color: var(--mmd-cream);
    margin-block: 0;
    white-space: nowrap;
}
.mmd-shows-venue__price .mmd-shows-ico { width: 1.9rem; height: 1.9rem; }

/* Cream icon sub-cards inside the venue card (address / now running / parking /
   transit) — dark ink + dark line icons, matching the comp. */
.mmd-shows-venue__facts {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--mmd-space-3);
}
.mmd-shows-fact {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    gap: var(--mmd-space-2);
    background: var(--mmd-cream);
    border-radius: var(--mmd-radius-md);
    padding: var(--mmd-space-4);
    color: var(--mmd-ink-on-paper);
}
.mmd-shows-fact__icon { display: inline-flex; }
.mmd-shows-ico { display: block; object-fit: contain; }
/* Large comp icons in the fact cards; Parking / Transit larger still. */
.mmd-shows-fact__icon .mmd-shows-ico { width: 2.4rem; height: 2.4rem; }
.mmd-shows-fact--wide .mmd-shows-fact__icon .mmd-shows-ico { width: 2.9rem; height: 2.9rem; }
.mmd-shows-fact__value { font-size: var(--mmd-text-sm); line-height: 1.45; margin: 0; }
.mmd-shows-fact__value strong { color: var(--mmd-ink-on-paper); }
.mmd-shows-fact__value--link { text-decoration: underline; }
a.mmd-shows-fact { color: var(--mmd-ink-on-paper); }
a.mmd-shows-fact:hover .mmd-shows-fact__value--link { color: var(--mmd-red-deep); }
/* Parking / Transit: large icon on its own row at the top, centered; the copy
   sits full-width below it, left-aligned so the longer text stays readable. */
.mmd-shows-fact--wide {
    flex-direction: column;
    align-items: center;
    gap: var(--mmd-space-2);
    margin-top: var(--mmd-space-3);
}
.mmd-shows-fact--wide .mmd-shows-fact__value { text-align: left; width: 100%; }
.mmd-shows-venue__desc,
.mmd-shows-venue__arrival {
    font-size: var(--mmd-text-sm);
    line-height: 1.55;
    margin: var(--mmd-space-4) 0 0;
}

/* Dinner menu card (deep red) — full-bleeds to the viewport edges on mobile like
   the venue card; desktop resets it to a grid column. */
.mmd-shows-menu {
    background: var(--mmd-red-deep);
    color: var(--mmd-cream);
    border-radius: var(--mmd-radius-xl);
    padding: var(--mmd-space-8) var(--mmd-space-6);
    margin-inline: calc( -1 * var(--mmd-gutter) );
}
.mmd-shows-menu__heading {
    font-family: var(--mmd-font-display);
    font-style: italic;
    font-weight: 400;
    font-size: var(--mmd-text-2xl);
    color: var(--mmd-cream);
    border-bottom: 1px solid rgba( 233, 226, 208, 0.4 );
    padding-bottom: var(--mmd-space-3);
    margin-bottom: var(--mmd-space-6);
}
.mmd-shows-menu__course {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: var(--mmd-space-4);
    margin-bottom: var(--mmd-space-6);
}
.mmd-shows-menu__course-text { flex: 1; min-width: 0; }
.mmd-shows-menu__ico { flex: 0 0 auto; display: inline-flex; }
.mmd-shows-menu__ico .mmd-shows-ico { width: 3rem; height: 3rem; }
.mmd-shows-menu__label {
    display: block;
    font-family: var(--mmd-font-sans);
    font-weight: 700;
    font-size: var(--mmd-text-base);
    margin-bottom: var(--mmd-space-1);
}
.mmd-shows-menu__value { display: block; font-size: var(--mmd-text-sm); line-height: 1.5; }
.mmd-shows-menu__note { font-style: italic; font-size: var(--mmd-text-sm); opacity: 0.9; margin: var(--mmd-space-2) 0 0; }

/* ── Current Show Times ──────────────────────────────────────────────────────
   Full-bleeds to the viewport edges on mobile like the venue card and dinner
   menu; a clear gap separates it from the Dinner Menu above. Desktop resets. */
.mmd-shows-times {
    background: var(--mmd-ox-800);
    border-radius: var(--mmd-radius-xl);
    padding: var(--mmd-space-8) var(--mmd-space-6);
    margin-top: var(--mmd-space-12);
    margin-inline: calc( -1 * var(--mmd-gutter) );
}
.mmd-shows-times__heading {
    font-family: var(--mmd-font-display);
    font-weight: 700;
    font-size: clamp( 1.75rem, 4vw, 2.75rem );
    color: var(--mmd-cream);
    text-align: center;
    margin-bottom: var(--mmd-space-6);
}
.mmd-shows-times__heading em { font-style: italic; }
.mmd-shows-times__empty {
    background: var(--mmd-cream);
    border-radius: var(--mmd-radius-lg);
    padding: var(--mmd-space-8);
    text-align: center;
    color: var(--mmd-ink-on-paper);
}
.mmd-shows-times__empty a { color: var(--mmd-red-deep); text-decoration: underline; }

/* Restyle the shared Eventbrite list into the design's cream show cards.
   Card layout (matches the comp): the event name spans the full width across the
   top; beneath it a row of poster | details | action, where the action column
   stacks the Buy Tickets button over the "General Admission — $price" line. */
.mmd-shows-times .mmd-eb-events { display: grid; grid-template-columns: 1fr; gap: var(--mmd-space-3); }
.mmd-shows-times .mmd-eb-event {
    display: grid;
    grid-template-columns: auto 1fr auto;
    grid-template-areas:
        "name   name  name"
        "poster info  action";
    align-items: center;
    column-gap: var(--mmd-space-6);
    row-gap: var(--mmd-space-4);
    background: var(--mmd-cream);
    border: none;
    border-radius: var(--mmd-radius-lg);
    padding: var(--mmd-space-6);
}
.mmd-shows-times .mmd-eb-event:first-child { border-top: none; }
.mmd-shows-times .mmd-eb-event__name {
    grid-area: name;
    color: var(--mmd-ink-on-paper);
    font-family: var(--mmd-font-sans);
    font-weight: 700;
    font-size: 0.95rem;
    line-height: 1.3;
}
.mmd-shows-times .mmd-eb-event__poster { grid-area: poster; align-self: center; }
.mmd-shows-times .mmd-eb-event__poster img { width: 96px; height: 96px; border-radius: var(--mmd-radius-md); border: none; }
.mmd-shows-times .mmd-eb-event__info { grid-area: info; display: flex; flex-direction: column; gap: var(--mmd-space-2); }
.mmd-shows-times .mmd-eb-event__action {
    grid-area: action;
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: var(--mmd-space-3);
    text-align: right;
}
.mmd-shows-times .mmd-eb-event__date { color: var(--mmd-ink-on-paper); font-size: 0.8rem; font-weight: 600; white-space: nowrap; }
.mmd-shows-times .mmd-eb-event__time,
.mmd-shows-times .mmd-eb-event__venue,
.mmd-shows-times .mmd-eb-event__theme { color: var(--mmd-gray); font-size: 0.78rem; }
.mmd-shows-times .mmd-eb-event__ticket-type { color: var(--mmd-gray); font-size: 0.78rem; text-transform: none; letter-spacing: 0; white-space: nowrap; }
.mmd-shows-times .mmd-eb-event__buy {
    background: var(--mmd-red-deep);
    color: var(--mmd-cream);
    border-radius: var(--mmd-radius-pill);
    padding: var(--mmd-space-3) var(--mmd-space-8);
    font-size: 0.8rem;
    white-space: nowrap;
}
/* Whole card is a click target (JS forwards the click to the buy button). */
.mmd-shows-times .mmd-eb-event--clickable { cursor: pointer; transition: transform 0.12s ease, box-shadow 0.15s ease; }
.mmd-shows-times .mmd-eb-event--clickable:hover { transform: translateY( -1px ); box-shadow: 0 4px 14px rgba( 0, 0, 0, 0.22 ); }
/* Phone: the three-up row won't fit, so drop the poster + details onto their own
   row and give the action (price + Buy button) a full-width row beneath. */
@media ( max-width: 768px ) {
    .mmd-shows-times .mmd-eb-event {
        grid-template-columns: auto 1fr;
        grid-template-areas:
            "name   name"
            "poster info"
            "action action";
        column-gap: var(--mmd-space-4);
    }
    .mmd-shows-times .mmd-eb-event__action {
        flex-direction: row-reverse;
        align-items: center;
        justify-content: space-between;
        width: 100%;
        text-align: left;
    }
    .mmd-shows-times .mmd-eb-event__buy { width: auto; }
}

/* ── Torn-paper sections: Off-Broadway + What Happens ────────────────────────
   Each is a cream torn-paper banner (dark heading) that tears into a coloured
   panel (cream copy). CREAMPAPERTEAR is transparent at its torn edges, so the
   panel shows through the tear. Each section pulls up under the box above it so
   the paper's top edge tucks behind that box; z-index descends down the page so
   the higher (earlier) box always covers the tear. Small side margin (the page
   gutter). Photos run edge-to-edge across the coloured panel. */
/* The venue section (its Current Show Times box is last) sits above the
   Off-Broadway tear so the paper tucks under the box. */
.mmd-shows-venue { position: relative; z-index: 3; }
.mmd-shows-broadway,
.mmd-shows-happens {
    position: relative;
    text-align: center;
}
/* Off-Broadway tucks well up under the (untorn) show-times box. What Happens
   only needs a small tuck — the Off-Broadway panel's own torn bottom supplies
   the tear above its heading, so it must not pull the heading under that tear. */
.mmd-shows-broadway { z-index: 2; margin-top: calc( -1 * var(--mmd-space-24) ); }
.mmd-shows-happens  { z-index: 1; margin-top: calc( -1 * var(--mmd-space-6) ); }

/* The torn-paper banner spans the full viewport; the coloured panel below stays
   inset (the section keeps the page gutter). */
.mmd-shows-broadway__banner,
.mmd-shows-happens__banner {
    position: relative;
    z-index: 1;
    background: url('../images/private_events_page_assets/CREAMPAPERTEAR.png') center / 100% 100% no-repeat;
    color: var(--mmd-ink-on-paper);
    padding: var(--mmd-space-24) var(--mmd-space-8) var(--mmd-space-16);
    margin-bottom: -44px;
    margin-inline: calc( -1 * var(--mmd-gutter) );  /* full-bleed torn paper */
}
.mmd-shows-broadway__line,
.mmd-shows-happens__heading {
    font-family: var(--mmd-font-display);
    line-height: 1.1;
    color: var(--mmd-ink-on-paper);
    margin: 0 auto;
}
.mmd-shows-broadway__line { font-size: clamp( 1.75rem, 5vw, 3.25rem ); }
.mmd-shows-broadway__line em,
.mmd-shows-happens__heading em { font-style: italic; font-weight: 700; }
.mmd-shows-happens__heading { font-size: clamp( 1.9rem, 5vw, 3.25rem ); max-width: 20ch; }

.mmd-shows-broadway__panel,
.mmd-shows-happens__panel {
    position: relative;
    padding: var(--mmd-space-16) var(--mmd-space-6);
}
.mmd-shows-broadway__panel { background: var(--mmd-red-deep); color: var(--mmd-cream); }
.mmd-shows-happens__panel { background: var(--mmd-ox-800); color: var(--mmd-ink-on-dark); }
/* Torn bottom edge — each coloured panel tears back into the cream below it:
   Off-Broadway red tears to the What Happens heading; What Happens dark tears to
   the cream page. Spans the full viewport like the banners. */
.mmd-shows-broadway__panel::after,
.mmd-shows-happens__panel::after {
    content: '';
    position: absolute;
    left: 50%;
    transform: translateX( -50% );
    width: 100vw;
    bottom: -34px;
    height: 68px;
    background: url('../images/private_events_page_assets/CREAMPAPERTEAR.png') center / 100% 100% no-repeat;
    pointer-events: none;
    z-index: 2;
}

/* Off-Broadway photo — full-bleed across the whole viewport (desktop resets to
   the panel edge). */
.mmd-shows-broadway__photo {
    display: block;
    width: 100vw;
    max-width: 100vw;
    margin-left: calc( 50% - 50vw );
    margin-right: calc( 50% - 50vw );
    height: auto;
    margin-block: var(--mmd-space-4) var(--mmd-space-10);
    border-radius: 0;
}
/* What Happens photos — rounded and inset within the dark panel. */
.mmd-shows-happens__photo {
    display: block;
    width: 100%;
    max-width: var(--mmd-copy-max);
    height: auto;
    margin: var(--mmd-space-8) auto var(--mmd-space-10);
    border-radius: var(--mmd-radius-xl);
}

/* Text column with a tan rule down its left edge. */
.mmd-shows-broadway__content {
    max-width: var(--mmd-copy-max);
    margin: 0 auto;
    text-align: left;
    border-left: 2px solid var(--mmd-cream);
    padding-left: var(--mmd-space-6);
}

/* Off-Broadway copy */
.mmd-shows-broadway__intro {
    font-family: var(--mmd-font-sans);
    font-size: var(--mmd-text-lg);
    line-height: 1.6;
    margin: 0;
}
.mmd-shows-broadway__body {
    display: grid;
    gap: var(--mmd-space-6);
    margin: var(--mmd-space-8) 0;
}
.mmd-shows-broadway__body p { font-size: var(--mmd-text-base); line-height: 1.7; margin: 0; }
.mmd-shows-broadway__close {
    font-family: var(--mmd-font-display);
    font-style: italic;
    font-size: clamp( 1.4rem, 3.5vw, 2rem );
    margin: 0;
}

/* What Happens copy */
.mmd-shows-happens__lead {
    font-family: var(--mmd-font-sans);
    font-size: var(--mmd-text-lg);
    line-height: 1.55;
    max-width: 40ch;
    margin: 0 auto var(--mmd-space-10);
}
.mmd-shows-happens__text {
    font-family: var(--mmd-font-sans);
    font-size: var(--mmd-text-base);
    line-height: 1.75;
    max-width: var(--mmd-copy-max);
    margin: 0 auto var(--mmd-space-10);
}
.mmd-shows-happens__text:last-child { margin-bottom: 0; }

/* ── More Than Dinner / ticket includes (cream) ────────────────────────────── */
.mmd-shows-includes { text-align: center; }
.mmd-shows-includes__heading {
    color: var(--mmd-ink-on-paper);
    font-size: clamp( 2rem, 5.5vw, 3.5rem );
    max-width: 18ch;
    margin: 0 auto var(--mmd-space-8);
}
.mmd-shows-includes__label {
    font-family: var(--mmd-font-sans);
    font-weight: 700;
    font-size: var(--mmd-text-2xl);
    color: var(--mmd-ink-on-paper);
    margin-bottom: var(--mmd-space-6);
}
.mmd-shows-includes__grid {
    position: relative;  /* positioning context for the JS dashed weave */
    display: flex;
    flex-direction: column;
    gap: var(--mmd-space-8);
    max-width: 600px;
    margin: 0 auto var(--mmd-space-10);
}
/* Dotted weave drawn behind the cards by main.js — shows only in the gaps. */
.mmd-shows-includes__path {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    pointer-events: none;
    overflow: visible;
    z-index: 0;
    color: var(--mmd-red-deep);
}
.mmd-shows-includes__path path {
    fill: none;
    stroke: currentColor;
    stroke-width: 2.5;
    stroke-dasharray: 0.1 9;
    stroke-linecap: round;
}
.mmd-shows-includes__card {
    position: relative;
    z-index: 1;
    width: 84%;
    display: flex;
    align-items: center;
    gap: var(--mmd-space-4);
    background: var(--mmd-red-deep);
    color: var(--mmd-cream);
    border-radius: var(--mmd-radius-lg);
    padding: var(--mmd-space-6);
    text-align: left;
}
.mmd-shows-includes__card--left  { align-self: flex-start; }
.mmd-shows-includes__card--right { align-self: flex-end; }
.mmd-shows-includes__ico {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 58px;
    height: 58px;
    background: var(--mmd-ox-800);
    border-radius: var(--mmd-radius-md);
}
.mmd-shows-includes__ico .mmd-shows-ico { width: 2rem; height: 2rem; }
.mmd-shows-includes__card p { margin: 0; font-size: var(--mmd-text-base); line-height: 1.45; }
.mmd-shows-includes__kicker {
    border: 2px solid var(--mmd-red-deep);
    border-radius: var(--mmd-radius-xl);
    padding: var(--mmd-space-8);
    max-width: var(--mmd-copy-max);
    margin: 0 auto;
}
.mmd-shows-includes__kicker-title {
    font-family: var(--mmd-font-display);
    font-style: italic;
    font-size: clamp( 1.5rem, 3.5vw, 2.25rem );
    color: var(--mmd-ink-on-paper);
    margin: 0 0 var(--mmd-space-3);
}
.mmd-shows-includes__kicker-body {
    font-family: var(--mmd-font-sans);
    color: var(--mmd-ink-on-paper);
    line-height: 1.6;
    margin: 0;
}
.mmd-shows-includes__kicker-body em { font-family: var(--mmd-font-display); font-style: italic; }

/* ── New Themes / Perfect For / Why Guests Love (one dark block) ────────────── */
.mmd-shows-variety {
    background: var(--mmd-ox-800);
    color: var(--mmd-ink-on-dark);
    border-radius: 0;
    /* Full-bleed: dark panel runs edge to edge of the screen on mobile. */
    margin-inline: calc(-1 * var(--mmd-gutter));
    padding: var(--mmd-space-16) var(--mmd-gutter);
    display: flex;
    flex-direction: column;
    gap: var(--mmd-space-16);
}
.mmd-shows-variety__row { display: block; }
.mmd-shows-variety__heading {
    color: var(--mmd-cream);
    font-size: clamp( 1.9rem, 5vw, 3.25rem );
    margin: 0 0 var(--mmd-space-4);
}
.mmd-shows-variety__heading--center { text-align: center; }
/* Cream box holding the copy + image, sitting inside the dark panel. */
.mmd-shows-variety__box {
    display: flex;
    align-items: stretch;
    gap: var(--mmd-space-6);
    background: var(--mmd-cream);
    border-radius: var(--mmd-radius-xl);
    padding: var(--mmd-space-8);
    overflow: hidden;
}
.mmd-shows-variety__row--reverse .mmd-shows-variety__box { flex-direction: row-reverse; }
/* Smaller, tighter copy so the roomier box padding has space to breathe. */
.mmd-shows-variety__body {
    flex: 1 1 auto;
    align-self: center;
    font-family: var(--mmd-font-sans);
    font-size: var(--mmd-text-sm);
    line-height: 1.55;
    color: var(--mmd-ink-on-paper);
    margin: 0;
}
/* Italic transition line sitting between the two rows. */
.mmd-shows-variety__kicker {
    font-family: var(--mmd-font-display);
    font-style: italic;
    font-size: var(--mmd-text-xl);
    color: var(--mmd-cream);
    text-align: center;
    max-width: 42ch;
    margin: 0 auto;
}
/* Portrait crop to match the comp — landscape sources crop tall via object-fit. */
.mmd-shows-variety__photo {
    flex: 0 0 42%;
    align-self: stretch;
    width: 42%;
    min-height: 0;
    object-fit: cover;
    border-radius: var(--mmd-radius-lg);
}
.mmd-shows-variety__why { max-width: var(--mmd-copy-max); margin: 0 auto; text-align: center; }
.mmd-shows-variety__why-body { font-family: var(--mmd-font-sans); }
.mmd-shows-variety__why-body p { font-size: var(--mmd-text-lg); line-height: 1.7; margin: 0 0 var(--mmd-space-4); }
.mmd-shows-variety__why-body p:last-child { margin-bottom: 0; }
.mmd-shows-variety__why-body strong { color: var(--mmd-cream); }

/* ── Reserve Your Seats CTA (deep red) ─────────────────────────────────────── */
.mmd-shows-reserve {
    background: var(--mmd-red-deep);
    color: var(--mmd-cream);
    border-radius: var(--mmd-radius-xl);
    padding: var(--mmd-space-16) var(--mmd-space-6);
    text-align: center;
}
.mmd-shows-reserve__heading {
    font-weight: 700;
    font-size: clamp( 2.5rem, 8vw, 5rem );
    color: var(--mmd-cream);
    margin: 0 0 var(--mmd-space-6);
}
.mmd-shows-reserve__body {
    font-family: var(--mmd-font-sans);
    font-size: var(--mmd-text-lg);
    line-height: 1.6;
    max-width: 52ch;
    margin: 0 auto var(--mmd-space-8);
}
.mmd-shows-reserve__btn {
    display: inline-block;
    background: var(--mmd-cream);
    color: var(--mmd-ox-800);
    font-family: var(--mmd-font-sans);
    font-weight: 700;
    font-size: var(--mmd-text-lg);
    padding: var(--mmd-space-4) var(--mmd-space-12);
    border-radius: var(--mmd-radius-pill);
    transition: transform 0.15s ease, opacity 0.2s;
}
.mmd-shows-reserve__btn:hover { color: var(--mmd-ox-800); opacity: 0.9; transform: translateY( -1px ); }

/* ── No-Shows empty state ──────────────────────────────────────────────────────
   Shown when a location has no Eventbrite source (mmd_public_shows_available): a
   deep-red "no shows scheduled" panel below the hero, then the Own-a-Venue form as
   a dark oxblood panel. */
.mmd-shows-none {
    background: var(--mmd-red-deep);
    color: var(--mmd-cream);
    border-radius: var(--mmd-radius-xl);
    padding: var(--mmd-space-10) var(--mmd-space-8);
    text-align: center;
    /* A touch more breathing room below the hero than the standard section gap. */
    margin-top: var(--mmd-space-12);
}
.mmd-shows-none__heading {
    font-family: var(--mmd-font-display);
    font-style: italic;
    font-weight: 400;
    font-size: clamp( 1.75rem, 5vw, 2.6rem );
    line-height: 1.15;
    color: var(--mmd-cream);
    margin: 0 0 var(--mmd-space-6);
    padding-bottom: var(--mmd-space-6);
    border-bottom: 1px solid rgba( 233, 226, 208, 0.35 );
}
.mmd-shows-none__body {
    font-family: var(--mmd-font-sans);
    font-size: var(--mmd-text-base);
    line-height: 1.6;
    margin: 0 0 var(--mmd-space-8);
}
.mmd-shows-none__body a { color: var(--mmd-cream); text-decoration: underline; }
.mmd-shows-none__btn {
    display: inline-block;
    background: var(--mmd-ox-800);
    color: var(--mmd-cream);
    font-family: var(--mmd-font-sans);
    font-weight: 600;
    font-size: var(--mmd-text-base);
    padding: var(--mmd-space-4) var(--mmd-space-10);
    border-radius: var(--mmd-radius-pill);
    transition: transform 0.15s ease, opacity 0.2s;
}
.mmd-shows-none__btn:hover { color: var(--mmd-cream); opacity: 0.9; transform: translateY( -1px ); }

/* Dark oxblood Own-a-Venue form panel. */
.mmd-shows-ownvenue {
    background: var(--mmd-ox-800);
    border: none;
    border-radius: var(--mmd-radius-xl);
    padding: var(--mmd-space-8);
}
.mmd-shows-ownvenue__inner { padding: 0; }
.mmd-shows-ownvenue__heading {
    font-family: var(--mmd-font-sans);
    font-weight: 700;
    font-size: var(--mmd-text-2xl);
    color: var(--mmd-cream);
    text-align: left;
    margin: 0 0 var(--mmd-space-2);
}
.mmd-shows-ownvenue__body {
    font-family: var(--mmd-font-sans);
    font-size: var(--mmd-text-base);
    color: var(--mmd-ink-on-dark);
    text-align: left;
    margin: 0 0 var(--mmd-space-6);
}
/* Light inputs on the dark panel (base inputs are transparent → invisible here). */
.mmd-shows-ownvenue .mmd-form__field input[type="text"],
.mmd-shows-ownvenue .mmd-form__field input[type="email"],
.mmd-shows-ownvenue .mmd-form__field input[type="tel"],
.mmd-shows-ownvenue .mmd-form__field textarea {
    background: var(--mmd-cream);
    border-color: transparent;
    color: var(--mmd-ink-on-paper);
}
/* Own-a-Venue submit: cream pill (comp). */
.mmd-shows-ownvenue .mmd-btn {
    display: inline-flex;
    align-items: center;
    gap: var(--mmd-space-2);
    background: var(--mmd-cream);
    color: var(--mmd-ox-800);
    font-family: var(--mmd-font-sans);
    font-weight: 700;
    font-size: var(--mmd-text-base);
    text-transform: none;
    letter-spacing: 0;
    border-radius: var(--mmd-radius-pill);
    padding: var(--mmd-space-3) var(--mmd-space-8);
    margin-top: var(--mmd-space-2);
}
.mmd-shows-ownvenue .mmd-btn:hover { color: var(--mmd-ox-800); opacity: 0.9; }

@media ( min-width: 769px ) {
    .mmd-shows-ownvenue { padding: var(--mmd-space-12); }
}

/* ── FAQ heading (accordion reused from [mmd_faqpub_list]) ──────────────────── */
.mmd-shows-faq-head { text-align: center; }
.mmd-shows-faq-head h2 {
    color: var(--mmd-ink-on-paper);
    font-size: clamp( 1.75rem, 4.5vw, 3rem );
    max-width: 24ch;
    margin: 0 auto;
}

/* Keep long Eventbrite event names from pushing the buy button off the card. */
.mmd-shows-times .mmd-eb-event__info { min-width: 0; }
.mmd-shows-times .mmd-eb-event__info > * { overflow-wrap: anywhere; }

/* ── Desktop layout ────────────────────────────────────────────────────────── */
@media ( min-width: 769px ) {
    .mmd-shows-venue__grid {
        display: grid;
        grid-template-columns: 1fr 1fr;
        align-items: start;
        column-gap: var(--mmd-space-12);
        row-gap: var(--mmd-space-8);
    }
    /* Flatten the aside/main wrappers so their blocks place directly on the grid.
       Layout: pills full-width on top, What's Included + Dinner Menu side by side,
       then the venue info card (address, parking, transit) full-width beneath both. */
    .mmd-shows-venue__aside,
    .mmd-shows-venue__main { display: contents; }
    .mmd-shows-venue__pills    { grid-column: 1 / -1; grid-row: 1; flex-direction: row; }
    .mmd-shows-included        { grid-column: 1;      grid-row: 2; }
    .mmd-shows-menu            { grid-column: 2;      grid-row: 2; margin-inline: 0; padding: var(--mmd-space-8); }
    .mmd-shows-venue__card     { grid-column: 1 / -1; grid-row: 3; margin-inline: 0; padding: var(--mmd-space-8); }
    .mmd-shows-pill { flex: 1; }
    .mmd-shows-included__grid { gap: var(--mmd-space-4); }
    /* No full-bleed on desktop — the show-times grid sits in the content column. */
    .mmd-shows-times { margin-inline: 0; }
    /* On desktop the torn paper and photo stay within the content column, not the
       whole viewport. */
    .mmd-shows-broadway__banner,
    .mmd-shows-happens__banner { margin-inline: 0; }
    .mmd-shows-broadway__panel::after,
    .mmd-shows-happens__panel::after {
        width: calc( 100% + 2 * var(--mmd-space-8) );
        left: calc( -1 * var(--mmd-space-8) );
        transform: none;
    }
    .mmd-shows-broadway__photo {
        width: calc( 100% + 2 * var(--mmd-space-6) );
        max-width: none;
        margin-left: calc( -1 * var(--mmd-space-6) );
        margin-right: calc( -1 * var(--mmd-space-6) );
    }

    .mmd-shows-times .mmd-eb-events { grid-template-columns: 1fr 1fr; }


    /* Desktop: dark panel is inset again with its rounded shell. */
    .mmd-shows-variety {
        margin-inline: 0;
        border-radius: var(--mmd-radius-xl);
        padding: var(--mmd-space-16) var(--mmd-space-16);
    }
    .mmd-shows-variety__box { gap: var(--mmd-space-10); padding: var(--mmd-space-10); align-items: center; }
    /* On desktop the copy is short, so stretching the photo to the box height would
       crop it landscape. Pin a portrait aspect and centre it instead — the box grows
       to the image, matching the comp's tall photos. */
    .mmd-shows-variety__photo {
        flex: 0 0 38%;
        width: 38%;
        align-self: center;
        aspect-ratio: 4 / 5;
        height: auto;
        max-height: 520px;
    }
}
