/* Royal's restrained motion vocabulary. No layout changes or continuous effects. */
:root {
  --rf-motion-ease: cubic-bezier(.22, .61, .36, 1);
  --rf-motion-fast: 180ms;
  --rf-motion-surface: 320ms;
}
/* Start with the first paint, rather than waiting for footer JavaScript or images. */
@keyframes rf-hero-enter {
  from { opacity: .18; translate: 0 var(--rf-hero-rise, 24px); }
  to { opacity: 1; translate: 0 0; }
}
@media (prefers-reduced-motion: no-preference) {
  .hero > :is(.hero-crown, .rf-main-heading, p, .hero-actions) {
    animation: rf-hero-enter 900ms var(--rf-motion-ease) both;
  }
  .hero > p { animation-delay: 100ms; }
  .hero > .hero-actions { animation-delay: 200ms; }
}
@media (prefers-reduced-motion: no-preference) and (max-width: 1024px) {
  .hero > :is(.hero-crown, .rf-main-heading, p, .hero-actions) {
    --rf-hero-rise: 18px;
    animation-duration: 760ms;
  }
}
/* Keyboard navigation reveals the whole hero immediately. */
.hero:focus-within > :is(.hero-crown, .rf-main-heading, p, .hero-actions) { animation: none; }
@media print {
  .hero > :is(.hero-crown, .rf-main-heading, p, .hero-actions) { animation: none; }
}
.button,
.branch-switch button,
.menu-toggle,
.social-links a {
  transition: color var(--rf-motion-fast) ease,
    background-color var(--rf-motion-fast) ease,
    border-color var(--rf-motion-fast) ease,
    box-shadow var(--rf-motion-surface) ease,
    transform var(--rf-motion-surface) var(--rf-motion-ease);
}
#main :is(.trainer-card, .offer-card, .gallery-item, .plan, .rf-rate-card, .rf-blog-card) {
  transition: transform var(--rf-motion-surface) var(--rf-motion-ease),
    border-color var(--rf-motion-surface) ease,
    box-shadow var(--rf-motion-surface) ease;
}
@media (hover: hover) and (pointer: fine) and (prefers-reduced-motion: no-preference) {
  .button:hover { transform: translateY(-3px); }
  .button-gold:hover { box-shadow: 0 5px 18px rgb(216 173 82 / 14%); }
  #main :is(.trainer-card, .offer-card, .gallery-item, .plan, .rf-rate-card, .rf-blog-card):hover {
    transform: translateY(-5px);
    border-color: var(--gold);
    box-shadow: 0 10px 26px rgb(0 0 0 / 18%);
  }
}
/* Touch does not inherit a sticky lifted hover state. */
@media (hover: none), (pointer: coarse) {
  .button:hover,
  #main :is(.trainer-card, .offer-card, .gallery-item, .plan, .rf-rate-card, .rf-blog-card):hover { transform: none; }
  .gallery-item .rf-photo-expand { opacity: 1; }
}
@media (prefers-reduced-motion: no-preference) {
  .button:not(:disabled):active,
  .branch-switch button:not(:disabled):active,
  .menu-toggle:active,
  .social-links a:active { transform: scale(.98); transition-duration: 100ms; }
}
:is(.button, .branch-switch button, .menu-toggle, .social-links a):focus-visible {
  outline: 2px solid var(--gold);
  outline-offset: 4px;
}
@media (prefers-reduced-motion: reduce) {
  #main :is(.trainer-card, .offer-card, .gallery-item, .plan, .rf-rate-card, .rf-blog-card):hover { transform: none; }
}
