/* OFTALMO 1 — FX engine (parallax + scroll reveal + heading animations). Shared. */
.fx-hero{position:relative;min-height:100vh;display:flex;align-items:center;overflow:hidden;padding-top:90px}
.fx-layers{position:absolute;inset:0;z-index:0;overflow:hidden}
.fx-layer{position:absolute;inset:-9%;background-size:cover;background-position:center;will-change:transform}
.fx-layer.blur{filter:blur(16px) saturate(1.12)}
.fx-bokeh{position:absolute;inset:-13%;background-size:cover;background-position:center;mix-blend-mode:screen;opacity:.55;will-change:transform;pointer-events:none}
.fx-scrim{position:absolute;inset:0;z-index:1;pointer-events:none}
.fx-content{position:relative;z-index:2;max-width:680px;width:100%}
.fx-scroll-cue{position:absolute;left:50%;bottom:26px;transform:translateX(-50%);z-index:3;width:26px;height:42px;border:1.5px solid rgba(255,255,255,.45);border-radius:14px;display:flex;justify-content:center;padding-top:7px}
.fx-scroll-cue::before{content:"";width:3px;height:8px;border-radius:3px;background:rgba(255,255,255,.8);animation:fxcue 1.8s ease-in-out infinite}
@keyframes fxcue{0%{opacity:0;transform:translateY(-4px)}40%{opacity:1}80%{opacity:0;transform:translateY(10px)}100%{opacity:0}}

/* heading: whole-element clip reveal (keeps inner markup like gradient spans) */
.fx-head{clip-path:inset(0 0 110% 0);opacity:0;transform:translateY(24px);transition:clip-path 1.05s cubic-bezier(.2,.8,.2,1),transform 1.05s cubic-bezier(.2,.8,.2,1),opacity .8s}
.fx-head.fx-in{clip-path:inset(0 0 -14% 0);opacity:1;transform:none}


[data-anim="head"]{clip-path:inset(0 0 110% 0);opacity:0;transform:translateY(24px);transition:opacity .9s cubic-bezier(.2,.7,.3,1),transform 1.05s cubic-bezier(.2,.8,.2,1),clip-path 1.1s cubic-bezier(.2,.8,.2,1)}
[data-anim="head"].fx-in{clip-path:inset(0 0 -14% 0);opacity:1;transform:none}
/* heading: per-word stagger (plain-text headings only) */
.fx-split .word{display:inline-block;overflow:hidden;vertical-align:top;line-height:1.05;padding-bottom:.08em;margin-bottom:-.08em}
.fx-split .word i{display:inline-block;font-style:normal;transform:translateY(118%);transition:transform .85s cubic-bezier(.2,.8,.2,1)}
.fx-split.fx-in .word i{transform:none}

/* scroll reveal / fly-in */
[data-anim]{opacity:0;will-change:transform,opacity;transition:opacity .9s cubic-bezier(.2,.7,.3,1),transform .9s cubic-bezier(.2,.7,.3,1)}
[data-anim="up"]{transform:translateY(48px)}
[data-anim="left"]{transform:translateX(-66px)}
[data-anim="right"]{transform:translateX(66px)}
[data-anim="scale"]{transform:scale(.9)}
[data-anim="blurin"]{filter:blur(14px);transform:translateY(28px)}
[data-anim].fx-in{opacity:1;transform:none;filter:none}
[data-anim][data-delay="1"]{transition-delay:.1s}
[data-anim][data-delay="2"]{transition-delay:.2s}
[data-anim][data-delay="3"]{transition-delay:.32s}
[data-anim][data-delay="4"]{transition-delay:.44s}

@media(max-width:880px){
  .fx-hero{min-height:auto;padding-top:120px;padding-bottom:74px}
  .fx-layer{inset:-4%}
  [data-anim="left"],[data-anim="right"]{transform:translateY(40px)}
}
@media(prefers-reduced-motion:reduce){
  .fx-head,.fx-split .word i,[data-anim]{transition:none!important}
  .fx-scroll-cue::before{animation:none}
}
