/* Touch devices have a smaller rendering budget, especially during Safari scrolling.
   Keep the brand details while avoiding full-screen filtered, animated surfaces. */
@media (max-width:1000px), (hover:none) and (pointer:coarse) {
  header, header.scrolled, .guide-header, .mobile-contact,
  .booking-glass, .hero .booking-glass, .hero .photo-selector button, .hero .cover-play {
    -webkit-backdrop-filter:none;
    backdrop-filter:none;
  }
  header, header.scrolled, .guide-header { background:linear-gradient(112deg,#14202bf5,#0a121bf7); }
  .mobile-contact { background:#09121e; }
  .booking-glass, .hero .booking-glass { background:linear-gradient(118deg,#182b39f5,#0b1926f7); }
  .booking-calendar::backdrop { -webkit-backdrop-filter:none; backdrop-filter:none; }
  /* A shrinking sticky header changes document height and can move the scroll offset. */
  header:not(.guide-header), header.scrolled:not(.guide-header) { height:82px; transition:none; }
  .compass-background img { transform:translateX(12%) rotate(-8deg); will-change:auto; }
  .brand-logo, header .brand-mark, .services .service-emblem img,
  .amenity-emblem img, .partner-mark img, .partner-seal img,
  .signature-driver img, .signature-villa img, .weather-icon img, .company-socials img { filter:none; }
  .hero .photo-stage .cover-slide { transition:none; transform:none; will-change:auto; visibility:hidden; }
  .hero .photo-stage .cover-slide.is-active { visibility:visible; }
  /* Fine static glints, with only a few opacity animations on a visible card. */
  .vip-sparkles i:nth-child(n), .parking-vip .vip-sparkles i:nth-child(n) { display:none; animation:none; filter:none; opacity:.8; transform:translate(-50%,-50%); }
  .vip-sparkles i:nth-child(16n+1), .parking-vip .vip-sparkles i:nth-child(8n+1) { display:block; }
  .shooting-star { box-shadow:none; }
}
@media (max-width:1000px) and (prefers-reduced-motion:no-preference), (hover:none) and (pointer:coarse) and (prefers-reduced-motion:no-preference) {
  .vip-sparkles i:nth-child(64n+1), .parking-vip .vip-sparkles i:nth-child(32n+1) {
    animation:mobile-star-glint 7s ease-in-out var(--glint-delay) infinite;
    animation-play-state:paused;
  }
  .vip-sparkles.is-visible i:nth-child(64n+1), .parking-vip .vip-sparkles.is-visible i:nth-child(32n+1) { animation-play-state:running; }
}
@keyframes mobile-star-glint { 0%,75%,100% { opacity:.55; } 35%,45% { opacity:1; } }
