/*
Theme Name: Twenty Twenty-Five ETS Child
Theme URI: https://exploredigital.com
Description: Explore Digital child theme for Mt. Helix Park — block editor build of the modernized design (Figma "Website Updates").
Author: Explore Digital
Template: twentytwentyfive
Version: 1.0.0
Text Domain: twentytwentyfive-ets-child
*/

/* === MHP design system (block edition) === */

:root {
  --mhp-ink: #0E1901;
  --mhp-card: #223B05;
  --mhp-mid: #3E5B1D;
  --mhp-gold: #D69F16;
  --mhp-cream: #F2EDE4;
}
strong{
    font-weight:700;
}
.wp-site-blocks, main.has-global-padding{
    overflow-x:hidden;
}
/* --- Buttons: pill variants via custom classes on core/button --- */
.wp-block-button .wp-block-button__link {
  border-radius: 30px;
  font-weight: 700;
  padding: 0.75rem 2rem;
  line-height:1;
}
.mhp-btn-gold .wp-block-button__link { background: var(--mhp-gold); color: var(--mhp-ink); border:2px solid var(--mhp-gold);}
.mhp-btn-gold .wp-block-button__link:hover { background: #FFBF18; color: var(--mhp-ink); border-color:#FFBF18;}
.mhp-btn-green .wp-block-button__link { background: var(--mhp-mid); color: #fff; border: 2px solid var(--mhp-mid);}
.mhp-btn-green .wp-block-button__link:hover { background: #4E7E17; color: #fff; border-color:#4E7E17;}
.mhp-btn-outline .wp-block-button__link {
  background: transparent; color: var(--mhp-mid);
  border: 2px solid var(--mhp-mid);
}
.mhp-btn-outline .wp-block-button__link:hover { background: var(--mhp-mid); color: #fff; }
.mhp-btn-outline-gold .wp-block-button__link {
  background: transparent; color: var(--mhp-gold);
  border: 2px solid var(--mhp-gold); 
}
.mhp-btn-outline-gold .wp-block-button__link:hover { background: var(--mhp-gold); color: var(--mhp-ink); }

/* --- Imagery --- */
.mhp-rounded img, img.mhp-rounded { border-radius: 16px; }
.mhp-rounded { border-radius: 16px; overflow: hidden; }
.wp-block-image.mhp-rounded img { max-height: 620px; object-fit: cover; width: 100%; }

/* --- Cards (card trio) --- */
.mhp-card {
  background: var(--mhp-card);
  border-radius: 16px;
  overflow: hidden;
  height: 100%;
}
.mhp-card .wp-block-image { margin: 0; }
.mhp-card .wp-block-image img { width: 100%; aspect-ratio: 3/2; object-fit: cover; border-radius: 0; display: block; }
.mhp-card h3, .mhp-card p { color: #fff; }
.mhp-card > h3, .mhp-card > p { padding-left: 24px; padding-right: 24px; }
.mhp-card h3 { margin-top: 18px; font-weight:700;}
.mhp-card .wp-block-buttons { padding: 4px 24px 26px; }
/* BugHerd #64: cards that end in text (no button) get the same 26px bottom breathing room */
.mhp-card > p:last-child { padding-bottom: 26px; }

/* --- CTA tiles --- */
.mhp-tile {
  border: 2px solid var(--mhp-gold);
  border-radius: 1rem;
  text-align: center;
  padding: 26px 14px 18px;
  height: 100%;
}
.wp-block-column:has(.mhp-tile):hover{
    background:#3E5B1D!important;
}
.mhp-tile p, .mhp-tile a { color: var(--mhp-ink); font-weight: 700; text-decoration: none; }
/* BugHerd #62: tiles on the dark card-green background (home CTA row) use white labels per mockup */
.wp-block-column.has-card-background-color .mhp-tile p,
.wp-block-column.has-card-background-color .mhp-tile a,
.mhp-tile.has-card-background-color p,
.mhp-tile.has-card-background-color a { color: #fff; }
.mhp-tile svg { margin-top: 8px; }
.wp-block-column:has(.mhp-tile):hover .mhp-tile p,
.wp-block-column:has(.mhp-tile):hover .mhp-tile a { color: #fff; }

/* --- Cream feature card --- */
.mhp-cream-card {
  background: #fff;
  border-radius: 16px;
  box-shadow: 0 8px 30px rgba(14, 25, 1, 0.08);
  padding: 40px;
}

/* --- Dark band lists --- */
.mhp-dark-body { color: #fff; }
.mhp-dark-body ul { display: inline-block; text-align: left; }
.mhp-dark-body a { color: var(--mhp-gold); }

/* --- Eyebrow --- */
.mhp-eyebrow {
  letter-spacing: 1.5px; font-weight: 700; text-transform: uppercase;
  color: var(--mhp-ink); font-size: 1.15rem;
}
.mhp-kicker {
  letter-spacing: 1px; font-weight: 700; text-transform: uppercase;
  color: var(--mhp-gold); font-size: 0.95rem;
}

/* --- Header --- */
.mhp-announce { font-size: 16px; }
.mhp-announce a { color: #fff; text-decoration: underline; font-weight: 700; }
.mhp-header-bar { box-shadow: 0 2px 12px rgba(14, 25, 1, 0.06); position: relative; z-index: 20; }
.mhp-header-bar .wp-block-navigation a { font-weight: 700; color: var(--mhp-ink); }
/* Generic submenu styling */
.wp-block-navigation .wp-block-navigation__submenu-container {
    background: #fff;
    border-top: 2px solid var(--mhp-gold);
}

/* Mobile specific overrides to prevent horizontal overflow */
@media (max-width: 980px) {
    .wp-block-navigation__responsive-container-content .wp-block-navigation__submenu-container {
        min-width: 100%;
        position: relative;
        transform: none;
        left: 0;
        box-shadow: none;
    }
    .wp-block-navigation-submenu__toggle{
        font-weight:700!important;
    }
    .wp-block-navigation .has-child .wp-block-navigation-submenu__toggle[aria-expanded=true]~.wp-block-navigation__submenu-container{
        position:relative;
        border:none;
        flex-basis:100%;
    }
    .wp-block-navigation .wp-block-navigation-submenu .wp-block-navigation-submenu .wp-block-navigation-item__label{
        font-weight: 400!important;
    }
    .wp-block-navigation .wp-block-navigation-item{
        flex-wrap:wrap;
    }
}
.mhp-header-bar .wp-block-navigation .wp-block-navigation__submenu-container a { color: var(--mhp-ink); }
li.mhp-support-pill > a{
  background: var(--mhp-gold)!important; color: var(--mhp-ink) !important;
  border-radius: 30px; padding: 0.5rem 1.25rem !important; font-weight: 700 !important;padding-right:2rem!important;
}
li.mhp-support-pill > a:hover{ background: #FFBF18!important; }

@media (min-width:981px){
    header .wp-block-navigation>li.wp-block-navigation-item{
    padding:1rem 0px;
}
.wp-block-navigation.items-justified-right .wp-block-navigation__container .has-child .wp-block-navigation__submenu-container{
    left:50%;
    transform: translate(-50%);
    border-top:none;
    border-radius: 8px;
    box-shadow: 4px 8px 16px 0 rgba(0, 0, 0, 0.20);
    overflow:hidden;
    padding: 0.75rem 0;
    width:max-content;
}
li.mhp-support-pill .wp-block-navigation__submenu-icon{
    position: absolute;
    right: 1rem;
    z-index: 9;
}
.wp-block-navigation .has-child .wp-block-navigation__submenu-container>.wp-block-navigation-item>.wp-block-navigation-item__content{
    padding:0.5rem 1rem!important;
    font-weight:400;
}
}

/* --- Footer --- */
.mhp-footer-links ul { list-style: none; padding-left: 0; margin: 0; }
.mhp-footer-links li { padding: 5px 0; }
.mhp-footer-links a, .mhp-footer-info, .mhp-footer-info a { color: #fff; text-decoration: none; }
.mhp-footer-links a:hover { color: var(--mhp-gold); }
.mhp-footer-links h4 {
  color: #fff; text-transform: uppercase; letter-spacing: 1px;
  font-size: 20px; font-weight: 700; margin: 18px 0 8px;
}
.mhp-footer-links h4 a { color: #fff; }
.mhp-gold-rule { border: none; border-top: 1px solid var(--mhp-gold); }

/* --- Instagram strip --- */
.mhp-ig-wrap { display: grid; grid-template-columns: repeat(6, 1fr); gap: 12px; max-width: 1200px; margin: 0 auto; }
.mhp-ig-wrap img { width: 100%; aspect-ratio: 1/1; object-fit: cover; border-radius: 12px; display: block; }
@media (max-width: 980px) { .mhp-ig-wrap { grid-template-columns: repeat(3, 1fr); } }

/* --- Gravity Forms --- */
.gform_wrapper input[type="submit"], .gform_wrapper .gform_button, .gform_wrapper button.gform_button {
  background: var(--mhp-mid) !important; color: #fff !important; border: none !important;
  border-radius: 30px !important; padding: 14px 32px !important; font-weight: 700 !important;
  font-family: 'Open Sans', sans-serif !important; font-size: 16px !important; cursor: pointer;
  width:100%!important;
}
.gfield--input-type-consent {
    margin-top: 8px !important;
}
.gform-theme--foundation .gform_fields{
    row-gap:8px;
}
.gform_heading{
    display:none;
}
.mhp-form .gform_wrapper input[type="submit"], .mhp-form .gform_wrapper .gform_button {
  background: var(--mhp-gold) !important; color: var(--mhp-ink) !important;
}
.gform_wrapper .gfield_label { font-weight: 700; color: var(--mhp-ink); }
.gform_wrapper input[type="text"], .gform_wrapper input[type="email"], .gform_wrapper textarea {
  border: 1px solid var(--mhp-mid) !important; border-radius: 8px !important; padding: 12px !important; background: #fff !important;
}
.gform_wrapper .gfield_consent_label, .gform_wrapper .gfield_checkbox label { font-style: italic; font-size: 14px; }

/* --- Hero (cover) --- */
.mhp-hero h1 { color: #fff; text-shadow: 0 1px 12px rgba(0, 0, 0, 0.35); font-weight: 500; }
.mhp-hero p { color: #fff; font-size: 1.15rem; text-shadow: 0 1px 10px rgba(0, 0, 0, 0.3); }

/* --- Logo grid --- */
.mhp-logo-grid img { max-height: 90px; width: auto; object-fit: contain; }
.mhp-logo-grid .wp-block-image { display: flex; justify-content: center; align-items: center; }

/* utility */
.mhp-center { text-align: center; }

/* Full-bleed sections: pull alignfull children past root padding */
.wp-block-post-content > .alignfull,
main > .alignfull, main .wp-block-post-content > .alignfull {
  margin-left: calc(var(--wp--style--root--padding-left, 0px) * -1) !important;
  margin-right: calc(var(--wp--style--root--padding-right, 0px) * -1) !important;
  max-width: none !important;
  width: auto !important;
}

/* Header & Nav */
.announcement-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 14px;
}

.announcement-header h2 {
    font-size: 24px;
    font-weight: 800;
    margin: 0;
}

.swiper-nav-buttons {
    display: flex;
    gap: 10px;
}

.swiper-prev, .swiper-next {
    border: 2px solid #0E1901;
    width: 40px;
    height: 35px;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    border-radius:0.25rem;
}

.swiper-prev svg, .swiper-next svg { width: 24px; }

/* Card Layout */
.announcement-card {
    background: #fff;
    border-radius: 15px;
    box-shadow: 0 8px 16px 0 rgba(0, 0, 0, 0.25);
    display: flex;
    overflow: hidden;
    margin: 10px 20px 20px 20px;
}
.swiper{
    margin-left: -20px;
    margin-right: -20px;
}
.announcement-content {
    flex: 1;
    padding: 40px;
}

.announcement-image {
    flex: 1;
    padding: 40px 40px 40px 0px;
    display:flex;
    align-items:center;
}

.announcement-image img {
    width: 100%;
    aspect-ratio:16/10;
    border-radius: 10px;
}

/* Typography */
.announcement-title {
    color: #4a6728;
    line-height: 1.2;
    margin:0px;
}

.announcement-date {
    font-size: 18px;
    margin-bottom: 15px;
}

.announcement-text {
    margin-bottom: 30px;
}

/* Buttons */
.announcement-actions {
    display: flex;
    gap: 1rem;
}

/* Mobile Responsive */
@media (max-width: 768px) {
    .announcement-card { flex-direction: column; }
    .announcement-image { order: -1;padding:24px 24px 0px 24px; }
    .announcement-actions{
        flex-direction:column;
    }
    .announcement-content{
        padding:20px 24px 24px 24px;
    }
    .reverse{
        flex-direction:column-reverse!important;
    }
    .wp-block-button .wp-block-button__link,.wp-block-buttons>.wp-block-button{
        width:100%;
    }
    main.has-global-padding{
        padding-left:20px;
        padding-right:20px;
    }
    .mobile-fw{
        margin-left:-20px;
        margin-right:-20px;
        border-radius:0px;
    }
    .mobile-fw img{
        border-radius:0px;
    }
    .announcement-header h2{
        max-width:200px;
    }
    .center-m{
        text-align: center;
    }
}
.wp-block-column-link-wrapper{
    flex-grow: 1;
    min-width: 0;
    overflow-wrap: break-word;
    word-break: break-word;
}
.home .wp-block-gallery figure{
    width: auto !important;
    object-fit: contain;
    min-width: 0px !important;
    flex: 0 1 auto;
    align-items: center;
    margin: auto !important;
}
.home .wp-block-gallery.has-nested-images figure.wp-block-image img {
    display: block;
    height: 100%;
    max-width: 100%;
    width: auto;
    object-fit: contain !important;
}
footer {
    margin: 0px;
}

/* 1. Hide the group and turn it into a floating modal */
#newsletter-popup {
    display: none !important; /* Hidden by default */
    position: fixed !important;
    top: 50% !important;
    left: 50% !important;
    transform: translate(-50%, -50%) !important;
    z-index: 999999 !important;
    width: 90% !important;
    max-width: 640px !important;
    margin: 0 !important; /* Remove FSE margins */
    box-shadow: 0 20px 50px rgba(0,0,0,0.5) !important;
    border-radius: 24px;
}

/* 2. Show it when the 'is-active' class is added via JS */
#newsletter-popup.is-active {
    display: block !important;
}

/* 3. The Dark Background Overlay */
#popup-overlay {
    display: none;
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(0, 0, 0, 0.8);
    z-index: 999998;
}

#popup-overlay.is-active {
    display: block;
}
#newsletter-popup h3{
    margin:0px;
}
#newsletter-popup h3, #newsletter-popup p{
    text-align:center;
}
#newsletter-popup .gform_wrapper{
    margin:0px!important;
}
/* Ensure the popup stays visible even after AJAX reload */
#newsletter-popup.is-active {
    display: flex !important;
    flex-direction: column;
    align-items: center;
    justify-content: center;
}

/* Style the confirmation message specifically for the popup */
#newsletter-popup .gform_confirmation_message {
    text-align:center;
}
/* 4. Disable scrolling on the body when open */
body.popup-open {
    overflow: hidden;
}
a.close-pop-up {
    line-height: 1;
    position: absolute;
    right: 20px;
    top: 20px;
}
/* Launch 2026-10-28: removed accent-4:transparent + :focus outline suppression (WCAG 2.4.7). */
:where(.wp-site-blocks) :focus-visible,
.wp-block-navigation__responsive-container :focus-visible{
outline:3px solid #D69F16;
outline-offset:2px;
box-shadow:0 0 0 5px #0E1901; /* ink halo keeps the ring >=3:1 on white/cream */
}
/* core prints :where(.wp-site-blocks :focus){outline:2px solid} (no colour): hide it for mouse/tap focus only */
:where(.wp-site-blocks) :focus:not(:focus-visible){outline:none;}
/* search results: page dates are import dates, not meaningful */
.search .wp-block-post-date{display:none;}
/* 1. Hide the desktop menu and show the hamburger at your new breakpoint */
@media (max-width: 980px) { /* Change 1100px to your desired toggle point */

    /* Force the hamburger button to show */
    .wp-block-navigation__responsive-container-open.wp-block-navigation__responsive-container-open {
        display: flex !important;
    }

    /* Hide the horizontal desktop menu container */
    .wp-block-navigation__responsive-container:not(.is-menu-open) {
        display: none !important;
    }

    /* 2. Ensure the overlay/modal behaves like a mobile menu even on larger screens */
    .wp-block-navigation__responsive-container.is-menu-open {
        display: flex !important;
        position: fixed;
        top: 0;
        right: 0;
        bottom: 0;
        left: 0;
        z-index: 999999;
    }
    
    /* Optional: If you see the desktop menu "flicker" on load, 
       ensure the list inside is hidden */
    .wp-block-navigation__responsive-container:not(.is-menu-open) .wp-block-navigation__container {
        display: none !important;
    }
}
.wp-block-navigation.items-justified-right{
    flex-wrap:nowrap;
}
/* =====================================================================
   Launch QA fixes 2026-10-29 (page-by-page review of all 89 pages).
   Repo: explore-projects/mthelixpark-rebuild CHANGELOG 2026-10-29.
   ===================================================================== */

/* Phone gutter: main is padded 20px under 768px, so full-bleed sections must
   pull out 20px too (they used the 30px root value and overshot the screen). */
@media (max-width: 768px) {
  main.has-global-padding { --wp--style--root--padding-left: 20px; --wp--style--root--padding-right: 20px; }
}

/* White feature cards: an inset card in the content column, with real padding,
   instead of a full-bleed band with the heading touching its edges. */
html body main .mhp-cream-card.alignfull {
  margin-left: auto !important;
  margin-right: auto !important;
  max-width: var(--wp--style--global--wide-size, 1266px) !important;
  width: auto !important;
}
.mhp-cream-card {
  padding-top: clamp(28px, 4vw, 48px) !important;
  padding-bottom: clamp(28px, 4vw, 48px) !important;
  box-sizing: border-box;
}
@media (max-width: 768px) {
  .mhp-cream-card { padding-left: 20px !important; padding-right: 20px !important; }
}

/* Green cards side by side: same height, buttons on one line. */
.wp-block-columns:has(> .wp-block-column.mhp-card) { align-items: stretch !important; }
.wp-block-columns > .wp-block-column.mhp-card { align-self: stretch !important; display: flex; flex-direction: column; }
.wp-block-column.mhp-card > .wp-block-buttons { margin-top: auto !important; }
/* Card groups inside columns (e.g. the flora grid) fill their column. */
.wp-block-columns:not(.are-vertically-aligned-center) > .wp-block-column > .wp-block-group.has-background:only-child { height: 100%; }

/* Gold link tiles: equal widths in a row; stacked evenly on phones. */
.wp-block-columns > .wp-block-column-link-wrapper > .wp-block-column.mhp-tile,
.wp-block-columns > .wp-block-column.mhp-tile { flex: 1 1 0 !important; min-width: 0; }
@media (max-width: 781px) {
  .wp-block-columns > .wp-block-column-link-wrapper > .wp-block-column.mhp-tile,
  .wp-block-columns > .wp-block-column.mhp-tile { flex-basis: 100% !important; }
}

/* Outline buttons on photo heroes: white, so they can be read on a dark photo. */
.wp-block-cover .mhp-btn-outline .wp-block-button__link { color: #fff; border-color: #fff; }
.wp-block-cover .mhp-btn-outline .wp-block-button__link:hover { background: #fff; color: var(--mhp-ink); }

/* Hero titles over bright parts of a photo: a firmer shadow. */
.mhp-hero h1 { text-shadow: 0 1px 3px rgba(0, 0, 0, 0.45), 0 2px 18px rgba(0, 0, 0, 0.45); }
.mhp-hero p { text-shadow: 0 1px 3px rgba(0, 0, 0, 0.5), 0 2px 14px rgba(0, 0, 0, 0.4); }

/* Photo galleries: a lone photo in the last row keeps its tile size instead of
   stretching across the page; leftovers are centred. (Home logo wall has its own rules.) */
body:not(.home) .wp-block-gallery.has-nested-images figure.wp-block-image { flex-grow: 0 !important; }
body:not(.home) .wp-block-gallery.has-nested-images { justify-content: center; }
.wp-block-gallery figcaption.wp-element-caption {
  font-size: 14px;
  font-weight: 600;
  background: linear-gradient(0deg, rgba(14, 25, 1, 0.78), rgba(14, 25, 1, 0)) !important;
  padding-top: 24px;
}

/* Headings directly above a gallery or photo get breathing room. */
main h2.wp-block-heading + :is(.wp-block-gallery, figure.wp-block-image, .wp-block-image) { margin-top: 24px !important; }

/* Buttons: 44px minimum tap height; bigger tap area on the phone menu button. */
.wp-block-button__link.wp-element-button { min-height: 44px; display: inline-flex; align-items: center; justify-content: center; }
.wp-block-navigation__responsive-container-open { padding: 10px; margin: -10px; }

/* Body text wraps normally (no early line breaks); headings keep balanced wrapping. */
main p, main li, footer p { text-wrap: wrap; }

/* Home "Special Recognition": Junk Medics logo was squashed on phones. */
img.wp-image-1271 { height: auto !important; max-width: 100%; }

/* --- Launch QA fixes, round 2 (2026-10-29, after the verification pass) --- */
/* Cards and tiles had height:100%, which cancels the stretch: let the row set the height. */
.wp-block-columns > .wp-block-column.mhp-card,
.wp-block-columns > .wp-block-column.mhp-tile,
.wp-block-columns > .wp-block-column-link-wrapper > .wp-block-column.mhp-tile { height: auto !important; }
/* Keep the usual space between card text and its button (margin-top:auto lines buttons up). */
.wp-block-column.mhp-card > .wp-block-buttons { padding-top: 20px !important; }
@media (min-width: 782px) and (max-width: 1000px) {
  .mhp-card .wp-block-buttons { padding-left: 16px; padding-right: 16px; }
  .mhp-card .wp-block-button__link { white-space: nowrap; padding-left: 12px; padding-right: 12px; }
}
/* White cards: cap at the content width (the theme's wide size is 1440px). */
html body main .mhp-cream-card.alignfull { max-width: var(--wp--style--global--content-size, 1280px) !important; }
/* "More Photos" style headings above a full-width photo group. */
main h2.wp-block-heading + .wp-block-group:has(> :is(.wp-block-gallery, .wp-block-image, figure):first-child) { margin-top: 24px !important; }
/* Newsletter band and footer use the same side gutter as the page (20px on phones). */
footer .has-cream-background-color.has-global-padding {
  padding-left: var(--wp--style--root--padding-left) !important;
  padding-right: var(--wp--style--root--padding-right) !important;
}
@media (max-width: 768px) {
  footer.wp-block-template-part { --wp--style--root--padding-left: 20px; --wp--style--root--padding-right: 20px; }
}
/* Top bar fits on one line on small phones. */
@media (max-width: 420px) { .mhp-announce p { font-size: 14px; } }
/* Calendar section: same gutter and width as the rest of the page. */
.mhp-calendar-section.alignfull {
  padding-left: var(--wp--style--root--padding-left) !important;
  padding-right: var(--wp--style--root--padding-right) !important;
}
.mhp-calendar-section > .mhp-cal { max-width: var(--wp--style--global--content-size, 1280px) !important; }

/* --- Launch QA fixes, round 3 (2026-10-29): Ryan's items 1-6 (flyers, festival, history, contact/stock, line length, small images) --- */
/* Item 1: /events/ (page 796) square text flyers in .mhp-card show whole (contain on card green); photos 631 and 616 keep cover */
.page-id-796 .mhp-card img:is(.wp-image-346,.wp-image-280,.wp-image-251,.wp-image-1445,.wp-image-1446,.wp-image-1447,.wp-image-238,.wp-image-1449,.wp-image-426,.wp-image-396){object-fit:contain!important;background:#223B05;}
/* Item 1: /nature-day/ (page 828) square Nature Day flyer in the cropped Photo Highlights gallery shows whole */
.page-id-828 .wp-block-gallery img.wp-image-280{object-fit:contain!important;background:#fff;}
/* Item 1: /art-in-the-park/ (page 775) Summer 2022 Art Camp flyer in the cream card shows uncropped at its own ratio (theme caps .mhp-rounded img at max-height 620px + cover) */
.page-id-775 .mhp-cream-card img.wp-image-681{object-fit:contain!important;height:auto!important;aspect-ratio:655/838!important;max-height:none!important;}

/* Festival (page 797): every logo sits in the same 210x90 box, scaled to fit (small logos grow, big ones shrink) */
.page-id-797 .mhp-logo-grid .wp-block-image{margin:0;display:flex;justify-content:center;align-items:center}
.page-id-797 .mhp-logo-grid .wp-block-image img{width:100%;max-width:210px;height:90px;max-height:none;object-fit:contain}
/* Festival (page 797): on phone, logo rows wrap 3 across instead of stacking one per row */
@media (max-width:781px){
.page-id-797 .mhp-logo-grid.wp-block-columns{flex-wrap:wrap!important;justify-content:center;gap:20px 12px}
.page-id-797 .mhp-logo-grid.wp-block-columns>.wp-block-column{flex:0 0 calc((100% - 24px)/3)!important;min-width:0}
.page-id-797 .mhp-logo-grid .wp-block-image img{height:64px}
}
/* Item 4, /stock-donation/ (post 770): adds a little space between the 'Questions or Comments?' intro line and the form now that they share one column. Optional polish; the layout is correct without it. */
.mhp-form-intro .gform_wrapper{margin-top:28px}
/* caroling (page 784): widen the song area to the wide size so columns have room */
.mhp-carols{max-width:var(--wp--style--global--wide-size,1200px);margin-left:auto!important;margin-right:auto!important}
/* caroling (page 784): 2 columns of songs on tablet/desktop, 3 on wide desktop; phone stays 1 column */
@media (min-width:782px){.mhp-carols{column-count:2;column-gap:3rem}}
@media (min-width:1100px){.mhp-carols{column-count:3}}
/* caroling (page 784): keep each song together in one column */
.mhp-carols>.mhp-song{break-inside:avoid;page-break-inside:avoid;display:block;padding-top:1px}
/* caroling (page 784): space between songs in the column layout */
@media (min-width:782px){.mhp-carols>.mhp-song{margin:0 0 2rem!important}}
/* caroling (page 784): no extra gap above the first line of each column */
.mhp-carols>.mhp-song>h3{margin-top:0}
/* history (page 810): film embeds side by side, top-aligned */
.mhp-films{align-items:flex-start}
/* history (page 810): film titles sit flush at the top of each column */
.mhp-films h3{margin-top:0}

/* Nature Day (page 828), 2026 Sponsors row: top-align the three sponsor columns so the labels line up */
.page-id-828 .mhp-sponsor-logos.wp-block-columns{align-items:flex-start}
.page-id-828 .mhp-sponsor-logos .wp-block-column{align-self:flex-start}
/* Nature Day (page 828), 2026 Sponsors row: give all three logos the same 320x90 box so they look a similar size */
.page-id-828 .mhp-sponsor-logos .wp-block-image img{width:320px;max-width:100%;height:90px;max-height:none;object-fit:contain}
/* heART contest (page 790): show the whole winners collage (contain, not cover-crop), centered, with rounded corners and a light frame */
.page-id-790 .wp-block-image.mhp-winners-collage img{width:auto;max-width:100%;height:auto;max-height:620px;object-fit:contain;display:block;margin-inline:auto;border:1px solid rgba(0,0,0,.1)}
/* Tarzan (page 849): at tablet and small laptop widths, move the hero poster up so the cut-off ALL ABILITIES lettering is out of frame (desktop uses the block focal point of 44%) */
@media (min-width:900px) and (max-width:1099px){.page-id-849 .mhp-hero img.wp-image-242{object-position:50% 33% !important}}
/* --- Item 5 (2026-10-29): readable line length for body text in single-column sections --- */
/* Left-aligned paragraphs and lists in plain single-column sections: about 75 characters per line. Core centres
   these children (margin auto !important), so the left margin is set to where the 1280px content column starts,
   keeping the text on the same left edge as the heading above it. Skips centred bands, columns, cards, heroes,
   forms and the calendar. (Only text group with its own narrower content width today is the .mhp-form intro.) */
main .is-layout-constrained:not(.wp-block-post-content):not(main):not(.mhp-center):not(.mhp-form) > :is(p, ul, ol):not(.has-text-align-center):not(.has-text-align-right):not(.has-background):not(:is(.wp-block-column, .wp-block-cover, .wp-block-media-text, .wp-block-quote, form, .gform_wrapper, .mhp-card, .mhp-tile, .mhp-hero, .mhp-cal, .mhp-calendar-section) *) {
  max-width: min(75ch, 100%) !important;
  margin-left: max(0px, (100% - var(--wp--style--global--content-size, 1280px)) / 2) !important;
  margin-right: auto !important;
}
/* Same cap for text placed straight in the page content (that column is full width, so text starts at its left edge). */
main .wp-block-post-content.is-layout-constrained > :is(p, ul, ol):not(.has-text-align-center):not(.has-text-align-right):not(.has-background) {
  max-width: min(75ch, 100%) !important;
  margin-left: 0 !important;
  margin-right: auto !important;
}
/* FAQ answers (details blocks) in single-column sections: same 75-character cap, still flush left under the question. */
main .is-layout-constrained > .wp-block-details > :is(p, ul, ol):not(:is(.wp-block-column, .wp-block-cover, .mhp-card, .mhp-tile, .mhp-hero) *) {
  max-width: 75ch;
}
/* Centred paragraphs (centre-aligned blocks or centred bands) stay centred, capped at about 65 characters per line. */
main .is-layout-constrained > p.has-text-align-center:not(.has-background):not(:is(.wp-block-column, .wp-block-cover, .wp-block-media-text, .wp-block-quote, form, .gform_wrapper, .mhp-card, .mhp-tile, .mhp-hero, .mhp-cal, .mhp-calendar-section) *),
main .is-layout-constrained.mhp-center > :is(p, .wp-block-quote):not(.has-text-align-left):not(.has-background):not(:is(.wp-block-column, .wp-block-cover, .mhp-card, .mhp-tile, .mhp-hero) *) {
  max-width: min(65ch, 100%) !important;
}
