.awesome-hotel-elementor-content,
.awesome-hotel-widget {
  width: 100%;
}

/*
 * Elementor applies kit-level gap, margin, and padding variables to its root
 * flex container. The seeded homepage's sections already own their approved
 * spacing, so keep only this plugin-owned page's root stack flush.
 */
body.awesome-hotel-elementor-home
  .awesome-hotel-elementor-content
  > .elementor
  > .e-con {
  --margin-top: 0px;
  --margin-right: 0px;
  --margin-bottom: 0px;
  --margin-left: 0px;
  --padding-top: 0px;
  --padding-right: 0px;
  --padding-bottom: 0px;
  --padding-left: 0px;
  --gap: 0px;
  --row-gap: 0px;
  --column-gap: 0px;
  --widgets-spacing: 0px;
  --widgets-spacing-row: 0px;
  --widgets-spacing-column: 0px;
  width: 100% !important;
  max-width: none !important;
  margin: 0 !important;
  padding: 0 !important;
  gap: 0 !important;
  row-gap: 0 !important;
  column-gap: 0 !important;
}

/*
 * Elementor kits add a default block-end margin to adjacent widgets. These
 * widgets already contain the approved section spacing and full-bleed
 * backgrounds, so that kit spacing exposes the fixed hero media between
 * sections. Keep the reset scoped to this plugin's widgets.
 */
.awesome-hotel-elementor-content
  .elementor-widget[class*="elementor-widget-awesome-hotel-"] {
  width: 100% !important;
  max-width: none !important;
  margin: 0 !important;
  --kit-widget-spacing: 0px;
  --widgets-spacing: 0px;
  --widgets-spacing-row: 0px;
  --widgets-spacing-column: 0px;
}

.awesome-hotel-widget > *,
.elementor-widget[class*="elementor-widget-awesome-hotel-"] > .elementor-widget-container {
  width: 100% !important;
  max-width: none !important;
}

.e-con > .elementor-element.elementor-widget-awesome-hotel-hero,
.e-con > .elementor-element.elementor-widget-awesome-hotel-resort-carousel,
.e-con > .elementor-element.elementor-widget-awesome-hotel-amenities,
.e-con > .elementor-element.elementor-widget-awesome-hotel-dining,
.e-con > .elementor-element.elementor-widget-awesome-hotel-daytour,
.e-con > .elementor-element.elementor-widget-awesome-hotel-events,
.e-con > .elementor-element.elementor-widget-awesome-hotel-location,
.e-con > .elementor-element.elementor-widget-awesome-hotel-reviews,
.e-con > .elementor-element.elementor-widget-awesome-hotel-stay-cta {
  width: 100% !important;
  max-width: none !important;
  flex: 0 0 auto !important;
  --flex-grow: 0;
  --flex-shrink: 0;
}

/*
 * Elementor's frontend image reset uses an intrinsic auto height. Restore the
 * cover behavior only for media frames rendered by these custom widgets.
 */
.awesome-hotel-widget .resort-carousel-media img,
.awesome-hotel-widget .amenity-media img,
.awesome-hotel-widget .dining-image img,
.awesome-hotel-widget .dining-venue-media img,
.awesome-hotel-widget .daytour-slide img,
.awesome-hotel-widget .events-media img,
.awesome-hotel-widget .stay-cta-media img {
  display: block;
  width: 100% !important;
  max-width: none !important;
  height: 100% !important;
  object-fit: cover !important;
}

.awesome-hotel-widget [data-ah-slider],
.awesome-hotel-widget [data-ah-paged-slider] {
  touch-action: pan-y;
}

.awesome-hotel-widget [data-ah-slider]:focus-visible,
.awesome-hotel-widget [data-ah-paged-slider]:focus-visible {
  outline: 2px solid var(--gold);
  outline-offset: 4px;
}

.awesome-hotel-widget [data-ah-tab-panel][hidden] {
  display: none !important;
}

.awesome-hotel-widget [data-ah-paged-slider] [data-ah-slide][hidden] {
  display: none !important;
}

.awesome-hotel-widget [data-ah-slide][aria-hidden="true"] {
  pointer-events: none;
}

.awesome-hotel-widget [data-ah-reel-video] {
  display: block;
  width: 100%;
  height: 100%;
  min-height: 0;
  object-fit: cover;
  background: var(--champagne);
  filter: saturate(0.9) contrast(0.98);
}

.awesome-hotel-elementor-map {
  width: 100%;
  height: 100%;
  min-height: 500px;
}

.awesome-hotel-elementor-map--google {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  background: var(--sand, #f2eadc);
}

.awesome-hotel-elementor-map__frame {
  display: block;
  width: 100%;
  height: 100%;
  min-height: inherit;
  border: 0;
}

.awesome-hotel-elementor-map__fallback {
  position: absolute;
  right: 1rem;
  bottom: 1rem;
  z-index: 1;
  display: inline-flex;
  align-items: center;
  min-height: 2.5rem;
  padding: 0.6rem 0.9rem;
  border: 1px solid rgba(255, 255, 255, 0.78);
  border-radius: 999px;
  background: rgba(255, 250, 241, 0.94);
  box-shadow: 0 6px 18px rgba(49, 34, 21, 0.16);
  color: var(--brown, #37291d);
  font-family: "Jost", sans-serif;
  font-size: 0.69rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  line-height: 1;
  text-decoration: none;
  text-transform: uppercase;
  transition: background-color 180ms ease, color 180ms ease;
}

.awesome-hotel-elementor-map__fallback:hover,
.awesome-hotel-elementor-map__fallback:focus-visible {
  background: var(--brown, #37291d);
  color: var(--ivory, #fbf5ea);
}

@media (max-width: 900px) {
  .awesome-hotel-elementor-map {
    min-height: 430px;
  }
}

@media (max-width: 640px) {
  .awesome-hotel-elementor-map {
    min-height: 360px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .awesome-hotel-widget [data-ah-track] {
    transition-duration: 0.01ms !important;
  }
}
