/* Geometría compartida por los portales de reservas.
   La identidad visual y las funciones siguen definidas por cada hotel. */

*,
*::before,
*::after {
  box-sizing: border-box;
}

html {
  min-width: 320px;
  overflow-x: hidden;
  text-size-adjust: 100%;
  -webkit-text-size-adjust: 100%;
}

body {
  min-width: 320px;
  overflow-x: hidden;
}

@supports (overflow: clip) {
  html,
  body {
    overflow-x: clip;
  }
}

img,
video,
canvas,
svg {
  max-width: 100%;
}

@media (max-width: 899px) {
  button,
  .btn,
  [role="button"],
  input,
  select {
    touch-action: manipulation;
  }

  input:not([type="checkbox"]):not([type="radio"]),
  select,
  textarea {
    font-size: 16px !important;
  }

  .mobile-back-action,
  .mobile-primary-action,
  .mobile-view-details-btn,
  .calendar-nav-btn,
  .counter-btn {
    min-height: 44px;
  }

  .success-overlay-card,
  .tp-modal-card,
  .vip-wa-modal,
  .extras-overlay-panel {
    max-width: min(100%, 520px);
    max-height: calc(100dvh - 1.5rem);
    overflow-y: auto;
    overscroll-behavior: contain;
  }
}

@media (max-width: 430px) {
  .mobile-summary-toggle {
    grid-template-columns: auto minmax(48px, 1fr) auto minmax(104px, auto) !important;
  }

  .mobile-summary-label {
    font-size: 0 !important;
    line-height: 1;
  }

  .mobile-summary-label::before {
    content: "TOTAL";
    font-size: 0.55rem;
    letter-spacing: 0.06em;
  }

  .mobile-primary-action {
    min-width: 104px;
  }
}

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    scroll-behavior: auto !important;
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
}

