/* ==========================================================================
   Site-wide flow: smooth scrolling, scroll-linked depth, word reveals,
   staggered grids, velocity response and a soft cursor. Driven by flow.js.
   ========================================================================== */

/* Section headings: words rise from a mask as they enter */
.fx-words .fx-w{display:inline-block;overflow:hidden;vertical-align:top;padding:.08em .02em .14em;margin:-.08em -.02em -.14em}
.fx-words .fx-w>span{display:inline-block;transform:translate3d(0,110%,0) rotate(5deg);transform-origin:0 100%;transition:transform 1s var(--soft);transition-delay:calc(var(--w)*55ms)}
.fx-words.fx-in .fx-w>span{transform:none}

/* Upgraded reveals: depth + blur instead of a flat fade */
.reveal,.reveal-left,.reveal-right{filter:blur(8px);transition:opacity 1s var(--soft),transform 1.1s var(--soft),filter 1s var(--soft)}
.reveal{transform:translate3d(0,48px,0) scale(.97)}
.reveal-left{transform:translate3d(-60px,0,0) rotate(-1.5deg)}
.reveal-right{transform:translate3d(60px,0,0) rotate(1.5deg)}
.reveal.in,.reveal-left.in,.reveal-right.in{filter:none}

/* Grid children cascade inside a revealed block */
.fx-cascade>*{opacity:0;transform:translate3d(0,40px,0) scale(.96);transition:opacity .8s var(--soft),transform 1s var(--soft),box-shadow .4s;transition-delay:calc(var(--c,0)*70ms)}
.fx-cascade.fx-in>*{opacity:1;transform:none}

/* Parallax targets (offset written by flow.js) */
[data-parallax]{translate:0 var(--py-off,0px);will-change:translate}

/* Soft cursor (fine pointers only) */
.fx-cursor,.fx-dot{position:fixed;left:0;top:0;z-index:300;pointer-events:none;border-radius:50%;opacity:0;transition:opacity .3s,width .35s var(--spring),height .35s var(--spring),margin .35s var(--spring),background .3s,border-color .3s}
.fx-cursor{width:38px;height:38px;margin:-19px 0 0 -19px;border:1.5px solid rgba(29,185,194,.7);background:rgba(29,185,194,.06);
  display:grid;place-items:center;font:700 .62rem/1 var(--font-body);color:#fff;letter-spacing:.02em}
.fx-dot{width:6px;height:6px;margin:-3px 0 0 -3px;background:var(--cyan)}
html.fx-has-cursor .fx-cursor,html.fx-has-cursor .fx-dot{opacity:1}
.fx-cursor.is-hover{width:62px;height:62px;margin:-31px 0 0 -31px;background:rgba(29,185,194,.14);border-color:rgba(29,185,194,.9)}
.fx-cursor.is-view{width:84px;height:84px;margin:-42px 0 0 -42px;background:var(--grad);border-color:transparent}
.fx-cursor.is-text{opacity:0!important}
.fx-cursor.is-down{transform:scale(.85)}

@media (prefers-reduced-motion:reduce){
  .fx-words .fx-w>span,.fx-cascade>*{transform:none!important;opacity:1!important;transition:none}
  [data-parallax]{translate:none}
  .fx-cursor,.fx-dot{display:none}
}
