/* Shared premium motion for the coach dashboard and the client portal.
   Transform/opacity only; disabled entirely with prefers-reduced-motion. */
:root{--r90pm-ease:cubic-bezier(.2,.8,.2,1);--r90pm-spring:cubic-bezier(.2,1.25,.35,1)}
@media(prefers-reduced-motion:no-preference){
  /* Coach workspace: each section mounts with a soft rise, its blocks stagger. */
  .r90-workspace-main>:not(.r90-embedded-modules){animation:r90pm-section .5s var(--r90pm-ease) both}
  .r90-workspace-main>.space-y-6>*{animation:r90pm-rise .55s var(--r90pm-ease) both}
  .r90-workspace-main>.space-y-6>:nth-child(2){animation-delay:.06s}
  .r90-workspace-main>.space-y-6>:nth-child(3){animation-delay:.12s}
  .r90-workspace-main>.space-y-6>:nth-child(n+4){animation-delay:.18s}
  .r90-workspace-main .grid>.rounded-xl{animation:r90pm-rise .5s var(--r90pm-ease) both}
  .r90-workspace-main .grid>.rounded-xl:nth-child(2){animation-delay:.05s}
  .r90-workspace-main .grid>.rounded-xl:nth-child(3){animation-delay:.1s}
  .r90-workspace-main .grid>.rounded-xl:nth-child(4){animation-delay:.15s}
  .r90-workspace-main .grid>.rounded-xl{transition:transform .25s var(--r90pm-ease),box-shadow .25s ease,border-color .2s ease}
  @media(hover:hover){
    .r90-workspace-main .grid>.rounded-xl:hover{transform:translateY(-2px);box-shadow:0 16px 34px -26px #ff4d8b}
    .r90-workspace-main .space-y-2>button,.r90-workspace-main .space-y-2>div>button{transition:transform .2s var(--r90pm-ease),background-color .2s ease}
    .r90-workspace-main .space-y-2>button:hover{transform:translateX(3px)}
    #reshape90-main-tabbar button{transition:background-color .25s ease,color .25s ease,transform .2s var(--r90pm-ease)}
    #reshape90-main-tabbar button:hover{transform:translateY(-1px)}
  }
  #reshape90-main-tabbar button[aria-current="page"],#reshape90-main-tabbar button[aria-selected="true"]{animation:r90pm-pop .4s var(--r90pm-spring)}
  #reshape90-main-tabbar button:active{transform:scale(.96)}
  .r90-workspace-header{animation:r90pm-fade .45s ease both}

  /* Client drawer and Progress Hub overlay. */
  #reshape90-client-drawer>div:last-child,#reshape90-client-drawer [role="dialog"]{animation:r90pm-drawer .42s var(--r90pm-spring) both}
  #reshape90-progress-hub .r90p-client-profile{animation:r90pm-rise .5s var(--r90pm-ease) both}
  #reshape90-progress-hub .r90p-profile-nav{animation:r90pm-rise .5s var(--r90pm-ease) .06s both}
  #reshape90-progress-hub .r90p-hub-view:not([hidden]){animation:r90pm-section .42s var(--r90pm-ease) both}

  /* Client portal: tabs and cards. */
  .client-hub-view:not([hidden]){animation:r90pm-section .42s var(--r90pm-ease) both}
  .portal-welcome-card{animation:r90pm-rise .5s var(--r90pm-ease) both}
  .client-hub-tabs button{transition:background-color .25s ease,color .25s ease,transform .18s var(--r90pm-ease)}
  .client-hub-tabs button[aria-selected="true"]{animation:r90pm-pop .4s var(--r90pm-spring)}

  /* Below-the-fold reveals (see premium-motion.js). */
  html.r90pm .r90pm-pending{opacity:0;transform:translate3d(0,16px,0) scale(.99)}
  html.r90pm .r90pm-in{animation:r90pm-reveal .65s var(--r90pm-ease) both}

  /* Press ripple. */
  .r90pm-ripple-host{overflow:hidden!important;isolation:isolate}
  .r90pm-ripple-rel{position:relative}
  .r90pm-ripple{position:absolute;z-index:0;border-radius:50%;background:currentColor;opacity:.16;pointer-events:none;transform:scale(0);animation:r90pm-ripple .65s cubic-bezier(.2,.7,.3,1) forwards}
}
@keyframes r90pm-section{from{opacity:0;transform:translate3d(0,10px,0)}to{opacity:1;transform:none}}
@keyframes r90pm-rise{from{opacity:0;transform:translate3d(0,12px,0)}to{opacity:1;transform:none}}
@keyframes r90pm-fade{from{opacity:0}to{opacity:1}}
@keyframes r90pm-pop{0%{transform:scale(.94)}60%{transform:scale(1.04)}100%{transform:scale(1)}}
@keyframes r90pm-drawer{from{opacity:.4;transform:translate3d(28px,0,0)}to{opacity:1;transform:none}}
@keyframes r90pm-reveal{from{opacity:0;transform:translate3d(0,16px,0) scale(.99)}to{opacity:1;transform:none}}
@keyframes r90pm-ripple{to{transform:scale(1);opacity:0}}
@media(prefers-reduced-motion:reduce){.r90pm-pending{opacity:1!important;transform:none!important}.r90pm-ripple{display:none}}
