/* ===== MOTION / FX layer (shared) ===== */

/* Particle-network canvas over the hero */
.fx-net{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:1;opacity:0;transition:opacity 1.2s ease}
.fx-net.on{opacity:1}

/* Scroll reveal */
@media (prefers-reduced-motion: no-preference){
  .reveal{opacity:0;transform:translateY(24px);transition:opacity .8s cubic-bezier(.22,.61,.36,1),transform .8s cubic-bezier(.22,.61,.36,1);will-change:opacity,transform}
  .reveal.in{opacity:1;transform:none}
}

/* Card hover polish */
.vcard{transition:transform .4s cubic-bezier(.22,.61,.36,1),box-shadow .4s ease,border-color .4s ease}
.vcard:hover{transform:translateY(-6px);border-color:rgba(216,180,90,.55);box-shadow:0 22px 54px rgba(0,0,0,.45)}

/* Subtle photo zoom (CEO message) */
.msg-photo img{transition:transform .9s cubic-bezier(.22,.61,.36,1)}
.msg-photo:hover img{transform:scale(1.05)}

/* Button shine sweep */
.btn-g,.btn-o,.more-link,.ncta{position:relative;overflow:hidden}
.btn-g::after,.btn-o::after,.more-link::after,.ncta::after{
  content:'';position:absolute;top:0;left:-130%;width:55%;height:100%;
  background:linear-gradient(100deg,transparent,rgba(255,255,255,.38),transparent);
  transform:skewX(-18deg);transition:left .65s cubic-bezier(.22,.61,.36,1);
  pointer-events:none}
.btn-g:hover::after,.btn-o:hover::after,.more-link:hover::after,.ncta:hover::after{left:150%}

@media (prefers-reduced-motion: reduce){
  .fx-net{display:none}
  .btn-g::after,.btn-o::after,.more-link::after,.ncta::after{display:none}
}
