/* GGG eSite — Extensions (motion, particles). Loaded only on pages that use them. */

/* Scroll effects: elements are hidden only once motion.js runs (no script = everything visible). */
.ggg-mo-on .ggg-mo{transition-property:opacity,transform,filter;transition-timing-function:cubic-bezier(.2,.65,.25,1);transition-duration:.8s}
.ggg-mo-on .ggg-mo:not(.is-in){opacity:0}
.ggg-mo-on .ggg-mo--fade-up:not(.is-in){transform:translate3d(0,40px,0)}
.ggg-mo-on .ggg-mo--fade-down:not(.is-in){transform:translate3d(0,-40px,0)}
.ggg-mo-on .ggg-mo--fade-left:not(.is-in){transform:translate3d(48px,0,0)}
.ggg-mo-on .ggg-mo--fade-right:not(.is-in){transform:translate3d(-48px,0,0)}
.ggg-mo-on .ggg-mo--zoom-in:not(.is-in){transform:scale(.9)}
.ggg-mo-on .ggg-mo--zoom-out:not(.is-in){transform:scale(1.08)}
.ggg-mo-on .ggg-mo--blur:not(.is-in){filter:blur(10px)}
@media (prefers-reduced-motion:reduce){.ggg-mo-on .ggg-mo:not(.is-in){opacity:1;transform:none;filter:none}}

/* Hover effects */
.ggg-hv{transition:transform .35s ease,box-shadow .35s ease,filter .35s ease}
.ggg-hv--lift:hover{transform:translateY(-6px);box-shadow:0 14px 34px rgba(0,0,0,.14)}
.ggg-hv--zoom:hover{transform:scale(1.04)}
.ggg-hv--glow:hover{box-shadow:0 0 0 1px var(--e-global-color-ggg_primary,rgba(0,0,0,.2)),0 10px 34px rgba(0,0,0,.16);filter:brightness(1.03)}
.ggg-hv--tilt:hover{transform:perspective(900px) rotateX(3deg) rotateY(-4deg)}
@media (prefers-reduced-motion:reduce){.ggg-hv:hover{transform:none}}

/* Parallax background: motion.js moves a copy of the background behind the overlay and the content. */
.ggg-px{position:relative;isolation:isolate;overflow:hidden}
.ggg-px__layer{position:absolute;left:0;right:0;z-index:-1;pointer-events:none;will-change:transform;background-repeat:no-repeat}

/* Particles in a section: behind the content (default) or over it. */
.ggg-pt{isolation:isolate}
.ggg-pt:not(.ggg-pt--front)>:not(.ggg-pt__canvas):not(.elementor-absolute):not(.elementor-fixed){position:relative;z-index:1}
