/* === Adler · motion === */
/* Reveal-on-scroll */
.fx-reveal{opacity:0;transform:translateY(18px);transition:opacity .8s cubic-bezier(.2,.7,.2,1),transform .8s cubic-bezier(.2,.7,.2,1);will-change:opacity,transform}
.fx-reveal.in{opacity:1;transform:translateY(0)}
.fx-reveal[data-fx-d="1"]{transition-delay:.06s}
.fx-reveal[data-fx-d="2"]{transition-delay:.12s}
.fx-reveal[data-fx-d="3"]{transition-delay:.18s}
.fx-reveal[data-fx-d="4"]{transition-delay:.24s}
.fx-reveal[data-fx-d="5"]{transition-delay:.30s}
.fx-reveal[data-fx-d="6"]{transition-delay:.36s}

/* Subtle marquee for ticker rows */
.fx-ticker{display:flex;gap:48px;animation:fxTickerLoop 38s linear infinite;will-change:transform}
@keyframes fxTickerLoop{from{transform:translateX(0)}to{transform:translateX(-50%)}}
.fx-ticker-wrap{overflow:hidden;mask-image:linear-gradient(to right,transparent 0,#000 6%,#000 94%,transparent 100%)}

/* Soft pulsing live dot */
.fx-live::before{content:"";display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--brick);margin-right:8px;vertical-align:1px;box-shadow:0 0 0 0 rgba(168,51,62,.45);animation:fxPulse 2s infinite var(--ease)}
@keyframes fxPulse{0%{box-shadow:0 0 0 0 rgba(168,51,62,.45)}70%{box-shadow:0 0 0 10px rgba(168,51,62,0)}100%{box-shadow:0 0 0 0 rgba(168,51,62,0)}}

/* Hero canvas wash */
.fx-hero-canvas{position:absolute;inset:0;pointer-events:none;opacity:.55;mix-blend-mode:multiply;z-index:0}

/* Underline-grow accents */
.fx-uline{position:relative;display:inline-block}
.fx-uline::after{content:"";position:absolute;left:0;right:0;bottom:-3px;height:2px;background:var(--brick);transform:scaleX(0);transform-origin:left;transition:transform .6s cubic-bezier(.2,.7,.2,1)}
.fx-uline.in::after{transform:scaleX(1)}

/* Counter shimmer when number animates */
.fx-count{font-variant-numeric:tabular-nums}

/* Progress / chart growers */
.fx-bar{transform-origin:left;transform:scaleX(0);transition:transform 1s cubic-bezier(.2,.7,.2,1)}
.fx-bar.in{transform:scaleX(1)}

/* Respect reduced motion */
@media (prefers-reduced-motion: reduce){
  .fx-reveal,.fx-bar,.fx-uline::after{transition:none}
  .fx-reveal{opacity:1;transform:none}
  .fx-bar{transform:none}
  .fx-ticker{animation:none}
  .fx-live::before{animation:none}
}
