/* ========== Scroll effects + modern interactions ========== */

/* Scroll progress bar */
.scroll-progress{
  position:fixed;top:0;left:0;right:0;height:2px;z-index:60;pointer-events:none;
  background:transparent;
}
.scroll-progress::after{
  content:"";display:block;height:100%;
  width:var(--scroll-progress,0%);
  background:linear-gradient(90deg, var(--brand-blue), var(--accent));
  transition:width 0.08s linear;
}

/* Cursor spotlight (desktop only) */
.spotlight{
  position:fixed;pointer-events:none;z-index:2;
  width:500px;height:500px;border-radius:50%;
  left:var(--mx,50vw);top:var(--my,50vh);
  transform:translate(-50%,-50%);
  background:radial-gradient(circle, color-mix(in srgb, var(--accent) 10%, transparent) 0%, transparent 60%);
  opacity:0;transition:opacity .6s;mix-blend-mode:multiply;
}
@media (hover:hover){.spotlight{opacity:1}}
@media (prefers-reduced-motion: reduce){.spotlight{display:none}}

/* Reveal variants — enhanced */
.reveal{opacity:0;transform:translateY(28px);transition:opacity .9s cubic-bezier(.2,.9,.2,1), transform .9s cubic-bezier(.2,.9,.2,1)}
.reveal.in{opacity:1;transform:none}
.reveal[data-fx="left"]{transform:translateX(-40px)}
.reveal[data-fx="left"].in{transform:none}
.reveal[data-fx="right"]{transform:translateX(40px)}
.reveal[data-fx="right"].in{transform:none}
.reveal[data-fx="zoom"]{transform:scale(.94)}
.reveal[data-fx="zoom"].in{transform:none}
.reveal[data-fx="blur"]{filter:blur(12px);transform:none}
.reveal[data-fx="blur"].in{filter:blur(0)}

/* Stagger children */
.stagger > *{opacity:0;transform:translateY(22px);transition:opacity .7s, transform .7s;transition-delay:calc(var(--i,0) * 70ms)}
.stagger.in > *{opacity:1;transform:none}

/* Tilt cards */
.tilt{transform-style:preserve-3d;transition:transform .25s cubic-bezier(.2,.9,.2,1)}
.tilt-inner{transform:translateZ(0);transition:transform .4s}

/* Magnetic buttons */
.mag{transition:transform .25s cubic-bezier(.2,.9,.2,1)}

/* Animated underline on section headings */
h2.sec{position:relative;display:inline-block}
h2.sec::after{
  content:"";position:absolute;left:0;bottom:-12px;height:2px;width:0;
  background:var(--accent);transition:width 1.1s cubic-bezier(.2,.9,.2,1) .15s;
}
.reveal.in h2.sec::after, .section-head.in h2.sec::after{width:64px}

/* Parallax wrapper */
[data-parallax]{will-change:transform}

/* Counter reveal */
.count-up{font-variant-numeric:tabular-nums}

/* Link/card hover lift */
.mod-card{transition:transform .4s cubic-bezier(.2,.9,.2,1), background .2s, border-color .2s, box-shadow .4s}
.mod-card:hover{box-shadow:0 30px 60px -30px rgba(3,78,169,.35)}

/* Global smooth scroll (not on reduced motion) */
@media (prefers-reduced-motion: no-preference){
  html{scroll-behavior:smooth}
}

/* Respect reduced motion */
@media (prefers-reduced-motion: reduce){
  .reveal, .stagger > *{opacity:1 !important;transform:none !important;filter:none !important}
  .tilt, .mag{transition:none !important}
}
