/* Additions on top of the original theme: accessibility, mobile safety, form states. */

/* No horizontal scroll at 375px: backstop only, the real fixes are the min-width rules below. */
html, body { overflow-x: clip; }

/* Flex/grid children that hold wide content must be allowed to shrink. */
.book-form input,
.book-form select,
.book-form textarea,
.contact-form input,
.contact-form textarea,
.book-form label,
.book-form .box { min-width: 0; max-width: 100%; box-sizing: border-box; }
.book-form img,
.contact-section img,
main img,
main video,
main iframe { max-width: 100%; }

/* Skip link: visible only when focused. */
.skip-link {
  position: absolute;
  left: 8px;
  top: -100px;
  z-index: 10000;
  padding: 12px 16px;
  background: #1c1c1c;
  color: #fff;
  font: 600 16px/1 'Open Sans', Arial, sans-serif;
  border-radius: 4px;
  text-decoration: none;
  transition: top .15s ease;
}
.skip-link:focus { top: 8px; outline: 3px solid #fff; outline-offset: 2px; }

/* Keyboard focus that is visible on every theme colour used by the site. */
:focus-visible {
  outline: 3px solid #b46f55;
  outline-offset: 3px;
  box-shadow: 0 0 0 5px #fff;
}
.main-nav.white a:focus-visible,
.hamburger-menu.white:focus-visible,
footer a:focus-visible,
.banner-content a:focus-visible { outline-color: #fff; box-shadow: 0 0 0 5px #1c1c1c; }

/* Tap targets: 44px minimum on the primary interactive elements. */
.main-nav a,
.mobile-menu a,
.footer-nav a,
.banner-content a,
.session-content a,
.booksession-content a,
.contact-form button,
.book-form button,
.book-form .btn-prev,
.book-form .btn-next,
.book-form .btn-submit,
.button-group a { min-height: 44px; display: inline-flex; align-items: center; justify-content: center; box-sizing: border-box; }
.hamburger-menu { min-width: 44px; min-height: 44px; }
.carousel-control-prev,
.carousel-control-next { min-width: 44px; min-height: 44px; }
.experience-content .carousel-indicators { gap: 0; }
.experience-content .carousel-indicators button.dot-item {
  width: 44px;
  height: 44px;
  margin: 0;
  padding: 0;
  border: 0;
  background: transparent;
  opacity: 1;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 14px;
  line-height: 1;
}
.contact-form input,
.contact-form textarea,
.book-form input:not([type="radio"]),
.book-form select,
.book-form textarea { min-height: 44px; }

/* Form error state driven by /api responses. */
.alert[role="alert"] { margin-bottom: 20px; }
.is-invalid { border: 1px solid #dc3545 !important; }

/* Honeypot field: off-screen, never displayed, never announced. */
.hp-field {
  position: absolute !important;
  left: -10000px !important;
  width: 1px !important;
  height: 1px !important;
  overflow: hidden !important;
}

/* Reduced motion: stop the decorative animations. */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
    scroll-behavior: auto !important;
  }
}
