/* ==========================================================================
   Stay&Go - Motion polish (fase 1)
   Archivo de override: no modifica logica ni JS. Se enlaza DESPUES del resto de CSS.
   Criterios: Emil Kowalski (emil-design-eng / find-animation-opportunities).
   1) Hover solo en dispositivos con raton (sin "hover pegajoso" en movil).
   2) Pulsos infinitos acotados + respeto a prefers-reduced-motion.
   3) Entrada suave del modal de acceso.
   ========================================================================== */

:root{
  --sg-ease-out: cubic-bezier(0.23, 1, 0.32, 1);
}

/* --------------------------------------------------------------------------
   1) Hover sin efecto en pantallas tactiles
   Anula el transform de :hover cuando el dispositivo no tiene hover real.
   Solo se anulan transformaciones simples (subir / escalar). Autogenerado
   desde los CSS actuales: 90 selectores.
   -------------------------------------------------------------------------- */
@media (hover: none){
.accessChoice:hover,
.air-btn:hover,
.airQuickBtn:hover,
.bentoCard:hover,
.bmFab:hover,
.btn:hover,
.cal-dia:hover,
.carBtn:hover,
.card:hover,
.card:hover .openBtn.sg587a-open,
.cmpBtn:hover,
.collectionCard:hover img,
.expCard:hover,
.expCta a:hover,
.expLink:hover,
.exploreZones .zoneCardPro:hover,
.exploreZones .zoneCardPro:hover .zoneMediaWrap img,
.favA:hover,
.favBtn:hover,
.favCard:hover,
.favCard:hover .favImg img,
.favFloatBtn:hover,
.favIconBtn:hover,
.gCard:hover,
.heroBtnPrimary:hover,
.homeGuideCard:hover,
.homeGuidePills a:hover,
.homeSeasonMini:hover,
.homeSeasonTags a:hover,
.listingSection .card:hover,
.mBtn:hover,
.map-box a:hover,
.mediaItem:hover,
.mg-thumb:hover img,
.nav a:hover,
.openBtn:hover,
.owner-box a:hover,
.planMomentCard:hover,
.propCard:hover,
.rBtn:hover,
.restItem:hover,
.restLink:hover,
.rmStarBtn:hover,
.seeAll:hover,
.sg-exp148-card:hover,
.sg-f168-card:hover,
.sg-f168-card:hover .sg-f168-card__img img,
.sg-f178__btn:hover,
.sg-f178__card:hover .sg-f178__image img,
.sg-f179-btn:hover,
.sg-f180-zone-links__grid a:hover,
.sg-pci-seo-card:hover,
.sg188-card:hover,
.sg210Grid a:hover,
.sg217Card:hover,
.sg231Card:hover,
.sg232Card:hover,
.sg234Card:hover,
.sg235Card:hover,
.sg239Card:hover,
.sg240Card:hover,
.sg273Conversion__btn:hover,
.sg275Os:hover,
.sg276Access:hover,
.sg276Os:hover,
.sg277Access:hover,
.sg278Access:hover,
.sgCardPower:hover,
.sgCardPower:hover .sgOpenArrow,
.sgChip:hover,
.sgCtaMini:hover,
.sgDateChip:hover,
.sgDecisionCard:hover,
.sgHomeF185Ready .sgHomeExpCleanF182__card:hover,
.sgHomeFinalF196__card:hover,
.sgHostBtn:hover,
.sgIntentCard:hover,
.sgMonsterBtn:hover,
.sgMoodActions a:hover,
.sgMoodCard:hover,
.sgQuickStayBtn:hover,
.sgRhythmCard:hover,
.sgTimingCard:hover,
.sgVelocityCard:hover,
.srBtnResenas:hover,
.submit:hover,
.tripBuilderActions a:hover,
.zoneCard:hover,
.zoneCard:hover .zoneMedia img,
body[data-page-type="property"].sg-f378-property-ready .galleryBtn:hover img{
  transform: none !important;
}
}

/* --------------------------------------------------------------------------
   2) Pulsos del flujo de reserva
   - Dejan de ser infinitos: 3 repeticiones y se detienen.
   - Con prefers-reduced-motion: sin animacion (se mantiene el estado final).
   -------------------------------------------------------------------------- */
.sgUrgencyStrong,
.sgSmartAnchorPulse,
.sgSubmitBoost.is-pack9-hot,
.sgBookBar__btn.is-pack9-hot{
  animation-iteration-count: 3;
}

@media (prefers-reduced-motion: reduce){
  .sgUrgencyStrong,
  .sgSmartAnchorPulse,
  .sgSubmitBoost.is-pack9-hot,
  .sgBookBar__btn.is-pack9-hot,
  .sgRecoveryPulse,
  .sgpPulse{
    animation: none !important;
  }
}

/* --------------------------------------------------------------------------
   3) Modal de acceso: entrada con fundido + ligera escala (centrado, sin origen)
   Solo en la apertura. El cierre sigue siendo inmediato (no toca el JS).
   -------------------------------------------------------------------------- */
@keyframes sgAccessFadeIn{
  from{ opacity: 0; }
  to{ opacity: 1; }
}
@keyframes sgAccessCardIn{
  from{ opacity: 0; transform: translateY(8px) scale(0.96); }
  to{ opacity: 1; transform: translateY(0) scale(1); }
}

.accessModal.open{
  animation: sgAccessFadeIn 180ms var(--sg-ease-out) backwards;
}
.accessModal.open .accessModal__card{
  animation: sgAccessCardIn 220ms var(--sg-ease-out) backwards;
}

@media (prefers-reduced-motion: reduce){
  .accessModal.open .accessModal__card{
    animation: sgAccessFadeIn 160ms ease backwards;
  }
}
