/**
 * Theme Name: Hello Elementor Child (Mm Custom)
 * Theme URI: https://github.com/MIGHTYminnow/hello-elementor-child
 * Description: MIGHTYminnow starter theme for Elementor sites based on Hello Elementor Child v2.0.0.
 * Author: MIGHTYminnow
 * Author URI: https://mightyminnow.com/
 * Template: hello-elementor
 * Version: 2.4.1
 * Text Domain: hello-mm
 */

/**
 * ############################################################################
 * #                                WARNING                                   #
 * ############################################################################
 *
 * DO NOT ADD SITE-SPECIFIC "ONE-OFF" STYLES TO THIS FILE.
 * 
 * This stylesheet is reserved for MIGHTYminnow "Starter Styles" only. 
 * Any CSS specific to this individual site should be added via:
 * Appearance > Customize > Additional CSS
 * #############################################################################
 */

/**
 * Spacing for headings, paragraphs, lists, and more
 * Elementor, theme post content, and classic/editor output
 */

/* --- Elementor text widgets and theme post content --- */
/* Add spacing before headings following paragraphs or lists */
.elementor-widget-text-editor p+h2,
.elementor-widget-text-editor p+h3,
.elementor-widget-text-editor p+h4,
.elementor-widget-text-editor p+h5,
.elementor-widget-text-editor p+h6,
.elementor-widget-text-editor ul+h2,
.elementor-widget-text-editor ul+h3,
.elementor-widget-text-editor ul+h4,
.elementor-widget-text-editor ul+h5,
.elementor-widget-text-editor ul+h6,
.elementor-widget-text-editor ol+h2,
.elementor-widget-text-editor ol+h3,
.elementor-widget-text-editor ol+h4,
.elementor-widget-text-editor ol+h5,
.elementor-widget-text-editor ol+h6,
.elementor-widget-theme-post-content p+h2,
.elementor-widget-theme-post-content p+h3,
.elementor-widget-theme-post-content p+h4,
.elementor-widget-theme-post-content p+h5,
.elementor-widget-theme-post-content p+h6,
.elementor-widget-theme-post-content ul+h2,
.elementor-widget-theme-post-content ul+h3,
.elementor-widget-theme-post-content ul+h4,
.elementor-widget-theme-post-content ul+h5,
.elementor-widget-theme-post-content ul+h6,
.elementor-widget-theme-post-content ol+h2,
.elementor-widget-theme-post-content ol+h3,
.elementor-widget-theme-post-content ol+h4,
.elementor-widget-theme-post-content ol+h5,
.elementor-widget-theme-post-content ol+h6,
/* Add spacing before paragraphs following lists */
.elementor-widget-text-editor ul+p,
.elementor-widget-text-editor ol+p,
.elementor-widget-theme-post-content ul+p,
.elementor-widget-theme-post-content ol+p,
/* Add spacing before any non-initial headings */
.elementor-widget-text-editor h2:not(:first-of-type),
.elementor-widget-text-editor h3:not(:first-of-type),
.elementor-widget-text-editor h4:not(:first-of-type),
.elementor-widget-text-editor h5:not(:first-of-type),
.elementor-widget-text-editor h6:not(:first-of-type), 
#content .page-content > h2, 
#content .page-content > h3, 
#content .page-content > h4, 
#content .page-content > h5,
#content .page-content > h6, 
#content .page-content ul+p{
  margin-top: 1.15em;
}

/* Spacing after headings before lists */
.elementor-widget-text-editor h2+ul,
.elementor-widget-text-editor h2+ol,
.elementor-widget-text-editor h3+ul,
.elementor-widget-text-editor h3+ol,
.elementor-widget-theme-post-content h2+ul,
.elementor-widget-theme-post-content h2+ol,
.elementor-widget-theme-post-content h3+ul,
.elementor-widget-theme-post-content h3+ol {
  margin-top: 1.15em;
}

/* Spacing between consecutive paragraphs */
.elementor-widget-text-editor p+p,
.elementor-widget-theme-post-content p+p {
  margin-top: 1.15em;
}

/* move down the default elementor page titles*/
.page-header h1.entry-title{
	padding-top: 50px;
}
/* underline links in page content elementor sections and single post content */
.elementor-widget-text-editor a, .wp-singular.post-template-default.single.single-post .elementor-widget-theme-post-content a{
	text-decoration: underline;
}

/* Blockquote and preformatted blocks in Elementor and theme post */
.elementor-widget-text-editor p+blockquote,
.elementor-widget-text-editor ul+blockquote,
.elementor-widget-text-editor ol+blockquote,
.elementor-widget-theme-post-content p+blockquote,
.elementor-widget-theme-post-content ul+blockquote,
.elementor-widget-theme-post-content ol+blockquote,
.elementor-widget-text-editor p+pre,
.elementor-widget-theme-post-content p+pre {
  margin-top: 1.15em;
}

/* Images or figures after paragraphs in Elementor/theme post */
.elementor-widget-text-editor p+img,
.elementor-widget-text-editor p+figure,
.elementor-widget-theme-post-content p+img,
.elementor-widget-theme-post-content p+figure {
  margin-top: 1.15em;
}
/* remove space at below the last paragraph in a text section */
.elementor-widget-text-editor p:last-of-type{
	margin-bottom: 0;
}

/* --- Classic WordPress editor output (.entry-content, .post-content) --- */
/* Headings after paragraphs/lists */
.entry-content p+h2,
.entry-content p+h3,
.entry-content p+h4,
.entry-content p+h5,
.entry-content p+h6,
.entry-content ul+h2,
.entry-content ul+h3,
.entry-content ul+h4,
.entry-content ul+h5,
.entry-content ul+h6,
.entry-content ol+h2,
.entry-content ol+h3,
.entry-content ol+h4,
.entry-content ol+h5,
.entry-content ol+h6,
.post-content p+h2,
.post-content p+h3,
.post-content p+h4,
.post-content p+h5,
.post-content p+h6,
.post-content ul+h2,
.post-content ul+h3,
.post-content ul+h4,
.post-content ul+h5,
.post-content ul+h6,
.post-content ol+h2,
.post-content ol+h3,
.post-content ol+h4,
.post-content ol+h5,
.post-content ol+h6,
/* Paragraphs following lists */
.entry-content ul+p,
.entry-content ol+p,
.post-content ul+p,
.post-content ol+p,
/* Non-initial headings */
.entry-content h2:not(:first-of-type),
.entry-content h3:not(:first-of-type),
.entry-content h4:not(:first-of-type),
.entry-content h5:not(:first-of-type),
.entry-content h6:not(:first-of-type),
.post-content h2:not(:first-of-type),
.post-content h3:not(:first-of-type),
.post-content h4:not(:first-of-type),
.post-content h5:not(:first-of-type),
.post-content h6:not(:first-of-type) {
  margin-top: 1.15em;
}

/* Spacing after headings before lists */
.entry-content h2+ul,
.entry-content h2+ol,
.entry-content h3+ul,
.entry-content h3+ol,
.post-content h2+ul,
.post-content h2+ol,
.post-content h3+ul,
.post-content h3+ol {
  margin-top: 0.75em;
}

/* Spacing between consecutive paragraphs */
.entry-content p+p,
.post-content p+p {
  margin-top: 1.15em;
}

/* Not sure what was originally intended to target here to remove the bottom margin,
 * but don't target elements in the header or footer.
 *
 * This fixes the vertical alignment issue of the arrows on the menus. */
.elementor-element:not(
	#site-header *,
	#site-footer *,
	.elementor-location-header *,
	.elementor-location-footer *
) :last-child {
	margin-bottom: 0;
}

/* Blockquote and preformatted blocks in classic output */
.entry-content p+blockquote,
.entry-content ul+blockquote,
.entry-content ol+blockquote,
.entry-content p+pre,
.post-content p+blockquote,
.post-content ul+blockquote,
.post-content ol+blockquote,
.post-content p+pre {
  margin-top: 1.15em;
}

/* Images or figures after paragraphs in classic output */
.entry-content p+img,
.entry-content p+figure,
.post-content p+img,
.post-content p+figure {
  margin-top: 1.15em;
}

/**
 * Main Menu
 */

/* Make the top-level active when you are on a subpage in that menu. */
.elementor-location-header .current-menu-ancestor > .elementor-item::after{
	opacity: 1 !important;
}

/**
 * Alert Bar
 */
.elementor-alert-bar.elementor-popup-modal.dialog-widget{
	position: relative;
	height: auto !important;
}
.elementor-alert-bar .dialog-widget-content{
	position: relative;
	display: none;
}

/* ---------------------------------
 * Fix Loop Grid Equal Height
 * ---------------------------------

 Adjusts Elementor's "Equal Height"
 logic to calculate heights on a
 per-row basis instead of across the
 entire grid.

 This addresses two specific layout
 issues:

 1. Desktop/Tablet: Matches items to
 the tallest element within each row,
 rather than stretching every item in 
 the grid to match the tallest element
 in the entire grid.

 2. Mobile: Prevents large vertical 
 gaps between stacked widgets by 
 allowing heights to collapse
 naturally instead of inheriting a
 fixed grid-wide height.

 Preserves Equal Height when mobile is
 set to more than 1 column.

 * -------------------------------- */
.elementor-loop-container{
  grid-auto-rows: auto !important;
}

/* ============================================================
   Ha Ha Harvest 2026 — minimal CSS

   Everything visual is set in Elementor: colours and type in Site
   Settings, layout and spacing on the containers, per-device
   behaviour on the responsive tabs. Edit the site in Elementor,
   not here.

   Only three things live in this file, because Elementor exposes
   no control for them:
     1. Keyboard focus outlines (no focus-state control exists).
     2. Leaflet map styling (the map is an HTML widget; Elementor's
        own map widget needs a Google API key and cannot be muted).
     3. The skip-link target, which must not draw a focus ring.
     4. The two-tone wordmark: Elementor has no per-word color
        control, so "Harvest" is a span. Approved exception.
   ============================================================ */

/* 4. Wordmark: "Ha Ha" takes the heading color, "Harvest" goes white */
.hhh-word-alt{color:#FFFFFF}   /* 18.81:1 on ink */

/* 1. Focus visibility — WCAG 2.4.7 */
a:focus-visible,
button:focus-visible,
input:focus-visible,
textarea:focus-visible,
select:focus-visible,
.elementor-button:focus-visible{
  outline:3px solid #FFC043;
  outline-offset:2px;
}

/* 2. Leaflet: muted tiles + readable attribution (3.64:1 by default) */
.hhh-tiles{filter:grayscale(1) contrast(.86) brightness(1.12) opacity(.92)}
.leaflet-container{background:#EFEAE1;font-family:"Space Grotesk",system-ui,sans-serif;z-index:0}
.leaflet-control-attribution{
  background:rgba(255,255,255,.94) !important;
  font-size:11px !important;
  color:#3B3B3B !important;
}
.leaflet-control-attribution a{color:#0B5A7A !important}   /* 7.61:1 on white */
.hhh-map{width:100%;border:1px solid #E0D6C6}
.hhh-pin span{
  display:block;width:22px;height:22px;border-radius:50%;
  background:#FF751F;border:3px solid #FFFFFF;
  box-shadow:0 1px 4px rgba(0,0,0,.4);
}
.hhh-map-popup a{color:#0B5A7A}          /* 7.61:1 on white */
.hhh-map-popup span{color:#5C5650}       /* 6.09:1 on white */

/* 5. Sitemap widget headings — WCAG 1.4.3
      Elementor's Sitemap widget has no colour or typography controls at all, and its own
      stylesheet hardcodes .elementor-sitemap-title to --e-global-color-primary, which
      beats the Site Settings heading colour on specificity. Primary is #FF751F, which is
      2.69:1 on white and fails even the 3:1 large-text threshold. Rust is 5.82:1.
      Revisit if Elementor ever gives the widget a colour control. */
.elementor-widget-sitemap .elementor-sitemap-title{color:#B8380A}

/* 6. Hide the Tickets button when a show has no ticket link
      Elementor renders a dynamic link with no value as <a class="elementor-button"
      role="button"> with no href at all, so the button still looks live and does
      nothing. Sixteen of the seventeen shows are in that state today.
      The native fix is Elementor Pro's Display Conditions, but
      can_use_display_conditions() requires an active licence and Pro is unlicensed
      on this install, so it is unavailable. The widget carries the hhh-tickets class,
      set in Elementor's own CSS Classes field, so this only ever touches ticket
      buttons. Delete this block once Pro is licensed and use Display Conditions. */
.hhh-tickets a.elementor-button:not([href]),
.hhh-filmlink a.elementor-button:not([href]){display:none}
.hhh-tickets:has(a.elementor-button:not([href])),
.hhh-filmlink:has(a.elementor-button:not([href])){display:none}

/* 7. Performer card images: one shape regardless of what the source was
      The festival slides are all 4:5, but headshots that arrive later are any shape,
      and one is 447x447, too small for WordPress to crop to 4:5 without upscaling.
      Elementor's Image widget has no crop or aspect-ratio control at all, only a
      WordPress image size, so there is no native way to force a uniform card.
      Cropped from the top because faces sit in the upper half of a headshot. */
.hhh-card-img img{
  aspect-ratio:4/5;
  object-fit:cover;
  object-position:center top;
  width:100%;
  height:auto;
}

/* 3. Skip-link target */
main#content:focus,
main#content:focus-visible{outline:none}

/* 8. Post navigation: tighten the gap between the label and the post title
      The "PREVIOUS PERFORMER" eyebrow and the name below it both inherit the
      surrounding line-height, which at 12px and 15px leaves about 15px of dead
      air between the two lines. Elementor Pro's post-navigation widget passes
      'exclude' => ['line_height'] to BOTH its Label and Post Title typography
      groups (elementor-pro/modules/theme-elements/widgets/post-navigation.php),
      so the control is deliberately absent from the panel and there is no
      native way to set it. Everything else about these two lines is still
      editable in Elementor; only the leading is fixed here. */
.elementor-widget-post-navigation span.post-navigation__prev--label,
.elementor-widget-post-navigation span.post-navigation__next--label{line-height:1.4}
.elementor-widget-post-navigation span.post-navigation__prev--title,
.elementor-widget-post-navigation span.post-navigation__next--title{line-height:1.4}
