/* Accessibility remediation overrides — loaded after the original styles. */

[hidden] { display: none !important; }

.sr-only {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  margin: -1px !important;
  overflow: hidden !important;
  clip: rect(0, 0, 0, 0) !important;
  white-space: nowrap !important;
  border: 0 !important;
}

.skip-link {
  position: fixed;
  z-index: 1000000;
  top: 0.75rem;
  left: 0.75rem;
  transform: translateY(-200%);
  padding: 0.75rem 1rem;
  border: 2px solid #ffffff;
  border-radius: 0.25rem;
  background: #123f32;
  color: #ffffff !important;
  font: 700 1rem/1.25 Arial, sans-serif;
  text-decoration: none;
  transition: transform 0.15s ease;
}
.skip-link:focus,
.skip-link:focus-visible { transform: translateY(0); }

/* The original stylesheet globally forced pale gold on every link. Restore a
   compliant foreground on light surfaces, then preserve the original light
   treatment only on dark branded surfaces. */
a { color: #1a5c48 !important; }
.site-footer a,
.main-header .hotel-phones a,
.slider-container .cta-button,
.hotel-polices .overlay a,
.bottom-bar a { color: #f9dd90 !important; }
.drawer-nav a { color: #123f32 !important; }
.drawer-nav a.active { color: #80631f !important; }

/* Give WAVE and other contrast engines the same solid surface users see behind
   the absolutely positioned header artwork. This does not alter its appearance. */
.main-header:not(.scrolled) { background-color: #206c56 !important; }
.main-header:not(.scrolled) .nav-item { color: #fefcf7 !important; }
.main-header:not(.scrolled) .nav-item.active { color: #f9dd90 !important; }
.main-header.scrolled .nav-item,
.main-header.scrolled .nav-item:hover { color: #206c56 !important; }
.main-header.scrolled .nav-item.active { color: #f9dd90 !important; }

/* Use the native selects as the single visible control. This removes the former
   transparent-control/custom-label overlap that WAVE reported three times. */
.select-input-wrap select {
  position: absolute !important;
  inset: 0 !important;
  z-index: 10 !important;
  display: block !important;
  width: 100% !important;
  height: 100% !important;
  margin: 0 !important;
  padding: 0 30px 0 8px !important;
  border: 0 !important;
  border-radius: 0 !important;
  opacity: 1 !important;
  appearance: none !important;
  -webkit-appearance: none !important;
  background-color: #206c56 !important;
  color: #ffffff !important;
  font: normal 12.5px/1.2 Georgia, serif !important;
  letter-spacing: 0.03em !important;
  text-transform: uppercase !important;
  cursor: pointer !important;
}
.select-input-wrap select:hover { background-color: #1a5c48 !important; }
.select-input-wrap select option {
  background-color: #ffffff !important;
  color: #0f2e24 !important;
}
.select-input-wrap > span {
  display: none !important;
}
.select-input-wrap > svg {
  position: absolute !important;
  top: 50% !important;
  right: 8px !important;
  z-index: 11 !important;
  margin: 0 !important;
  transform: translateY(-50%) !important;
  color: #ffffff !important;
  opacity: 1 !important;
}
.select-input-wrap .sr-only {
  background-color: #206c56 !important;
  color: #ffffff !important;
}
.select-input-wrap:focus-within {
  outline: 3px solid #ffffff !important;
  outline-offset: 3px !important;
  box-shadow: 0 0 0 6px #123f32 !important;
}

/* The room copy now lives inside its existing visual gradient, so the declared
   fallback is both scanner-readable and visually covered by the same gradient. */
.room-slide-overlay { background-color: #0f2e24 !important; }

/* Nearest brand-preserving compliant values for known contrast failures. */
.book-now-btn,
.popup-ok-btn { background-color: #8e702b !important; color: #fefcf7 !important; }
.book-now-btn:hover,
.popup-ok-btn:hover { background-color: #7e6224 !important; }
.attraction-toggle-btn:not(.active) { color: #56766c !important; }

/* Dark-gold equivalents retain the palette on light panels while meeting AA. */
.drawer-close-btn:hover,
.main-header.scrolled .hamburger-btn:hover,
.popup-icon-wrap svg,
.amenities-section-mod .amenity-list li::before,
.sitemap-block ul li a em,
.sitemap-block ul li a i,
.faq-answer .fa-caret-right,
.attractions-title span { color: #80631f !important; }
.popup-close { color: #5f7b6f !important; }
.popup-close:hover { color: #1a3c32 !important; }
.directions-area form button {
  background: linear-gradient(90deg, #316d5a, #8e702b) !important;
  color: #ffffff !important;
}
.directions-area form button:hover {
  background: linear-gradient(90deg, #8e702b, #316d5a) !important;
}

/* A visible, non-layout-shifting focus indicator on all operable controls. */
:where(a[href], button, input, select, textarea, summary, [tabindex]:not([tabindex="-1"])):focus-visible {
  outline: 3px solid #ffffff !important;
  outline-offset: 3px !important;
  box-shadow: 0 0 0 6px #123f32 !important;
}
main:focus { outline: none; }

button:disabled,
[aria-disabled="true"] { cursor: not-allowed; }

/* Preserve visual dots while providing a practical 24 × 24 CSS-pixel target. */
.slider-container .dot,
.room-dot {
  position: relative;
  box-sizing: border-box;
  width: 24px !important;
  height: 24px !important;
  min-width: 24px;
  min-height: 24px;
  padding: 0;
  border: 0 !important;
  background: transparent !important;
}
.slider-container .dot::before,
.room-dot::before {
  content: "";
  position: absolute;
  inset: 7px;
  border: 1px solid currentColor;
  border-radius: 50%;
  background: transparent;
}
.slider-container .dot.active::before,
.room-dot.active::before,
.slider-container .dot[aria-current="true"]::before,
.room-dot[aria-current="true"]::before { background: currentColor; }
.slider-container .dot.active::after { display: none !important; }

/* Reset newly semantic wrappers so they retain the original image/card layout. */
.policy-card-trigger,
.gallery-item-trigger {
  display: block;
  width: 100%;
  height: 100%;
  margin: 0;
  padding: 0;
  border: 0;
  background: transparent;
  color: inherit;
  font: inherit;
  text-align: inherit;
  cursor: pointer;
}
.policy-card-trigger img,
.gallery-item-trigger img { width: 100%; height: 100%; display: block; }

/* FAQ controls remain visually identical to the former clickable containers. */
button.faq-question {
  width: 100%;
  border: 0;
  font: inherit;
  text-align: left;
  cursor: pointer;
}
button.faq-question[aria-expanded="true"] .faq-icon { transform: scale(1.04); }

/* Accessible controls for user-controlled moving content. */
.motion-control {
  z-index: 30;
  min-width: 44px;
  min-height: 32px;
  padding: 0.35rem 0.65rem;
  border: 1px solid rgba(255,255,255,0.88);
  border-radius: 999px;
  background: rgba(18,63,50,0.96);
  color: #ffffff !important;
  font: 700 0.75rem/1.2 Arial, sans-serif;
  letter-spacing: 0.01em;
  cursor: pointer;
}
.hero-pause { position: absolute; right: 1rem; bottom: 1rem; }
.room-pause { display: block; margin: 0.8rem auto 0; }
.video-pause { position: absolute; right: 0.75rem; bottom: 0.75rem; }
.marquee-pause { position: absolute; right: 0.5rem; top: 50%; transform: translateY(-50%); }
.footer-marquee { position: relative; padding-right: 9rem; }

/* Calendar controls retain the grid but become native keyboard controls. */
.calendar-header button,
.calendar-day {
  min-width: 32px;
  min-height: 32px;
}
button.calendar-day {
  border: 0;
  background: transparent;
  color: inherit;
  font: inherit;
  cursor: pointer;
}
button.calendar-day:disabled { opacity: 0.45 !important; text-decoration: line-through; }
.calendar-day.empty { visibility: hidden; }

/* Dialogs and overlays must not expose inactive controls. */
.mobile-drawer-container[aria-hidden="true"],
.popup-modal[aria-hidden="true"],
.lightbox[aria-hidden="true"],
#lightbox[aria-hidden="true"] { pointer-events: none; }
.policy-overlay-close { min-width: 44px; min-height: 44px; }

/* Homepage generated attraction rows are semantic buttons without a redesign. */
.attraction-item-top[role="button"] {
  cursor: pointer;
}
.attraction-item-top[role="button"]:focus-visible {
  border-radius: 0.25rem;
}

/* Standalone gallery lightbox controls and thumbnail wrappers. */
.gallery-item-trigger { border-radius: inherit; }
.lightbox .close-btn,
.lightbox .prev-btn,
.lightbox .next-btn,
#lightbox .lb-close,
#lightbox .lb-prev,
#lightbox .lb-next { min-width: 44px; min-height: 44px; }

/* Prevent ordinary content overflow during reflow without changing component sizing. */
img, video, iframe, svg { max-width: 100%; }
iframe { border: 0; }

@media (max-width: 480px) {
  .footer-marquee { padding-right: 0; padding-bottom: 2.75rem; }
  .marquee-pause { top: auto; right: 0.5rem; bottom: 0.35rem; transform: none; }
  .motion-control { font-size: 0.7rem; }
  .calendar-ui { max-width: calc(100vw - 1rem); }
}

@media (prefers-reduced-motion: reduce) {
  html:focus-within { scroll-behavior: auto !important; }
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    scroll-behavior: auto !important;
    transition-duration: 0.01ms !important;
  }
  .marquee-track,
  .amenities-scroll-inner { animation-play-state: paused !important; }
}
#cookieConsent a { color: #4CAF50 !important; }
/* Manual review of states scanners cannot evaluate while hidden or over images. */
.slider-container .overlay { background: rgba(0, 0, 0, 0.55) !important; }
.calendar-days-header,
.attraction-item-num { color: #56766c !important; }
.calendar-day.selected { background: #8e702b !important; color: #fefcf7 !important; }
.calendar-day.today { border-color: #8e702b !important; color: #8e702b !important; }
#scrollIndicator {
  mix-blend-mode: normal !important;
  background: rgba(15, 46, 36, 0.94);
  padding: 0.5rem 0.75rem;
  border-radius: 999px;
}
