/* One public motion vocabulary. Direction and state carry the feedback. */
.public-site {
  --motion-ease:cubic-bezier(.22,1,.36,1);
  --motion-fast:180ms;
  --motion-state:280ms;
  --motion-return:480ms;
}
.premium-control {
  --pm-x:0px;--pm-y:0px;--pm-press:1;
  position:relative;isolation:isolate;
  translate:var(--pm-x) var(--pm-y);
  scale:var(--pm-press);
  transition:translate var(--motion-return) var(--motion-ease),scale var(--motion-fast) var(--motion-ease),box-shadow var(--motion-state) var(--motion-ease),border-color var(--motion-state) ease,background-color var(--motion-state) ease,color var(--motion-state) ease;
}
.premium-control.is-magnetic {transition-duration:120ms,var(--motion-fast),var(--motion-state),var(--motion-state),var(--motion-state),var(--motion-state);will-change:translate}
.premium-control:active:not(:disabled):not([aria-disabled="true"]) {--pm-press:.98}
.button.premium-control,.booking-scope-options>button.premium-control:hover,.fitness-mode.premium-control:hover {transform:none}
.premium-arrow {display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;transition:translate var(--motion-return) var(--motion-ease)}
.fitness-mode.premium-control:is(:hover,:focus-visible) .premium-arrow {transform:none}

/* The fitness trigger owns its ring and glow; a generic clipping/light layer must not mask them. */
.premium-cta:not(#fitness-trigger) {overflow:hidden}
.premium-cta:not(#fitness-trigger)::after {
  content:"";position:absolute;z-index:-1;inset:-2px;
  background:radial-gradient(110px circle at var(--pm-light-x,50%) var(--pm-light-y,50%),rgba(255,255,255,.24),transparent 68%);
  opacity:0;pointer-events:none;transition:opacity var(--motion-state) ease;
}
.premium-control:where(:disabled,[aria-disabled="true"]) {translate:0 0;scale:1;box-shadow:none}
.premium-control:where(:disabled,[aria-disabled="true"]) .premium-arrow {translate:0 0}
@media(hover:hover) and (pointer:fine) {
  .premium-control:not(:disabled):not([aria-disabled="true"]):is(:hover,:focus-visible) .premium-arrow[data-pm-direction="ne"] {translate:3px -3px}
  .premium-control:not(:disabled):not([aria-disabled="true"]):is(:hover,:focus-visible) .premium-arrow[data-pm-direction="e"] {translate:4px 0}
  .premium-control:not(:disabled):not([aria-disabled="true"]):is(:hover,:focus-visible) .premium-arrow[data-pm-direction="w"] {translate:-4px 0}
  .premium-control:not(:disabled):not([aria-disabled="true"]):is(:hover,:focus-visible) .premium-arrow[data-pm-direction="s"] {translate:0 4px}
  .premium-control:not(:disabled):not([aria-disabled="true"]):is(:hover,:focus-visible) .premium-arrow[data-pm-direction="n"] {translate:0 -4px}
  .premium-cta:not(:disabled):not([aria-disabled="true"]):hover::after {opacity:.65}
  .button.premium-cta:hover:not(:disabled) {box-shadow:0 8px 22px rgba(16,16,16,.1)}
  .button.dark.premium-cta:hover {box-shadow:0 10px 25px rgba(16,16,16,.18)}
  .button.outline.premium-cta:hover {box-shadow:0 7px 20px rgba(16,16,16,.07)}
  .booking-services>button.premium-control:hover,.booking-scope-options>button.premium-control:hover,.fitness-mode.premium-control:hover {border-color:#7c9d51;box-shadow:0 10px 28px rgba(16,16,16,.09)}
  .text-link.premium-control:hover,.booking-text-link.premium-control:hover {text-decoration:underline;text-underline-offset:5px}
}
@media(hover:none),(pointer:coarse){
  .premium-control {translate:0 0;will-change:auto}
  .premium-control:active:not(:disabled) {--pm-press:.98}
  .premium-control:hover .premium-arrow {translate:0 0!important}
  .premium-cta::after {display:none}
}
@media(prefers-reduced-motion:reduce){
  .premium-control,.premium-arrow {transition:none!important;translate:0 0!important;scale:1!important;will-change:auto!important}
  .premium-cta::after {display:none!important}
}
