/* Prestige motion layer: visuals only. Every rule is scoped to html.pm, which
   motion.js adds only when the visitor allows motion, so without it the site
   looks exactly as before. */

@keyframes pm-rise{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}
@keyframes pm-word{from{opacity:0;transform:translateY(.45em)}to{opacity:1;transform:none}}
@keyframes pm-pop{from{opacity:0;transform:scale(.6)}to{opacity:1;transform:none}}
@keyframes pm-zoom{from{transform:scale(1.07)}to{transform:none}}
@keyframes pm-flip{from{opacity:0;transform:translateY(-35%)}to{opacity:1;transform:none}}
@keyframes pm-glow{0%,100%{box-shadow:0 0 0 0 rgba(211,36,44,0)}50%{box-shadow:0 0 0 8px rgba(211,36,44,.12)}}

/* header: shrinks a little and gains a shadow once you scroll; progress bar */
html.pm .site-header{transition:box-shadow .3s}
html.pm .site-header .hdr{transition:min-height .3s cubic-bezier(.2,.7,.2,1)}
html.pm .site-header.pm-scrolled{box-shadow:0 8px 24px rgba(16,24,32,.12)}
html.pm .site-header.pm-scrolled .hdr{min-height:58px}
html.pm .site-header{position:sticky}
.pm-progress{position:absolute;left:0;right:0;bottom:0;height:3px;background:linear-gradient(90deg,var(--heat),var(--cool));transform:scaleX(0);transform-origin:left;pointer-events:none;z-index:2}

/* hero intro (home page and inner pages) */
html.pm .pm-seq{opacity:0;animation:pm-rise .7s cubic-bezier(.2,.7,.2,1) forwards;animation-delay:calc(var(--d,0)*1ms)}
html.pm .pm-w{display:inline-block;opacity:0;animation:pm-word .65s cubic-bezier(.2,.7,.2,1) forwards;animation-delay:calc(var(--i)*55ms + 120ms)}
html.pm .hero .report img,html.pm .phero-img img{animation:pm-zoom 1.6s cubic-bezier(.2,.7,.2,1) both}
html.pm .report .chip{opacity:0;animation:pm-pop .45s cubic-bezier(.2,.7,.2,1) forwards;animation-delay:calc(var(--d)*1ms)}

/* scroll reveal: only content below the first screen is hidden, then fades up */
html.pm .pm-rv{opacity:0;transform:translateY(26px);transition:opacity .8s cubic-bezier(.2,.7,.2,1),transform .8s cubic-bezier(.2,.7,.2,1);transition-delay:calc(var(--i,0)*90ms)}
html.pm .pm-rv.pm-in{opacity:1;transform:none}
html.pm .ph img{transition:transform 1.4s cubic-bezier(.2,.7,.2,1)}
html.pm .ph.pm-rv img{transform:scale(1.07)}
html.pm .ph.pm-rv.pm-in img{transform:none}

/* cards and plans lift a bit more on hover */
html.pm a.card{transition:border-color .25s,transform .3s cubic-bezier(.2,.7,.2,1),box-shadow .3s}
html.pm a.card:hover{transform:translateY(-5px);box-shadow:0 18px 36px rgba(16,24,32,.12);border-color:var(--heat)}
html.pm a.card .more{transition:letter-spacing .25s}
html.pm a.card:hover .more{letter-spacing:.02em}
html.pm .plan{transition:transform .3s cubic-bezier(.2,.7,.2,1),box-shadow .3s}
html.pm .plan:hover{transform:translateY(-4px);box-shadow:0 20px 40px rgba(16,24,32,.12)}
html.pm .plan.featured{animation:pm-glow 3.2s ease-in-out infinite 1s}
html.pm .btn{transition:transform .2s cubic-bezier(.2,.7,.2,1),box-shadow .2s,background-color .2s,color .2s}
html.pm .btn:hover{transform:translateY(-2px)}
html.pm .btn-heat:hover{box-shadow:0 10px 22px rgba(211,36,44,.28)}

/* membership price change animates when switching monthly / yearly */
html.pm .plan .price.pm-flip{animation:pm-flip .35s cubic-bezier(.2,.7,.2,1)}

/* process steps: the top line fills in red, one step after another */
html.pm .steps.pm-armed>li{border-top-color:transparent;background:linear-gradient(var(--heat),var(--heat)) left top/0% 3px no-repeat,linear-gradient(var(--line),var(--line)) left top/100% 3px no-repeat;background-origin:border-box;background-clip:border-box;transition:background-size .7s cubic-bezier(.2,.7,.2,1);transition-delay:calc(var(--i)*320ms + 150ms)}
html.pm .band .steps.pm-armed>li{background:linear-gradient(var(--heat),var(--heat)) left top/0% 3px no-repeat,linear-gradient(color-mix(in srgb,var(--steel-ink) 25%,transparent),color-mix(in srgb,var(--steel-ink) 25%,transparent)) left top/100% 3px no-repeat;background-origin:border-box}
html.pm .steps.pm-armed.pm-go>li{background-size:100% 3px,100% 3px}

/* checklists: ticks pop in one by one */
html.pm .checks.pm-armed li::before{opacity:0;transform:rotate(-45deg) scale(.2);transition:opacity .3s,transform .45s cubic-bezier(.2,.7,.2,1.4);transition-delay:calc(var(--i)*160ms + 150ms)}
html.pm .checks.pm-armed.pm-go li::before{opacity:1;transform:rotate(-45deg)}

/* rating stars light up */
html.pm .pm-star{display:inline-block;opacity:.2;transform:scale(.7);transition:opacity .3s,transform .4s cubic-bezier(.2,.7,.2,1.4);transition-delay:calc(var(--i)*120ms)}
html.pm .pm-go .pm-star{opacity:1;transform:none}

/* mobile call bar slides up after the first scroll */
@media (max-width:1020px){
  html.pm .callbar{transform:translateY(110%);transition:transform .4s cubic-bezier(.2,.7,.2,1)}
  html.pm .callbar.pm-show{transform:none}
}

@media (prefers-reduced-motion: reduce){
  html.pm *,html.pm *::before,html.pm *::after{animation:none!important;transition:none!important}
}
