/* CHRIS motion system · public marketing surfaces only. */
:is(.public-site,.weight-page) {
  --motion-ease:cubic-bezier(.22,1,.36,1);
  --motion-fast:180ms;
  --motion-state:220ms;
  --motion-return:500ms;
  --motion-text:640ms;
  --motion-reveal:680ms;
  --motion-stagger:80ms;
}
.pm-typography .pm-word {display:inline-block;color:inherit;vertical-align:baseline}
.motion-ready .pm-reveal.pm-pending {opacity:.4}
.motion-ready .pm-reveal.pm-entered:not(.pm-typography) {animation:pm-content-in var(--motion-reveal) var(--motion-ease) var(--pm-reveal-delay,0ms) backwards}
.motion-ready .pm-typography.pm-entered .pm-word {animation:pm-word-in var(--motion-text) var(--motion-ease) var(--pm-text-delay,0ms) backwards}
.motion-ready :is(.hero-actions,.weight-actions).pm-entered {animation-name:pm-action-in}
.motion-ready :is(.hero-copy>.lead,.weight-hero-lead).pm-entered {animation-duration:600ms}
@keyframes pm-content-in {from{opacity:.4;transform:translate3d(0,14px,0)}to{opacity:1;transform:translate3d(0,0,0)}}
@keyframes pm-word-in {from{opacity:.3;transform:translate3d(0,.28em,0)}to{opacity:1;transform:translate3d(0,0,0)}}
@keyframes pm-action-in {from{opacity:.65;transform:translate3d(0,9px,0)}to{opacity:1;transform:translate3d(0,0,0)}}
/* The marked section follows its reading order without moving the layout. */
.motion-ready [data-motion-sequence] .pm-sequence-step.pm-pending {opacity:0}
.motion-ready [data-motion-sequence] .pm-sequence-step.pm-entered:not(.pm-typography) {animation-name:pm-sequence-in}
.motion-ready [data-motion-sequence] .pm-sequence-step.pm-entered .pm-word {animation-name:pm-sequence-word-in}
.motion-ready [data-motion-sequence].pm-sequence-settled .pm-sequence-step,
.motion-ready [data-motion-sequence].pm-sequence-settled .pm-word,
.motion-ready [data-motion-sequence] .pm-sequence-skipped,
.motion-ready [data-motion-sequence] .pm-sequence-skipped .pm-word {opacity:1;transform:none;animation:none!important}
@keyframes pm-sequence-in {from{opacity:0;transform:translate3d(0,14px,0)}to{opacity:1;transform:translate3d(0,0,0)}}
@keyframes pm-sequence-word-in {from{opacity:0;transform:translate3d(0,.28em,0)}to{opacity:1;transform:translate3d(0,0,0)}}
/* A small optical softness is restricted to the desktop hero. */
@media(min-width:900px) and (hover:hover) and (pointer:fine) {
  .motion-ready .pm-hero-heading.pm-entered .pm-word {animation-name:pm-hero-word-in}
  @keyframes pm-hero-word-in {from{opacity:.35;filter:blur(1.5px);transform:translate3d(0,.28em,0)}to{opacity:1;filter:blur(0);transform:translate3d(0,0,0)}}
}
/* One owner for each element: replace the older landing-page entrances. */
.motion-ready .weight-hero :is(.weight-eyebrow,h1,.weight-hero-lead,.weight-actions,.weight-note):not(.pm-entered) {animation:none}
.motion-ready .weight-hero h1.pm-entered {animation:none}
.motion-ready .method-intro {opacity:1;transform:none;transition:none}
.motion-ready :is(.hero-photo,.studio-photo,.weight-hero-visual,.weight-studio-image) {overflow:hidden}
.motion-ready .pm-media {scale:1.025;transition:scale 900ms var(--motion-ease)}
.motion-ready .pm-media.pm-media-seen {scale:1.012}
@media(min-width:900px) and (hover:hover) and (pointer:fine) {
  .motion-ready .pm-media {translate:0 var(--pm-photo-y,0px);scale:1.04}
  .motion-ready .pm-media.pm-media-seen {scale:1.028}
}

/* All variants share a grid cell, so the longest term reserves its width. */
.hero-copy>.eyebrow {display:flex;align-items:center;flex-wrap:wrap;gap:4px 8px}
.pm-rotator {position:relative;display:inline-flex;align-items:center;gap:2px;max-width:100%;margin-left:8px;padding-right:30px;color:#52663b;letter-spacing:.06em;min-height:28px}
.pm-rotator::before {content:"/";margin-right:7px;color:#a0a397}
.pm-rotator-words {display:inline-grid;align-items:center;overflow:clip;line-height:1.7;padding-block:3px}
.pm-rotator-word {grid-area:1/1;white-space:nowrap;opacity:0;transform:translate3d(0,65%,0);transition:opacity 560ms var(--motion-ease),transform 560ms var(--motion-ease)}
.pm-rotator-word.is-current {opacity:1;transform:translate3d(0,0,0)}
.pm-rotator-word.is-leaving {opacity:0;transform:translate3d(0,-65%,0)}
.pm-rotation-toggle {display:none;position:absolute;right:0;top:50%;transform:translateY(-50%);width:28px;height:28px;padding:0;border:0;border-radius:50%;background:transparent;color:inherit;cursor:pointer;touch-action:manipulation}
.motion-ready .pm-rotation-toggle:not([hidden]) {display:grid;place-items:center}
.pm-rotation-toggle::before {content:"";position:absolute;inset:-8px}
.pm-rotation-toggle svg {width:11px;height:11px;fill:currentColor}
.pm-rotation-toggle .pm-play,.pm-rotation-toggle[aria-pressed="true"] .pm-pause {display:none}
.pm-rotation-toggle[aria-pressed="true"] .pm-play {display:block}
.pm-rotation-toggle:focus-visible {outline:2px solid #52663b;outline-offset:2px}
@media(max-width:600px) {
  .pm-rotator {margin-left:0;font-size:9px}
  .hero-copy>.eyebrow {column-gap:7px}
}
@media(max-width:360px) {
  .weight-hero {grid-template-columns:minmax(0,1fr)}
  .weight-hero-copy,.weight-hero-visual {min-width:0}
  .weight-hero h1 {font-size:clamp(31px,10vw,36px)}
}

/* Keep input, selection, dialog and success feedback immediate and consistent. */
:is(.public-site,.weight-page) :is(input:not([type="checkbox"]),select,textarea) {transition:border-color var(--motion-fast) ease,box-shadow var(--motion-state) ease,background-color var(--motion-state) ease}
:is(.public-site,.weight-page) :is(input:not([type="checkbox"]),select,textarea):focus {box-shadow:0 0 0 3px #b9ea7029}
:is(.public-site,.weight-page) :is(.segmented button,.location-switch button,.fitness-answers button,.booking-days button,.booking-times button,.booking-progress span,.booking-progress b) {transition:background-color var(--motion-state) ease,border-color var(--motion-state) ease,color var(--motion-fast) ease,box-shadow var(--motion-state) ease}
.motion-ready :is(.public-site,.weight-page) dialog[open] {animation:pm-dialog-in 220ms var(--motion-ease) both}
@keyframes pm-dialog-in {from{opacity:.8;transform:translate3d(0,10px,0)}to{opacity:1;transform:translate3d(0,0,0)}}
.motion-ready :is(#form-status:not(.error),.weight-form-status.is-success,.booking-success) {animation:pm-success-in 220ms var(--motion-ease) backwards}
@keyframes pm-success-in {from{opacity:.65;transform:translate3d(0,5px,0)}to{opacity:1;transform:translate3d(0,0,0)}}
.motion-ready #fitness-content {animation:none}
#fitness-content progress.pm-native-progress {position:absolute;width:1px;height:1px;margin:0;overflow:hidden;clip-path:inset(50%)}
.pm-fitness-progress {height:4px;width:100%;margin-top:18px;margin-bottom:4px;background:#404040;border-radius:4px;overflow:hidden}
.pm-fitness-progress>span {display:block;height:100%;width:100%;background:#b9ea70;transform:scaleX(var(--pm-progress,0));transform-origin:left center;transition:transform 220ms var(--motion-ease)}
@media(hover:hover) and (pointer:fine) {
  .pm-rotation-toggle:hover {background:#b9ea7033}
}
/* Reduced motion is live, including mid-transition preference changes. */
@media(prefers-reduced-motion:reduce) {
  html {scroll-behavior:auto!important}
  :is(.public-site,.weight-page) *, :is(.public-site,.weight-page) *::before, :is(.public-site,.weight-page) *::after {animation:none!important;transition:none!important;scroll-behavior:auto!important}
  .motion-ready .pm-reveal,.motion-ready .pm-typography .pm-word {opacity:1!important;transform:none!important;filter:none!important}
  .motion-ready .pm-media {scale:1!important;translate:0 0!important}
  .pm-rotator-word {transform:none!important}
  .pm-rotation-toggle {display:none!important}
}
@media print {
  .pm-reveal,.pm-typography .pm-word {opacity:1!important;transform:none!important;filter:none!important;animation:none!important}
  .pm-rotation-toggle {display:none!important}
}
