/* Chameleon UI · motion layer */
:root{
  --cui-dur-instant:80ms;--cui-dur-fast:150ms;--cui-dur-base:250ms;--cui-dur-slow:400ms;
  --cui-ease-standard:cubic-bezier(.2,0,0,1);   /* most UI transitions */
  --cui-ease-out:cubic-bezier(0,0,.2,1);        /* entering */
  --cui-ease-in:cubic-bezier(.4,0,1,1);         /* exiting */
  --cui-ease-emphasized:cubic-bezier(.05,.7,.1,1);
  --cui-ease-spring:cubic-bezier(.5,1.5,.5,1);
}
/* transition utilities (token-driven, consistent everywhere) */
.cui-transition{transition:transform var(--cui-dur-base) var(--cui-ease-standard),
  opacity var(--cui-dur-base) var(--cui-ease-standard)}
.cui-transition-fast{transition:transform var(--cui-dur-fast) var(--cui-ease-standard),
  opacity var(--cui-dur-fast) var(--cui-ease-standard)}
.cui-transition-colors{transition:color var(--cui-dur-fast) var(--cui-ease-standard),
  background-color var(--cui-dur-fast) var(--cui-ease-standard),
  border-color var(--cui-dur-fast) var(--cui-ease-standard)}
/* curated enter animations */
@keyframes cui-fade-in{from{opacity:0}to{opacity:1}}
@keyframes cui-rise-in{from{opacity:0;transform:translateY(.5rem)}to{opacity:1;transform:none}}
@keyframes cui-scale-in{from{opacity:0;transform:scale(.96)}to{opacity:1;transform:none}}
.cui-animate-fade{animation:cui-fade-in var(--cui-dur-base) var(--cui-ease-out) both}
.cui-animate-rise{animation:cui-rise-in var(--cui-dur-base) var(--cui-ease-out) both}
.cui-animate-scale{animation:cui-scale-in var(--cui-dur-fast) var(--cui-ease-out) both}
/* stagger a list: set style="--i:N" per child (or --cui-stagger to tune the step) */
.cui-stagger > *{animation:cui-rise-in var(--cui-dur-base) var(--cui-ease-out) both;
  animation-delay:calc(var(--cui-stagger,60ms) * var(--i,0))}
/* REDUCE ≠ REMOVE: decorative motion collapses to a quick fade; essential feedback keeps a gentle loop */
@media(prefers-reduced-motion:reduce){
  .cui-animate-rise,.cui-animate-scale{animation-name:cui-fade-in;animation-duration:var(--cui-dur-fast)}
  .cui-stagger > *{animation:cui-fade-in var(--cui-dur-fast) both;animation-delay:0!important}
  .cui-transition,.cui-transition-fast{transition-duration:var(--cui-dur-instant)}
  /* class beats the base *{...!important} nuke, so these survive as reduced (not removed) feedback */
  .cui-spinner,.cui-motion-essential{animation-duration:1.2s!important;animation-iteration-count:infinite!important}
}
