/* UX and accessibility fixes on top of the copied WordPress styles.
   From the ui-ux-pro-max audit (scripts/ux-audit.mjs, Oct 2026): WCAG 2.2 AA,
   Apple HIG 44pt touch targets. Loaded after the theme CSS (see src/lib/wp.ts).
   Brand colors: --e-global-color-accent #2F5C47, --e-global-color-text #3F3F3F. */

/* Keyboard focus: a clear ring in the church green on every control. */
:where(a, button, input, select, textarea, summary, [tabindex]):focus-visible {
  outline: 3px solid #2F5C47;
  outline-offset: 2px;
}

/* Links inside running text are underlined, so they do not rely on color alone. */
:where(.elementor-widget-text-editor, .elementor-widget-theme-post-content, .page-content, .sermon-transcript__scroll) :where(p, li, span) a:not(.elementor-button),
.elementor-element-c33a298 .elementor-widget-container > a {
  text-decoration: underline;
  text-underline-offset: 0.15em;
}

/* Bigger tap areas, with no change to the layout: an invisible box around small links. */
:where([data-elementor-type="footer"], [data-elementor-type="header"]) :is(.elementor-icon-list-item a, .elementor-social-icon, .elementor-icon) {
  position: relative;
}
:where([data-elementor-type="footer"], [data-elementor-type="header"]) :is(.elementor-icon-list-item a, .elementor-social-icon, .elementor-icon)::after {
  content: "";
  position: absolute;
  inset: -12px -10px;
}
/* Mobile menu (popup): each link at least 44px tall. */
.elementor-location-popup .elementor-nav-menu a.elementor-item {
  min-height: 44px;
  display: flex;
  align-items: center;
}
/* Slider dots and arrows: spaced 24px apart and easier to hit. */
.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet {
  margin: 0 8px !important;
}
.swiper-pagination-bullet,
.elementor-swiper-button {
  position: relative;
}
.swiper-pagination-bullet::after {
  content: "";
  position: absolute;
  inset: -12px -8px;
}
.elementor-swiper-button::after {
  content: "";
  position: absolute;
  inset: -10px;
}

/* Privacy notes under the forms: 14px instead of 12px. */
:is(.elementor-element-e1b8509, .elementor-element-4b0bbb8, .elementor-element-afa6612, .elementor-element-8488baa) :is(.elementor-widget-container, p) {
  font-size: 14px !important;
  line-height: 1.5 !important;
}

/* E-book pages: the WordPress custom CSS turns this heading and intro text white
   below 1025px (a rule meant for another section), on light gray: almost invisible,
   on the old site too. Use the brand's dark colors there. The selectors are long on
   purpose, to outrank that rule (.elementor-11440 .elementor-element.elementor-element-x ... !important). */
@media (max-width: 1024px) {
  .elementor .elementor-element.elementor-element-111b36e8.elementor-widget .elementor-heading-title {
    color: #2F5C47 !important;
  }
  .elementor .elementor-element:is(.elementor-element-3f88507e, .elementor-element-8488baa).elementor-widget :is(.elementor-widget-container, p, li) {
    color: #3F3F3F !important;
  }
}

/* 404 page: a slightly deeper sage, so the white heading meets 3:1 contrast. */
.elementor-element.elementor-element-7ef1e7d {
  background-color: #6B8C7D !important;
}

/* Calendar: days from the next or last month were #DDD on white (1.35:1). */
.jet-calendar-week__day.day-pad .jet-calendar-week__day-date {
  color: #767676 !important;
}

/* ===== Port wave 1 (Nov 2026): Decker Prairie behavior in Memorial's look. See docs/port-plan.md. ===== */

/* B5. Desktop dropdowns: white panel with a shadow, so it shows on the green header and on photos (was green on
   green). It opens on hover and on keyboard focus, stays open 0.3s after the pointer leaves, and an invisible
   bridge covers the gap, so a slightly off path does not close it. A click still opens it (Elementor). */
.elementor-location-header .elementor-nav-menu--main .elementor-nav-menu > li { position: relative; }
.elementor-location-header .elementor-nav-menu--main .sub-menu {
  display: block !important;
  top: 100% !important;
  left: 0 !important;
  margin: 2px 0 0 !important;
  width: max-content !important;
  min-width: 12em !important;
  padding: 0;
  border-radius: 8px;
  background: #FFFFFF !important;
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.18);
  visibility: hidden !important;
  opacity: 0 !important;
  transition: visibility 0s linear 0.3s, opacity 0s linear 0.3s;
}
.elementor-location-header .elementor-nav-menu--main .sub-menu::before {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: 100%;
  height: 4px;
}
.elementor-location-header .elementor-nav-menu--main li:hover > .sub-menu,
.elementor-location-header .elementor-nav-menu--main li:focus-within > .sub-menu,
.elementor-location-header .elementor-nav-menu--main a.highlighted + .sub-menu {
  visibility: visible !important;
  opacity: 1 !important;
  transition-delay: 0s;
}
.elementor-location-header .elementor-nav-menu--main .sub-menu li:not(:last-child) { border-bottom: 1px solid #DDDDDD !important; }
.elementor-location-header .elementor-nav-menu--main .sub-menu a.elementor-sub-item {
  padding: 16px 24px !important;
  border-left: 8px solid transparent !important;
  border-radius: 0;
  background: transparent !important;
  color: #2F5C47 !important;
  white-space: nowrap;
}
.elementor-location-header .elementor-nav-menu--main .sub-menu li:first-child a { border-radius: 8px 8px 0 0; }
.elementor-location-header .elementor-nav-menu--main .sub-menu li:last-child a { border-radius: 0 0 8px 8px; }
.elementor-location-header .elementor-nav-menu--main .sub-menu li:only-child a { border-radius: 8px; }
/* B9 (MEM-4): hover in the darker sage #61796E (white text 4.70:1; the old #81A192 was 2.82:1). */
.elementor-location-header .elementor-nav-menu--main .sub-menu a.elementor-sub-item:is(:hover, :focus-visible) {
  background: #61796E !important;
  color: #FFFFFF !important;
}
/* The page you are on: the 8px side bar in the church green. */
.elementor-location-header .elementor-nav-menu--main .sub-menu a.elementor-sub-item[aria-current="page"] { border-left-color: #2F5C47 !important; }

/* B6. Search icon (F1): desktop, between the menu and the button; phones and tablets, left of the menu icon. */
.elementor-location-header a.mc-search {
  display: flex;
  align-items: center;
  justify-content: center;
  flex: none;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  color: #FFFFFF;
  transition: background-color 0.2s;
}
.elementor-location-header a.mc-search:is(:hover, :focus-visible) { background: rgba(255, 255, 255, 0.15); color: #FFFFFF; }
.elementor-location-header a.mc-search svg { width: 19px; height: 19px; fill: currentColor; }
/* The search icon takes the 32px the menu kept before the button. */
.elementor-location-header [data-widget_type="nav-menu.default"] > .elementor-widget-container { margin-right: 0 !important; }
.elementor-location-header a.mc-search--wide { margin: 0 16px 0 4px; }
.elementor-location-header a.mc-search--small { display: none; margin: 0 4px 0 auto; }
@media (max-width: 1023px) {
  .elementor-location-header a.mc-search--small { display: flex; }
}
.elementor-location-header .elementor-widget-button .elementor-button { white-space: nowrap; }

/* B15. Full menu on one line from 1024px (Decker Prairie breakpoints: phone < 600, tablet 600-1023,
   desktop >= 1024). Elementor's tablet layout switches at 1025, so the header follows at exactly 1024px. */
@media (min-width: 1024px) and (max-width: 1024px) {
  .elementor-location-header .e-con.elementor-hidden-tablet { display: flex !important; }
  .elementor-location-header .elementor-widget.elementor-hidden-tablet { display: block !important; width: auto !important; max-width: none !important; }
  .elementor-location-header .elementor-widget.elementor-hidden-desktop,
  .elementor-location-header a.mc-search--small { display: none !important; }
  .elementor-location-header .elementor-widget-theme-site-logo { flex: 0 0 170px !important; max-width: 170px !important; }
  .elementor-location-header .elementor-widget-theme-site-logo img { width: 170px !important; }
  .elementor-location-header .elementor-nav-menu--main > .elementor-nav-menu > li > a.elementor-item.elementor-item { margin: 0 !important; padding-left: 8px !important; padding-right: 8px !important; }
  .elementor-location-header .elementor-widget-button { --container-widget-width: auto; flex-shrink: 0; }
  .elementor-location-header .elementor-widget-button > .elementor-widget-container { margin: 0 !important; }
  .elementor-location-header [data-widget_type="nav-menu.default"] { --container-widget-width: auto; width: auto !important; flex: 0 0 auto; }
}
/* Small desktops (1024-1199px): tighter menu spacing, so the menu, the search icon and the button fit on one line. */
@media (min-width: 1024px) and (max-width: 1199px) {
  .elementor-location-header .elementor-nav-menu--main > .elementor-nav-menu > li > a.elementor-item { padding-left: 10px !important; padding-right: 10px !important; }
  .elementor-location-header a.mc-search--wide { margin: 0 10px 0 0; }
}
/* Small desktops (1025-1203px): 32px side margins instead of none (Elementor's 1140px boxes touched the edges). */
@media (min-width: 1025px) and (max-width: 1203px) {
  .e-con.e-parent.e-con-boxed > .e-con-inner { max-width: min(calc(100% - 64px), var(--content-width)); }
}

/* B15, H3. Footer: the email address breaks after "@" when its column is narrow (it made pages scroll sideways
   at 768-1025px). Tablets (600-1024px) get Decker Prairie's tablet footer: logo beside the map, schedule beside
   contact, pages in 3 columns. */
.elementor-location-footer a[href^="mailto:"] { overflow-wrap: anywhere; }
@media (min-width: 600px) and (max-width: 1024px) {
  .elementor-location-footer .elementor-element-49157525 > .e-con-inner { flex-wrap: wrap; row-gap: 40px; column-gap: 32px; }
  .elementor-location-footer .elementor-element.elementor-element-2976a1f8 { --flex-direction: row; --width: 100%; width: 100%; max-width: 100%; order: 0; align-items: flex-start; gap: 32px; }
  .elementor-location-footer .elementor-element.elementor-element-2976a1f8 > .elementor-element { flex: 1 1 0; width: auto; min-width: 0; }
  .elementor-location-footer .elementor-element.elementor-element-184327b9 { --width: calc(50% - 16px); width: calc(50% - 16px); max-width: calc(50% - 16px); order: 1; }
  .elementor-location-footer .elementor-element.elementor-element-75b109c5 { --width: calc(50% - 16px); width: calc(50% - 16px); max-width: calc(50% - 16px); order: 2; }
  .elementor-location-footer .elementor-element.elementor-element-47058f3b { --width: 100%; width: 100%; max-width: 100%; order: 3; }
  .elementor-location-footer .elementor-element-161520e3 ul.elementor-nav-menu { display: block; columns: 3; column-gap: 32px; }
  .elementor-location-footer .elementor-element-161520e3 ul.elementor-nav-menu > li { break-inside: avoid; }
  .elementor-location-footer .elementor-element-18cf4467 ul.elementor-nav-menu > li { width: 33.33%; }
}

/* B8. Phone menu (popup 591): every page as a plain link, the panel scrolls on short screens. */
#elementor-popup-modal-591 .dialog-message {
  max-height: 100vh;
  max-height: 100dvh;
  overflow-y: auto;
  overscroll-behavior: contain;
}
/* B9 (MEM-4): the darker sage, so the white links pass 4.5:1. */
.elementor-591 .elementor-element.elementor-element-501d2a5:not(.elementor-motion-effects-element-type-background),
.elementor-591 .elementor-element.elementor-element-3ca5dcc .elementor-nav-menu--dropdown {
  background-color: #61796E !important;
}
.elementor-591 .elementor-element.elementor-element-3ca5dcc .elementor-nav-menu--dropdown a:is(:hover, :focus-visible, .elementor-item-active) {
  background-color: #2F5C47 !important;
  color: #FFFFFF !important;
}

/* B10, C4, J2. Short Clips dots, like the sermon carousel's (public/js/slider-patch.js). */
.mc-dots.swiper-pagination {
  position: static !important;
  display: flex;
  justify-content: center;
  width: 100% !important;
  transform: none !important;
  margin-top: 16px;
  line-height: 0;
}
.mc-dots .swiper-pagination-bullet {
  width: 8px;
  height: 8px;
  margin: 0 8px !important;
  background: #2F5C47;
  opacity: 0.35;
}
.mc-dots .swiper-pagination-bullet-active { opacity: 1; }
/* More than 6 slides: only 6 dots show; the outer ones shrink when more lie beyond. */
.swiper-pagination-bullet[hidden] { display: none !important; }
.swiper-pagination-bullet.dot-edge { transform: scale(0.6); }
/* J2. Reduced motion: no entrance animations (the content shows at once) and no sliding (slider-patch.js). */
@media (prefers-reduced-motion: reduce) {
  .elementor-invisible { visibility: visible !important; }
  .animated, .elementor-element.animated { animation: none !important; }
}

/* F1. Search panel (public/js/site-search.js). */
.site-search {
  width: min(680px, calc(100% - 32px));
  max-width: none;
  max-height: calc(100% - 12vh);
  margin: 8vh auto auto;
  padding: 0;
  border: 0;
  border-radius: 16px;
  background: #FFFFFF;
  box-shadow: 0 16px 48px rgba(0, 0, 0, 0.25);
  color: #3F3F3F;
  font-family: Quicksand, sans-serif;
  overflow: auto;
  overscroll-behavior: contain;
}
.site-search::backdrop { background: rgba(0, 0, 0, 0.55); }
.site-search-bar {
  position: sticky;
  top: 0;
  z-index: 1;
  display: flex;
  align-items: center;
  gap: 12px;
  margin: 0;
  padding: 12px 16px;
  border-bottom: 1px solid #DDDDDD;
  background: #FFFFFF;
}
.site-search-icon { display: flex; color: #2F5C47; }
.site-search-icon svg { width: 18px; height: 18px; fill: currentColor; }
.site-search .site-search-input {
  flex: 1;
  min-width: 0;
  padding: 10px 0;
  border: 0;
  outline: 0;
  background: none;
  color: #000000;
  font: inherit;
  font-size: 18px;
  line-height: 26px;
}
.site-search .site-search-close {
  padding: 10px 6px;
  border: 0;
  background: none;
  color: #2F5C47;
  font: inherit;
  font-size: 16px;
  font-weight: 600;
  cursor: pointer;
}
.site-search .site-search-close:hover { background: none; color: #2F5C47; text-decoration: underline; }
.site-search-status { margin: 0; padding: 0 20px; font-size: 16px; line-height: 24px; }
.site-search-status:not(:empty) { padding-block: 16px; }
.site-search-results:not(:empty) { padding-bottom: 12px; }
.site-search-group { display: flex; flex-direction: column; padding: 8px 8px 4px; }
.site-search-group + .site-search-group { border-top: 1px solid #DDDDDD; }
.site-search .site-search-group-title {
  margin: 0;
  padding: 8px 12px 4px;
  color: #61796E;
  font-size: 14px;
  font-weight: 700;
  line-height: 20px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}
.site-search-more { align-self: flex-start; margin: 4px 12px 8px; color: #2F5C47; font-size: 16px; font-weight: 600; text-decoration: underline; }
.search-hit { display: flex; gap: 16px; padding: 10px 12px; border-radius: 10px; color: #3F3F3F; }
.search-hit:hover, .search-hit:focus-visible { background: #EFF7F5; color: #3F3F3F; }
.search-hit-text { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.search-hit-title { color: #2F5C47; font-size: 17px; font-weight: 700; line-height: 24px; }
.search-hit-meta { color: #4A4A4A; font-size: 14px; line-height: 20px; }
.search-hit-excerpt { font-size: 15px; line-height: 22px; }
.search-hit-excerpt mark { background: #B1D0C8; color: inherit; border-radius: 2px; }
@media (max-width: 599px) {
  .site-search { width: 100%; height: 100%; max-height: none; margin: 0; border-radius: 0; }
}

/* F2. Verse pop-ups (public/js/scripture.js). A reference reads like the links around it. */
button.bibleref {
  display: inline;
  margin: 0;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: none;
  color: inherit;
  font: inherit;
  letter-spacing: inherit;
  text-align: inherit;
  text-transform: inherit;
  text-decoration: underline dotted;
  text-decoration-thickness: 1.5px;
  text-underline-offset: 3px;
  cursor: pointer;
}
button.bibleref:hover, button.bibleref:focus, button.bibleref[aria-expanded="true"] { background: none; color: inherit; text-decoration-style: solid; }
.bibleref-nowrap { white-space: nowrap; }
.verse-pop {
  position: absolute;
  z-index: 10000;
  padding: 16px 18px;
  border-radius: 12px;
  background: #FFFFFF;
  color: #3F3F3F;
  box-shadow: 0 12px 32px -8px rgba(0, 0, 0, 0.28), 0 0 0 1px rgba(0, 0, 0, 0.06);
  font-family: Quicksand, sans-serif;
  font-size: 16px;
  font-weight: 500;
  line-height: 1.55;
  text-align: left;
}
.verse-pop[hidden] { display: none; }
.vp-head { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; margin-bottom: 6px; }
.vp-ref { font-weight: 700; color: #2F5C47; }
.vp-ver { font-size: 14px; font-weight: 700; letter-spacing: 0.08em; color: #61796E; }
.vp-text { max-height: 50vh; overflow-y: auto; }
.vp-text sup { margin-right: 2px; font-size: 0.7em; font-weight: 700; color: #61796E; }
@media print { .verse-pop { display: none; } button.bibleref { text-decoration: none; } }
/* The ESV notice Crossway asks for, at the foot of the footer on pages with verse pop-ups. */
.elementor-location-footer .esv-notice {
  width: 100%;
  max-width: 70ch;
  margin: 8px auto 0;
  color: #FFFFFF;
  font-size: 14px;
  line-height: 1.5;
  text-align: center;
}
.elementor-location-footer .esv-notice a { color: inherit; text-decoration: underline; }

/* F3. Slim banner (site.json banner, design "slim"): one line in the banner orange, darkened for contrast
   (MEM-4: #A06222, white text 4.92:1; was #D5822E, 2.97:1). It sticks to the top; the sticky header stays below it. */
body .mc-banner { position: sticky; top: 0; z-index: 10001; background: #A06222; color: #FFFFFF; font-family: Quicksand, sans-serif; }
body .mc-banner[hidden] { display: none; }
.elementor-sticky--active { top: var(--mc-banner-h, 0px) !important; }
html:has(.mc-banner:not([hidden])) { scroll-padding-top: calc(var(--mc-banner-h, 44px) + 8px); }
.mc-banner .mc-banner-link {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: center;
  gap: 6px 16px;
  min-height: 44px;
  padding: 10px 56px;
  color: #FFFFFF;
  font-size: 16px;
  font-weight: 600;
  line-height: 24px;
  text-align: center;
}
.mc-banner .mc-banner-link:hover, .mc-banner .mc-banner-link:focus { color: #FFFFFF; }
.mc-banner .mc-banner-more { display: inline-flex; align-items: center; gap: 8px; flex: none; font-weight: 700; text-decoration: underline; text-decoration-thickness: 2px; text-underline-offset: 4px; }
.mc-banner .mc-banner-more svg { width: 10px; height: 10px; fill: currentColor; transition: transform 0.2s; }
.mc-banner .mc-banner-link:hover .mc-banner-more svg { transform: translateX(3px); }
.mc-banner .mc-banner-link:focus-visible { outline: 3px solid #FFFFFF; outline-offset: -5px; }
.mc-banner .mc-banner-text--short { display: none; }
.mc-banner .mc-banner-close {
  position: absolute;
  top: 50%;
  right: 8px;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  padding: 0;
  border: 0;
  border-radius: 50%;
  background: none;
  color: #FFFFFF;
  cursor: pointer;
  transform: translateY(-50%);
}
.mc-banner .mc-banner-close svg { width: 14px; height: 14px; fill: currentColor; }
.mc-banner .mc-banner-close:hover, .mc-banner .mc-banner-close:focus-visible { background: rgba(255, 255, 255, 0.18); color: #FFFFFF; }
.mc-banner .mc-banner-close:focus-visible { outline-color: #FFFFFF; }
@media (max-width: 599px) {
  .mc-banner .mc-banner-link { font-size: 15px; padding: 10px 52px 10px 16px; }
  .mc-banner .mc-banner-text--long { display: none; }
  .mc-banner .mc-banner-text--short { display: inline; }
}
/* Spacing sweep (docs/design-sweep-2026-11-02.html, Adam's picks A1, B1 and C2, Nov 2 2026).
   Named values: section 48 phone and tablet / 80 desktop; title to content 24 phone / 32 tablet and
   desktop; text to button the same. Each number below is the margin that gives that visible gap
   (some parents add their own 20–26px). Same selectors as the Elementor rules, so this file wins by order. */

/* 1. Welcome card (a one-screen page with no header or footer): the card fills the screen and its content
   sits in the middle, instead of 300px of padding under the buttons. */
.elementor-11678 {
  min-height: 100vh;
  min-height: 100svh;
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: 48px 0;
  box-sizing: border-box;
  background-color: rgb(223, 230, 227);
}
.elementor-11678 .elementor-element.elementor-element-1e6229aa { padding-top: 0; }
.elementor-11678 .elementor-element.elementor-element-2383ccde { padding-bottom: 10px; }

/* 2. Section titles sit close to their own content. */
.elementor-644 .elementor-element.elementor-element-a7957d6,
.elementor-568 .elementor-element.elementor-element-9a90260,
.elementor-574 .elementor-element.elementor-element-63dd437 { --margin-top: 12px; }
.elementor-644 .elementor-element.elementor-element-8526df0,
.elementor-11314 .elementor-element.elementor-element-92162a5,
.elementor-11440 .elementor-element.elementor-element-92162a5,
.elementor-11440 .elementor-element.elementor-element-344c317 { --margin-top: 32px; }
.elementor-644 .elementor-element.elementor-element-3f9813c > .elementor-widget-container { margin-top: 10px; }
.elementor-618 .elementor-element.elementor-element-7cadaa9 > .elementor-widget-container { margin-bottom: 8px; }
.elementor-618 .elementor-element.elementor-element-7742ca3 > .elementor-widget-container { margin-bottom: 32px; }
@media (max-width: 767px) {
  .elementor-644 .elementor-element.elementor-element-a7957d6,
  .elementor-568 .elementor-element.elementor-element-9a90260,
  .elementor-574 .elementor-element.elementor-element-63dd437 { --margin-top: 4px; }
  .elementor-644 .elementor-element.elementor-element-8526df0,
  .elementor-11314 .elementor-element.elementor-element-92162a5,
  .elementor-11440 .elementor-element.elementor-element-92162a5,
  .elementor-11440 .elementor-element.elementor-element-344c317 { --margin-top: 24px; }
  .elementor-644 .elementor-element.elementor-element-3f9813c > .elementor-widget-container { margin-top: 2px; }
  .elementor-618 .elementor-element.elementor-element-7cadaa9 > .elementor-widget-container { margin-bottom: 0; }
  .elementor-618 .elementor-element.elementor-element-7742ca3 > .elementor-widget-container { margin-bottom: 24px; }
}

/* 3. Sermon and Bible class pages: no extra margin above the video; the section padding is enough. */
.elementor-1419 .elementor-element.elementor-element-5e0d4e5 > .elementor-widget-container,
.elementor-1501 .elementor-element.elementor-element-72b969f > .elementor-widget-container { margin-top: 0; }

/* 4. Plan Your Visit: each button sits under its own content. */
.elementor-618 .elementor-element.elementor-element-4ee345e > .elementor-widget-container { margin-bottom: 0; }
.elementor-618 .elementor-element.elementor-element-2ae8ad4 > .elementor-widget-container { margin-top: 22px; }
.elementor-618 .elementor-element.elementor-element-e7de20e > .elementor-widget-container { margin-top: 8px; }
@media (max-width: 767px) {
  .elementor-618 .elementor-element.elementor-element-2ae8ad4 > .elementor-widget-container { margin-top: 14px; }
  .elementor-618 .elementor-element.elementor-element-e7de20e > .elementor-widget-container { margin-top: 0; }
}

/* 5. "If you're searching for truth" band: 24px from title to button on every page, like About. */
.elementor-644 .elementor-element.elementor-element-047e9cf > .elementor-widget-container { padding-top: 0; }
.elementor-618 .elementor-element.elementor-element-0bd6e59 > .elementor-widget-container,
.elementor-574 .elementor-element.elementor-element-f68ccd8 > .elementor-widget-container { margin-top: 0; }

/* 6. Sermon list: page numbers 32px under the last card (the cards' own padding gives the rest). */
@media (max-width: 1024px) {
  .elementor-105 .elementor-element.elementor-element-ea4c062 > .elementor-widget-container { margin-top: 13px; }
}
@media (max-width: 767px) {
  .elementor-105 .elementor-element.elementor-element-ea4c062 > .elementor-widget-container { margin-top: -21px; }
}

/* 7. E-book pages: the benefit lists end with the normal section padding. */
.elementor-11314 .elementor-element.elementor-element-92162a5,
.elementor-11440 .elementor-element.elementor-element-92162a5,
.elementor-11440 .elementor-element.elementor-element-344c317 { --margin-bottom: 0px; }

/* 8. Plan Your Visit hero form card: 24px under the review stars, not 48. */
.elementor-618 .elementor-element.elementor-element-320e983 { --padding-bottom: 0px; }

/* ===== Wave 2d (Nov 2026): FAQ, Live Stream and leader pages. See docs/port-plan.md (G1, G2, G3). ===== */
/* /live/: the Watch Live button keeps the 64px (36px on phones) the old video had under it. */
.elementor-583 .live-watch > .elementor-widget-container { margin-bottom: 64px; }
@media (max-width: 767px) { .elementor-583 .live-watch > .elementor-widget-container { margin-bottom: 36px; } }
.elementor-583 .live-notice p { font-weight: 600; }
.live-dot { display: none; width: 10px; height: 10px; margin-right: 8px; border-radius: 50%; background: #c62828; vertical-align: middle; }
[data-live-status].is-live .live-dot { display: inline-block; }
/* /faq/: one gap between the FAQ lists, not two; a linked question clears the sticky header. */
.page-faq .elementor-element-d67ef99 + .elementor-element-d67ef99 { --padding-top: 0px; }
.page-faq details.e-n-accordion-item { scroll-margin-top: 96px; }
/* Leader page: the role line sits close under the name. */
.single-leadership .leader-role { margin-top: -8px; font-weight: 600; }

/* ---------- Wave 2a: Short Clips (C1, C2) and step-tap dots (L6, in public/js/slider-patch.js) ---------- */
/* The Elementor kit styles every button (.elementor-kit-5 button:hover is 0,2,1), so these selectors carry
   [type="button"] and a parent class. */
/* C2. A button over each clip's thumbnail opens the pop-up player (public/js/shorts-player.js).
   The play sign sits small in the top-right corner, off the burned-in caption words (as on Decker Prairie). */
.jet-video .mc-short[type="button"] {
  position: absolute;
  inset: 0;
  z-index: 3;
  width: 100%;
  height: 100%;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  cursor: pointer;
}
.jet-video .mc-short[type="button"]:focus-visible { outline-offset: -3px; }
.mc-short__play {
  position: absolute;
  top: 10px;
  right: 10px;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  border-radius: 50%;
  background: rgba(0, 0, 0, 0.55);
  color: #FFFFFF;
  transition: background-color 0.3s;
}
.mc-short__play svg { margin-left: 2px; }
.jet-video .mc-short[type="button"]:is(:hover, :focus-visible) .mc-short__play { background: #2F5C47; }

/* C2. Pop-up player. Desktop: dimmed page, tall 9:16 player in the middle, arrows on both sides.
   Phone: the player fills the screen; a 56px bar on top holds the close button; arrows at the bottom. */
html:has(.mc-shorts-modal[open]) { overflow: hidden; }
.mc-shorts-modal {
  width: 100%;
  height: 100%;
  max-width: none;
  max-height: none;
  margin: 0;
  padding: 0;
  border: 0;
  background: rgba(0, 0, 0, 0.92);
  color: #FFFFFF;
  overflow: hidden;
  font-family: "Quicksand", sans-serif;
}
.mc-shorts-modal::backdrop { background: transparent; }
.mc-sm-stage { position: relative; display: flex; align-items: center; justify-content: center; gap: 32px; height: 100%; padding: 24px 80px; }
.mc-sm-main { display: flex; flex-direction: column; gap: 12px; width: min(calc((100dvh - 140px) * 0.5625), 450px); }
.mc-sm-player { width: 100%; aspect-ratio: 9 / 16; overflow: hidden; border-radius: 16px; background: #000000; }
.mc-sm-player iframe { display: block; width: 100%; height: 100%; border: 0; }
.mc-sm-title { margin: 0; font-size: 16px; font-weight: 600; line-height: 24px; color: #FFFFFF; }
.mc-sm-meta { display: flex; justify-content: space-between; gap: 16px; font-size: 14px; line-height: 20px; }
.mc-sm-count { opacity: 0.75; }
.mc-shorts-modal a.mc-sm-yt, .mc-shorts-modal a.mc-sm-yt:is(:hover, :focus, :visited) { color: #FFFFFF; text-decoration: underline; }
.mc-shorts-modal .mc-sm-btn[type="button"] {
  display: flex;
  align-items: center;
  justify-content: center;
  flex: none;
  padding: 0;
  border: 0;
  border-radius: 50%;
  cursor: pointer;
  font-size: 0;
  line-height: 0;
  transition: background-color 0.3s, color 0.3s;
}
.mc-shorts-modal .mc-sm-close[type="button"] { position: absolute; top: 16px; right: 16px; z-index: 1; width: 48px; height: 48px; background: rgba(255, 255, 255, 0.14); color: #FFFFFF; }
.mc-shorts-modal .mc-sm-nav[type="button"] { width: 56px; height: 56px; background: #FFFFFF; color: #2F5C47; }
.mc-shorts-modal .mc-sm-btn[type="button"]:is(:hover, :focus-visible) { background: #2F5C47; color: #FFFFFF; }
.mc-shorts-modal :focus-visible { outline-color: #FFFFFF; }
@media (max-width: 599px) {
  .mc-shorts-modal { background: #000000; }
  .mc-sm-stage { padding: 0; }
  .mc-sm-main { gap: 0; width: 100%; height: 100%; padding-top: calc(56px + env(safe-area-inset-top)); }
  .mc-sm-player { flex: 1; aspect-ratio: auto; border-radius: 0; }
  .mc-sm-info { padding: 12px 80px calc(16px + env(safe-area-inset-bottom)); text-align: center; }
  .mc-sm-meta { justify-content: center; }
  .mc-shorts-modal .mc-sm-close[type="button"] { top: calc(4px + env(safe-area-inset-top)); right: 8px; }
  .mc-shorts-modal .mc-sm-nav[type="button"] { position: absolute; bottom: calc(16px + env(safe-area-inset-bottom)); width: 48px; height: 48px; }
  .mc-shorts-modal .mc-sm-prev { left: 16px; }
  .mc-shorts-modal .mc-sm-next { right: 16px; }
}
/* ---------- end Wave 2a ---------- */

/* ===== Wave 2c (Nov 2026): blog search on Pagefind (L10), typo fix (L11), blog sweep (L3). See docs/port-plan.md. ===== */
/* Count, "Showing results for", and the whole-site link above the results: Memorial body text, centered. */
.mc-search-status { margin: 0 0 24px; text-align: center; color: var(--e-global-color-text, #3F3F3F); font-size: 16px; line-height: 24px; }
.mc-search-status[hidden] { display: none; }
body.search .mc-search-status { text-align: left; } /* the search page is left-aligned, like its results */
/* "Search the whole site": a 44px tall tap area. */
.mc-search-wide { display: inline-block; padding: 10px 4px; margin: -10px 0; color: var(--e-global-color-accent, #2F5C47); font-weight: 600; text-decoration: underline; }
/* The matching words in a card excerpt and a search result: the same mark as the site search panel. */
.elementor-loop-container mark, .search .page-content mark { background: #B1D0C8; color: inherit; border-radius: 2px; }
/* L3 blog sweep (DP 05472ee), in Memorial's card look (MEM-5). */
/* Phones: author over date on blog cards and the post header, with no line left hanging after the author. */
@media (max-width: 767px) {
  .elementor-loop-container .elementor-element-9e2a178,
  .single-post .elementor-element-67fc32f { width: 100%; }
  body .elementor-loop-container .elementor-element.elementor-element-9e2a178 > .elementor-widget-container,
  body .elementor-1119 .elementor-element.elementor-element-67fc32f .jet-listing-dynamic-field.display-inline .jet-listing-dynamic-field__inline-wrap { border-right: 0; padding-right: 0; margin-right: 0; }
}
/* Phones: 24px side margins on the category, tag and search result pages (WordPress theme pages had 10px). */
@media (max-width: 767px) {
  body.category main.site-main, body.tag main.site-main, body.search main.site-main { padding-left: 24px; padding-right: 24px; }
}
/* 44px tap areas with no change in look: an invisible box around the topic buttons, page numbers,
   "Go Back to Blog" and the Previous / Next links. */
.jet-checkboxes-list__item, a.jet-filters-pagination__item, .elementor-element-25d907b .elementor-button,
body.category nav.pagination a, body.tag nav.pagination a, body.search nav.pagination a { position: relative; }
.jet-checkboxes-list__item::after, a.jet-filters-pagination__item::after, .elementor-element-25d907b .elementor-button::after,
body.category nav.pagination a::after, body.tag nav.pagination a::after, body.search nav.pagination a::after {
  content: ''; position: absolute; left: 50%; top: 50%; width: max(100%, 44px); height: 44px; transform: translate(-50%, -50%);
}

/* ===== Port wave 2b (Nov 2026): sermon series, sermon page links, outlines, card meta. See docs/port-plan.md. ===== */

/* L5: sermon and Bible class cards read "October 18, 2026 · Jeff Trahan" (one line, no "Date" or "By").
   The dot sits in the middle of the gap, where the old thin line was (src/lib/templates.ts fillCard). */
.elementor-post-info:has(.mc-speaker) { margin-inline: -6px !important; }
.elementor-post-info:has(.mc-speaker) > li { position: relative; margin-inline: 6px !important; }
/* !important: Elementor's per-card divider rules are more specific. */
.elementor-post-info:has(.mc-speaker) > li:not(:last-child)::after {
  content: '·' !important; position: absolute !important; top: 50% !important; right: -6px !important; left: auto !important;
  width: auto !important; height: auto !important; border: 0 !important; color: #3F3F3F; line-height: 1; transform: translate(50%, -50%) !important;
}

/* D4, D5: /series/ and /series/<slug>/ (src/lib/series.ts) use the sermons archive. */
.mc-series-head { display: flex; flex-direction: column; align-items: center; gap: 12px; text-align: center; }
.mc-series-back { display: inline-flex; align-items: center; gap: 8px; min-height: 44px; color: #2F5C47; font-weight: 600; text-decoration: underline; text-underline-offset: 3px; }
.mc-series-head .mc-series-facts { margin: 0; color: #3F3F3F; font-size: 18px; font-weight: 500; font-variant-numeric: tabular-nums; }
.mc-series-desc { max-width: 60ch; margin: 0; color: #3F3F3F; font-size: 18px; line-height: 1.6; }
.jet-listing-grid__item .mc-series-facts { margin: 0; color: #3F3F3F; font-variant-numeric: tabular-nums; }
.jet-listing-grid__item .mc-series-desc { margin-top: 8px; font-size: 16px; text-align: left; }
.mc-series-num { margin: 0 0 4px; color: #2F5C47; font-size: 14px; font-weight: 700; line-height: 20px; letter-spacing: 0.08em; text-transform: uppercase; }

/* D6, D7, L2: sermon page links (speaker, series, service, outline PDF) are underlined in the church green. */
.single-sermons .elementor-element-9b01e7e a,
.single-sermons .mc-sermon-info a { color: #2F5C47 !important; text-decoration: underline; text-underline-offset: 3px; }
.single-sermons .mc-sermon-info { margin-top: 4px; }

/* L2: the preacher's point headings inside the transcript box (scripts/sermon-outlines.mjs). */
.sermon-transcript__scroll h3 { margin: 24px 0 8px; color: #2F5C47; font-family: Quicksand, sans-serif; font-size: 20px; font-weight: 600; line-height: 1.3; }
.sermon-transcript__scroll h3:first-child { margin-top: 8px; }

/* D4: "Sermon Series" made the footer page list one longer, so on phones "Handling Anxiety Ebook" now sits in the
   left column; a long name wraps inside its column instead of running into the next one. */
@media (max-width: 599px) {
  .elementor-location-footer .elementor-element-18cf4467 .elementor-nav-menu .elementor-item { white-space: normal; }
  .elementor-location-footer .elementor-element-18cf4467 .elementor-nav-menu > li { align-items: flex-start; }
}

/* ===== Wave 3 ===== */

/* L14: the accordion +/- icon follows aria-expanded (public/js/accordion.js), so it turns as soon as an answer starts
   to open or close. Same icons and colors as Elementor's [open] rules. */
.e-n-accordion-item > .e-n-accordion-item-title[aria-expanded="true"] .e-n-accordion-item-title-icon .e-opened { display: flex; }
.e-n-accordion-item > .e-n-accordion-item-title[aria-expanded="true"] .e-n-accordion-item-title-icon .e-closed { display: none; }
.e-n-accordion-item > .e-n-accordion-item-title[aria-expanded="false"] .e-n-accordion-item-title-icon .e-opened { display: none; }
.e-n-accordion-item > .e-n-accordion-item-title[aria-expanded="false"] .e-n-accordion-item-title-icon .e-closed { display: flex; }

/* L4: balanced heading lines (no single word alone on the last line). */
h1, h2, h3, .elementor-heading-title { text-wrap: balance; }

/* L9: Bible class list page numbers sit as far under the last card as on the sermon list (sweep item 6 fixed only
   the sermon list; on phones the gap was 89px, now 28px like Sermons). */
@media (max-width: 767px) {
  .elementor-1432 .elementor-element.elementor-element-e80b79a > .elementor-widget-container { margin-top: -21px; }
}

/* Wave 3 check of the footer tap areas (Nov 3): the phone, email, Privacy Policy, Terms and Project Go links are
   text links, not icon-list links, so the invisible box above never reached them (19px tall). Same box here. */
[data-elementor-type="footer"] .elementor-widget-text-editor a { position: relative; }
[data-elementor-type="footer"] .elementor-widget-text-editor a::after { content: ""; position: absolute; inset: -12px -8px; }
/* Desktop: the email link wraps onto a second line after the phone number, and its box would cover the phone link.
   The phone link sits on top, and its box does not reach down into the email's second line. */
@media (min-width: 1025px) {
  [data-elementor-type="footer"] .elementor-widget-text-editor a[href^="tel:"] { z-index: 1; }
  [data-elementor-type="footer"] .elementor-widget-text-editor a[href^="tel:"]::after { bottom: 0; }
}

/* ===== No blog featured images (Adam, Nov 4, 2026: all church sites). ===== */
/* A post with no image: the card has no picture column (src/lib/templates.ts, public/js/filters.js add .mc-no-image),
   so the text takes the full card width. Old posts keep their pictures. */
body .elementor-loop-container .mc-no-image .elementor-element.elementor-element-e5b6e85 { --width: 100%; width: 100%; max-width: 100%; flex-basis: 100%; }
/* A post with no image: the header text takes the full width ([post].astro drops the picture column, body.mc-no-image). */
body.mc-no-image .elementor-element.elementor-element-393c04f { --width: 100%; width: 100%; max-width: 100%; flex-basis: 100%; }
