/* HOLO motion — reveal, propagate, connect. Nothing loops without a reason. */
:root{
  --duration-fast:180ms; /* @kind other */
  --duration-medium:600ms; /* @kind other */
  --duration-slow:1100ms; /* @kind other */
  --duration-draw:1300ms; /* @kind other */

  --ease-standard:cubic-bezier(0.4,0,0.2,1); /* @kind other */
  --ease-reveal:cubic-bezier(0.2,0.7,0.3,1); /* @kind other */
  --ease-draw:cubic-bezier(0.4,0.5,0.2,1); /* @kind other */

  --stagger:0.15s; /* @kind other */
}
@keyframes holoRise{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}
@keyframes holoFade{from{opacity:0}to{opacity:1}}
@keyframes holoDraw{from{stroke-dashoffset:var(--draw-length,1400)}to{stroke-dashoffset:0}}
@media (prefers-reduced-motion:no-preference){
  .holo-rise{animation:holoRise var(--duration-medium) var(--ease-reveal) both}
  .holo-fade{animation:holoFade 800ms ease both}
  .holo-draw{stroke-dasharray:var(--draw-length,1400);animation:holoDraw var(--duration-draw) var(--ease-draw) both}
}
@media (prefers-reduced-motion:reduce){
  .holo-rise,.holo-fade,.holo-draw{animation:none!important;opacity:1!important;transform:none!important;stroke-dashoffset:0!important}
}
