/* One restrained motion language. No scroll hijacking, parallax or hidden-content dependency. */
:root { --lj-motion-ease: cubic-bezier(.22, 1, .36, 1); }
html body :is(.btn, .ex-button) {
  transition: transform 320ms var(--lj-motion-ease), background-color 220ms ease,
    color 220ms ease, border-color 220ms ease, box-shadow 320ms var(--lj-motion-ease) !important;
}
html body :is(.ev-card, .ag-model-card, .ad-related-card, .charter-search-card, .bs-partner-service,
  .retained-journey, .page-card, .card, .event-card, .about-card) {
  transition: transform 420ms var(--lj-motion-ease), border-color 240ms ease,
    box-shadow 420ms var(--lj-motion-ease) !important;
}
html body :is(.btn, .ex-button):focus-visible {
  outline: 2px solid #ddd !important;
  outline-offset: 5px;
}
@media (min-width: 768px) and (hover: hover) and (pointer: fine) and (prefers-reduced-motion: no-preference) {
  html body :is(.btn, .ex-button):not(:disabled):not([aria-disabled="true"]):hover {
    transform: translateY(-2px) scale(1.015) !important;
    box-shadow: 0 8px 22px #0003;
  }
  html body :is(.ev-card, .ag-model-card, .ad-related-card, .charter-search-card, .bs-partner-service,
    .retained-journey, .page-card, .card, .event-card, .about-card):hover {
    transform: translateY(-3px) !important;
  }
}
/* Keep white and outline CTAs readable throughout every hover state. */
html body:is(#louvani-editorial, #about-editorial, #bespoke-editorial, body) .btn.btn-light:hover {
  background-color: #e7e7e7 !important;
  color: #080808 !important;
}
html body:is(#louvani-editorial, #about-editorial, #bespoke-editorial, body) .btn.btn-outline:hover {
  background-color: #202020 !important;
  border-color: #a9a9a9 !important;
  color: #fff !important;
}
/* Touch layouts use a short 10px entrance only, with no hover lifting or image zoom. */
@media (max-width: 767px), (hover: none), (pointer: coarse) {
  html body :is(.btn, .ex-button, .ev-card, .ag-model-card, .ad-related-card, .charter-search-card,
    .bs-partner-service, .retained-journey, .page-card, .card, .event-card, .about-card):hover {
    transform: none !important;
    box-shadow: none !important;
  }
  html body :is(.ev-card-image, .ev-feature-photo, .ex-gallery-item):hover img,
  html body .ad-related-card:hover img,
  html body :is(.card, .page-card, .event-card):hover :is(.card-media, .media) { transform: none !important; }
}
/* The setting also quietens legacy hero and navigation transitions; content stays visible. */
@media (prefers-reduced-motion: reduce) {
  html, html body, html body *, html body *::before, html body *::after {
    scroll-behavior: auto !important;
    animation-duration: .01ms !important;
    animation-delay: 0ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
    transition-delay: 0ms !important;
  }
  html body:is(#about-editorial, #louvani-editorial, body) .topbar[data-scroll-header],
  html body :is(.btn, .ex-button, .ev-card, .ag-model-card, .ad-related-card, .charter-search-card,
    .bs-partner-service, .retained-journey, .page-card, .card, .event-card, .about-card) { transition: none !important; }
  html body :is(.btn, .ex-button, .ev-card, .ag-model-card, .ad-related-card, .charter-search-card,
    .bs-partner-service, .retained-journey, .page-card, .card, .event-card, .about-card):hover { transform: none !important; }
  html body :is(.ev-card-image, .ev-feature-photo, .ex-gallery-item):hover img,
  html body .ad-related-card:hover img,
  html body :is(.card, .page-card, .event-card):hover :is(.card-media, .media) { transform: none !important; }
  html body :is(.reveal, .journey-reveal) { opacity: 1 !important; transform: none !important; }
}
