/* GSAP Studio v2 — Frontend */
.gs-char,.gs-word,.gs-line-inner{will-change:transform,opacity}
.gsaps-cursor{animation:gsaps-blink 0.8s step-end infinite;margin-left:2px}
@keyframes gsaps-blink{50%{opacity:0}}
.gsaps-bg-layer{position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;background-repeat:no-repeat;will-change:transform,filter;pointer-events:none}

/* ═══ Smooth Scroll (Lenis) ═══ */
html.gsaps-smooth-active{scroll-behavior:auto !important}
html.lenis,html.lenis body{height:auto;scroll-behavior:auto !important}
.lenis.lenis-smooth{scroll-behavior:auto !important}
.lenis.lenis-smooth [data-lenis-prevent]{overscroll-behavior:contain}
.lenis.lenis-stopped{overflow:hidden}
.lenis.lenis-scrolling iframe{pointer-events:none}

/* ═══ Page Transitions ═══ */
#gsaps-preloader{position:fixed;top:0;right:0;bottom:0;left:0;z-index:999999;display:flex;align-items:center;justify-content:center;pointer-events:all}
#gsaps-preloader-media{display:block;object-fit:contain}
#gsaps-transition{position:fixed;top:0;right:0;bottom:0;left:0;z-index:99998;pointer-events:none}
#gsaps-transition > div{will-change:transform,opacity,clip-path}
.gsaps-tr-media-nav{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);z-index:100000;pointer-events:none}
.gsaps-tr-media-nav img,.gsaps-tr-media-nav video{display:block;object-fit:contain}

/* ═══ Slider Widget ═══ */
.gsaps-slider{position:relative;width:100%;overflow:hidden}
.gsaps-slider.gsaps-sl-stack{overflow:visible !important}
.gsaps-sl-slide{will-change:transform,opacity;backface-visibility:hidden}
.gsaps-sl-slide > *{width:100%;height:100%}
.gsaps-sl-arrows{pointer-events:auto}
.gsaps-sl-arrow{backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}
.gsaps-sl-pag{pointer-events:auto}

/* ═══ Arc Slider Widget ═══ */
.gsaps-arc{position:relative;width:100%}
.gsarc-stage{overflow:visible}
.gsarc-card{backface-visibility:hidden}
.gsarc-drag{letter-spacing:0.03em;text-transform:uppercase}

/* ═══ Carousel ═══ */
[data-gsaps-c] .swiper,.swiper-container{overflow:visible !important}
[data-gsaps-c] .swiper-wrapper{transform:none !important;transition:none !important}
[data-gsaps-c] .swiper-button-next,[data-gsaps-c] .swiper-button-prev,[data-gsaps-c] .swiper-pagination{display:none !important}
.gsaps-c-nav{pointer-events:auto;-webkit-user-select:none;user-select:none}

/* ═══ Cursor Follow ═══ */
.gsaps-cf-wrap{position:fixed;top:0;left:0;pointer-events:none;z-index:99990;opacity:0;will-change:transform}
.gsaps-cf-wrap img{-webkit-user-drag:none;user-select:none}

/* ═══ GSAP Button — base/fill layer styles ═══
   IMPORTANT: Do NOT add background:transparent here!
   The JS needs to read getComputedStyle() FIRST to capture Elementor's
   original button color, THEN the JS injects a per-button <style> to kill it.
   If CSS kills the color before JS reads it, we lose the original color. */
.gsaps-btn-base,.gsaps-btn-fill{will-change:transform,clip-path;backface-visibility:hidden;pointer-events:none}
