/**
 * EFEGE — Sitewide responsive layout polish
 * Loaded via includes/seo-tags.php. Additive only — no HTML/structure changes.
 */

:root {
  --ef-page-pad: clamp(20px, 5vw, 80px);
  --ef-page-pad-sm: 16px;
  --ef-safe-left: env(safe-area-inset-left, 0px);
  --ef-safe-right: env(safe-area-inset-right, 0px);
}

/* Prevent horizontal scroll from full-bleed / negative offsets */
html {
  overflow-x: clip;
}

body {
  overflow-x: clip;
}

img,
video,
iframe {
  max-width: 100%;
}

/* Flex/grid children: allow shrinking */
:where(
  .efege-section,
  .efege-content,
  .memories-section,
  .center-content,
  .destinations-row,
  .destinations-text,
  .destinations-scroll-wrap,
  .sl-outer,
  .sl-track,
  .gallery-section,
  .couples-section,
  .seo-insight,
  .process-step__content,
  .footer__col,
  .footer__main
) {
  min-width: 0;
}

/* Horizontal carousels — finger scroll / swipe */
.ef-touch-scroll,
.destinations-scroll-wrap,
.blog__filter-inner,
.dir-nav,
.dir-filters {
  -webkit-overflow-scrolling: touch;
  touch-action: pan-x;
  overscroll-behavior-x: contain;
  scroll-behavior: smooth;
}

.destinations-scroll-wrap {
  scroll-snap-type: x proximity;
}

.destinations-cards .dest-card {
  scroll-snap-align: start;
}

@media (max-width: 768px) {
  .sl-viewport {
    touch-action: pan-x pan-y;
  }
}

/* Banner bottom bar — wrap on tablet */
@media (max-width: 900px) {
  .bar__tagline,
  .bar__copy {
    white-space: normal !important;
    text-align: center;
  }

  .banner__bar {
    flex-wrap: wrap;
    justify-content: center;
    row-gap: 6px;
    padding-left: 20px;
    padding-right: 20px;
  }

  .process-testimonials__grid {
    grid-template-columns: repeat(2, 1fr);
    gap: 24px;
  }
}

/* Tablet + mobile shared rhythm */
@media (max-width: 768px) {
  .ef-breadcrumbs {
    padding-left: max(20px, var(--ef-safe-left));
    padding-right: max(20px, var(--ef-safe-right));
  }

  .sl-outer {
    padding-left: 20px !important;
    padding-right: 20px !important;
  }

  .sl-card__label {
    white-space: normal;
    text-align: center;
    flex-wrap: wrap;
    justify-content: center;
  }

  .gallery-section {
    padding-left: max(20px, var(--ef-safe-left));
    padding-right: max(20px, var(--ef-safe-right));
  }

  .process-testimonials__grid {
    grid-template-columns: 1fr;
  }

  .process-hero {
    min-height: min(60vh, 520px);
    padding-top: clamp(120px, 22vw, 160px);
  }

  .center-content {
    min-width: 0;
  }
}

/* Small phones */
@media (max-width: 600px) {
  .banner:not(.banner--keep-height) {
    height: auto;
    min-height: min(420px, 85svh);
    padding-bottom: 56px;
  }

  .banner__content {
    margin-bottom: 32px;
  }

  .couples-section,
  .seo-insight,
  .destinations-section {
    padding-left: max(16px, var(--ef-safe-left));
    padding-right: max(16px, var(--ef-safe-right));
  }

  .footer-cta {
    min-height: min(600px, 80svh) !important;
  }

  .footer-cta__content {
    padding-left: 20px;
    padding-right: 20px;
  }
}

/* Tablet: reduce oversized gallery/CTA heights */
@media (max-width: 768px) {
  .footer-cta {
    min-height: min(520px, 70svh) !important;
  }
}

@media (max-width: 480px) {
  .ef-breadcrumbs,
  .footer__cta,
  .footer__main,
  .footer__bottom {
    padding-left: max(16px, var(--ef-safe-left)) !important;
    padding-right: max(16px, var(--ef-safe-right)) !important;
  }

  .efege-section {
    overflow-x: clip;
  }

  .efege-images {
    overflow: hidden;
  }

  .process-cta__btn {
    display: block;
    width: 100%;
    max-width: 100%;
    text-align: center;
    box-sizing: border-box;
  }

  .gallery-section {
    padding-top: 80px !important;
    padding-bottom: 56px !important;
  }

  /* SEO landing pages: prevent bar text overflow + fix FAQ clip */
  .bar__tagline,
  .bar__copy {
    white-space: normal !important;
  }
  .faq-item__answer,
  .faq-item.is-open .faq-item__answer {
    max-height: none !important;
  }
}

/* Desktop polish — avoid rigid overflow in wide banners */
@media (min-width: 1024px) {
  .banner__bar {
    flex-wrap: wrap;
    row-gap: 6px;
  }
}
