/* The default state is the final, fully readable offer, including without JS. */
@keyframes fee-strike{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@keyframes offer-pop{0%{transform:scale(.8)}65%{transform:scale(1.05)}100%{transform:scale(1)}}
@keyframes gift-enter{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
@keyframes offer-shine{from{transform:translateX(-200%) skewX(-18deg)}to{transform:translateX(400%) skewX(-18deg)}}
@keyframes book-pulse{0%,88%,100%{transform:scale(1)}94%{transform:scale(1.03)}}
@media (prefers-reduced-motion:no-preference){
  .offer.offer-playing .fee b{opacity:0}
  .offer.offer-playing.price-visible .fee b{opacity:1}
  .offer.offer-playing .fee s{position:relative;text-decoration:none}
  .offer.offer-playing .fee s::after{content:"";position:absolute;left:0;right:0;top:50%;height:1px;background:currentColor;transform-origin:left;animation:fee-strike .3s .18s ease-out both}
  .offer.offer-playing .fee>span{animation:offer-pop .4s 1.28s ease-out both}
  .offer.offer-playing .gifts figure{animation:gift-enter .45s 1.4s ease-out both}
  .offer.offer-playing .gifts figure:nth-child(2){animation-delay:1.52s}
  .offer.offer-playing .gifts figure:nth-child(3){animation-delay:1.64s}
  .offer .shine-once{position:relative;overflow:hidden}
  .offer .shine-once::after{content:"";pointer-events:none;position:absolute;inset:0 auto 0 0;width:40%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.38),transparent);animation:offer-shine .8s ease-out both}
  #heroCta,#sticky .btn{animation:book-pulse 6s ease-in-out infinite}
}
@media (prefers-reduced-motion:reduce){
  .offer *, .offer *::after, #heroCta, #sticky .btn{animation:none!important;transition:none!important}
}
