﻿/**


 * Aidem Blunor Addons - Core Styles v0.3.7

 * 


 * Includes 2026 CSS features:


 * - scroll-state() container queries


 * - sibling-index() for CSS stagger


 * - Modern logical properties


 */

/* ── Viewport scale token ──────────────────────────────────────────────────
   --aba-vp-scale: 1 at 1440px, scales down to 0.58 at mobile.
   Use in custom CSS: width: calc(380px * var(--aba-vp-scale))
   ──────────────────────────────────────────────────────────────────────── */
:root {
  --aba-vp-scale: clamp(0.58, calc(100vw / 1440), 1);
}




/* Ã¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢Â


   IMAGE REVEAL


Ã¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢Â */





.rs-image.scroll_reveal {


  position: relative;


  overflow: hidden;


  visibility: hidden;


}





.rs-image.scroll_reveal img {


  width: 100%;


  height: 100%;


  object-fit: cover;


  display: block;


}





.rs-image.scroll_reveal.reveal-active {


  visibility: visible;


}





/* Ã¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢Â


   MARQUEE


Ã¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢Â */





.gsap-marquee {


  display: inline-block;


  white-space: nowrap;


  will-change: transform;


}





/* Ã¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢Â


   SPLIT TEXT


Ã¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢Â */





.rs-split-text-enable {


  display: inline-block;


}





.rs-split-text-enable .split-char,


.rs-split-text-enable .split-word,


.rs-split-text-enable .split-line {


  display: inline-block;


  will-change: transform, opacity;


}





/* Ã¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢Â


   2026 CSS: STAGGER WITH sibling-index()


   


   Progressive enhancement - works in:


   Chrome 133+, Safari 18.4+


   


   Fallback: GSAP handles stagger in JS


Ã¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢Â */





@supports (transition-delay: calc(sibling-index() * 1ms)) {


  


  /* CSS-only stagger for split chars */


  .rs-split-text-enable.css-stagger .split-char {


    transition: 


      opacity 0.4s ease-out,


      transform 0.4s ease-out;


    transition-delay: calc((sibling-index() - 1) * 50ms);


  }


  


  /* CSS-only stagger for list items */


  .css-stagger-list > * {


    transition: 


      opacity 0.3s ease-out,


      transform 0.3s ease-out;


    transition-delay: calc((sibling-index() - 1) * 80ms);


  }


  


  /* Entry animation with @starting-style */


  @starting-style {


    .css-stagger-list > * {


      opacity: 0;


      transform: translateY(20px);


    }


  }


  


  .css-stagger-list > * {


    opacity: 1;


    transform: translateY(0);


  }


}





/* Ã¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢Â


   2026 CSS: SCROLL-STATE QUERIES


   


   Detect sticky headers, snapped carousels


   Chrome 133+, Safari 18.4+


Ã¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢Â */





@supports (container-type: scroll-state) {


  /* Scroll snap carousel enhancement */


  .snap-carousel-item {


    container-type: scroll-state;


    scroll-snap-align: center;


  }


  


  .snap-carousel-item > * {


    transition: 


      opacity 0.4s ease,


      transform 0.4s ease;


  }


  


  /* Highlight snapped item */


  @container scroll-state(snapped: x) {


    .snap-carousel-item > * {


      opacity: 1;


      transform: scale(1);


    }


  }


  


  /* Dim non-snapped items */


  @container not scroll-state(snapped: x) {


    .snap-carousel-item > * {


      opacity: 0.5;


      transform: scale(0.95);


    }


  }


  


  /* Hide header on scroll down, show on scroll up */


  .hidey-header-wrap {


    container-type: scroll-state;


  }


  


  .hidey-header-wrap > .header-inner {


    transition: transform 0.3s ease;


  }


  


  @container scroll-state(scrolled: bottom) {


    .hidey-header-wrap > .header-inner {


      transform: translateY(-100%);


    }


  }


  


  @container scroll-state(scrolled: top) {


    .hidey-header-wrap > .header-inner {


      transform: translateY(0);


    }


  }


}





/* Ã¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢Â


   MOVE ON SCROLL - Base states


Ã¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢Â */





.gsap-move,


.gsap-move-yes {


  will-change: transform;


}





/* Ã¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢Â


   ROTATE ON SCROLL - Base states


Ã¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢Â */





.gsap-rotate,


.gsap-rotate-anti,


.gsap-rotate-normal {


  will-change: transform;


}





/* Ã¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢Â


   SCROLL LOCK (used by Master Controller S4)


Ã¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢Â */





html.s4-scroll-locked {


  overflow: hidden !important;


  touch-action: none !important;


}





html.s4-scroll-locked body {


  overflow: hidden !important;


  touch-action: none !important;


}





/* Ã¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢Â


   FADE IN DIRECTIONAL


   Classes: .aidem-fade-in-up, .aidem-fade-in-down,


            .aidem-fade-in-left, .aidem-fade-in-right


Ã¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢Â */





.aidem-fade-in-up,

.aidem-fade-in-down,

.aidem-fade-in-left,

.aidem-fade-in-right,

.aidem-glitch,

.aidem-glitch-looped,

.aidem-glitch-widget,

.aidem-glitch .aidem-glitch-word,

.aidem-glitch-looped .aidem-glitch-word,

.aidem-glitch-widget .aidem-glitch-word,

.aidem-glitch .glitch-word,

.aidem-glitch-looped .glitch-word,

.aidem-glitch-widget .glitch-word {

  will-change: transform, opacity;

}




/* Delay modifiers (value = milliseconds) */


.aidem-delay-100 { --aidem-delay: 0.1s; }


.aidem-delay-200 { --aidem-delay: 0.2s; }


.aidem-delay-300 { --aidem-delay: 0.3s; }


.aidem-delay-400 { --aidem-delay: 0.4s; }


.aidem-delay-500 { --aidem-delay: 0.5s; }


.aidem-delay-750 { --aidem-delay: 0.75s; }


.aidem-delay-1000 { --aidem-delay: 1s; }


.aidem-delay-1500 { --aidem-delay: 1.5s; }


.aidem-delay-2000 { --aidem-delay: 2s; }


.aidem-delay-2500 { --aidem-delay: 2.5s; }

.aidem-delay-3000 { --aidem-delay: 3s; }



/* ==========================================================================

   STRAPLINE SPAN DIRECTION UTILITIES

   Apply classes in Elementor:

   - span-vertical

   - span-horizontal

   - span-container + parent container-horizontal|container-vertical

   ========================================================================== */



.span-vertical > span,

.span-horizontal > span,

.span-container > span {

  white-space: normal;

}



.span-vertical > span {

  display: block;

  margin: 0.12em 0;

  line-height: 1.2;

}



/* Keep glitch spans locked to line layout when glitch rewrites internals */

.span-vertical > .aidem-glitch-word,

.span-vertical > .glitch-word,

.aidem-glitch-lines.aidem-lines-vertical > .aidem-glitch-word,

.aidem-glitch-lines.aidem-lines-vertical > .glitch-word {

  display: block !important;

  width: 100%;

  margin: var(--aidem-line-gap, 0.12em) 0;

  line-height: 1.2;

}



.span-horizontal > span {

  display: inline;

  margin: 0;

  line-height: 1.2;

}



.span-horizontal > .aidem-glitch-word,

.span-horizontal > .glitch-word,

.aidem-glitch-lines.aidem-lines-horizontal > .aidem-glitch-word,

.aidem-glitch-lines.aidem-lines-horizontal > .glitch-word {

  display: inline-block !important;

  width: auto;

  margin: 0 0.35ch 0 0;

  line-height: 1.2;

}



.aidem-glitch-lines.aidem-lines-horizontal > .aidem-glitch-word:last-child,

.aidem-glitch-lines.aidem-lines-horizontal > .glitch-word:last-child {

  margin-right: 0;

}



.span-horizontal > span + span::before {

  content: " ";

}



.container-vertical .span-container > span {

  display: block;

  margin: 0.12em 0;

  line-height: 1.2;

}



.container-vertical .span-container > .aidem-glitch-word,

.container-vertical .span-container > .glitch-word {

  display: block !important;

  width: 100%;

  margin: var(--aidem-line-gap, 0.12em) 0;

  line-height: 1.2;

}



.container-horizontal .span-container > span {

  display: inline;

  margin: 0;

  line-height: 1.2;

}



.container-horizontal .span-container > .aidem-glitch-word,

.container-horizontal .span-container > .glitch-word {

  display: inline-block !important;

  width: auto;

  margin: 0 0.35ch 0 0;

  line-height: 1.2;

}



.container-horizontal .span-container > .aidem-glitch-word:last-child,

.container-horizontal .span-container > .glitch-word:last-child {

  margin-right: 0;

}



.container-horizontal .span-container > span + span::before {

  content: " ";

}



/* Widget output defaults */

.aidem-glitch-strapline-widget .aidem-glitch-strapline-title {

  width: 100%;

  max-width: 100%;

  white-space: normal;

}

.elementor-widget-aidem_glitch_strapline > .elementor-widget-container {
  width: 100%;
  height: 100%;
}

.aidem-glitch-strapline-widget {
  position: relative;
  width: 100%;
  height: 100%;
}

.aidem-glitch-strapline-stage {
  position: relative;
  width: 100%;
  min-height: 100%;
  height: 100%;
  display: flex;
  flex-direction: column;
  justify-content: center;
}

.aidem-glitch-strapline-positioner {
  width: 100%;
  transform: translateY(var(--ags-offset-y, 0px));
}



.aidem-glitch-strapline-widget .aidem-glitch-strapline-title .aidem-glitch-line {

  display: block;

  width: 100%;

  margin: var(--aidem-line-gap, 0.12em) 0;

  line-height: inherit;

}



.aidem-glitch-strapline-widget .aidem-glitch-strapline-title .aidem-glitch-word {

  display: inline-block;

  line-height: inherit;

  margin: 0;

}



.aidem-glitch-strapline-widget .aidem-glitch-strapline-title .aidem-glitch-line:first-child {

  margin-top: 0;

}



.aidem-glitch-strapline-widget .aidem-glitch-strapline-title .aidem-glitch-line:last-child {

  margin-bottom: 0;

}



.aidem-glitch-strapline-widget .aidem-glitch-strapline-title.aidem-lines-horizontal .aidem-glitch-line {

  display: inline;

  width: auto;

  margin: 0 0.45ch 0 0;

}



.aidem-glitch-strapline-widget .aidem-glitch-strapline-title.aidem-lines-horizontal .aidem-glitch-line:last-child {

  margin-right: 0;

}



.container-horizontal .aidem-glitch-strapline-widget .aidem-glitch-strapline-title.span-container .aidem-glitch-line {

  display: inline;

  width: auto;

  margin: 0 0.45ch 0 0;

}



.container-horizontal .aidem-glitch-strapline-widget .aidem-glitch-strapline-title.span-container .aidem-glitch-line:last-child {

  margin-right: 0;

}



.container-vertical .aidem-glitch-strapline-widget .aidem-glitch-strapline-title.span-container .aidem-glitch-line {

  display: block;

  width: 100%;

  margin: var(--aidem-line-gap, 0.12em) 0;

}

/* Compact card-safe mode for the ACF glitch heading.
   Opt-in only, so existing hero/strapline uses stay unchanged. */
.aidem-glitch-acf-heading-widget.aidem-glitch-card-compact {
  height: auto;
  min-height: 0;
}

.aidem-glitch-acf-heading-widget.aidem-glitch-card-compact .aidem-glitch-strapline-stage {
  min-height: 0;
  height: auto;
}

.aidem-glitch-acf-heading-widget.aidem-glitch-card-compact .aidem-glitch-strapline-positioner {
  width: auto;
  max-width: 100%;
}

.aidem-glitch-acf-heading-widget.aidem-glitch-card-compact .aidem-glitch-strapline-title {
  display: inline-block;
  width: auto;
  max-width: 100%;
}

.aidem-glitch-acf-heading-widget.aidem-glitch-card-compact .aidem-glitch-strapline-title .aidem-glitch-line {
  width: auto;
  max-width: 100%;
}

.aidem-glitch-acf-heading-widget.aidem-glitch-card-compact.aidem-lines-horizontal .aidem-glitch-strapline-title .aidem-glitch-line,
.aidem-glitch-acf-heading-widget.aidem-glitch-card-compact.container-horizontal .aidem-glitch-strapline-title.span-container .aidem-glitch-line {
  display: inline;
  width: auto;
  max-width: none;
}



/* ==========================================================================

   THEME-DERIVED GSAP INTERACTIONS

   Classes:

   - .gsap-pin-on / .gsap-pin-off

   - .gsap-cursor-attached-label

   - .gsap-btn-text-wave

   - .gsap-sticky-ripple

   ========================================================================== */



.gsap-pin-on,

.gsap-pin-off {

  position: relative;

}



.gsap-cursor-attached-label {

  position: relative;

  overflow: hidden;

}



.gsap-cursor-attached-label .aidem-cursor-label {

  position: absolute;

  top: 0;

  left: 0;

  pointer-events: none;

  z-index: 5;

  white-space: nowrap;

  padding: 0.35rem 0.65rem;

  border-radius: 999px;

  background: rgba(0, 0, 0, 0.72);

  color: #fff;

  font-size: 0.72rem;

  line-height: 1;

  letter-spacing: 0.02em;

  opacity: 0;

  transform: translate(-50%, -50%) scale(0.6);

}



.gsap-btn-text-wave .aidem-wave-char {

  display: inline-block;

  will-change: transform;

}



.gsap-sticky-ripple {

  will-change: transform;

  transform: translateZ(0);

}



/* ==========================================================================

   AGENRIVER CLASS SUITE (Theme-derived)

   Supports both original theme classes and plugin-safe agv-* classes.

   ========================================================================== */



.scroll_left_slide,

.scroll_right_slide,

.agv-scroll-left,

.agv-scroll-right,

.rotate_view,

.scale_item,

.agt_text_up,

.agv-scrub-up,

.agv-scrub-down,

.agv-scrub-left,

.agv-scrub-right,

.agv-scrub-rotate,

.agv-scrub-scale,

.agv-horizontal-scrub,

.agt-part-content-3,

.wa-magnetic,

.wa-magnetic-btn,

.agv-magnetic {

  will-change: transform, opacity;

}



.image-pllx,

.image-pllx-2,

.img-parallax,

.image-zoom-out,

.image-zoom-in,

.agv-image-pllx,

.agv-image-pllx-2,

.agv-img-parallax,

.agv-image-zoom-out,

.agv-image-zoom-in {

  position: relative;

  overflow: hidden;

}



.image-pllx img,

.image-pllx-2 img,

.img-parallax img,

.image-zoom-out img,

.image-zoom-in img,

.agv-image-pllx img,

.agv-image-pllx-2 img,

.agv-img-parallax img,

.agv-image-zoom-out img,

.agv-image-zoom-in img {

  display: block;

  width: 100%;

  height: 100%;

  object-fit: cover;

  will-change: transform;

}



.draw-shape-img,

.agt_sec_left_line,

.agt_sec_right_line,

.agt-abm-line-shape,

.agv-clip-reveal,

.agv-clip-reveal-lr {

  will-change: clip-path;

}



.wa-fadeInUp,

.wa-fadeInUp-4,

.agv-fade-toggle {

  opacity: 0;

  transform: translateY(40px);

  transition: opacity 0.4s ease, transform 0.4s ease;

}



.wa-fadeInUp.in-view,

.wa-fadeInUp-4.in-view,

.agv-fade-toggle.in-view {

  opacity: 1;

  transform: translateY(0);

}



.wa-scale-x,

.agv-scale-x {

  transform-origin: left center;

  will-change: transform;

}



.agv-pin,

.agv-pin-sm,

.agv-pin-lg {

  position: relative;

}



.agv-stack-item {

  will-change: transform;

  transform-origin: center center;

}



/* ==========================================================================

   GLITCH TEXT

   Classes: .aidem-glitch, .aidem-glitch-looped

   ========================================================================== */




.aidem-glitch,

.aidem-glitch-looped,

.aidem-glitch-widget {

  will-change: opacity, transform, filter;

}



.aidem-glitch .aidem-glitch-word,

.aidem-glitch-looped .aidem-glitch-word,

.aidem-glitch-widget .aidem-glitch-word,

.aidem-glitch .glitch-word,

.aidem-glitch-looped .glitch-word,

.aidem-glitch-widget .glitch-word {

  position: relative;

  display: inline-block;

  opacity: 0;

}



.aidem-glitch .aidem-glitch-base,

.aidem-glitch-looped .aidem-glitch-base,

.aidem-glitch-widget .aidem-glitch-base,

.aidem-glitch .base,

.aidem-glitch-looped .base,

.aidem-glitch-widget .base {

  position: relative;

  display: inline-block;

}




.aidem-glitch .aidem-glitch-purple,

.aidem-glitch-looped .aidem-glitch-purple,

.aidem-glitch-widget .aidem-glitch-purple,

.aidem-glitch .purple,

.aidem-glitch-looped .purple,

.aidem-glitch-widget .purple,

.aidem-glitch .aidem-glitch-green,

.aidem-glitch-looped .aidem-glitch-green,

.aidem-glitch-widget .aidem-glitch-green,

.aidem-glitch .green,

.aidem-glitch-looped .green,

.aidem-glitch-widget .green {

  position: absolute;

  top: 0;

  left: 0;

  width: 100%;


  opacity: 0;


  mix-blend-mode: screen;


  pointer-events: none;


}





.aidem-glitch .aidem-glitch-purple,

.aidem-glitch-looped .aidem-glitch-purple,

.aidem-glitch-widget .aidem-glitch-purple,

.aidem-glitch .purple,

.aidem-glitch-looped .purple,

.aidem-glitch-widget .purple {

  color: oklch(60% 0.22 285);

}



.aidem-glitch .aidem-glitch-green,

.aidem-glitch-looped .aidem-glitch-green,

.aidem-glitch-widget .aidem-glitch-green,

.aidem-glitch .green,

.aidem-glitch-looped .green,

.aidem-glitch-widget .green {

  color: oklch(92% 0.19 127);

}



/* Elementor editor readability: keep strapline words visible while editing */

body.elementor-editor-active .aidem-glitch-strapline-widget .aidem-glitch-word,

.elementor-editor-active .aidem-glitch-strapline-widget .aidem-glitch-word {

  opacity: 1 !important;

}










/* Ã¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢Â


   REDUCED MOTION - Respect user preference


Ã¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢Â */





@media (prefers-reduced-motion: reduce) {


  


  .rs-split-text-enable .split-char,


  .rs-split-text-enable .split-word,


  .rs-split-text-enable .split-line,


  .gsap-move,


  .gsap-move-yes,


  .gsap-rotate,


  .gsap-rotate-anti,


  .gsap-marquee,

  .rs-image.scroll_reveal,

  .aidem-fade-in-up,

  .aidem-fade-in-down,

  .aidem-fade-in-left,

  .aidem-fade-in-right,

  .aidem-glitch,

  .aidem-glitch-looped,

  .aidem-glitch-widget,

  .aidem-glitch .aidem-glitch-word,

  .aidem-glitch-looped .aidem-glitch-word,

  .aidem-glitch-widget .aidem-glitch-word,

  .aidem-glitch .glitch-word,

  .aidem-glitch-looped .glitch-word,

  .aidem-glitch-widget .glitch-word,

  .gsap-cursor-attached-label .aidem-cursor-label,

  .gsap-btn-text-wave .aidem-wave-char,

  .gsap-sticky-ripple,

  .scroll_left_slide,

  .scroll_right_slide,

  .agv-scroll-left,

  .agv-scroll-right,

  .rotate_view,

  .scale_item,

  .agt_text_up,

  .agv-scrub-up,

  .agv-scrub-down,

  .agv-scrub-left,

  .agv-scrub-right,

  .agv-scrub-rotate,

  .agv-scrub-scale,

  .image-pllx img,

  .image-pllx-2 img,

  .img-parallax img,

  .image-zoom-out img,

  .image-zoom-in img,

  .agv-image-pllx img,

  .agv-image-pllx-2 img,

  .agv-img-parallax img,

  .agv-image-zoom-out img,

  .agv-image-zoom-in img,

  .wa-fadeInUp,

  .wa-fadeInUp-4,

  .agv-fade-toggle,

  .wa-scale-x,

  .agv-scale-x,

  .wa-magnetic,

  .wa-magnetic-btn,

  .agv-magnetic {

    transition: none !important;

    animation: none !important;

  }

  


  .rs-image.scroll_reveal {

    visibility: visible !important;

  }



  .wa-fadeInUp,

  .wa-fadeInUp-4,

  .agv-fade-toggle {

    opacity: 1 !important;

    transform: none !important;

  }

}




/* Ã¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢Â


   PRINT STYLES


Ã¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢Â */





@media print {


  


  .gsap-marquee {


    animation: none !important;


  }


  


  .rs-image.scroll_reveal {


    visibility: visible !important;


  }


}





/* Ã¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢Â


   CUSTOM CURSOR


Ã¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢ÂÃ¢â€¢Â */





.wfs-cursor-enabled {


  cursor: none;


}





.wfs-cursor-enabled a,


.wfs-cursor-enabled button,


.wfs-cursor-enabled input[type="submit"] {


  cursor: none;


}





/* Cursor ball element (if using GSAP cursor) */


#cursor-ball {


  position: fixed;


  top: 0;


  left: 0;


  width: 40px;


  height: 40px;


  border: 1px solid oklch(60% 0 0 / 0.5);


  border-radius: 50%;


  pointer-events: none;


  z-index: 99999;


  mix-blend-mode: difference;


  will-change: transform;


}





/* Hide custom cursor on touch devices */


@media (pointer: coarse) {


  .wfs-cursor-enabled {


    cursor: auto;


  }


  


  .wfs-cursor-enabled a,


  .wfs-cursor-enabled button,


  .wfs-cursor-enabled input[type="submit"] {


    cursor: auto;


  }


  


  #cursor-ball {


    display: none !important;


  }


}


/* ==========================================================================

   AIDEM MOTION HEADING

   ========================================================================== */



.aidem-motion-heading-widget {

  display: block;

}



.aidem-motion-heading-stack,

.aidem-motion-heading-title {

  --aidem-line-gap: 10px;

}



.aidem-motion-heading-title {

  margin: 0;

  display: block;

  line-height: inherit;

  will-change: transform, opacity;

}



.aidem-motion-heading-stack {

  display: flex;

  flex-direction: column;

  flex-wrap: wrap;

  align-items: flex-start;

}



.aidem-motion-heading-stack.aidem-motion-heading-layout-vertical {

  flex-direction: column;

}



.aidem-motion-heading-stack.aidem-motion-heading-layout-vertical .aidem-motion-heading-title {

  width: 100%;

  margin-bottom: var(--aidem-line-gap);

}



.aidem-motion-heading-stack.aidem-motion-heading-layout-vertical .aidem-motion-heading-title:last-child {

  margin-bottom: 0;

}



.aidem-motion-heading-stack.aidem-motion-heading-layout-horizontal {

  flex-direction: row;

  align-items: baseline;

}



.aidem-motion-heading-stack.aidem-motion-heading-layout-horizontal .aidem-motion-heading-title {

  flex: none;

  margin-right: var(--aidem-line-gap);

}



.aidem-motion-heading-stack.aidem-motion-heading-layout-horizontal .aidem-motion-heading-title:last-child {

  margin-right: 0;

}



/* Responsive override: when Elementor sets flex-direction per breakpoint */

.aidem-motion-heading-stack[style*="flex-direction: column"] .aidem-motion-heading-title,

.aidem-motion-heading-stack[style*="flex-direction:column"] .aidem-motion-heading-title {

  width: 100%;

}



.aidem-motion-heading-title .aidem-glitch-word,

.aidem-motion-heading-title .glitch-word {

  display: inline-block;

}

.aidem-motion-heading-title-group {

  display: inline-grid;

}

.aidem-motion-heading-title-wrap--back,

.aidem-motion-heading-title-wrap--front {

  grid-area: 1 / 1;

}

.aidem-motion-heading-fill-layer {

  position: relative;

  z-index: 1;

}

.aidem-motion-heading-widget.aidem-motion-heading-has-stroke-title .aidem-motion-heading-title-wrap--front {

  position: relative;

  z-index: 2;

  pointer-events: none;

}

.aidem-motion-heading-widget.aidem-motion-heading-has-stroke-title .aidem-motion-heading-stroke-layer {

  color: transparent;

  -webkit-text-fill-color: transparent;

}

.aidem-motion-heading-widget.aidem-motion-heading-sandwich-parallax {

  position: relative;

  z-index: 41;

}

/* ==========================================================================

   AIDEM MOTION TEXT

   ========================================================================== */



.aidem-motion-text-widget {

  display: block;

}



.aidem-motion-text-stack,

.aidem-motion-text-content {

  --aidem-text-line-gap: 8px;

}



.aidem-motion-text-content {

  margin: 0;

  display: block;

  line-height: inherit;

  will-change: transform, opacity;

}



.aidem-motion-text-stack {

  display: flex;

  flex-direction: column;

  flex-wrap: wrap;

  align-items: flex-start;

}



.aidem-motion-text-stack.aidem-motion-text-layout-vertical {

  flex-direction: column;

}



.aidem-motion-text-stack.aidem-motion-text-layout-vertical .aidem-motion-text-content {

  width: 100%;

  margin-bottom: var(--aidem-text-line-gap);

}



.aidem-motion-text-stack.aidem-motion-text-layout-vertical .aidem-motion-text-content:last-child {

  margin-bottom: 0;

}



.aidem-motion-text-stack.aidem-motion-text-layout-horizontal {

  flex-direction: row;

  align-items: baseline;

}



.aidem-motion-text-stack.aidem-motion-text-layout-horizontal .aidem-motion-text-content {

  flex: none;

  margin-right: var(--aidem-text-line-gap);

}



.aidem-motion-text-stack.aidem-motion-text-layout-horizontal .aidem-motion-text-content:last-child {

  margin-right: 0;

}



.aidem-motion-text-split-reveal .split-char,

.aidem-motion-text-split-reveal .split-word,

.aidem-motion-text-split-reveal .split-sentence,

.aidem-motion-text-split-reveal .split-line {

  display: inline-block;

  will-change: opacity, transform;

}



.aidem-motion-text-split-reveal.aidem-motion-text-layout-vertical .split-sentence,

.aidem-motion-text-split-reveal.aidem-motion-text-layout-vertical .split-line {

  display: block;

  margin-bottom: var(--aidem-text-line-gap, 8px);

}



.aidem-motion-text-split-reveal.aidem-motion-text-layout-vertical .split-sentence:last-child,

.aidem-motion-text-split-reveal.aidem-motion-text-layout-vertical .split-line:last-child {

  margin-bottom: 0;

}



.aidem-motion-text-split-reveal.aidem-motion-text-layout-horizontal .split-sentence,

.aidem-motion-text-split-reveal.aidem-motion-text-layout-horizontal .split-line {

  display: inline-block;

  margin-right: var(--aidem-text-line-gap, 8px);

  vertical-align: top;

}



.aidem-motion-text-split-reveal.aidem-motion-text-layout-horizontal .split-sentence:last-child,

.aidem-motion-text-split-reveal.aidem-motion-text-layout-horizontal .split-line:last-child {

  margin-right: 0;

}



/* â”€â”€â”€ Aidem Testimonial Carousel v0.1.0 â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */



.atc-wrap {

  --atc-width:      28em;

  --atc-height:     20em;

  --atc-move:       2.2em;

  --atc-arrow-gap:  5em;

  --atc-blur:       12px;

  --atc-p7:         hsl(223, 90%, 70%);

  --atc-s8:         hsl(178, 90%, 80%);

  --atc-dot-active: hsl(223, 90%, 60%);

  position: relative;

  display: flex;

  flex-direction: column;

  align-items: center;

  gap: 1.5em;

}



/* Carousel viewport â€” sized to contain both offset cards */

.atc-carousel {

  position: relative;

  width:  calc(var(--atc-width)  + var(--atc-move) * 2);

  height: calc(var(--atc-height) + var(--atc-move) * 2);

}



/* Each slide fills the carousel; GSAP positions off-screen when inactive */

.atc-slide {

  position: absolute;

  inset: 0;

}



/* .cards origin sits at the carousel centre so both offset cards fit */

.atc-slide .cards {

  position: absolute;

  top:  50%;

  left: 50%;

}



/* Shared card base */

.atc-slide .card {

  border-radius: 1em;

  box-shadow:    0 0.25em 0.375em hsla(0, 0%, 0%, 0.1);

  position:      absolute;

  width:         var(--atc-width);

  height:        var(--atc-height);

  transform:     translate(-50%, -50%);

}



/* Back (coloured) card â€” bottom-left offset, same translate as glass card */

.atc-card-bg {

  top:      var(--atc-move);

  left:     calc(var(--atc-move) * -1);

  overflow: hidden; /* clip decorative symbols to card boundary */

  /* inherits transform: translate(-50%,-50%) from .atc-slide .card */

}



/* â”€â”€ Decorative blurred symbols on the coloured back card â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */

.atc-deco {

  position:       absolute;

  display:        block;

  pointer-events: none;

  user-select:    none;

  color:          color-mix(in srgb, var(--atc-accent) 50%, white);

  opacity:        0.35;

  filter:         blur(6px);

  overflow:       visible;

}

.atc-deco--sm {

  opacity: 0.40;

  filter:  blur(5px);

}



/* Pulse: CSS animation so it never conflicts with the translate transform */

@keyframes atc-bg-pulse {

  0%, 100% { transform: translate(-50%, -50%) scale(1); }

  50%       { transform: translate(-50%, -50%) scale(var(--atc-ps, 1.02)); }

}



.atc-wrap[data-pulse="1"] .atc-card-bg {

  animation: atc-bg-pulse var(--atc-pd, 4s) ease-in-out infinite;

}



/* Glass front card */

.atc-slide .card--glass {

  backdrop-filter: blur(var(--atc-blur));

  -webkit-backdrop-filter: blur(var(--atc-blur));

  background-image: linear-gradient(90deg, hsla(0,0%,100%,.20), hsla(0,0%,100%,.05));

  top:  calc(var(--atc-move) * -1);

  left: var(--atc-move);

}



.atc-slide .card--glass::before,

.atc-slide .card--glass::after {

  border-radius: inherit;

  content: "";

  display: block;

  position: absolute;

  inset: 0;

}



/* Top-left glint â€” white edge highlight */

.atc-slide .card--glass::before {

  border: 1px solid hsl(0, 0%, 100%);

  mask-image: linear-gradient(135deg, hsl(0,0%,100%), hsla(0,0%,100%,0) 50%);

  -webkit-mask-image: linear-gradient(135deg, hsl(0,0%,100%), hsla(0,0%,100%,0) 50%);

}



/* Bottom-right accent edge â€” uses per-slide --atc-accent colour */

.atc-slide .card--glass::after {

  border: 1px solid var(--atc-accent, var(--atc-dot-active));

  mask-image: linear-gradient(135deg, hsla(0,0%,100%,0) 50%, hsl(0,0%,100%));

  -webkit-mask-image: linear-gradient(135deg, hsla(0,0%,100%,0) 50%, hsl(0,0%,100%));

}



/* â”€â”€ Card content â€” gradient-clipped text matching the original design â”€â”€â”€ */

.atc-slide .card__content {

  background:

    linear-gradient(

      hsla(0,0%,100%,0) 3.5em,

      var(--atc-p7)     3.8em,

      var(--atc-s8)     5.5em

    ) 0 0 / calc(var(--atc-width) - var(--atc-move) * 2) 50%,

    linear-gradient(

      90deg,

      var(--atc-s8)     14em,

      var(--atc-p7)     calc(var(--atc-width) - var(--atc-move) * 2),

      hsla(0,0%,100%,0) 23em

    ) 0 100% / 100% 50%,

    linear-gradient(

      90deg,

      hsla(0,0%,100%,.55) 5em,

      hsla(0,0%,100%,.22)

    ) 0 0 / 100% 100%;

  -webkit-background-clip: text;

  background-clip:   text;

  background-repeat: no-repeat;

  color:     transparent;

  display:   flex;

  flex-wrap: wrap;

  justify-content: space-between;

  align-items:     flex-start;

  padding:  1.5em 1.75em 1.5em 1.75em;

  position: relative;

  height:   100%;

  z-index:  1;

  box-sizing: border-box;

}



.atc-slide .card__title {

  font-family: Caladea, Georgia, serif;

  font-size:   1.1em;

  font-weight: 700;

  line-height: 1.3;

  flex: 1 1 0;

  min-width: 0;

  /* colour: transparent (inherited from .card__content) shows gradient by default.

     Setting a colour via Elementor controls overrides this and uses plain colour. */

}



.atc-slide .card__logo {

  display:     flex;

  align-items: flex-start;

  justify-content: flex-end;

  flex:        0 0 auto;

  width:       auto;

}

.atc-slide .card__logo img {

  width:         48px;

  height:        48px;

  max-width:     none;

  aspect-ratio:  1 / 1;

  border-radius: 50%;

  object-fit:    cover;

  display:       block;

  flex-shrink:   0;

  box-shadow:    0 2px 8px rgba(0,0,0,0.25);

}



.atc-slide .card__author {

  font-size:   0.8em;

  font-weight: 600;

  align-self:  flex-end;

  width: 100%;

  margin-top:  auto;

}



.atc-slide .card__url {

  font-size: 0.7em;

  margin:    0;

  width:     100%;

}



/* â”€â”€ Navigation dots â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */

.atc-dots {

  display:         flex;

  gap:             0.5em;

  justify-content: center;

}



.atc-dot {

  width:         0.55em;

  height:        0.55em;

  border-radius: 50%;

  background:    hsla(0, 0%, 100%, 0.3);

  cursor:        pointer;

  transition:    background 0.3s ease, transform 0.3s ease;

  padding:       0;

  border:        none;

  flex-shrink:   0;

}



.atc-dot--active {

  background: var(--atc-dot-active, hsl(223, 90%, 60%));

  transform:  scale(1.5);

}



/* â”€â”€ Navigation arrows â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */

.atc-arrows {

  position:        absolute;

  top:             50%;

  left:            50%;

  transform:       translate(-50%, -50%);

  width:           calc(var(--atc-width) + var(--atc-move) * 4 + var(--atc-arrow-gap, 5em));

  display:         flex;

  justify-content: space-between;

  align-items:     center;

  pointer-events:  none;

}



.atc-arrow {

  width:           2.2em;

  height:          2.2em;

  border-radius:   50%;

  background:      hsla(0, 0%, 100%, 0.15);

  backdrop-filter: blur(4px);

  -webkit-backdrop-filter: blur(4px);

  border:          1px solid hsla(0, 0%, 100%, 0.3);

  color:           hsl(0, 0%, 100%);

  font-size:       1em;

  line-height:     1;

  cursor:          pointer;

  pointer-events:  auto;

  display:         flex;

  align-items:     center;

  justify-content: center;

  flex-shrink:     0;

  transition:      background 0.2s ease, border-color 0.2s ease;

}



.atc-arrow:hover {

  background:   hsla(0, 0%, 100%, 0.28);

  border-color: hsla(0, 0%, 100%, 0.5);

}

/* ── Testimonial responsive ─────────────────────────────────────────────── */

@media (max-width: 1024px) {
  .atc-wrap {
    --atc-width:  22em;
    --atc-height: 22em;
    --atc-move:   1.6em;
    font-size:    0.92em;
  }
}

@media (max-width: 767px) {
  .atc-wrap {
    --atc-width:  18em;
    --atc-height: 24em;
    --atc-move:   1.2em;
    font-size:    0.85em;
  }

  .atc-slide .card__content {
    flex-direction: column;
    flex-wrap: nowrap;
    justify-content: flex-start;
    align-items: stretch;
    gap: 0.9em;
    padding-left: 1.1em;
    padding-right: 1.1em;
  }

  .atc-slide .card__logo {
    order: 1;
    width: 100%;
    justify-content: center;
    align-items: center;
  }

  .atc-slide .card__title {
    order: 2;
    width: 100%;
    flex: 0 0 auto;
    text-align: left;
  }

  .atc-slide .card__author {
    order: 3;
    width: 100%;
    margin-top: 0;
    align-self: stretch;
  }

  .atc-slide .card__url {
    order: 4;
    width: 100%;
  }
}



/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•

   NEUMORPHIC FEATURE CARDS  â€”  .afc-*   (v0.7 â€” fully responsive)

   Colours: scoped <style> CSS vars per breakpoint (output by widget render())

   Layout:  Elementor responsive controls + selectors (override defaults here)

   Typo:    Group_Control_Typography selectors (override defaults here)

   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */



/* â”€â”€ Wrapper â€” CSS var defaults (overridden by widget <style> block) â”€â”€â”€â”€â”€â”€â”€ */

.afc-wrap {

  --afc-bg:          #ebf5fc;

  --afc-sh-light:    #ffffff;

  --afc-sh-dark:     #ceced1;

  --afc-num-color:   rgba(0,0,0,0.05);

  --afc-num-size:    9rem;

  --afc-img-size:    110px;

  --afc-title-color: #777;

  --afc-text-color:  #777;

  --afc-btn-bg:      #03a9f4;

  --afc-btn-color:   #fff;

  display: block;

  width:   100%;

  padding: 40px 0;

}



/* â”€â”€ Grid â€” gap overridden by Elementor responsive selector â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */

.afc-grid {

  display:         flex;

  justify-content: center;

  align-items:     flex-start;

  flex-wrap:       wrap;

  gap:             30px;

  padding:         40px 20px;

}



/* â”€â”€ Card â€” width/height overridden by Elementor responsive selector â”€â”€â”€â”€â”€â”€â”€ */

.afc-card {

  position:      relative;

  width:         350px;

  height:        480px;

  border-radius: 15px;

  box-shadow:    inset  5px  5px 10px rgba(0,0,0,0.10),

                 inset -5px -5px 20px rgba(255,255,255,0.10),

                        5px  5px 10px rgba(0,0,0,0.05),

                       -5px -5px 20px rgba(255,255,255,0.05);

  will-change:   transform, opacity;

}



/* â”€â”€ Inner â€” absolute inset, flex center â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */

.afc-inner {

  position:        absolute;

  top:             20px;

  left:            20px;

  right:           20px;

  bottom:          20px;

  background:      var(--afc-bg);

  box-shadow:      0 10px 20px rgba(0,0,0,0.10);

  border-radius:   19px;

  display:         flex;

  justify-content: center;

  align-items:     center;

  overflow:        visible;

}



/* â”€â”€ Image circle â€” position/size overridden by Elementor responsive â”€â”€â”€â”€â”€â”€â”€ */

.afc-img-area {

  position:        absolute;

  top:             15px;

  left:            15px;

  width:           var(--afc-img-size, 110px);

  height:          var(--afc-img-size, 110px);

  border-radius:   50%;

  background:      var(--afc-bg);

  box-shadow:      -3px -3px 7px var(--afc-sh-light, #ffffff),

                    3px  3px  5px var(--afc-sh-dark,  #ceced1);

  display:         flex;

  align-items:     center;

  justify-content: center;

  z-index:         2;

}



.afc-img-inner {

  width:         calc(100% - 12px);

  height:        calc(100% - 12px);

  border-radius: 50%;

  overflow:      hidden;

}



.afc-img-inner img {

  width:         100%;

  height:        100%;

  object-fit:    cover;

  border-radius: 50%;

  display:       block;

}



/* â”€â”€ Content â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */

.afc-content {

  padding:    20px;

  text-align: center;

  width:      100%;

}



/* When an image circle is present, push content down to clear it.

   --afc-img-size is kept in sync by the img_size responsive control selector. */

.afc-content.has-image {

  padding-top: calc(var(--afc-img-size, 110px) + 20px);

}



/* â”€â”€ Number watermark â€” top/right/font-size overridden by Elementor â”€â”€â”€â”€â”€â”€â”€â”€ */

.afc-num {

  position:       absolute;

  top:            70px;

  right:          15px;

  font-size:      var(--afc-num-size, 9rem);

  font-weight:    900;

  line-height:    1;

  color:          var(--afc-num-color) !important;

  pointer-events: none;

  user-select:    none;

  margin:         0;

  z-index:        0;

}



/* â”€â”€ Title â€” font-size/weight overridden by Group_Control_Typography â”€â”€â”€â”€â”€â”€â”€ */

.afc-title {

  position:    relative;

  z-index:     1;

  font-size:   1.8em;

  font-weight: 700;

  color:       var(--afc-title-color) !important;

  margin:      0 0 10px !important;

  display:     block !important;

}



/* â”€â”€ Body text â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */

.afc-text {

  font-size:   1em;

  font-weight: 300;

  line-height: 1.6;

  color:       var(--afc-text-color) !important;

  margin:      0 !important;

  display:     block !important;

}



/* â”€â”€ Button â€” neumorphic profile-card style â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */

.afc-btn {

  position:        relative;

  display:         inline-block !important;

  padding:         12px 28px !important;

  background:      var(--afc-bg) !important;

  margin-top:      15px !important;

  border-radius:   50px !important;

  color:           var(--afc-btn-color) !important;

  text-decoration: none !important;

  font-weight:     400;

  font-size:       1em;

  border:          none !important;

  cursor:          pointer;

  box-shadow:      -3px -3px 7px var(--afc-sh-light, #ffffff),

                    3px  3px  5px var(--afc-sh-dark,  #ceced1) !important;

}



/* â”€â”€ Responsive defaults â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */

@media (max-width: 736px) {

  .afc-card { width: 100%; }

  .afc-grid { padding: 20px 16px; gap: 20px; }

}



/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•

   DARK GLOW CARD  â€”  .agc-*   (Dark glassmorphic animated card)

   Colours via scoped <style> CSS vars; layout via Elementor responsive selectors

   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */



/* â”€â”€ Keyframes â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */

@keyframes agc-rotate360 { to { rotate: 360deg; } }



@keyframes agc-wobble {

  0%   { transform: translateX(10px)  translateY(20px)  rotate(-3deg)  scale(1);    }

  20%  { transform: translateX(-44px) translateY(-8px)  rotate(6deg)   scale(1.02); }

  60%  { transform: translateX(32px)  translateY(18px)  rotate(-8deg)  scale(1);    }

  80%  { transform: translateX(-42px) translateY(-22px) rotate(12deg)  scale(0.94); }

  100% { transform: translateX(10px)  translateY(20px)  rotate(-3deg)  scale(1);    }

}



/* â”€â”€ Wrapper â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */

.agc-wrap {

  position:        relative;

  display:         flex;

  justify-content: center;

  align-items:     center;

  min-height:      640px;

  overflow:        visible;

  padding:         80px 20px 60px;

}



/* â”€â”€ Main card â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */

.agc-card {

  position:        relative;

  z-index:         1; /* above .agc-accents (z-index:0) */

  width:           320px;

  height:          500px;

  border-radius:   16px;

  background:      linear-gradient(180deg, var(--agc-bg-start, rgba(41,41,41,.67)) 0%, var(--agc-bg-end, rgba(25,25,25,.8)) 50%);

  backdrop-filter: blur(4px);

  -webkit-backdrop-filter: blur(4px);

  box-shadow:      inset 0  2px 2px 0 color-mix(in srgb, var(--agc-glow, #e7c4a0) 53%, transparent),

                   inset 0 -2px 2px 0 rgba(0,0,0,0.2);

  color:           var(--agc-title, #ccc);

  text-shadow:     1px 1px 3px rgba(51,51,51,.67);

  padding:         24px;

  padding-right:   42px;

  padding-top:     180px; /* slides body up to overlap bottom of image; overridden by Layout control */

  display:         flex;

  flex-direction:  column;

  justify-content: flex-start;

}



/* â”€â”€ Image area â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */

.agc-img-wrap {

  position:      absolute;

  top:           24px;

  left:          24px;

  right:         24px;

  height:        220px;

  border-radius: 12px;

  overflow:      hidden;

}



/* Single or slideshow â€” img shown at natural ratio, no crop */

.agc-img-wrap img,

.agc-slide {

  position:       absolute;

  top:            0;

  left:           0;

  width:          100%;

  height:         100%;

  object-fit:     contain;

  object-position: center center;

  display:        block;

  user-select:    none;

  pointer-events: none;

  opacity:        0;

}



.agc-slide--active { opacity: 1; }



/* Bad-TV canvas overlay â€” sits above slides, below glass */

.agc-tv-canvas {

  position:       absolute;

  top:            0;

  left:           0;

  width:          100%;

  height:         100%;

  pointer-events: none;

  z-index:        5;

  opacity:        0;

}



/* Glassmorphic overlay on the image */

.agc-img-glass {

  position:      absolute;

  inset:         0;

  background:    linear-gradient(180deg, rgba(255,255,255,0.12) 0%, rgba(255,255,255,0.04) 50%, rgba(0,0,0,0.25) 100%);

  backdrop-filter: blur(0.3px);

  border-radius: inherit;

  border:        1px solid rgba(255,255,255,0.12);

}



/* â”€â”€ Card body â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */

.agc-body { position: relative; z-index: 1; }



.agc-title {

  font-size:   1.1em;

  font-weight: 700;

  color:       var(--agc-title, #ccc) !important;

  margin:      8px 0;

  text-shadow: 1px 1px 3px rgba(51,51,51,.67);

  text-align:  center;

}



.agc-text {

  font-size:   0.9em;

  font-weight: 800;

  color:       var(--agc-text, #aaa) !important;

  margin:      8px 0;

  text-align:  center;

}



/* â”€â”€ Button â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */

.agc-btn {

  display:         block;

  width:           fit-content;

  margin-left:     auto;

  margin-right:    auto;

  border-radius:   100px !important;

  padding:         8px 36px;

  margin-top:      12px;

  background:      var(--agc-btn-bg, rgba(255,255,255,0.13)) !important;

  color:           var(--agc-btn-col, #ccc) !important;

  text-decoration: none !important;

  border:          none !important;

  cursor:          pointer;

  box-shadow:      0 0 0 1px rgba(255,255,255,0.2),

                   inset 120px 0 100px -100px rgba(0,0,0,0.75),

                   0 0 0 0 rgba(255,255,255,0.07) !important;

  transition:      box-shadow 0.4s ease-in-out;

}



.agc-btn:hover {

  box-shadow: 0 0 0 1px rgba(255,255,255,0.2),

              inset 200px 0 100px -100px rgba(0,0,0,0.63),

              -4px 0 8px 2px rgba(255,255,255,0.13) !important;

}



/* â”€â”€ Accents container â€” z-index:0, entire layer sits behind card â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */

.agc-accents {

  position:        absolute;

  inset:           0;

  pointer-events:  none;

  user-select:     none;

  display:         flex;

  justify-content: center;

  align-items:     center;

  z-index:         0;

}



/* â”€â”€ Wobbling accent cards â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */

.agc-acc-card {

  position:         absolute;

  width:            330px;

  height:           500px;

  background:       rgba(238,238,238,0.07);

  opacity:          0.8;

  z-index:          1; /* in front of .agc-light (z-index:0) within accents */

  border-radius:    16px;

  box-shadow:       inset 0  2px 2px 0 rgba(224,201,178,0.4),

                    inset 0 -2px 2px 0 rgba(0,0,0,0.27);

  backdrop-filter:  blur(4px);

  -webkit-backdrop-filter: blur(4px);

  transform-origin: 20% 80%;

}



.agc-acc-card:nth-child(1) { animation: agc-wobble 18s ease-in-out infinite; }

.agc-acc-card:nth-child(2) { animation: agc-wobble 22s ease-in-out -6s infinite reverse; }

.agc-acc-card:nth-child(3) { animation: agc-wobble 26s ease-in-out -18s infinite; }



/* â”€â”€ Rotating circle lights (inline SVG, color via currentColor) â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */

.agc-light {

  position:   absolute;

  right:      calc(16% + 10px);

  left:       0;

  top:        calc(50% + 20px);

  margin:     auto;

  width:      164px;

  height:     164px;

  z-index:    0; /* behind .agc-acc-card (z-index:1) within accents */

  color:      var(--agc-circle-color, rgba(200,200,200,0.7));

  animation:  agc-rotate360 22s linear infinite;

}



/* SVG inherits currentColor for its strokes; drop-shadow creates the halo */

.agc-light svg {

  filter: drop-shadow(0 0 4px currentColor)

          drop-shadow(0 0 10px currentColor);

}



.agc-light-sm {

  width:     100px;

  height:    100px;

  left:      calc(15% + 15px);

  right:     0;

  top:       calc(30% - 50px);

  animation: agc-rotate360 18s linear -10s infinite;

}



/* â”€â”€ Top light bar â€” sibling of card, above it (z-index:3) â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */

/* Positioned absolute within .agc-wrap (position:relative)                   */

.agc-top-light {

  position:       absolute;

  left:           0;

  right:          0;

  top:            calc(50% - 292px);

  margin:         auto;

  width:          284px;

  height:         6px;

  border-radius:  10px;

  pointer-events: none;

  user-select:    none;

  background:     var(--agc-top-light, #fffef9);

  box-shadow:     0  0px  1px  1px  var(--agc-top-light, #ffc78e),

                  0  1px  2px  1px  color-mix(in srgb, var(--agc-top-light, #ff9429) 47%, transparent),

                  0  2px  6px  1px  color-mix(in srgb, var(--agc-top-light, #e98b2d) 47%, transparent),

                  0  4px 12px  0px  color-mix(in srgb, var(--agc-top-light, #ff9e3d) 60%, transparent),

                  0 12px 20px 12px  color-mix(in srgb, var(--agc-top-light, #ff8000) 27%, transparent);

  z-index:        3;

}



/* â”€â”€ Responsive â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */

@media (max-width: 736px) {

  .agc-card     { width: 85vw !important; }

  .agc-acc-card { width: calc(85vw + 10px) !important; }

  .agc-wrap     { min-height: 560px; padding: 60px 16px 40px; }

}



/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•

   Aidem Neumorphic Ripple  (.anr-*)

   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */



.anr-wrap {

  position:        relative;

  display:         flex;

  align-items:     center;

  justify-content: center;

  width:           100%;

  overflow:        hidden;

  background:      var(--anr-wrap-bg, var(--anr-bg, #e0e5ec));

}



.anr-ring {

  position:      absolute;

  top:           50%;

  left:          50%;

  border-radius: 50%;

  /* JS sizes width/height; start invisible for GSAP from-scale animation */

  background:    var(--anr-bg, #e0e5ec);

  box-shadow:

    calc(var(--anr-sh-size, 18px) * -0.55) calc(var(--anr-sh-size, 18px) * -0.55) calc(var(--anr-sh-size, 18px) * 1.6) var(--anr-sh-light, #ffffff),

    calc(var(--anr-sh-size, 18px) *  0.55) calc(var(--anr-sh-size, 18px) *  0.55) calc(var(--anr-sh-size, 18px) * 1.6) var(--anr-sh-dark,  #b8bec7);

  /* JS sets translate so position stays centred after GSAP transforms */

  will-change: transform, opacity;

}



.anr-centre {

  position:      relative;

  z-index:       20;

  width:         var(--anr-img-size, 160px);

  height:        var(--anr-img-size, 160px);

  border-radius: 50%;

  overflow:      hidden;

  flex-shrink:   0;

  box-shadow:

    calc(var(--anr-sh-size, 18px) * -0.55) calc(var(--anr-sh-size, 18px) * -0.55) calc(var(--anr-sh-size, 18px) * 1.6) var(--anr-sh-light, #ffffff),

    calc(var(--anr-sh-size, 18px) *  0.55) calc(var(--anr-sh-size, 18px) *  0.55) calc(var(--anr-sh-size, 18px) * 1.6) var(--anr-sh-dark,  #b8bec7);

}



/* Slides stacked inside the circle â€” JS + GSAP controls opacity transitions */

.anr-slide {

  position:   absolute;

  top:        0;

  left:       0;

  width:      100%;

  height:     100%;

  object-fit: cover;

  display:    block;

  opacity:    0;

}



.anr-slide--active {

  opacity: 1;

}



/* Bad-TV canvas overlay â€” drawn by JS during slide transitions */

.anr-tv-canvas {

  position:       absolute;

  top:            0;

  left:           0;

  width:          100%;

  height:         100%;

  border-radius:  50%;

  pointer-events: none;

  z-index:        5;

  opacity:        0;

}



/* Replay cursor hint */

.anr-wrap[data-click-replay="yes"] {

  cursor: pointer;

}



/* â”€â”€ Title & Subtitle overlays â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */



.anr-title,

.anr-subtitle {

  position:       absolute;

  left:           0;

  right:          0;

  text-align:     center;

  pointer-events: none;

  z-index:        50; /* above rings (max z-index: count â‰¤ 16) and centre (z-index: 20) */

  font-family:    var(--anr-text-font, inherit);

  font-weight:    var(--anr-text-weight, 500);

  letter-spacing: var(--anr-text-spacing, 0.2em);

  text-transform: var(--anr-text-transform, uppercase);

  color:          var(--anr-text-color, #c5cad3);

  /* Neumorphic embossed default */

  text-shadow:

    -1px -1px 2px var(--anr-sh-light, #ffffff),

     1px  1px 3px var(--anr-sh-dark,  #b8bec7);

}



.anr-title {

  font-size: var(--anr-title-size, 32px);

  /* Sit above the centre image; gap driven by CSS var */

  bottom: calc(50% + var(--anr-img-size) / 2 + var(--anr-text-gap, 24px));

}



.anr-subtitle {

  font-size: var(--anr-subtitle-size, 20px);

  /* Sit below the centre image */

  top: calc(50% + var(--anr-img-size) / 2 + var(--anr-text-gap, 24px));

}



/* Debossed variant â€” reversed shadows */

.anr-wrap[data-text-shadow="debossed"] .anr-title,

.anr-wrap[data-text-shadow="debossed"] .anr-subtitle {

  text-shadow:

     1px  1px 2px var(--anr-sh-light, #ffffff),

    -1px -1px 3px var(--anr-sh-dark,  #b8bec7);

}



/* No shadow */

.anr-wrap[data-text-shadow="none"] .anr-title,

.anr-wrap[data-text-shadow="none"] .anr-subtitle {

  text-shadow: none;

}


/* ==========================================================================
   Logos Wheel  (.alw-*)
   ========================================================================== */

.alw-wrap {
  position: relative;
  margin: 0 auto;
  width: min(92vw, 980px);
  aspect-ratio: 1 / 1;
  overflow: visible;
  touch-action: none;
  --alw-item-size: 100px;
  --alw-nm-bg: #f0f0f3;
  --alw-nm-light: #ffffff;
  --alw-nm-dark: #c8ccd4;
  --alw-nm-offset: 6px;
  --alw-nm-blur: 12px;
  --alw-nm-pad: 8px;
  --alw-title-gap: 6px;
}

.alw-wheel {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  /* NO will-change here â€” it would create a stacking context that isolates
     item z-indices from .alw-center, breaking the pass-through depth effect.
     GSAP animates each .alw-item individually; they form their own stacking
     contexts and can correctly compete with the sibling .alw-center. */
  user-select: none;
}

.alw-item {
  position: absolute;
  left: 0;
  top: 0;
  width: var(--alw-item-size, 100px);
  aspect-ratio: 1 / 1;
  display: grid;
  place-items: center;
  pointer-events: auto;
}

.alw-upright {
  transform-origin: 50% 50%;
  display: flex;
  flex-direction: column;
  align-items: center;
  width: 100%;
}

/* -- Circle ---------------------------------------------------------------- */

.alw-circle {
  width: 100%;
  aspect-ratio: 1 / 1;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  overflow: visible;
  flex-shrink: 0;
}

/* Inner wrapper clips image to circle */
.alw-img-wrap {
  width: 100%;
  height: 100%;
  border-radius: 50%;
  overflow: hidden;
  display: flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  padding: var(--alw-img-pad, 8px); /* inner breathing room â€” keeps images inside circle */
}

.alw-img-wrap img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain; /* default: show full logo, no cropping */
  object-position: center;
  flex-shrink: 0;
}

.alw-img-wrap .alw-link {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 100%;
}

/* Embossed -- raised */
.alw-wrap[data-nm="embossed"] .alw-circle {
  background: var(--alw-nm-bg);
  padding: var(--alw-nm-pad);
  box-shadow:
    calc(-1 * var(--alw-nm-offset)) calc(-1 * var(--alw-nm-offset)) var(--alw-nm-blur) var(--alw-nm-light),
    var(--alw-nm-offset) var(--alw-nm-offset) var(--alw-nm-blur) var(--alw-nm-dark);
}

/* Inverted -- pressed */
.alw-wrap[data-nm="inverted"] .alw-circle {
  background: var(--alw-nm-bg);
  padding: var(--alw-nm-pad);
  box-shadow:
    inset calc(-1 * var(--alw-nm-offset)) calc(-1 * var(--alw-nm-offset)) var(--alw-nm-blur) var(--alw-nm-light),
    inset var(--alw-nm-offset) var(--alw-nm-offset) var(--alw-nm-blur) var(--alw-nm-dark);
}

/* -- Title below circle ---------------------------------------------------- */

.alw-title {
  display: block;
  margin-top: var(--alw-title-gap, 6px);
  font-size: 0.7em;
  line-height: 1.2;
  text-align: center;
  white-space: nowrap;
  color: #333;
  pointer-events: none;
}

/* -- Tooltip --------------------------------------------------------------- */

.alw-item::after {
  content: attr(data-tooltip);
  position: absolute;
  bottom: 110%;
  left: 50%;
  transform: translateX(-50%) translateY(8px);
  background: rgba(0,0,0,0.8);
  color: #fff;
  font-size: 0.75rem;
  font-weight: 500;
  padding: 5px 9px;
  border-radius: 5px;
  white-space: nowrap;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.2s ease, transform 0.2s ease;
  z-index: 10;
}

.alw-item::before {
  content: '';
  position: absolute;
  bottom: 100%;
  left: 50%;
  transform: translateX(-50%);
  border: 5px solid transparent;
  border-top-color: rgba(0,0,0,0.8);
  opacity: 0;
  transition: opacity 0.2s ease;
  z-index: 9;
  pointer-events: none;
}

.alw-item:hover::after,
.alw-item:hover::before {
  opacity: 1;
  transform: translateX(-50%) translateY(0);
}

/* -- Center (sandwich layers) ---------------------------------------------- */

/* Shared base for both layers */
.alw-center {
  position: absolute;
  top: calc(50% + var(--alw-center-y, 0px));
  left: calc(50% + var(--alw-center-x, 0px));
  transform: translate(-50%, -50%);
  text-align: center;
  pointer-events: none;
  width: max-content;
  max-width: 80%;
}

/* Layer 1 â€” solid text, default position above everything */
.alw-center--back  { z-index: 200; }

/* Layer 3 â€” stroke-only text, hidden unless passthrough is active */
.alw-center--front { z-index: 200; display: none; }

/* â”€â”€ Sandwich / passthrough mode â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */

/* Back layer drops behind all circles (z-index 10â€“90) */
.alw-wrap[data-mode="planets"][data-zmode="passthrough"] .alw-center--back  { z-index: 1; }

/* Front layer floats above all circles */
.alw-wrap[data-mode="planets"][data-zmode="passthrough"] .alw-center--front {
  display: block;
  z-index: 200;
}

/* Front heading: transparent fill + stroke â€” wraps visually around circles */
.alw-wrap[data-mode="planets"][data-zmode="passthrough"] .alw-center--front .alw-center-heading {
  -webkit-text-stroke: var(--alw-stroke-width, 2px) var(--alw-stroke-color, #222222);
  color: transparent;
  paint-order: stroke fill; /* stroke paints under fill in supporting browsers */
}

/* Front subtext: match stroke treatment */
.alw-wrap[data-mode="planets"][data-zmode="passthrough"] .alw-center--front .alw-center-sub {
  -webkit-text-stroke: 1px var(--alw-stroke-color, #222222);
  color: transparent;
}

.alw-center-heading {
  font-size: clamp(1.2rem, 2.8vw, 2.2rem);
  font-weight: 700;
  color: #222;
  letter-spacing: 0.05em;
  margin: 0;
  line-height: 1.2;
  text-transform: uppercase;
}

.alw-center-sub {
  margin: 6px 0 0;
  font-size: clamp(0.75rem, 1.5vw, 1rem);
  color: #666;
  line-height: 1.4;
}

@media (prefers-reduced-motion: reduce) {
  .alw-wrap { touch-action: auto; }
}

@media (max-width: 768px) {
  .alw-wrap { width: min(92vw, 600px); }
}

/* ==========================================================================
   Terminal  (.at-*)
   ========================================================================== */

.at-wrap {
  --at-bg:            #1e1e1e;
  --at-header-bg:     #2d2d2d;
  --at-text:          #00ff00;
  --at-prompt:        #00ff00;
  --at-cursor:        #00ff00;
  --at-out:           #cccccc;
  --at-height:        320px;
  --at-radius:        8px;
  --at-font-size:     13px;
  --at-cursor-speed:  0.7s;

  width: 100%;
  border-radius: var(--at-radius);
  overflow: hidden;
  box-shadow: 0 8px 32px rgba(0,0,0,0.45);
  display: flex;
  flex-direction: column;
}

/* -- Header ---------------------------------------------------------------- */

.at-header {
  background: var(--at-header-bg);
  height: 32px;
  min-height: 32px;
  display: flex;
  align-items: center;
  padding: 0 12px;
  gap: 0;
  flex-shrink: 0;
  position: relative;
}

.at-btns {
  display: flex;
  gap: 6px;
  align-items: center;
  z-index: 1;
}

.at-btn {
  width: 12px;
  height: 12px;
  border-radius: 50%;
  display: block;
  flex-shrink: 0;
}

.at-btn--close { background: #ff5f57; }
.at-btn--min   { background: #ffbd2e; }
.at-btn--max   { background: #28c840; }

.at-title {
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  font-size: 11px;
  color: #888;
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  letter-spacing: 0.02em;
  pointer-events: none;
  white-space: nowrap;
  overflow: hidden;
  max-width: 60%;
  text-overflow: ellipsis;
}

/* -- Body ------------------------------------------------------------------ */

.at-body {
  background: var(--at-bg);
  height: var(--at-height);
  overflow-y: auto;
  overflow-x: hidden;
  padding: 14px 16px 12px;
  box-sizing: border-box;
  display: flex;
  flex-direction: column;
  font-size: var(--at-font-size);
  font-family: "Courier New", Courier, Menlo, Monaco, monospace;
  line-height: 1.6;
  /* Thin custom scrollbar */
  scrollbar-width: thin;
  scrollbar-color: #444 transparent;
}

.at-body::-webkit-scrollbar       { width: 5px; }
.at-body::-webkit-scrollbar-track { background: transparent; }
.at-body::-webkit-scrollbar-thumb { background: #444; border-radius: 3px; }

/* -- History --------------------------------------------------------------- */

.at-history { }

.at-history-line {
  display: block;
  white-space: pre-wrap;
  word-break: break-all;
  margin: 0;
}

.at-hist-prompt { color: var(--at-prompt); }
.at-hist-cmd    { color: var(--at-text); }

/* -- Output ---------------------------------------------------------------- */

.at-output {
  color: var(--at-out);
  white-space: pre-wrap;
  word-break: break-word;
  margin: 1px 0 10px;
  padding-left: 2px;
}

/* Output colour helpers */
.at-output .at-green  { color: #27c93f; }
.at-output .at-gray,
.at-output .at-grey   { color: #888888; }
.at-output .at-yellow { color: #ffbd2e; }
.at-output .at-red    { color: #ff5f57; }
.at-output .at-cyan   { color: #00d8d6; }
.at-output .at-white  { color: #ffffff; }
.at-output .at-dim    { color: #555555; }
.at-output .at-blue   { color: #5bc0de; }

/* -- Active line (prompt + typing area) ------------------------------------ */

.at-active-line {
  flex-shrink: 0;
  min-height: 1.6em;
  margin-top: 2px;
  word-break: break-all;
}

.at-prompt {
  display: inline;
  color: var(--at-prompt);
  white-space: pre;
}

.at-typed {
  display: inline;
  color: var(--at-text);
  white-space: pre-wrap;
}

.at-cursor {
  display: inline;
  color: var(--at-cursor);
  animation: at-blink var(--at-cursor-speed, 0.7s) step-end infinite;
}

@keyframes at-blink {
  0%, 100% { opacity: 1; }
  50%       { opacity: 0; }
}

/* -- Mobile ---------------------------------------------------------------- */

@media (max-width: 768px) {
  .at-body { padding: 10px 12px; }
  .at-title { display: none; }
}


/* ==========================================================================
   Terminal FAQ Accordion (.afaq-*, .Accordion__*)
   ========================================================================== */

.elementor-widget-aidem_terminal_faq {
  align-self: stretch !important;
}

.elementor-widget-aidem_terminal_faq .elementor-widget-container {
  box-sizing: border-box;
  width: 100%;
  min-width: 0;
}

.afaq-wrap {
  --afaq-panel-bg: rgba(25, 29, 36, 0.58);
  --afaq-panel-border: rgba(232, 190, 255, 0.45);
  --afaq-panel-radius: 15px;
  --afaq-panel-blur: 18px;
  --afaq-door-title: #f0f3f8;
  --afaq-question: #d7ff2f;
  --afaq-question-active: #ffffff;
  --afaq-divider: rgba(248, 248, 248, 0.28);
  --afaq-hover-bg: rgba(96, 123, 186, 0.16);
  --at-prompt: #d7ff2f;
  --at-out: #cccccc;
  --at-cursor: #d7ff2f;
  --at-font-size: 13px;
  --at-cursor-speed: 0.7s;

  position: relative;
  width: 100%;
  max-width: 980px;
  min-width: 0;
  box-sizing: border-box;
  margin: 0 auto;
  padding: 28px 30px;
  border-radius: var(--afaq-panel-radius);
  border: 1px solid var(--afaq-panel-border);
  background:
    linear-gradient(180deg, rgba(255,255,255,0.07) 0%, rgba(255,255,255,0.02) 100%),
    var(--afaq-panel-bg);
  box-shadow: 0 18px 48px rgba(0, 0, 0, 0.28), inset 0 1px 0 rgba(255,255,255,0.08);
  backdrop-filter: blur(var(--afaq-panel-blur));
  -webkit-backdrop-filter: blur(var(--afaq-panel-blur));
  overflow: hidden;
  contain: layout;
}

.afaq-wrap::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  border-radius: inherit;
  background:
    linear-gradient(180deg, rgba(255,255,255,0.05), transparent 26%),
    repeating-linear-gradient(180deg, rgba(255,255,255,0.035) 0 1px, transparent 1px 4px);
  opacity: 0.42;
}

.afaq-wrap .afaq-door {
  position: absolute;
  inset: 0;
  z-index: 3;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 34px;
  border-radius: inherit;
  pointer-events: none;
  overflow: hidden;
  background:
    linear-gradient(180deg, rgba(255,255,255,0.28) 0%, rgba(255,255,255,0.08) 10%, rgba(0,0,0,0.08) 48%, rgba(255,255,255,0.18) 100%),
    linear-gradient(135deg, #7c828b 0%, #4d525a 20%, #9399a2 50%, #434850 76%, #8f959e 100%);
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,0.38),
    inset 0 -18px 28px rgba(0,0,0,0.22),
    0 18px 32px rgba(0,0,0,0.28);
  will-change: transform;
  transform: translate3d(0, 0, 0);
}

.afaq-wrap .afaq-door::before {
  content: "";
  position: absolute;
  inset: 0;
  background:
    repeating-linear-gradient(
      180deg,
      rgba(255,255,255,0.10) 0 1px,
      rgba(255,255,255,0.01) 1px 4px
    ),
    linear-gradient(90deg, rgba(255,255,255,0.16), transparent 18%, transparent 82%, rgba(0,0,0,0.22));
  mix-blend-mode: screen;
  opacity: 0.85;
}

.afaq-wrap .afaq-door::after {
  content: "";
  position: absolute;
  left: 7%;
  right: 7%;
  top: 16%;
  bottom: 16%;
  border-radius: calc(var(--afaq-panel-radius) * 0.7);
  border: 1px solid rgba(255,255,255,0.12);
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,0.14),
    inset 0 -1px 0 rgba(0,0,0,0.20);
}

.afaq-wrap .afaq-door__title {
  position: relative;
  z-index: 1;
  width: 100%;
  margin: 0;
  padding: 0 8%;
  color: var(--afaq-door-title);
  font-size: var(--xxl-size-title-60-165px);
  font-weight: 700;
  line-height: 0.92;
  letter-spacing: 0.08em;
  text-align: center;
  text-transform: uppercase;
  text-shadow: 0 2px 18px rgba(0,0,0,0.28);
}

.afaq-wrap .afaq-door__handle {
  position: absolute;
  left: 50%;
  bottom: 10%;
  width: min(124px, 20%);
  height: 10px;
  border-radius: 999px;
  transform: translateX(-50%);
  background: linear-gradient(180deg, rgba(255,255,255,0.82), rgba(120,126,136,0.90));
  box-shadow:
    inset 0 1px 1px rgba(255,255,255,0.40),
    0 2px 10px rgba(0,0,0,0.20);
}

.afaq-wrap .afaq-panel-heading {
  position: relative;
  z-index: 1;
  width: 100%;
  margin: 1.5em 0;
  padding: 0;
  text-align: center;
}

.afaq-wrap .afaq-panel-heading__text {
  margin: 0;
  color: #f0f3f8;
  font-size: clamp(20px, 2.4vw, 32px);
  font-weight: 700;
  line-height: 1.15;
  letter-spacing: 0.12em;
  text-align: center;
  text-transform: uppercase;
}

.afaq-wrap .Accordion {
  position: relative;
  z-index: 1;
  width: 100%;
  min-width: 0;
  box-sizing: border-box;
}

.afaq-wrap .Accordion__tabs {
  list-style: none;
  margin: 0;
  padding: 0;
  width: 100%;
  min-width: 0;
  box-sizing: border-box;
}

.afaq-wrap .Accordion__tab {
  width: 100%;
  min-width: 0;
  box-sizing: border-box;
  border-bottom: 1px solid var(--afaq-divider);
}

.afaq-wrap .Accordion__tab:last-child {
  border-bottom: 0;
}

.afaq-wrap .Accordion__tab__headline {
  display: flex;
  width: 100%;
  min-width: 0;
  justify-content: space-between;
  align-items: center;
  gap: 18px;
  padding: 20px 16px;
  border: 0;
  background: transparent;
  color: var(--afaq-question);
  cursor: pointer;
  text-align: left;
  transition: background-color 0.28s ease, color 0.22s ease;
}

.afaq-wrap .Accordion__tab__headline:hover,
.afaq-wrap .Accordion__tab__headline:focus-visible,
.afaq-wrap .Accordion__tab--open .Accordion__tab__headline {
  background: var(--afaq-hover-bg);
}

.afaq-wrap .Accordion__tab__headline:focus-visible {
  outline: 1px solid rgba(255,255,255,0.3);
  outline-offset: -1px;
}

.afaq-wrap .Accordion__tab__question {
  display: block;
  min-width: 0;
  flex: 1 1 auto;
  margin: 0;
  color: inherit;
  font-size: clamp(18px, 2vw, 22px);
  font-weight: 600;
  letter-spacing: 0.08em;
  user-select: none;
}

.afaq-wrap .Accordion__tab--open .Accordion__tab__headline {
  color: var(--afaq-question-active);
}

.afaq-wrap .Accordion__tab .icon {
  display: inline-block;
  width: 22px;
  height: 22px;
  border: 1px solid currentColor;
  border-radius: 50%;
  position: relative;
  flex-shrink: 0;
}

.afaq-wrap .Accordion__tab .icon::before,
.afaq-wrap .Accordion__tab .icon::after {
  content: "";
  position: absolute;
  background: currentColor;
  transition: transform 0.24s ease;
}

.afaq-wrap .Accordion__tab .icon::before {
  top: 50%;
  left: 50%;
  width: 10px;
  height: 2px;
  transform: translate(-50%, -50%);
}

.afaq-wrap .Accordion__tab .icon::after {
  top: 50%;
  left: 50%;
  width: 2px;
  height: 10px;
  transform: translate(-50%, -50%);
}

.afaq-wrap .Accordion__tab--open .icon::after {
  transform: translate(-50%, -50%) scaleY(0);
}

.afaq-wrap .Accordion__tab__content {
  overflow: hidden;
  max-height: 0;
  opacity: 0;
  width: 100%;
  min-width: 0;
  padding: 0 16px;
  box-sizing: border-box;
  direction: ltr;
  text-align: left;
  transition:
    max-height 0.55s cubic-bezier(0.22, 1, 0.36, 1),
    opacity 0.28s ease;
}

.afaq-wrap .Accordion__tab--open .Accordion__tab__content {
  opacity: 1;
}

.afaq-wrap .Accordion__tab__content .wrapper {
  position: relative;
  width: 100%;
  min-width: 0;
  max-width: 100%;
  box-sizing: border-box;
  padding: calc(var(--at-font-size) * 1.7) 0 22px;
  direction: ltr;
  text-align: left;
  overflow: hidden;
}

.afaq-wrap .afaq-answer-measure,
.afaq-wrap .afaq-answer-shell {
  display: flex;
  width: 100%;
  min-width: 0;
  max-width: 100%;
  box-sizing: border-box;
  font-size: var(--at-font-size);
  line-height: 1.7;
  font-family: "Courier New", Courier, Menlo, Monaco, monospace;
  white-space: pre-wrap;
  word-break: break-word;
  overflow-wrap: break-word;
  direction: ltr;
  justify-content: flex-start;
  align-items: flex-start;
  text-align: left;
  overflow: hidden;
}

.afaq-wrap .afaq-answer-measure {
  position: absolute;
  top: 0;
  left: 0;
  z-index: -1;
  visibility: hidden;
  pointer-events: none;
  min-height: 1.7em;
}

.afaq-wrap .afaq-answer-shell {
  position: relative;
  z-index: 1;
  min-height: 1.7em;
}

.afaq-wrap .afaq-answer-shell .at-prompt,
.afaq-wrap .afaq-answer-measure .at-prompt {
  flex: 0 0 auto;
  align-self: flex-start;
}

.afaq-wrap .afaq-answer-shell .at-output,
.afaq-wrap .afaq-answer-measure .at-output {
  display: block;
  flex: 1 1 0%;
  min-width: 0;
  max-width: 100%;
  color: var(--at-out);
  margin: 0;
  padding-left: 2px;
  direction: ltr;
  text-align: left !important;
  word-break: break-word;
  overflow-wrap: break-word;
  overflow: visible;
  padding-bottom: 0.28em;
}

.afaq-wrap .afaq-answer-shell > .at-output > .afaq-answer-cursor {
  display: none;
}

.afaq-wrap .afaq-answer-shell .afaq-answer-typed.afaq-motion-answer,
.afaq-wrap .afaq-answer-measure .afaq-answer-typed.afaq-motion-answer {
  display: block;
  width: 100%;
  padding-bottom: 0.18em;
}

.afaq-wrap .afaq-answer-shell .afaq-answer-typed.afaq-progressive-answer,
.afaq-wrap .afaq-answer-measure .afaq-answer-typed.afaq-progressive-answer {
  display: block;
  width: 100%;
  padding-bottom: 0.18em;
}

.afaq-wrap .afaq-answer-shell .afaq-answer-typed.afaq-paragraph-answer,
.afaq-wrap .afaq-answer-measure .afaq-answer-typed.afaq-paragraph-answer {
  display: block;
  width: 100%;
  padding-bottom: 0.18em;
}

.afaq-wrap .afaq-answer-shell .afaq-answer-typed.afaq-motion-answer .aidem-motion-text-content,
.afaq-wrap .afaq-answer-measure .afaq-answer-typed.afaq-motion-answer .aidem-motion-text-content {
  text-align: inherit;
  color: inherit;
}

.afaq-wrap .afaq-answer-shell .afaq-answer-typed.afaq-progressive-answer .afaq-char-unit,
.afaq-wrap .afaq-answer-measure .afaq-answer-typed.afaq-progressive-answer .afaq-char-unit,
.afaq-wrap .afaq-answer-shell .afaq-answer-typed.afaq-progressive-answer .afaq-char-space,
.afaq-wrap .afaq-answer-measure .afaq-answer-typed.afaq-progressive-answer .afaq-char-space {
  display: inline;
  white-space: normal;
  color: inherit;
  vertical-align: baseline;
}

.afaq-wrap .afaq-answer-shell .afaq-answer-typed.afaq-paragraph-answer .afaq-paragraph-unit,
.afaq-wrap .afaq-answer-measure .afaq-answer-typed.afaq-paragraph-answer .afaq-paragraph-unit {
  display: block;
  color: inherit;
}

.afaq-wrap .afaq-answer-shell .afaq-answer-typed.afaq-paragraph-answer .afaq-paragraph-unit + .afaq-paragraph-unit,
.afaq-wrap .afaq-answer-measure .afaq-answer-typed.afaq-paragraph-answer .afaq-paragraph-unit + .afaq-paragraph-unit {
  margin-top: 1em;
}

.afaq-wrap .afaq-answer-shell .afaq-answer-typed.afaq-motion-answer .afaq-motion-line,
.afaq-wrap .afaq-answer-measure .afaq-answer-typed.afaq-motion-answer .afaq-motion-line {
  backface-visibility: hidden;
  transform: translate3d(0, 0, 0);
}

.afaq-wrap .afaq-answer-shell .afaq-answer-typed.afaq-progressive-answer .afaq-line-break,
.afaq-wrap .afaq-answer-measure .afaq-answer-typed.afaq-progressive-answer .afaq-line-break {
  display: block;
  width: 100%;
  height: 0;
  margin: 0;
}

.afaq-wrap .afaq-answer-shell .afaq-answer-typed.afaq-motion-answer .afaq-return-line,
.afaq-wrap .afaq-answer-measure .afaq-answer-typed.afaq-motion-answer .afaq-return-line,
.afaq-wrap .afaq-answer-shell .afaq-answer-typed.afaq-progressive-answer .afaq-return-line,
.afaq-wrap .afaq-answer-measure .afaq-answer-typed.afaq-progressive-answer .afaq-return-line {
  display: block;
  width: 100%;
  min-height: 1em;
  height: 1em;
  margin: 0;
  clip-path: none !important;
  -webkit-clip-path: none !important;
}

.afaq-wrap .afaq-answer-shell .at-output .at-gray,
.afaq-wrap .afaq-answer-shell .at-output .at-grey,
.afaq-wrap .afaq-answer-measure .at-output .at-gray,
.afaq-wrap .afaq-answer-measure .at-output .at-grey {
  color: var(--at-out);
}

.afaq-wrap .afaq-answer-cursor,
.afaq-wrap .afaq-answer-measure .at-cursor {
  display: inline-block;
  font-size: 1em;
  line-height: 1;
  color: var(--at-cursor);
  margin-left: 2px;
  white-space: nowrap;
  overflow: hidden;
  text-indent: -9999px;
}

.afaq-wrap .afaq-answer-cursor.afaq-answer-cursor--bar,
.afaq-wrap .afaq-answer-measure .at-cursor.afaq-answer-cursor--bar {
  width: 0.14em;
  min-width: 0.14em;
  height: 1em;
  background: currentColor;
  vertical-align: -0.12em;
}

.afaq-wrap .afaq-answer-cursor.afaq-answer-cursor--block,
.afaq-wrap .afaq-answer-measure .at-cursor.afaq-answer-cursor--block {
  width: 0.42em;
  min-width: 0.42em;
  height: 1em;
  background: currentColor;
  vertical-align: -0.12em;
}

.afaq-wrap .afaq-answer-cursor.afaq-answer-cursor--half,
.afaq-wrap .afaq-answer-measure .at-cursor.afaq-answer-cursor--half {
  width: 0.24em;
  min-width: 0.24em;
  height: 1em;
  background: currentColor;
  vertical-align: -0.12em;
}

.afaq-wrap .afaq-answer-cursor.afaq-answer-cursor--underscore,
.afaq-wrap .afaq-answer-measure .at-cursor.afaq-answer-cursor--underscore {
  width: 0.62em;
  min-width: 0.62em;
  height: 0.12em;
  background: currentColor;
  vertical-align: 0.02em;
}

@media (max-width: 767px) {
  .afaq-wrap {
    padding: 22px 18px;
  }

  .afaq-wrap .afaq-door {
    padding: 24px 18px;
  }

  .afaq-wrap .afaq-door__title {
    padding: 0 5%;
  }

  .afaq-wrap .Accordion__tab__headline {
    padding: 18px 10px;
    gap: 12px;
  }

  .afaq-wrap .Accordion__tab__content {
    padding: 0 10px;
  }

  .afaq-wrap .Accordion__tab__question {
    letter-spacing: 0.05em;
  }

}

/* ==========================================================================
   Project ACF Accordion (.apqa-*) - FAQ runtime variant
   ========================================================================== */

.elementor-widget-aidem_project_acf_accordion {
  align-self: stretch !important;
}

.elementor-widget-aidem_project_acf_accordion .elementor-widget-container {
  width: 100%;
  min-width: 0;
}

.afaq-wrap.afaq-wrap--project-acf.apqa-wrap {
  --apqa-glow-color: #8c5ff5;
  --apqa-glow-intensity: 1;
  --apqa-glow-speed: 1.6s;
  --apqa-answer-color: rgba(255, 255, 255, 0.82);
  --apqa-answer-padding: 1.35em 0 14px 0;
  max-width: 100%;
  margin: 0;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
  overflow: visible;
  contain: none;
}

.afaq-wrap.afaq-wrap--project-acf.apqa-wrap::before,
.afaq-wrap.afaq-wrap--project-acf.apqa-wrap .afaq-door,
.afaq-wrap.afaq-wrap--project-acf.apqa-wrap .afaq-panel-heading {
  display: none;
}

.afaq-wrap.afaq-wrap--project-acf.apqa-wrap .Accordion__tab {
  border-bottom-color: var(--afaq-divider);
}

.afaq-wrap.afaq-wrap--project-acf.apqa-wrap .Accordion__tab__headline {
  padding: 14px 0;
  gap: 14px;
}

.afaq-wrap.afaq-wrap--project-acf.apqa-wrap .Accordion__tab__content {
  padding: 0;
  opacity: 0;
}

.afaq-wrap.afaq-wrap--project-acf.apqa-wrap .Accordion__tab--open .Accordion__tab__content {
  opacity: 1;
}

.afaq-wrap.afaq-wrap--project-acf.apqa-wrap .Accordion__tab__content .wrapper {
  padding: var(--apqa-answer-padding);
}

.afaq-wrap.afaq-wrap--project-acf.apqa-wrap .Accordion__tab__question {
  letter-spacing: 0.03em;
}

body.elementor-editor-active .afaq-wrap.afaq-wrap--project-acf.apqa-wrap[data-apqa-editor-preview="1"],
.elementor-editor-active .afaq-wrap.afaq-wrap--project-acf.apqa-wrap[data-apqa-editor-preview="1"] {
  cursor: pointer;
}

.afaq-wrap.afaq-wrap--project-acf.apqa-wrap .Accordion__tab .icon {
  width: 24px;
  height: 24px;
  border-color: currentColor;
  transition:
    border-color 0.24s ease,
    box-shadow 0.24s ease,
    color 0.24s ease;
}

.afaq-wrap.afaq-wrap--project-acf.apqa-wrap:not(.apqa-has-open) .Accordion__tab:first-child .icon,
.afaq-wrap.afaq-wrap--project-acf.apqa-wrap.apqa-has-open .Accordion__tab--open .icon {
  border-color: color-mix(in srgb, var(--apqa-glow-color) 84%, currentColor);
  box-shadow:
    0 0 calc(8px * var(--apqa-glow-intensity)) color-mix(in srgb, var(--apqa-glow-color) 52%, transparent),
    0 0 calc(20px * var(--apqa-glow-intensity)) color-mix(in srgb, var(--apqa-glow-color) 26%, transparent);
  animation: apqa-icon-pulse var(--apqa-glow-speed) ease-in-out infinite;
}

.afaq-wrap.afaq-wrap--project-acf.apqa-wrap .afaq-answer-measure,
.afaq-wrap.afaq-wrap--project-acf.apqa-wrap .afaq-answer-shell {
  width: 100%;
  max-width: 100%;
  color: var(--apqa-answer-color);
}

.afaq-wrap.afaq-wrap--project-acf.apqa-wrap .afaq-answer-shell .at-output,
.afaq-wrap.afaq-wrap--project-acf.apqa-wrap .afaq-answer-measure .at-output {
  display: block;
  width: 100%;
}

.afaq-wrap.afaq-wrap--project-acf.apqa-wrap .afaq-answer-shell .afaq-answer-typed,
.afaq-wrap.afaq-wrap--project-acf.apqa-wrap .afaq-answer-measure .afaq-answer-typed {
  display: block;
  width: 100%;
  color: inherit;
  line-height: 1.55;
}

.afaq-wrap.afaq-wrap--project-acf.apqa-wrap .afaq-answer-shell p,
.afaq-wrap.afaq-wrap--project-acf.apqa-wrap .afaq-answer-measure p {
  margin: 0;
}

.afaq-wrap.afaq-wrap--project-acf.apqa-wrap .afaq-answer-shell p + p,
.afaq-wrap.afaq-wrap--project-acf.apqa-wrap .afaq-answer-measure p + p {
  margin-top: 0.85rem;
}

.afaq-wrap.afaq-wrap--project-acf.apqa-wrap .afaq-answer-shell ul,
.afaq-wrap.afaq-wrap--project-acf.apqa-wrap .afaq-answer-shell ol,
.afaq-wrap.afaq-wrap--project-acf.apqa-wrap .afaq-answer-measure ul,
.afaq-wrap.afaq-wrap--project-acf.apqa-wrap .afaq-answer-measure ol {
  display: block;
  width: 100%;
  margin: 0.18rem 0 0.78rem;
  padding-left: 1.05rem;
  list-style-position: outside;
  white-space: normal;
}

.afaq-wrap.afaq-wrap--project-acf.apqa-wrap .afaq-answer-shell ul,
.afaq-wrap.afaq-wrap--project-acf.apqa-wrap .afaq-answer-measure ul {
  list-style-type: disc;
}

.afaq-wrap.afaq-wrap--project-acf.apqa-wrap .afaq-answer-shell ol,
.afaq-wrap.afaq-wrap--project-acf.apqa-wrap .afaq-answer-measure ol {
  list-style-type: decimal;
}

.afaq-wrap.afaq-wrap--project-acf.apqa-wrap .afaq-answer-shell li,
.afaq-wrap.afaq-wrap--project-acf.apqa-wrap .afaq-answer-measure li {
  display: list-item;
  margin: 0;
  padding-left: 0.12rem;
  line-height: 1.45;
  white-space: normal;
}

.afaq-wrap.afaq-wrap--project-acf.apqa-wrap .afaq-answer-shell li + li,
.afaq-wrap.afaq-wrap--project-acf.apqa-wrap .afaq-answer-measure li + li {
  margin-top: 0.28rem;
}

.afaq-wrap.afaq-wrap--project-acf.apqa-wrap .afaq-answer-shell strong,
.afaq-wrap.afaq-wrap--project-acf.apqa-wrap .afaq-answer-measure strong {
  display: block;
  margin: 0.2rem 0 0.08rem;
  color: #fff;
  letter-spacing: 0.02em;
}

@keyframes apqa-icon-pulse {
  0%,
  100% {
    transform: scale(1);
    box-shadow:
      0 0 calc(8px * var(--apqa-glow-intensity)) color-mix(in srgb, var(--apqa-glow-color) 52%, transparent),
      0 0 calc(20px * var(--apqa-glow-intensity)) color-mix(in srgb, var(--apqa-glow-color) 26%, transparent);
  }

  50% {
    transform: scale(1.06);
    box-shadow:
      0 0 calc(14px * var(--apqa-glow-intensity)) color-mix(in srgb, var(--apqa-glow-color) 72%, transparent),
      0 0 calc(30px * var(--apqa-glow-intensity)) color-mix(in srgb, var(--apqa-glow-color) 34%, transparent);
  }
}

@media (max-width: 767px) {
  .afaq-wrap.afaq-wrap--project-acf.apqa-wrap .Accordion__tab__headline {
    padding: 12px 0;
    gap: 12px;
  }

  .afaq-wrap.afaq-wrap--project-acf.apqa-wrap .Accordion__tab .icon {
    width: 22px;
    height: 22px;
  }
}


/* ==========================================================================
   Earth Spinning  (.aes-*)
   ========================================================================== */

.aes-widget {
  display: flex;
  justify-content: center;
  align-items: center;
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  overflow: hidden;
  background: transparent;
}

.aes-stage-wrap,
.aes-porthole-wrap {
  position: absolute;
  inset: 0;
  z-index: 3;
  transform: translateZ(0);
  will-change: transform;
  backface-visibility: hidden;
}

.aes-canvas {
  display: block;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate3d(-50%, -50%, 0);
}

/* â”€â”€ Sun flare (behind-camera glow) â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */

.aes-sun-flare {
  position: absolute;
  width: 70%;
  aspect-ratio: 1;
  border-radius: 50%;
  transform: translate(-50%, -50%);
  pointer-events: none;
  z-index: 2;
  opacity: 0;
  background: radial-gradient(circle,
    rgba(255,255,240,0.3) 0%,
    rgba(220,235,255,0.12) 30%,
    transparent           65%
  );
  mix-blend-mode: screen;
  filter: blur(28px);
}

/* â”€â”€ WebGL not supported fallback â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */

.aes-stage-wrap[data-aes-no-webgl],
.aes-porthole-wrap[data-aes-no-webgl] {
  display: flex;
  align-items: center;
  justify-content: center;
  background: #111;
  color: #666;
  font-family: -apple-system, sans-serif;
  font-size: 12px;
}


/* Earth widget: position:absolute fills its container. */
.elementor-widget:has(.aes-widget) {
  position: absolute !important;
  inset: 0 !important;
  z-index: 1 !important;
  width: 100% !important;
  height: 100% !important;
  padding: 0 !important;
  margin: 0 !important;
}

.elementor-widget:has(.aes-widget) .elementor-widget-container {
  position: absolute !important;
  inset: 0 !important;
  width: 100% !important;
  height: 100% !important;
  padding: 0 !important;
}
/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   SPACE OVERLAY WIDGET (.aso-)
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */

/* Space Overlay wrapper â€” z:2 so strapline/button/HUD sit in front of Earth(z:1).
   Sandwich title is JS-injected OUTSIDE this wrapper at z:0, so Earth correctly
   renders on top of it without affecting the overlay's own z:2 children.
   Stack: SandwichTitle(z:0) â†’ Earth(z:1) â†’ Overlay(z:2) â†’ Doors(z:3) */
.elementor-widget:has(.aso-widget) {
  position: absolute !important;
  inset: 0 !important;
  z-index: 2 !important;
  width: 100% !important;
  height: 100% !important;
  padding: 0 !important;
  margin: 0 !important;
  pointer-events: none;
}
.elementor-widget:has(.aso-widget) .elementor-widget-container {
  position: absolute !important;
  inset: 0 !important;
  width: 100% !important;
  height: 100% !important;
  padding: 0 !important;
}

/* â”€â”€ Base â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
/* Overlay base â€” z:2 stacking context keeps HUD/strapline/button in front of Earth.
   overflow:hidden clips decorations at widget boundary. */
.aso-widget {
  position: absolute;
  inset: 0;
  overflow: hidden;
  pointer-events: none;
  font-family: 'Courier New', Courier, monospace;
  --aso-hud:  #00ffaa;
  --aso-term: #00ff88;
}
.aso-widget .aso-btn,
.aso-widget .aso-btn-wrap {
  pointer-events: auto;
}

/* â”€â”€ Scanlines (shared HUD + Terminal) â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
/* z:2 â€” in front of Earth (z:1) */
.aso-scanlines {
  position: absolute;
  inset: 0;
  z-index: 6;
  overflow: hidden;
  --aso-scanline-dark-alpha: 0.15;
  --aso-scanline-bright-alpha: 0.055;
  --aso-scanline-static-alpha: 0.22;
  --aso-scanline-zigzag: 1px;
  background: repeating-linear-gradient(
    to bottom,
    transparent 0px,
    transparent 3px,
    rgba(0,0,0,var(--aso-scanline-dark-alpha)) 3px,
    rgba(0,0,0,var(--aso-scanline-dark-alpha)) 4px
  );
  pointer-events: none;
}
.aso-scanlines::before,
.aso-scanlines::after {
  content: '';
  position: absolute;
  inset: 0;
  pointer-events: none;
  background-image: linear-gradient(
    to bottom,
    transparent 0px,
    transparent 3px,
    rgba(255,255,255,var(--aso-scanline-bright-alpha)) 3px,
    rgba(255,255,255,var(--aso-scanline-bright-alpha)) 4px,
    transparent 4px,
    transparent 8px
  );
  background-repeat: repeat;
  background-size: 100% 8px;
  opacity: var(--aso-scanline-static-alpha);
  will-change: transform, opacity;
}
.aso-scanlines::before {
  transform: translate3d(calc(var(--aso-scanline-zigzag) * -1), 0, 0);
  animation: aso-scan-static-a 0.22s steps(2, end) infinite;
}
.aso-scanlines::after {
  background-position: 0 4px;
  transform: translate3d(var(--aso-scanline-zigzag), 0, 0);
  animation: aso-scan-static-b 0.29s steps(2, end) infinite;
}

/* â”€â”€ Content wrapper (shared) â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
/* No z-index on .aso-content â€” no stacking context created here.
   Children (title-wrap, strapline-wrap, btn-wrap) each carry their own z-index
   so they participate independently in the S2 GATE stacking context. */
.aso-content {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 20px;
  padding: 40px;
  text-align: center;
}

/* Two-layer title group â€” CSS Grid overlay (JS enforces this at runtime too).
   Both children share grid cell 1/1 â†’ pixel-perfect stack, no absolute positioning.
   JS also calls removeProperty on any position:absolute in Elementor-cached HTML. */
.aso-title-group {
  display: grid;
}
.aso-title-group > .aso-title-wrap--back,
.aso-title-group > .aso-title-wrap--front {
  grid-row: 1;
  grid-column: 1;
  display: flex;
  align-items: center;
  justify-content: center;
}

/* JS moves the back title clone into S2 container at z:0 so Earth (z:1)
   renders on top of the solid text. Stroke front stays in overlay at z:2. */
.aso-sandwich-title {
  position: absolute;
  inset: 0;
  z-index: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  pointer-events: none;
  overflow: hidden;
}

.aso-title {
  margin: 0;
}
/* Stroke mode: transparent fill so only the stroke outline is visible.
   Scoped to inside .aso-widget so the sandwich clone (outside .aso-widget)
   is NOT affected â€” the clone keeps its solid fill, Earth cuts through it,
   and the stroke outline in the overlay sits in front. */
.aso-widget .aso-title--stroke {
  -webkit-text-fill-color: transparent;
}
.aso-btn-wrap {
  display: flex;
  justify-content: center;
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   HUD STYLE
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */

/* Corner brackets â€” z:2 puts them in front of Earth(z:1) behind doors(z:3) */
.aso-hud .aso-corner {
  position: absolute;
  width: 40px;
  height: 40px;
  z-index: 2;
  border-color: var(--aso-hud);
  border-style: solid;
  opacity: 0.8;
}
.aso-hud .aso-tl { top: 20px;    left: 20px;    border-width: 2px 0 0 2px; }
.aso-hud .aso-tr { top: 20px;    right: 20px;   border-width: 2px 2px 0 0; }
.aso-hud .aso-bl { bottom: 20px; left: 20px;    border-width: 0 0 2px 2px; }
.aso-hud .aso-br { bottom: 20px; right: 20px;   border-width: 0 2px 2px 0; }

/* Crosshair */
.aso-hud .aso-crosshair {
  position: absolute;
  inset: 0;
  z-index: 2;
  pointer-events: none;
}
.aso-hud .aso-ch-h,
.aso-hud .aso-ch-v {
  position: absolute;
  background: var(--aso-hud);
  opacity: 0.35;
}
.aso-hud .aso-ch-h {
  top: 50%; left: 50%;
  transform: translate(-50%, -50%);
  width: 80px; height: 1px;
}
.aso-hud .aso-ch-v {
  top: 50%; left: 50%;
  transform: translate(-50%, -50%);
  width: 1px; height: 80px;
}
.aso-hud .aso-ch-ring {
  position: absolute;
  top: 50%; left: 50%;
  transform: translate(-50%, -50%);
  width: 30px; height: 30px;
  border: 1px solid var(--aso-hud);
  border-radius: 50%;
  opacity: 0.5;
}

/* Telemetry strips */
.aso-hud .aso-telem {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  z-index: 2;
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 0 24px;
}
.aso-hud .aso-telem--l { left: 0; text-align: left; }
.aso-hud .aso-telem--r { right: 0; text-align: right; }
.aso-hud .aso-telem-line {
  font-size: 11px;
  letter-spacing: 0.08em;
  color: var(--aso-hud);
  opacity: 0.75;
  white-space: nowrap;
}

/* HUD cursor */
.aso-hud .aso-cursor {
  animation: aso-blink 1s step-end infinite;
  color: var(--aso-hud);
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   CRT STRAPLINE
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */

.aso-strapline-wrap {
  position: relative;
  overflow: hidden;
  isolation: isolate;
}
.aso-intro {
  position: absolute;
  inset: 0;
  z-index: 7;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  opacity: 0;
  pointer-events: none;
  text-align: center;
  --aso-intro-color: #ffffff;
  --aso-intro-glow-color: #00ffff;
  --aso-intro-layer1-color: #00ffff;
  --aso-intro-layer2-color: #ff00ff;
}
.aso-intro-copy {
  position: relative;
  display: inline-block;
  max-width: 100%;
  padding: 0.04em 0.06em;
  overflow: hidden;
}
.aso-intro-text {
  display: block;
  max-width: 100%;
  font-family: 'Orbitron', 'Arial Black', 'Roboto Mono', sans-serif;
  font-size: clamp(1.3rem, 5.4vw, 3.6rem);
  font-weight: 900;
  line-height: 0.92;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  white-space: normal;
  word-break: break-word;
}
.aso-intro-text--base {
  position: relative;
  z-index: 2;
  color: var(--aso-intro-color, #ffffff);
  text-shadow:
    0 0 10px var(--aso-intro-glow-color, #00ffff),
    0 0 24px var(--aso-intro-glow-color, #00ffff),
    0 0 46px var(--aso-intro-glow-color, #00ffff);
  animation: aso-intro-flicker 5s infinite alternate, aso-intro-distort 3s infinite;
}
.aso-intro-text--layer {
  position: absolute;
  inset: 0;
  pointer-events: none;
}
.aso-intro-text--layer1 {
  color: var(--aso-intro-layer1-color, #00ffff);
  opacity: 0.72;
  filter: blur(0.85px);
  transform: translateX(-1px);
  clip-path: inset(0 0 54% 0);
  mix-blend-mode: screen;
  animation: aso-intro-rgb-shift 2s steps(1, end) infinite;
}
.aso-intro-text--layer2 {
  color: var(--aso-intro-layer2-color, #ff00ff);
  opacity: 0.66;
  filter: blur(1.1px);
  transform: translateX(1px);
  clip-path: inset(56% 0 0 0);
  mix-blend-mode: screen;
  animation: aso-intro-rgb-shift-alt 1.6s steps(1, end) infinite;
}
.aso-intro.aso-intro-active {
  opacity: 1;
}
.aso-intro.aso-intro-static {
  opacity: 1;
}
.aso-intro.aso-intro-static .aso-intro-text--base {
  animation: none !important;
  transform: none !important;
  letter-spacing: inherit;
}
.aso-intro.aso-intro-static .aso-intro-text--layer {
  display: none !important;
}
.aso-crt-strapline {
  position: relative;
}
.aso-crt-warmup {
  position: absolute;
  inset: -2px 0;
  z-index: 5;
  overflow: hidden;
  pointer-events: none;
  opacity: 0;
  color: var(--aso-decode-color, currentColor);
  transition: opacity 0.08s linear;
}
.aso-crt-warmup::before,
.aso-crt-warmup::after {
  content: '';
  position: absolute;
  inset: 0;
  pointer-events: none;
  will-change: transform, opacity, background-position;
}
.aso-crt-warmup::before {
  background-image:
    repeating-linear-gradient(
      to bottom,
      transparent 0px,
      transparent 2px,
      currentColor 2px,
      currentColor 3px,
      transparent 3px,
      transparent 7px
    ),
    linear-gradient(
      to bottom,
      transparent 0%,
      transparent 14%,
      currentColor 14%,
      currentColor 18%,
      transparent 18%,
      transparent 46%,
      currentColor 46%,
      currentColor 50%,
      transparent 50%,
      transparent 76%,
      currentColor 76%,
      currentColor 80%,
      transparent 80%,
      transparent 100%
    );
  background-repeat: repeat;
  background-size: 100% 7px, 100% 100%;
  opacity: 0.22;
  filter: blur(0.35px);
  animation: aso-crt-warmup-lines 0.18s steps(3, end) infinite;
}
.aso-crt-warmup::after {
  background-image:
    linear-gradient(
      to bottom,
      transparent 0%,
      currentColor 8%,
      transparent 12%,
      transparent 32%,
      currentColor 36%,
      transparent 40%,
      transparent 60%,
      currentColor 64%,
      transparent 68%,
      transparent 100%
    ),
    repeating-linear-gradient(
      to bottom,
      transparent 0px,
      transparent 1px,
      currentColor 1px,
      currentColor 2px,
      transparent 2px,
      transparent 6px
    );
  background-repeat: repeat;
  background-size: 100% 100%, 100% 6px;
  opacity: 0.18;
  mix-blend-mode: screen;
  filter: blur(0.9px);
  animation: aso-crt-warmup-noise 0.13s steps(4, end) infinite;
}
.aso-crt-strapline.aso-warmup-active .aso-crt-warmup {
  opacity: 1;
}
.aso-crt-strapline.aso-warmup-active .aso-crt-scanline {
  opacity: 0.26;
  animation-duration: 1.2s;
}
.aso-crt-strapline.aso-warmup-active .aso-crt-vline {
  opacity: 0.18;
  animation-duration: 0.75s;
}
.aso-crt-lines {
  position: relative;
  display: block;
  width: 100%;
  max-width: 100%;
  z-index: 2;
  font-family: 'Courier New', Courier, monospace;
  letter-spacing: 0.04em;
  --aso-line-gap: 8px;
  --aso-decode-color: currentColor;
  --aso-decode-glow-near: 4px;
  --aso-decode-glow-far: 10px;
  --ato-accent: currentColor;
  animation: aso-crt-flicker 8s infinite, aso-crt-glow 1.6s infinite;
}
.aso-crt-lines.aso-decoder-active {
  animation: none !important;
  text-shadow: none !important;
}
.aso-crt-line {
  display: grid;
  width: 100%;
  position: relative;
  white-space: pre-wrap;
  word-break: break-word;
  line-height: inherit;
}
.aso-crt-line--reserve {
  position: relative;
}
.aso-crt-reserve {
  display: block;
  width: 100%;
  grid-row: 1;
  grid-column: 1;
  visibility: hidden;
  white-space: pre-wrap;
  word-break: break-word;
  line-height: inherit;
}
.aso-crt-live {
  display: block;
  width: 100%;
  grid-row: 1;
  grid-column: 1;
  position: relative;
  white-space: pre-wrap;
  word-break: break-word;
  line-height: inherit;
}
.aso-crt-word {
  display: inline-block;
  line-height: inherit;
  margin: 0;
}
.aso-decoder-word {
  display: inline-block;
  white-space: pre;
  line-height: inherit;
  vertical-align: baseline;
}
.aso-decoder-word--active {
  color: var(--aso-decoder-glow-color, var(--ato-accent, currentColor)) !important;
  text-shadow: none !important;
}
.aso-crt-line:not(:last-child) {
  margin-bottom: var(--aso-line-gap, 8px);
}
.aso-crt-cursor {
  display: inline-block;
  width: 0.55em;
  height: 1em;
  background: currentColor;
  vertical-align: text-bottom;
  margin-left: 3px;
  animation: aso-crt-blink 0.8s step-end infinite;
}
.aso-crt-cursor--done {
  display: none !important;
}

/* Moving horizontal scan band */
.aso-crt-scanline {
  position: absolute;
  left: 0;
  right: 0;
  top: -80px;
  width: 100%;
  height: 80px;
  z-index: 3;
  background: linear-gradient(0deg,
    transparent 0%,
    rgba(255, 255, 255, 0.14) 50%,
    transparent 100%);
  opacity: 0.12;
  pointer-events: none;
  animation: aso-crt-scan 9s linear infinite;
}

/* Thinner fast accent line */
.aso-crt-vline {
  position: absolute;
  left: 0;
  right: 0;
  top: -4px;
  width: 100%;
  height: 4px;
  z-index: 4;
  background: linear-gradient(to bottom,
    transparent 0%,
    rgba(255, 255, 255, 0.55) 50%,
    transparent 100%);
  opacity: 0.08;
  pointer-events: none;
  animation: aso-crt-vline 7s linear infinite;
}

@keyframes aso-crt-blink {
  0%, 100% { opacity: 1; }
  50%       { opacity: 0; }
}
@keyframes aso-crt-glow {
  0%, 100% {
    text-shadow: 0 0 2px currentColor, 0 0 5px currentColor;
  }
  30% {
    text-shadow: 0.4px 0 1px rgba(0, 30, 255, 0.35),
                 -0.4px 0 1px rgba(255, 0, 80, 0.25),
                 0 0 4px currentColor;
  }
  60% {
    text-shadow: -0.3px 0 1px rgba(0, 30, 255, 0.35),
                 0.3px 0 1px rgba(255, 0, 80, 0.25),
                 0 0 3px currentColor;
  }
}
@keyframes aso-crt-flicker {
  0%  { opacity: 1; }
  7%  { opacity: 0.96; }
  10% { opacity: 1; }
  43% { opacity: 0.97; }
  44% { opacity: 0.88; }
  45% { opacity: 1; }
  77% { opacity: 0.94; }
  78% { opacity: 1; }
}
@keyframes aso-crt-scan {
  0%   { top: -80px; }
  100% { top: calc(100% + 80px); }
}
@keyframes aso-crt-vline {
  0%   { top: -4px; }
  100% { top: calc(100% + 4px); }
}
@keyframes aso-intro-flicker {
  0%, 80%, 100% {
    opacity: 1;
  }
  70%, 90% {
    opacity: 0.8;
  }
  71%, 72%, 91%, 92% {
    opacity: 0.4;
  }
  73%, 93% {
    opacity: 0.62;
  }
  74%, 94% {
    opacity: 0.5;
  }
  75%, 95% {
    opacity: 0.72;
  }
}
@keyframes aso-intro-distort {
  0%, 100% {
    transform: translate3d(0, 0, 0) scaleX(1);
    letter-spacing: 0.12em;
  }
  10% {
    transform: translate3d(-1px, 0, 0) scaleX(1.01);
    letter-spacing: calc(0.12em + 1px);
  }
  20% {
    transform: translate3d(1px, 0, 0) scaleX(0.99);
    letter-spacing: calc(0.12em - 1px);
  }
  30%, 50% {
    transform: translate3d(0, 0, 0) scaleX(1);
    letter-spacing: 0.12em;
  }
  40% {
    transform: translate3d(-2px, 0, 0) scaleX(0.985);
    letter-spacing: calc(0.12em - 2px);
  }
  70% {
    transform: translate3d(2px, 0, 0) scaleX(1.02);
    letter-spacing: calc(0.12em + 2px);
  }
  80% {
    transform: translate3d(-1px, 0, 0) scaleX(0.995);
    letter-spacing: calc(0.12em - 1px);
  }
  90% {
    transform: translate3d(1px, 0, 0) scaleX(1.01);
    letter-spacing: calc(0.12em + 1px);
  }
}
@keyframes aso-intro-rgb-shift {
  0%, 100% {
    text-shadow: -2px 0 #00ffff, 2px 0 #ff00ff;
    opacity: 0.82;
  }
  25% {
    text-shadow: -2px 0 #39ff14, 2px 0 #00ffff;
    opacity: 0.72;
  }
  50% {
    text-shadow: -2px 0 #ff0000, 2px 0 #ffff00;
    opacity: 0.9;
  }
  75% {
    text-shadow: -2px 0 #ffff00, 2px 0 #39ff14;
    opacity: 0.64;
  }
}
@keyframes aso-intro-rgb-shift-alt {
  0%, 100% {
    text-shadow: 2px 0 #ff00ff, -2px 0 #00ffff;
    opacity: 0.8;
  }
  25% {
    text-shadow: 2px 0 #00ffff, -2px 0 #39ff14;
    opacity: 0.7;
  }
  50% {
    text-shadow: 2px 0 #ffff00, -2px 0 #ff0000;
    opacity: 0.9;
  }
  75% {
    text-shadow: 2px 0 #39ff14, -2px 0 #ffff00;
    opacity: 0.62;
  }
}
@keyframes aso-crt-warmup-lines {
  0%, 100% {
    transform: translate3d(0, 0, 0) scaleX(1);
    opacity: 0.2;
    background-position: 0 0, 0 0;
  }
  18% {
    transform: translate3d(-2px, 1px, 0) scaleX(1.01);
    opacity: 0.3;
    background-position: 0 2px, 0 0;
  }
  42% {
    transform: translate3d(3px, -1px, 0) scaleX(0.995);
    opacity: 0.24;
    background-position: 0 -3px, 0 0;
  }
  67% {
    transform: translate3d(-1px, 2px, 0) scaleX(1.015);
    opacity: 0.34;
    background-position: 0 4px, 0 0;
  }
}
@keyframes aso-crt-warmup-noise {
  0%, 100% {
    transform: translate3d(0, 0, 0);
    opacity: 0.16;
    background-position: 0 0, 0 0;
  }
  20% {
    transform: translate3d(4px, 0, 0);
    opacity: 0.3;
    background-position: 0 -8px, 0 1px;
  }
  40% {
    transform: translate3d(-3px, 0, 0);
    opacity: 0.22;
    background-position: 0 6px, 0 -1px;
  }
  60% {
    transform: translate3d(2px, 0, 0);
    opacity: 0.34;
    background-position: 0 -4px, 0 2px;
  }
  80% {
    transform: translate3d(-5px, 0, 0);
    opacity: 0.2;
    background-position: 0 10px, 0 -2px;
  }
}
@keyframes aso-scan-static-a {
  0%, 100% {
    transform: translate3d(calc(var(--aso-scanline-zigzag) * -1), 0, 0);
  }
  40% {
    transform: translate3d(0, 0, 0);
  }
  70% {
    transform: translate3d(calc(var(--aso-scanline-zigzag) * -1.7), 0, 0);
  }
}
@keyframes aso-scan-static-b {
  0%, 100% {
    transform: translate3d(var(--aso-scanline-zigzag), 0, 0);
  }
  30% {
    transform: translate3d(calc(var(--aso-scanline-zigzag) * 1.6), 0, 0);
  }
  65% {
    transform: translate3d(0, 0, 0);
  }
}

/* Show placeholder text in Elementor editor only when JS hasn't typed yet */
body.elementor-editor-active .aso-crt-lines:empty::before {
  content: attr(data-placeholder);
  opacity: 0.4;
  font-style: normal;
}

/* Editor: disable sandwich JS side-effects so both title layers stay visible.
   --back (solid) is forced visible; --front (stroke) overlays it via inline style. */
body.elementor-editor-active .aso-title-wrap--back {
  visibility: visible !important;
}
/* Editor: suppress sandwich clone â€” it can't position correctly in editor DOM */
body.elementor-editor-active ~ .aso-sandwich-title,
.elementor-editor-active .aso-sandwich-title {
  display: none !important;
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   TERMINAL STYLE
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */

.aso-terminal .aso-content {
  justify-content: center;
}
.aso-tagline {
  color: var(--aso-hud);
  font-family: 'Courier New', Courier, monospace;
  letter-spacing: 0.08em;
  margin: 0;
  --aso-decode-color: currentColor;
  --aso-decode-glow-near: 4px;
  --aso-decode-glow-far: 10px;
  --ato-accent: currentColor;
}
.aso-tagline.aso-decoder-active {
  text-shadow: none !important;
}
.aso-terminal .aso-tagline {
  color: var(--aso-term);
}
.aso-crt-lines .ato-decoder-char--scrambling,
.aso-tagline .ato-decoder-char--scrambling {
  color: var(--aso-decoder-glow-color, var(--aso-decode-color, var(--ato-accent, currentColor))) !important;
  text-shadow:
    0 0 var(--aso-decode-glow-near, 4px) var(--aso-decoder-glow-color, var(--aso-decode-color, var(--ato-accent, currentColor))),
    0 0 var(--aso-decode-glow-far, 10px) var(--aso-decoder-glow-color, var(--aso-decode-color, var(--ato-accent, currentColor)));
}
.aso-terminal .aso-title-wrap {
  display: flex;
  align-items: baseline;
  gap: 4px;
}
.aso-terminal .aso-prompt {
  color: var(--aso-term);
  font-size: inherit;
  opacity: 0.8;
  flex-shrink: 0;
}
.aso-terminal .aso-cursor {
  color: var(--aso-term);
}


/* â”€â”€ Shared animations â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
@keyframes aso-blink {
  0%, 100% { opacity: 1; }
  50%       { opacity: 0; }
}
.aso-blink {
  animation: aso-blink 1s step-end infinite;
}

/* â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•
   SPACE OVERLAY â€” RESPONSIVE
   â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â•â• */

/* â”€â”€ Tablet (â‰¤1024px) â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
@media (max-width: 1024px) {
  /* Hide telemetry strips â€” too cramped on tablet */
  .aso-hud .aso-telem {
    display: none;
  }
  /* Scale HUD corners down */
  .aso-hud .aso-corner {
    width: 28px;
    height: 28px;
  }
  .aso-hud .aso-tl { top: 12px;    left: 12px; }
  .aso-hud .aso-tr { top: 12px;    right: 12px; }
  .aso-hud .aso-bl { bottom: 12px; left: 12px; }
  .aso-hud .aso-br { bottom: 12px; right: 12px; }
}

/* â”€â”€ Mobile (â‰¤736px) â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€â”€ */
@media (max-width: 736px) {
  /* Hide HUD chrome on mobile */
  .aso-hud .aso-corner,
  .aso-hud .aso-crosshair,
  .aso-hud .aso-telem {
    display: none;
  }
  /* Reduce CRT scanline animation intensity â€” battery/performance */
  .aso-crt-scanline,
  .aso-crt-vline {
    display: none;
  }
  .aso-crt-lines {
    animation: none;
    text-shadow: none;
  }
  .aso-crt-cursor {
    display: none !important;
    animation: none;
  }
}

/* ==========================================================================
   TEXT OVERLAY WIDGET (.ato-*)
   ========================================================================== */

.elementor-widget-aidem_text_overlay.ato-layout-overlay,
.elementor-widget-aidem_tagline_cta.ato-layout-overlay {
  position: absolute !important;
  inset: 0 !important;
  width: 100% !important;
  height: 100% !important;
  pointer-events: none;
}

.elementor-widget-aidem_text_overlay.ato-layout-overlay .elementor-widget-container,
.elementor-widget-aidem_text_overlay.ato-layout-overlay .ato-widget,
.elementor-widget-aidem_tagline_cta.ato-layout-overlay .elementor-widget-container,
.elementor-widget-aidem_tagline_cta.ato-layout-overlay .ato-widget {
  width: 100%;
  height: 100%;
}

.ato-widget {
  position: relative;
  width: 100%;
  --ato-accent: #00ff88;
}

.ato-stage {
  position: relative;
  width: 100%;
  min-height: inherit;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  justify-content: center;
}

.ato-positioner {
  position: relative;
  width: 100%;
  max-width: 100%;
  transform: translateY(var(--ato-offset-y, 0px));
}

.ato-content {
  position: relative;
  width: 100%;
  max-width: 100%;
  min-height: 1px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 20px;
  box-sizing: border-box;
  margin-inline: auto;
}

.ato-halign-left .ato-content {
  align-items: flex-start;
  margin-inline: 0 auto;
}

.ato-halign-center .ato-content {
  align-items: center;
  margin-inline: auto;
}

.ato-halign-right .ato-content {
  align-items: flex-end;
  margin-inline: auto 0;
}

.ato-layout-overlay .ato-stage,
.ato-layout-overlay .ato-positioner,
.ato-layout-overlay .ato-content {
  min-height: 100%;
  height: 100%;
}

.ato-text {
  display: block;
  width: 100%;
  margin: 0;
  color: inherit;
  --ato-lift-color: #05070d;
  --ato-lift-opacity: 0.7;
  white-space: normal;
  overflow-wrap: anywhere;
  transition: opacity 0.25s ease;
}

.ato-strapline {
  --ato-line-gap: 8px;
  line-height: inherit;
}

.ato-tagline {
  line-height: inherit;
}

.ato-line {
  display: block;
  width: 100%;
  line-height: inherit;
  white-space: pre-wrap;
}

.ato-strapline .ato-line:not(:last-child) {
  margin-bottom: var(--ato-line-gap, 8px);
}

.ato-crt-line {
  min-height: 1em;
}

.ato-crt-cursor {
  display: inline-block;
  width: 0.55em;
  height: 1em;
  margin-left: 3px;
  vertical-align: text-bottom;
  background: var(--ato-accent, currentColor);
  animation: ato-crt-blink 0.8s step-end infinite;
}

.ato-crt-cursor--done {
  display: none !important;
}

.ato-effect-crt {
  text-shadow: 0 0 2px currentColor, 0 0 8px var(--ato-accent, currentColor);
}

.ato-decoder-char--scrambling {
  color: var(--ato-accent, currentColor);
  text-shadow: 0 0 8px var(--ato-accent, currentColor);
}

.ato-line-reveal {
  overflow: hidden;
}

.ato-line-reveal__inner {
  display: inline-block;
  transform: translateY(105%);
  opacity: 0;
  filter: blur(4px);
  transition: transform 0.8s cubic-bezier(0.2, 0.8, 0.2, 1), opacity 0.8s ease, filter 0.8s ease;
}

.ato-line-reveal--visible .ato-line-reveal__inner {
  transform: translateY(0);
  opacity: 1;
  filter: blur(0);
}

.ato-effect-wordy_reveal {
  text-shadow:
    0 1px 0 rgba(0, 0, 0, 0.22),
    0 0 22px rgba(0, 0, 0, 0.16);
}

.ato-wordy-line {
  display: block;
  width: 100%;
}

.ato-wordy-word {
  display: inline-block;
  width: auto;
  max-width: 100%;
  margin: 0 0.22em 0.08em 0;
  opacity: 0;
  transform: translateY(0.9em) scale(0.96);
  filter:
    drop-shadow(0 10px 18px rgb(0 0 0 / calc(0.12 + (var(--ato-lift-opacity) * 0.22))))
    drop-shadow(0 0 calc(6px + (var(--ato-lift-opacity) * 12px)) var(--ato-lift-color));
  text-shadow:
    0 1px 0 rgb(0 0 0 / calc(0.12 + (var(--ato-lift-opacity) * 0.16))),
    0 0 calc(4px + (var(--ato-lift-opacity) * 8px)) var(--ato-lift-color),
    0 0 12px rgb(0 0 0 / calc(0.08 + (var(--ato-lift-opacity) * 0.14)));
  transition:
    opacity 0.42s ease,
    transform 0.62s cubic-bezier(0.22, 1, 0.36, 1),
    text-shadow 0.62s ease,
    filter 0.62s ease;
}

.ato-wordy-word:last-child {
  margin-right: 0;
}

  .ato-wordy-word--visible {
  opacity: 1;
  transform: translateY(0) scale(1);
  filter:
    drop-shadow(0 14px 24px rgb(0 0 0 / calc(0.16 + (var(--ato-lift-opacity) * 0.26))))
    drop-shadow(0 0 calc(8px + (var(--ato-lift-opacity) * 14px)) var(--ato-lift-color));
  text-shadow:
    0 1px 0 rgb(0 0 0 / calc(0.14 + (var(--ato-lift-opacity) * 0.18))),
    0 0 calc(6px + (var(--ato-lift-opacity) * 10px)) var(--ato-lift-color),
    0 0 16px rgb(0 0 0 / calc(0.1 + (var(--ato-lift-opacity) * 0.16)));
}

.ato-btn-wrap {
  display: flex;
  justify-content: center;
  pointer-events: auto;
}

.ato-btn {
  pointer-events: auto;
}

@keyframes ato-crt-blink {
  0%, 100% { opacity: 1; }
  50% { opacity: 0; }
}

@media (prefers-reduced-motion: reduce) {
  .ato-crt-cursor,
  .ato-line-reveal__inner,
  .ato-wordy-word,
  .ato-btn-wrap {
    animation: none !important;
    transition-duration: 0.01ms !important;
  }
}

/* ==========================================================================
   STROKE TITLE WIDGET (.ast-*)
   z:3 — above Space Overlay (z:2), below Parallax Objects (z:40)
   ========================================================================== */

/* Widget wrapper — position:absolute fills its owning stage. */
.elementor-widget-aidem_stroke_title,
.elementor-widget:has(.ast-widget) {
  position: absolute !important;
  inset: 0 !important;
  width: 100% !important;
  max-width: none !important;
  height: 100%;
  align-self: stretch;
  pointer-events: none;
  z-index: 3 !important;
}

.elementor-widget-aidem_stroke_title > .elementor-widget-container,
.elementor-widget:has(.ast-widget) > .elementor-widget-container {
  position: absolute !important;
  inset: 0 !important;
  width: 100%;
  height: 100%;
}

.gsap-pin-on:has(.ast-widget) {
  position: relative;
}

.gsap-pin-on > .elementor-widget-aidem_stroke_title,
.gsap-pin-on > .elementor-widget:has(.ast-widget) {
  position: absolute !important;
  inset: 0 !important;
}

.ast-widget {
  position: absolute;
  inset: 0;
  overflow: visible;
  pointer-events: none;
}

/* Content flex container — centres title by default */
.ast-stage {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
}

.ast-positioner {
  position: relative;
  display: flex;
  flex-direction: column;
  max-width: 100%;
  transform-origin: center top;
  transform:
    translateX(var(--ast-offset-x, 0px))
    translateY(calc(var(--ast-offset-y, 0px) + var(--ast-ios-y-correction, 0px)));
}

.ast-content {
  position: relative;
  max-width: 100%;
}

.ast-title-wrap {
  display: flex;
  align-items: center;
  justify-content: center;
  max-width: 100%;
}

.ast-title {
  margin: 0;
  line-height: 0.9;
}

/* Stroke mode: transparent fill so only the stroke outline is visible.
   Scoped to inside .ast-widget so sandwich clone (outside) keeps solid fill. */
.ast-widget .ast-title--stroke {
  -webkit-text-fill-color: transparent;
}

/* Sandwich title-group: both layers share grid cell 1/1 (pixel-perfect stack).
   JS also calls removeProperty on any position:absolute in Elementor-cached HTML. */
.ast-title-group {
  display: grid;
}

.ast-title-group > .ast-title-wrap--back,
.ast-title-group > .ast-title-wrap--front {
  grid-row: 1;
  grid-column: 1;
  display: flex;
  align-items: center;
  justify-content: center;
}

/* Editor: keep --back visible so user can see and position the title */
body.elementor-editor-active .ast-title-wrap--back {
  visibility: visible !important;
}

/* Align stroke-title mobile behaviour with the project breakpoint contract:
   mobile up to 767px, tablet from 768px upward. */
@media (max-width: 767px) {
  .ast-stage {
    padding-inline: 16px;
    box-sizing: border-box;
  }

  .ast-positioner,
  .ast-content,
  .ast-title-wrap,
  .ast-title-group > .ast-title-wrap--back,
  .ast-title-group > .ast-title-wrap--front,
  .ast-title {
    width: 100%;
  }

  .ast-title {
    text-align: center;
    overflow-wrap: anywhere;
  }
}

/* ── Entry effects ───────────────────────────────────────────────────────── */
/* Handled entirely in JS via inline style + CSS transition.
   Initial state (opacity/filter/transform) set by JS INITIAL map.
   Trigger state set by JS FINAL map with transition applied first.           */

/* ── Parallax Objects widget (apo) ───────────────────────────────────────── */
.apo-widget {
  position: absolute;
  inset: 0;
  pointer-events: none;
  overflow: visible;
}

.apo-stage {
  position: relative;
  width: 100%;
  height: 100%;
  overflow: visible;
}

/* roiheads pattern: will-change only — no backface-visibility, no transform-style */
.apo-object {
  position: absolute;
  transform-origin: center center;
  will-change: transform;
  transition: none !important;
}

.apo-object-inner {
  width: 100%;
  will-change: transform;
}

.apo-object-inner img {
  width: 100%;
  height: auto;
  display: block;
  pointer-events: none;
  -webkit-user-drag: none;
  user-select: none;
}

.elementor-widget-aidem_parallax_objects {
  position: absolute !important;
  inset: 0 !important;
  width: 100% !important;
  height: 100% !important;
  pointer-events: none;
  z-index: 40 !important;
  overflow: visible !important;
}

/* ── Object Overlay Linker / Edged Cards ────────────────────────────────── */
.gsap-pin-on,
.gsap-pin-on > .e-con-inner,
.gsap-pin-on > .elementor-container,
.e-con:has(.gsap-pin-on),
.elementor-section:has(.gsap-pin-on),
.e-con:has(.aool-widget),
.e-con:has(.aool-widget) > .e-con-inner,
.elementor-section:has(.aool-widget),
.elementor-section:has(.aool-widget) > .elementor-container {
  transition: none !important;
}

.elementor-widget-aidem_object_overlay_linker,
.elementor-widget-aidem_edged_cards {
  position: relative;
  width: 100%;
  max-width: none;
  height: 100%;
  overflow: visible;
}

.elementor-widget-aidem_object_overlay_linker > .elementor-widget-container,
.elementor-widget-aidem_edged_cards > .elementor-widget-container {
  width: 100%;
  height: 100%;
}

.aool-widget,
.aro-widget,
.aec-widget {
  position: relative;
  width: 100%;
  height: 100%;
  overflow: visible;
}

/* ── Object Overlay Linker ──────────────────────────────────────────────── */
.aool-widget {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  isolation: isolate;
  pointer-events: none;
  transition: none !important;
  --aool-reveal-progress: 0;
  --aool-transition-progress: 0;
}

.aool-scene {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  transition: none !important;
}

.aool-scene {
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 1;
  transform: translate3d(0, 0, 0);
  will-change: transform, opacity, filter, clip-path;
}

.aool-object-slot {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  padding: 0 2vw;
  z-index: 1;
}

.aool-object-shell {
  position: relative;
  max-width: 100%;
  transform: translate3d(0, 0, 0);
  will-change: transform, filter;
}

.aool-object-shell--fixed-stage {
  aspect-ratio: var(--aool-aspect-ratio, auto);
}

.aool-object-shell--shadow .aool-object--base img {
  filter: drop-shadow(-10px 18px 28px rgba(0, 0, 0, 0.42));
}

.aool-object,
.aool-reveal-fx,
.aool-transition {
  position: absolute;
  inset: 0;
}

.aool-object--base {
  position: relative;
  z-index: 1;
}

.aool-object--overlay {
  z-index: 2;
  opacity: 0;
  transform: translate3d(0, 0, 0) scale(1);
  will-change: transform, opacity, filter, clip-path;
  mix-blend-mode: normal;
}

.aool-overlay-layer {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 100%;
  pointer-events: none;
}

 .aool-overlay-layer--image {
   position: relative;
   z-index: 2;
 }

.aool-overlay-layer--lottie {
  z-index: 3;
}

.aool-overlay-layer__lottie-viewport {
  width: var(--aool-lottie-width-desktop, var(--aool-object-width-desktop, 42%));
  max-width: 100%;
  max-height: 100%;
  height: auto;
  aspect-ratio: var(--aool-lottie-aspect-ratio, auto);
  position: relative;
  flex: 0 0 auto;
  overflow: visible;
  transform: translateY(var(--aool-lottie-offset-y, var(--aool-lottie-offset-y-desktop, 0px)));
  will-change: transform;
}

.aool-object-shell--fixed-stage .aool-overlay-layer--image {
  position: absolute;
}

.aool-overlay-layer--template > *,
.aool-overlay-layer__lottie-viewport > svg,
.aool-overlay-layer__lottie-viewport > canvas {
  width: 100%;
  height: 100%;
}

.aool-overlay-layer--template > .elementor {
  width: 100%;
}

.aool-overlay-layer__lottie-viewport svg,
.aool-overlay-layer__lottie-viewport canvas {
  display: block;
  max-width: 100%;
  max-height: 100%;
}

.aool-object__img {
  display: block;
  width: 100%;
  height: auto;
  pointer-events: none;
  -webkit-user-drag: none;
  user-select: none;
}

.aool-object-shell--fixed-stage .aool-object,
.aool-object-shell--fixed-stage .aool-reveal-fx,
.aool-object-shell--fixed-stage .aool-transition {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}

.aool-object-shell--fixed-stage .aool-object--base,
.aool-object-shell--fixed-stage .aool-object--overlay {
  position: absolute;
  inset: 0;
}

.aool-object-shell--fixed-stage .aool-object__img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  object-position: center center;
}

.aool-object__img--base {
  transform: translate(var(--aool-base-shift-x, 0px), var(--aool-base-shift-y, 0px));
  will-change: transform;
}

.aool-object__img--overlay {
  transform: translate(var(--aool-overlay-shift-x, 0px), var(--aool-overlay-shift-y, 0px));
  will-change: transform;
}

.elementor-editor-active .aool-widget[data-aool-editor-preview="1"] .aool-object--overlay {
  opacity: 0.62;
  clip-path: none !important;
  filter: none !important;
  transform: translate3d(0, 0, 0) scale(1) !important;
}

.elementor-editor-active .aool-widget[data-aool-editor-preview="1"] .aool-transition,
.elementor-editor-active .aool-widget[data-aool-editor-preview="1"] .aool-reveal-fx {
  opacity: 0;
}

.aool-reveal-fx {
  z-index: 3;
  pointer-events: none;
  mix-blend-mode: screen;
}

.aool-reveal-sheen,
.aool-reveal-scan,
.aool-reveal-noise,
.aool-reveal-ring,
.aool-transition-bar,
.aool-transition-arc,
.aool-transition-drip {
  position: absolute;
  pointer-events: none;
}

.aool-reveal-sheen {
  inset: 10% -6%;
  opacity: 0;
  background:
    radial-gradient(circle at var(--aool-focus-x, 50%) var(--aool-focus-y, 50%),
      color-mix(in srgb, white 76%, transparent) 0%,
      color-mix(in srgb, var(--aool-accent-2, #FFB50D) 36%, transparent) 12%,
      transparent 42%);
  filter: blur(28px);
  transform: scale(0.72);
}

.aool-reveal-scan {
  inset: 0 auto 0 0;
  width: 18%;
  opacity: 0;
  background: linear-gradient(
    90deg,
    transparent 0%,
    color-mix(in srgb, var(--aool-accent-1, #8C5FF5) 72%, white 8%) 48%,
    transparent 100%
  );
  filter: blur(14px);
  transform: translateX(-30%);
}

.aool-reveal-noise {
  inset: -6%;
  opacity: 0;
  background:
    linear-gradient(135deg, transparent 0 44%, rgba(255, 255, 255, 0.38) 48%, transparent 52% 100%),
    repeating-linear-gradient(
      90deg,
      transparent 0 8px,
      color-mix(in srgb, var(--aool-accent-1, #8C5FF5) 28%, transparent) 8px 10px,
      transparent 10px 24px
    );
  filter: blur(1px);
  mix-blend-mode: screen;
}

.aool-reveal-ring {
  display: none !important;
  inset: 50% auto auto 50%;
  border-radius: 50%;
  border: 1px solid color-mix(in srgb, var(--aool-accent-1, #8C5FF5) 68%, white 10%);
  opacity: 0;
  transform: translate(-50%, -50%) scale(0.6);
}

.aool-reveal-ring--1 {
  width: min(22vw, 22vh);
  height: min(22vw, 22vh);
}

.aool-reveal-ring--2 {
  width: min(34vw, 34vh);
  height: min(34vw, 34vh);
  border-color: color-mix(in srgb, var(--aool-accent-2, #FFB50D) 62%, white 12%);
}

.aool-transition {
  z-index: 5;
  opacity: 0;
  pointer-events: none;
  transform: translate3d(0, 0, 0);
  will-change: opacity, transform;
}

.aool-transition-bar {
  left: -8%;
  right: -8%;
  height: 10%;
  opacity: 0;
  background: linear-gradient(
    90deg,
    transparent 0%,
    color-mix(in srgb, var(--aool-accent-1, #8C5FF5) 78%, transparent) 24%,
    color-mix(in srgb, white 80%, transparent) 50%,
    color-mix(in srgb, var(--aool-accent-2, #FFB50D) 72%, transparent) 76%,
    transparent 100%
  );
  mix-blend-mode: screen;
  filter: blur(10px);
}

.aool-transition-bar--1 { top: 8%; }
.aool-transition-bar--2 { top: 30%; }
.aool-transition-bar--3 { top: 56%; }
.aool-transition-bar--4 { top: 78%; }

.aool-transition-arc {
  inset: 50% auto auto 50%;
  width: min(42vw, 42vh);
  height: 2px;
  opacity: 0;
  transform-origin: left center;
  background: linear-gradient(
    90deg,
    color-mix(in srgb, var(--aool-accent-2, #FFB50D) 86%, white 10%) 0%,
    color-mix(in srgb, var(--aool-accent-1, #8C5FF5) 88%, transparent) 72%,
    transparent 100%
  );
  filter: drop-shadow(0 0 8px color-mix(in srgb, var(--aool-accent-1, #8C5FF5) 64%, transparent));
}

.aool-transition-arc--1 { transform: translate(0, -50%) rotate(18deg) scaleX(0); }
.aool-transition-arc--2 { transform: translate(0, -50%) rotate(126deg) scaleX(0); }
.aool-transition-arc--3 { transform: translate(0, -50%) rotate(244deg) scaleX(0); }

.aool-transition-drip {
  bottom: -4%;
  width: 10%;
  border-radius: 999px 999px 28px 28px;
  opacity: 0;
  background: linear-gradient(
    180deg,
    color-mix(in srgb, white 58%, transparent) 0%,
    color-mix(in srgb, var(--aool-accent-1, #8C5FF5) 42%, transparent) 18%,
    color-mix(in srgb, var(--aool-accent-2, #FFB50D) 84%, transparent) 100%
  );
  filter: blur(10px);
}

.aool-transition-drip--1 { left: 18%; height: 30%; }
.aool-transition-drip--2 { left: 44%; height: 42%; }
.aool-transition-drip--3 { left: 70%; height: 36%; }

.aool-widget--reveal-liquid_glass .aool-object--overlay {
  clip-path: circle(0% at var(--aool-focus-x, 50%) var(--aool-focus-y, 50%));
}

.aool-widget--reveal-liquid_glass .aool-reveal-sheen,
.aool-widget--reveal-prism_iris .aool-reveal-sheen,
.aool-widget--reveal-prism_iris .aool-reveal-ring {
  opacity: calc(var(--aool-reveal-progress) * 0.95);
}

.aool-widget--reveal-blurry_focus .aool-reveal-sheen,
.aool-widget--reveal-blurry_focus .aool-reveal-ring {
  opacity: calc(var(--aool-reveal-progress) * 0.55);
}

.aool-widget--reveal-ink_aberration .aool-reveal-noise,
.aool-widget--reveal-chromatic_scan .aool-reveal-scan {
  opacity: calc(var(--aool-reveal-progress) * 0.95);
}

.aool-widget--transition-glitch .aool-transition-bar {
  opacity: calc(var(--aool-transition-progress) * 0.9);
}

.aool-widget--transition-electronic .aool-transition-arc {
  opacity: calc(var(--aool-transition-progress) * 1);
}

.aool-widget--transition-glass_dissolve .aool-transition-drip {
  opacity: calc(var(--aool-transition-progress) * 0.92);
}

@media (max-width: 768px) {
  .aool-object-slot {
    padding: 0 4vw;
  }
  .aool-transition-arc {
    width: min(54vw, 54vh);
  }
}

.aro-scene {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 100%;
  perspective-origin: 50% 50%;
}

.aro-card-slot {
  display: flex;
  width: 100%;
  height: 100%;
  min-width: 0;
  justify-content: center;
  align-items: center;
}

/* Scroll animation target — wraps .aro-card so drag and scroll don't conflict */
.aro-card-outer {
  display: flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  max-width: 100%;
  transform-style: preserve-3d;
  will-change: transform;
  cursor: grab;
}
.aro-card-outer.aro-dragging {
  cursor: grabbing;
}

.aro-card {
  position: relative;
  width: 100%;
  max-width: 100%;
  transform-style: preserve-3d;
  will-change: transform;
  border-radius: 6px;
  background: transparent;
}

.aro-depth {
  position: absolute;
  inset: 0;
  border-radius: inherit;
  pointer-events: none;
}

.aro-face {
  position: relative;
  z-index: 1;
  transform: translateZ(0);
}

.aro-face img {
  width: 100%;
  height: auto;
  display: block;
  pointer-events: none;
  -webkit-user-drag: none;
  user-select: none;
}

.aro-face--shadow img {
  filter: drop-shadow(-6px 6px 10px rgba(0, 0, 0, 0.55));
}

/* Scene cards — glassmorphic portrait cards, positioned absolute within aro-widget */
.aro-scene-card {
  position: absolute;
  pointer-events: none;
  will-change: transform;
  z-index: 5;
  transform-style: preserve-3d;
}

.aro-scene-card.aec-entry-metallic-dissolve,
.aro-scene-card.aec-entry-glass-melt {
  will-change: transform, opacity, filter, clip-path;
}

.aro-scene-card.aec-entry-metallic-dissolve::before,
.aro-scene-card.aec-entry-glass-melt::before {
  content: "";
  position: absolute;
  inset: -8px;
  z-index: 12;
  pointer-events: none;
  opacity: 0.42;
  mix-blend-mode: screen;
  border-radius: inherit;
}

.aro-scene-card.aec-entry-metallic-dissolve::before {
  background:
    repeating-linear-gradient(
      104deg,
      rgba(255, 255, 255, 0) 0 7px,
      rgba(255, 255, 255, 0.5) 7px 9px,
      rgba(60, 66, 78, 0.18) 9px 15px
    );
  filter: contrast(1.45);
}

.aro-scene-card.aec-entry-glass-melt::before {
  background:
    radial-gradient(ellipse at 24% 34%, rgba(255, 255, 255, 0.42), transparent 34%),
    radial-gradient(ellipse at 72% 66%, rgba(146, 214, 255, 0.22), transparent 38%),
    linear-gradient(120deg, rgba(255, 255, 255, 0.16), transparent 58%);
  filter: blur(4px) saturate(1.25);
}

/* .aro-gcard is the visible glassmorphic card.
   Width/height/bg/blur/border-radius are set per-widget via inline <style>. */
.aro-gcard {
  position: relative;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  box-shadow:
    0 8px 32px rgba(0, 0, 0, 0.35),
    inset 0 1px 0 rgba(255, 255, 255, 0.18),
    inset 0 -1px 0 rgba(0, 0, 0, 0.15);
  will-change: transform;
}

/* Top gloss streak — the highlight that makes glass believable */
.aro-gcard__gloss {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 40%;
  background: linear-gradient(
    180deg,
    rgba(255, 255, 255, 0.14) 0%,
    rgba(255, 255, 255, 0.04) 60%,
    rgba(255, 255, 255, 0.00) 100%
  );
  pointer-events: none;
  z-index: 10;
}

.aro-gcard__img {
  flex: 1;
  overflow: hidden;
  position: relative;
}

.aro-gcard__img img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center top;
  display: block;
  pointer-events: none;
  -webkit-user-drag: none;
  user-select: none;
}

/* Engraved title — light top edge, dark bottom edge, low-opacity fill */
.aro-gcard__title {
  padding: 8px 10px 10px;
  text-align: center;
  text-transform: uppercase;
  font-weight: 600;
  color: rgba(255, 255, 255, 0.18);
  text-shadow:
    0  1px 1px rgba(255, 255, 255, 0.40),
    0 -1px 1px rgba(0, 0, 0, 0.70);
  line-height: 1.4;
  flex-shrink: 0;
  position: relative;
  z-index: 2;
}

.aro-gcard__detail {
  padding: 0 10px 10px;
  margin-top: -4px;
  text-align: center;
  font-weight: 500;
  color: rgba(255, 255, 255, 0.34);
  text-shadow:
    0 1px 1px rgba(255, 255, 255, 0.22),
    0 -1px 1px rgba(0, 0, 0, 0.55);
  line-height: 1.35;
  flex-shrink: 0;
  position: relative;
  z-index: 2;
  overflow-wrap: anywhere;
}

/* ==========================================================================
   NEWS POSTS MONOCHROME WIDGET (.anpm-*)
   ========================================================================== */
.anpm-wrap {
  --anpm-wrap-width: 100%;
  --anpm-card-width: 280px;
  --anpm-card-height: auto;
  --anpm-image-ratio: 4 / 5;
  --anpm-stage-height: 460px;
  --anpm-card-bg: #111111;
  --anpm-card-border: rgba(255, 255, 255, 0.08);
  --anpm-edge-tint: #8c5ff5;
  --anpm-nav-color: rgba(255, 255, 255, 0.52);
  --anpm-nav-active: #ffffff;
  --anpm-signal-color: #ceff25;
  --anpm-signal-color-soft: rgba(206, 255, 37, 0.18);
  --anpm-signal-line-top: 42%;
  --anpm-meter-text-color: color-mix(in srgb, var(--anpm-signal-color) 88%, white);
  --anpm-meter-border-color: color-mix(in srgb, var(--anpm-signal-color) 70%, rgba(255, 255, 255, 0.08));
  --anpm-meter-bg: rgba(12, 16, 14, 0.9);
  --anpm-meter-glow-color: color-mix(in srgb, var(--anpm-signal-color) 24%, transparent);
  --anpm-incoming-meter-gap: 18px;
  --anpm-top-meter-offset-x: 0px;
  --anpm-top-meter-offset-y: 20px;
  --anpm-incoming-meter-offset-x: 0px;
  --anpm-incoming-meter-offset-y: 0px;
  --anpm-archive-cta-offset-x: 0px;
  --anpm-archive-cta-offset-y: 0px;
  --anpm-track-padding-inline: clamp(56px, 6vw, 88px);
  --anpm-body-padding-inline: 18px;
  --anpm-body-padding-block-start: 18px;
  --anpm-body-padding-block-end: 20px;
  --anpm-terms-gap: 20px;
  --anpm-footer-gap: 25px;
  --anpm-dots-margin-top: 34px;
  --anpm-archive-cta-margin-top: 26px;
  position: relative;
  width: min(100%, var(--anpm-wrap-width));
  max-width: 100%;
  margin-inline: auto;
  color: #ffffff;
  outline: none;
}

@property --anpm-border-angle-1 {
  syntax: "<angle>";
  inherits: true;
  initial-value: 0deg;
}

.anpm-stage {
  position: relative;
  min-height: var(--anpm-stage-height);
  perspective: 1200px;
  perspective-origin: 50% 45%;
  isolation: isolate;
  overflow: visible;
  touch-action: pan-y;
  -webkit-user-select: none;
  user-select: none;
}

.anpm-hud {
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
}

.anpm-hud__signal {
  position: absolute;
  left: clamp(18px, 2vw, 30px);
  right: clamp(18px, 2vw, 30px);
  top: var(--anpm-signal-line-top);
  height: 2px;
  transform: translateY(-50%);
}

.anpm-hud__signal-line,
.anpm-hud__signal-glow {
  position: absolute;
  inset: 0;
  border-radius: 999px;
}

.anpm-hud__signal-line {
  background:
    linear-gradient(
      90deg,
      transparent 0,
      color-mix(in srgb, var(--anpm-signal-color) 20%, transparent) 6%,
      color-mix(in srgb, var(--anpm-signal-color) 82%, white) 30%,
      color-mix(in srgb, var(--anpm-signal-color) 86%, white) 50%,
      color-mix(in srgb, var(--anpm-signal-color) 78%, white) 70%,
      color-mix(in srgb, var(--anpm-signal-color) 16%, transparent) 94%,
      transparent 100%
    );
  box-shadow:
    0 0 0 1px color-mix(in srgb, var(--anpm-signal-color) 12%, transparent),
    0 0 16px color-mix(in srgb, var(--anpm-signal-color) 28%, transparent),
    0 0 30px color-mix(in srgb, var(--anpm-signal-color) 12%, transparent);
  opacity: 0.88;
  animation: anpm-signal-flicker 4.8s steps(2, end) infinite;
}

.anpm-hud__signal-glow {
  inset: -12px 0;
  background:
    linear-gradient(
      90deg,
      transparent 0,
      color-mix(in srgb, var(--anpm-signal-color) 12%, transparent) 16%,
      color-mix(in srgb, var(--anpm-signal-color) 26%, transparent) 50%,
      color-mix(in srgb, var(--anpm-signal-color) 12%, transparent) 84%,
      transparent 100%
    );
  filter: blur(12px);
  opacity: 0.65;
  animation: anpm-signal-pulse 5.2s ease-in-out infinite;
}

.anpm-gesture-hint {
  position: absolute;
  top: var(--anpm-top-meter-offset-y);
  left: 50%;
  z-index: 34;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.2em;
  min-width: max-content;
  padding: 0.74rem 1rem 0.7rem;
  border: 1px solid var(--anpm-meter-border-color);
  border-radius: 0;
  background:
    linear-gradient(180deg, var(--anpm-meter-bg), color-mix(in srgb, var(--anpm-meter-bg) 78%, rgba(8, 10, 12, 1))),
    linear-gradient(180deg, rgba(255, 255, 255, 0.03), rgba(255, 255, 255, 0));
  box-shadow:
    0 0 0 1px color-mix(in srgb, var(--anpm-meter-border-color) 24%, transparent),
    0 14px 34px rgba(0, 0, 0, 0.24),
    inset 0 0 0 1px rgba(255, 255, 255, 0.02);
  color: var(--anpm-meter-text-color);
  font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace;
  font-size: clamp(11px, 0.86vw, 13px);
  font-weight: 600;
  line-height: 1;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  white-space: nowrap;
  transform: translate(calc(-50% + var(--anpm-top-meter-offset-x)), 0);
  pointer-events: none;
  text-shadow: 0 0 8px var(--anpm-meter-glow-color);
  -webkit-backdrop-filter: blur(8px) saturate(110%);
  backdrop-filter: blur(8px) saturate(110%);
}

.anpm-gesture-hint__label {
  display: inline-block;
}

.anpm-track {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 24px;
  min-height: var(--anpm-stage-height);
  padding: 18px var(--anpm-track-padding-inline);
  overflow-x: auto;
  scrollbar-width: none;
  position: relative;
  z-index: 3;
}

.anpm-track::-webkit-scrollbar {
  display: none;
}

.anpm-wrap--ready .anpm-track {
  display: block;
  overflow: visible;
  padding: 0;
}

.anpm-card {
  --anpm-border-angle-1: 0deg;
  position: relative;
  flex: 0 0 var(--anpm-card-width);
  width: var(--anpm-card-width);
  height: var(--anpm-card-height);
  min-width: 0;
  display: flex;
  flex-direction: column;
  border-radius: 16px;
  overflow: hidden;
  background: var(--anpm-card-bg);
  border: 1px solid var(--anpm-card-border);
  box-shadow: 0 30px 60px rgba(0, 0, 0, 0.48);
  will-change: transform, filter, opacity;
  cursor: pointer;
  transition:
    box-shadow 0.3s ease,
    border-color 0.3s ease,
    opacity 0.3s ease;
}

.anpm-wrap--ready .anpm-card {
  cursor: grab;
}

.anpm-stage--dragging .anpm-card,
.anpm-stage--dragging .anpm-card a {
  cursor: grabbing;
}

.anpm-card.is-focus {
  border-color: var(--anpm-edge-tint);
  box-shadow:
    0 30px 60px rgba(0, 0, 0, 0.48),
    0 0 0 1px var(--anpm-edge-tint),
    0 0 18px var(--anpm-edge-tint);
  animation: anpm-border-pulse 7.5s ease-in-out infinite;
}

.anpm-card::after {
  content: "";
  position: absolute;
  inset: auto 18px 0;
  height: 1px;
  background: linear-gradient(90deg, transparent 0, var(--anpm-edge-tint) 14%, var(--anpm-edge-tint) 86%, transparent 100%);
  opacity: 0.9;
  pointer-events: none;
}

.anpm-wrap--ready .anpm-card {
  position: absolute;
  top: 50%;
  left: 50%;
}

.anpm-card.is-slot-left-2,
.anpm-card.is-slot-right-2 {
  box-shadow:
    0 24px 50px rgba(0, 0, 0, 0.42),
    0 0 0 1px color-mix(in srgb, var(--anpm-signal-color) 8%, transparent),
    0 0 16px color-mix(in srgb, var(--anpm-signal-color) 10%, transparent);
}

.anpm-card.is-slot-left-1 {
  box-shadow:
    0 28px 56px rgba(0, 0, 0, 0.44),
    0 0 0 1px color-mix(in srgb, var(--anpm-signal-color) 14%, transparent),
    0 0 20px color-mix(in srgb, var(--anpm-signal-color) 16%, transparent);
}

.anpm-card.is-slot-right-1 {
  box-shadow:
    0 28px 56px rgba(0, 0, 0, 0.44),
    0 0 0 1px color-mix(in srgb, var(--anpm-signal-color) 10%, transparent),
    0 0 14px color-mix(in srgb, var(--anpm-signal-color) 10%, transparent);
}

.anpm-card.is-slot-hidden-left,
.anpm-card.is-slot-hidden-right {
  box-shadow:
    0 20px 40px rgba(0, 0, 0, 0.3),
    0 0 0 1px color-mix(in srgb, var(--anpm-signal-color) 6%, transparent);
}

@keyframes anpm-rotate-border-1 {
  to { --anpm-border-angle-1: 360deg; }
}

@keyframes anpm-signal-flicker {
  0%, 100% { opacity: 0.8; }
  18% { opacity: 0.92; }
  19% { opacity: 0.62; }
  21% { opacity: 0.9; }
  52% { opacity: 0.88; }
  53% { opacity: 0.7; }
  56% { opacity: 0.9; }
}

@keyframes anpm-signal-pulse {
  0%, 100% { opacity: 0.48; transform: scaleX(0.98); }
  50% { opacity: 0.82; transform: scaleX(1.02); }
}

@keyframes anpm-border-pulse {
  0%, 100% {
    opacity: 0.9;
    box-shadow:
      0 30px 60px rgba(0, 0, 0, 0.48),
      0 0 0 1px var(--anpm-edge-tint),
      0 0 16px var(--anpm-edge-tint);
  }
  50% {
    opacity: 1;
    box-shadow:
      0 30px 60px rgba(0, 0, 0, 0.48),
      0 0 0 1px var(--anpm-edge-tint),
      0 0 22px var(--anpm-edge-tint);
  }
}

@supports ((background: conic-gradient(from 0deg, red, blue)) and ((-webkit-mask-composite: xor) or (mask-composite: exclude))) {
  .anpm-card.is-focus::before {
    content: "";
    position: absolute;
    inset: 0;
    border-radius: inherit;
    padding: 1px;
    background-image:
      conic-gradient(
        from var(--anpm-border-angle-1),
        transparent,
        transparent 78%,
        var(--anpm-edge-tint) 86%,
        var(--anpm-edge-tint) 91%,
        transparent 95%,
        transparent
      );
    -webkit-mask:
      linear-gradient(#fff 0 0) content-box,
      linear-gradient(#fff 0 0);
    -webkit-mask-composite: xor;
    mask-composite: exclude;
    pointer-events: none;
    opacity: 0.82;
    animation:
      anpm-rotate-border-1 18s linear infinite,
      anpm-border-pulse 8.5s ease-in-out infinite;
  }
}

.anpm-card__image-link {
  display: block;
  width: 100%;
  aspect-ratio: var(--anpm-image-ratio);
  overflow: hidden;
}

.anpm-card__image,
.anpm-card__placeholder {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  background: var(--anpm-card-bg);
  -webkit-user-drag: none;
  user-select: none;
}

.anpm-card__placeholder {
  background:
    radial-gradient(circle at 18% 18%, rgba(255, 255, 255, 0.12), transparent 34%),
    linear-gradient(135deg, rgba(255, 255, 255, 0.08), rgba(255, 255, 255, 0.02));
}

.anpm-card:focus-visible {
  outline: 2px solid rgba(255, 255, 255, 0.72);
  outline-offset: 4px;
}

.anpm-card__body {
  display: flex;
  flex: 1 1 auto;
  flex-direction: column;
  padding: var(--anpm-body-padding-block-start) var(--anpm-body-padding-inline) var(--anpm-body-padding-block-end);
}

.anpm-card__terms {
  margin: 0;
  text-transform: uppercase;
  letter-spacing: 0.18em;
  margin-bottom: var(--anpm-terms-gap);
}

.anpm-card__title {
  margin: 0;
}

.anpm-card__title a {
  color: inherit;
  text-decoration: none;
  transition: color 0.25s ease;
}

.anpm-card__title a:hover,
.anpm-card__title a:focus {
  color: inherit;
  text-decoration: none;
}

.anpm-card__footer {
  display: flex;
  align-items: flex-start;
  margin-top: auto;
  padding-top: var(--anpm-footer-gap);
}

.anpm-card__date {
  margin: 0;
}

.anpm-archive-cta {
  display: flex;
  justify-content: center;
  margin-top: var(--anpm-archive-cta-margin-top);
  position: relative;
  left: 50%;
  width: max-content;
  max-width: calc(100% - 24px);
  transform: translate(
    calc(-50% + var(--anpm-archive-cta-offset-x)),
    var(--anpm-archive-cta-offset-y)
  );
}

.anpm-incoming-meter {
  display: inline-flex;
  box-sizing: border-box;
  align-items: center;
  justify-content: center;
  gap: 0.28em;
  width: max-content;
  max-width: calc(100% - 24px);
  margin-top: var(--anpm-incoming-meter-gap);
  margin-left: 50%;
  padding: 0.74rem 1rem 0.7rem;
  border: 1px solid var(--anpm-meter-border-color);
  border-radius: 0;
  background:
    linear-gradient(180deg, var(--anpm-meter-bg), color-mix(in srgb, var(--anpm-meter-bg) 78%, rgba(8, 10, 12, 1))),
    linear-gradient(180deg, rgba(255, 255, 255, 0.03), rgba(255, 255, 255, 0));
  box-shadow:
    0 0 0 1px color-mix(in srgb, var(--anpm-meter-border-color) 24%, transparent),
    0 14px 34px rgba(0, 0, 0, 0.22),
    inset 0 0 0 1px rgba(255, 255, 255, 0.02);
  color: var(--anpm-meter-text-color);
  font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace;
  font-size: clamp(11px, 0.86vw, 13px);
  font-weight: 600;
  line-height: 1;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  white-space: nowrap;
  text-shadow: 0 0 8px var(--anpm-meter-glow-color);
  -webkit-backdrop-filter: blur(8px) saturate(110%);
  backdrop-filter: blur(8px) saturate(110%);
  position: relative;
  transform: translate(
    calc(-50% + var(--anpm-incoming-meter-offset-x)),
    var(--anpm-incoming-meter-offset-y)
  );
}

.anpm-incoming-meter__prefix,
.anpm-incoming-meter__value-wrap {
  display: inline-block;
}

.anpm-incoming-meter__prefix {
  padding-inline-start: 0.28rem;
}

.anpm-incoming-meter__value-wrap {
  position: relative;
  display: inline-grid;
  align-items: center;
  flex: 0 0 auto;
}

.anpm-incoming-meter__measure,
.anpm-incoming-meter__value-layer {
  grid-area: 1 / 1;
  white-space: nowrap;
}

.anpm-incoming-meter__measure {
  visibility: hidden;
}

.anpm-incoming-meter__cursor {
  display: inline-block;
  width: 0.5em;
  min-width: 0.5em;
  height: 1em;
  background: currentColor;
  vertical-align: text-bottom;
  animation: aso-crt-blink 0.8s step-end infinite;
}

.anpm-archive-cta .elementor-button-wrapper {
  display: flex;
  justify-content: center;
}

.anpm-archive-cta .elementor-button {
  width: auto;
}

.anpm-dots {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  flex-wrap: wrap;
  margin-top: var(--anpm-dots-margin-top);
}

.anpm-dot {
  appearance: none;
  border: 0;
  padding: 0;
  cursor: pointer;
  transition: color 0.3s ease, opacity 0.3s ease, transform 0.3s ease, background-color 0.3s ease;
}

.anpm-dot {
  width: 8px;
  height: 8px;
  border-radius: 999px;
  background: color-mix(in srgb, var(--anpm-nav-color) 76%, transparent);
  box-shadow: inset 0 1px 0 color-mix(in srgb, var(--anpm-nav-color) 22%, white);
}

.anpm-dot.is-active {
  background: var(--anpm-nav-active);
  transform: scale(1.5);
  box-shadow:
    0 0 0 5px color-mix(in srgb, var(--anpm-nav-active) 16%, transparent),
    0 0 16px color-mix(in srgb, var(--anpm-nav-active) 44%, transparent);
}

.anpm-dot:focus-visible {
  outline: 2px solid rgba(255, 255, 255, 0.72);
  outline-offset: 4px;
}
.anpm-wrap--static .anpm-dots,
.anpm-wrap--static .anpm-gesture-hint {
  display: none;
}

.anpm-empty {
  margin: 0;
  padding: 24px;
  border-radius: 16px;
  background: var(--anpm-card-bg);
  color: #ffffff;
}

@media (max-width: 1280px) {
  .anpm-wrap {
    --anpm-track-padding-inline: clamp(40px, 4.8vw, 68px);
    --anpm-dots-margin-top: 30px;
    --anpm-archive-cta-margin-top: 24px;
  }

  .anpm-stage {
    perspective: 1080px;
  }
}

@media (max-width: 1024px) {
  .anpm-wrap {
    --anpm-track-padding-inline: clamp(28px, 4vw, 52px);
    --anpm-body-padding-inline: 17px;
    --anpm-body-padding-block-start: 17px;
    --anpm-body-padding-block-end: 18px;
    --anpm-terms-gap: 18px;
    --anpm-footer-gap: 22px;
    --anpm-dots-margin-top: 26px;
    --anpm-archive-cta-margin-top: 22px;
    --anpm-signal-line-top: 40%;
  }

  .anpm-stage {
    perspective: 980px;
    perspective-origin: 50% 46%;
  }

  .anpm-gesture-hint {
    padding-inline: 0.8rem;
    letter-spacing: 0.14em;
  }

  .anpm-incoming-meter {
    letter-spacing: 0.13em;
  }

  .anpm-card__title {
    text-wrap: balance;
  }
}

@media (max-width: 767px) {
  .anpm-wrap {
    --anpm-track-padding-inline: 48px;
    --anpm-body-padding-inline: 16px;
    --anpm-body-padding-block-start: 16px;
    --anpm-body-padding-block-end: 18px;
    --anpm-terms-gap: 16px;
    --anpm-footer-gap: 20px;
    --anpm-dots-margin-top: 22px;
    --anpm-archive-cta-margin-top: 22px;
    --anpm-signal-line-top: 38%;
  }

  .anpm-stage {
    min-height: calc(var(--anpm-stage-height) - 24px);
    perspective: 920px;
  }

  .anpm-gesture-hint {
    font-size: 11px;
    padding: 0.42rem 0.74rem;
  }

  .anpm-incoming-meter {
    font-size: 11px;
    padding: 0.42rem 0.74rem;
  }

  .anpm-incoming-meter__prefix {
    padding-inline-start: 0.34rem;
  }

  .anpm-track {
    min-height: calc(var(--anpm-stage-height) - 24px);
  }
}

@media (max-width: 736px) {
  .anpm-wrap {
    --anpm-track-padding-inline: 28px;
    --anpm-dots-margin-top: 20px;
    --anpm-archive-cta-margin-top: 20px;
    --anpm-signal-line-top: 36%;
  }

  .anpm-stage {
    min-height: calc(var(--anpm-stage-height) - 34px);
    perspective: 860px;
  }

  .anpm-gesture-hint {
    max-width: calc(100% - 22px);
    font-size: 10px;
    letter-spacing: 0.12em;
  }

  .anpm-incoming-meter {
    max-width: calc(100% - 20px);
    font-size: 10px;
    letter-spacing: 0.11em;
  }

  .anpm-hud__signal {
    left: 10px;
    right: 10px;
  }

  .anpm-track {
    min-height: calc(var(--anpm-stage-height) - 34px);
  }

  .anpm-dot {
    width: 9px;
    height: 9px;
  }
}

/* ==========================================================================
   Aidem Animated Divider
   ========================================================================== */

.aba-animated-divider {
  --aba-divider-width: 100%;
  --aba-divider-thickness: 3px;
  --aba-divider-gap: 14px;
  --aba-divider-double-gap: 5px;
  --aba-divider-pattern-stroke: max(1px, calc(var(--aba-divider-thickness) * 0.75));
  --aba-divider-style-opacity: 1;
  --aba-divider-color: #8df411;
  --aba-divider-glow-color: #b8ff66;
  --aba-divider-duration: 6s;
  --aba-divider-strength: 1;
  display: flex;
  width: 100%;
  line-height: 0;
  position: relative;
}

.aba-animated-divider__line {
  position: relative;
  display: block;
  width: var(--aba-divider-width);
  color: var(--aba-divider-color);
  overflow: hidden;
  flex: 0 0 auto;
  transform-origin: center center;
  --aba-divider-block-height: var(--aba-divider-thickness);
  height: var(--aba-divider-block-height);
  isolation: isolate;
  background-repeat: repeat-x;
  background-position: left center;
  background-size: auto 100%;
  opacity: var(--aba-divider-style-opacity);
  filter:
    drop-shadow(0 0 calc(6px * var(--aba-divider-strength)) color-mix(in srgb, var(--aba-divider-color) 40%, transparent))
    drop-shadow(0 0 calc(10px * var(--aba-divider-strength)) color-mix(in srgb, var(--aba-divider-glow-color) 18%, transparent));
}

.aba-animated-divider__line::before,
.aba-animated-divider__line::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: 1;
}

.aba-animated-divider--pattern-solid .aba-animated-divider__line {
  background-color: currentColor;
  box-shadow:
    0 0 0 0.9px currentColor,
    0 0 calc(6px * var(--aba-divider-strength)) color-mix(in srgb, currentColor 28%, transparent);
}

.aba-animated-divider--pattern-slashes .aba-animated-divider__line {
  --aba-divider-block-height: max(12px, calc(var(--aba-divider-thickness) * 3));
  --aba-divider-pattern-stroke: max(2px, calc(var(--aba-divider-thickness) * 1.1));
  background-image: repeating-linear-gradient(
    135deg,
    transparent 0 calc(var(--aba-divider-gap) * 0.12),
    currentColor calc(var(--aba-divider-gap) * 0.12) calc((var(--aba-divider-gap) * 0.12) + var(--aba-divider-pattern-stroke)),
    transparent calc((var(--aba-divider-gap) * 0.12) + var(--aba-divider-pattern-stroke)) calc(var(--aba-divider-gap) * 0.76)
  );
  background-size: calc(var(--aba-divider-gap) * 1.12) 100%;
  box-shadow:
    0 0 0 0.85px currentColor,
    0 0 calc(7px * var(--aba-divider-strength)) color-mix(in srgb, currentColor 24%, transparent);
}

.aba-animated-divider--pattern-dashed .aba-animated-divider__line {
  --aba-divider-block-height: max(7px, calc(var(--aba-divider-thickness) * 1.7));
  background-image: repeating-linear-gradient(
    90deg,
    currentColor 0 calc(var(--aba-divider-gap) * 1.08),
    transparent calc(var(--aba-divider-gap) * 1.08) calc(var(--aba-divider-gap) * 1.5)
  );
  background-size: calc(var(--aba-divider-gap) * 1.55) 100%;
  box-shadow:
    0 0 0 0.7px currentColor,
    0 0 calc(5px * var(--aba-divider-strength)) color-mix(in srgb, currentColor 18%, transparent);
}

.aba-animated-divider--pattern-dots .aba-animated-divider__line {
  --aba-divider-block-height: max(9px, calc(var(--aba-divider-thickness) * 2.35));
  background-image: radial-gradient(circle, currentColor 0 60%, transparent 64%);
  background-size: calc(var(--aba-divider-gap) * 1.05) 100%;
  background-repeat: repeat-x;
  background-position: left center;
  box-shadow:
    0 0 0 0.6px currentColor,
    0 0 calc(5px * var(--aba-divider-strength)) color-mix(in srgb, currentColor 18%, transparent);
}

.aba-animated-divider--pattern-double .aba-animated-divider__line {
  --aba-divider-block-height: max(9px, calc((var(--aba-divider-thickness) * 2) + var(--aba-divider-double-gap)));
  background-image:
    linear-gradient(currentColor, currentColor),
    linear-gradient(currentColor, currentColor);
  background-size:
    100% var(--aba-divider-thickness),
    100% var(--aba-divider-thickness);
  background-repeat: no-repeat;
  background-position:
    left top,
    left bottom;
  box-shadow:
    0 0 0 0.7px currentColor,
    0 0 calc(5px * var(--aba-divider-strength)) color-mix(in srgb, currentColor 18%, transparent);
}

.aba-animated-divider--pattern-plusminus .aba-animated-divider__line {
  --aba-divider-block-height: max(11px, calc(var(--aba-divider-thickness) * 3));
  --aba-divider-pm-step: calc(var(--aba-divider-gap) * 1.6);
  --aba-divider-pm-bar: max(2px, calc(var(--aba-divider-thickness) * 0.7));
  background-image:
    repeating-linear-gradient(
      90deg,
      currentColor 0 var(--aba-divider-pm-step),
      transparent var(--aba-divider-pm-step) calc(var(--aba-divider-pm-step) * 2)
    ),
    repeating-linear-gradient(
      90deg,
      transparent 0 calc(var(--aba-divider-pm-step) - (var(--aba-divider-pm-bar) / 2)),
      currentColor calc(var(--aba-divider-pm-step) - (var(--aba-divider-pm-bar) / 2)) calc(var(--aba-divider-pm-step) + (var(--aba-divider-pm-bar) / 2)),
      transparent calc(var(--aba-divider-pm-step) + (var(--aba-divider-pm-bar) / 2)) calc(var(--aba-divider-pm-step) * 2)
    );
  background-size:
    auto var(--aba-divider-thickness),
    auto calc(var(--aba-divider-thickness) * 2.5);
  background-repeat: repeat-x;
  background-position:
    left calc(50% - (var(--aba-divider-thickness) / 2)),
    left center;
  box-shadow:
    0 0 0 0.7px currentColor,
    0 0 calc(5px * var(--aba-divider-strength)) color-mix(in srgb, currentColor 18%, transparent);
}

.aba-animated-divider--anim-pulse .aba-animated-divider__line {
  animation: abaDividerPulse var(--aba-divider-duration) ease-in-out infinite;
}

.aba-animated-divider--anim-signal .aba-animated-divider__line {
  box-shadow:
    inset 0 0 0 1px color-mix(in srgb, var(--aba-divider-color) 10%, transparent),
    0 0 calc(8px * var(--aba-divider-strength)) color-mix(in srgb, var(--aba-divider-glow-color) 14%, transparent);
}

.aba-animated-divider--anim-signal .aba-animated-divider__line::before {
  width: 28%;
  height: calc(var(--aba-divider-block-height) * 3.2);
  top: 50%;
  left: -30%;
  transform: translateY(-50%);
  background: linear-gradient(
    90deg,
    transparent 0%,
    color-mix(in srgb, var(--aba-divider-glow-color) 76%, white) 18%,
    color-mix(in srgb, var(--aba-divider-glow-color) 92%, white) 48%,
    color-mix(in srgb, var(--aba-divider-glow-color) 76%, white) 78%,
    transparent 100%
  );
  clip-path: polygon(
    0 56%,
    12% 56%,
    18% 56%,
    26% 34%,
    34% 68%,
    42% 18%,
    50% 86%,
    58% 42%,
    66% 58%,
    74% 28%,
    82% 60%,
    90% 56%,
    100% 56%,
    100% 70%,
    0 70%
  );
  filter:
    drop-shadow(0 0 calc(8px * var(--aba-divider-strength)) color-mix(in srgb, var(--aba-divider-glow-color) 78%, transparent))
    drop-shadow(0 0 calc(18px * var(--aba-divider-strength)) color-mix(in srgb, var(--aba-divider-glow-color) 46%, transparent));
  opacity: 0.98;
  animation: abaDividerSignal var(--aba-divider-duration) linear infinite;
}

.aba-animated-divider--anim-signal .aba-animated-divider__line::after {
  width: 34%;
  height: calc(var(--aba-divider-block-height) * 3.8);
  top: 50%;
  left: -36%;
  transform: translateY(-50%);
  background:
    radial-gradient(circle at 50% 50%, color-mix(in srgb, var(--aba-divider-glow-color) 52%, white) 0, transparent 58%),
    linear-gradient(
      90deg,
      transparent 0%,
      color-mix(in srgb, var(--aba-divider-glow-color) 32%, transparent) 36%,
      color-mix(in srgb, var(--aba-divider-glow-color) 54%, transparent) 50%,
      color-mix(in srgb, var(--aba-divider-glow-color) 32%, transparent) 64%,
      transparent 100%
    );
  filter: blur(calc(4px * var(--aba-divider-strength)));
  opacity: 0.62;
  animation: abaDividerSignal var(--aba-divider-duration) linear infinite;
}

.aba-animated-divider--anim-glitch .aba-animated-divider__line::before,
.aba-animated-divider--anim-glitch .aba-animated-divider__line::after {
  background-repeat: repeat-x;
  background-size:
    calc(var(--aba-divider-gap) * 2.1) 100%,
    calc(var(--aba-divider-gap) * 3.2) 100%;
  opacity: 0;
  mix-blend-mode: screen;
}

.aba-animated-divider--anim-glitch .aba-animated-divider__line::before {
  background-image:
    repeating-linear-gradient(
      90deg,
      transparent 0 calc(var(--aba-divider-gap) * 0.9),
      color-mix(in srgb, var(--aba-divider-color) 90%, white) calc(var(--aba-divider-gap) * 0.9) calc(var(--aba-divider-gap) * 1.28),
      transparent calc(var(--aba-divider-gap) * 1.28) calc(var(--aba-divider-gap) * 2.1)
    ),
    repeating-linear-gradient(
      90deg,
      transparent 0 calc(var(--aba-divider-gap) * 1.6),
      color-mix(in srgb, var(--aba-divider-color) 82%, transparent) calc(var(--aba-divider-gap) * 1.6) calc(var(--aba-divider-gap) * 1.95),
      transparent calc(var(--aba-divider-gap) * 1.95) calc(var(--aba-divider-gap) * 3.2)
    );
  animation: abaDividerGlitchPrimary calc(var(--aba-divider-duration) * 1.35) steps(1, end) infinite;
}

.aba-animated-divider--anim-glitch .aba-animated-divider__line::after {
  background-image:
    repeating-linear-gradient(
      90deg,
      transparent 0 calc(var(--aba-divider-gap) * 1.15),
      color-mix(in srgb, var(--aba-divider-color) 62%, white) calc(var(--aba-divider-gap) * 1.15) calc(var(--aba-divider-gap) * 1.45),
      transparent calc(var(--aba-divider-gap) * 1.45) calc(var(--aba-divider-gap) * 2.4)
    );
  animation: abaDividerGlitchSecondary calc(var(--aba-divider-duration) * 1.1) steps(1, end) infinite;
}

.aba-animated-divider--anim-scanline .aba-animated-divider__line::before {
  width: 16%;
  left: -20%;
  background: linear-gradient(
    90deg,
    transparent 0%,
    color-mix(in srgb, var(--aba-divider-glow-color) 58%, white) 46%,
    transparent 100%
  );
  opacity: 0.92;
  filter: blur(calc(1.2px * var(--aba-divider-strength)));
  animation: abaDividerScanline var(--aba-divider-duration) linear infinite;
}

.aba-animated-divider--anim-glow .aba-animated-divider__line {
  animation: abaDividerGlow var(--aba-divider-duration) ease-in-out infinite;
}

@keyframes abaDividerPulse {
  0%, 100% {
    opacity: 0.78;
    transform: scaleX(1);
    filter: drop-shadow(0 0 calc(6px * var(--aba-divider-strength)) color-mix(in srgb, var(--aba-divider-glow-color) 30%, transparent));
  }
  50% {
    opacity: 1;
    transform: scaleX(0.985);
    filter: drop-shadow(0 0 calc(12px * var(--aba-divider-strength)) color-mix(in srgb, var(--aba-divider-glow-color) 52%, transparent));
  }
}

@keyframes abaDividerSignal {
  0% {
    transform: translate(-6%, -50%);
  }
  100% {
    transform: translate(432%, -50%);
  }
}

@keyframes abaDividerGlitchPrimary {
  0%, 100% { opacity: 0; transform: translate3d(0, 0, 0); }
  9% { opacity: 0.92; transform: translate3d(-10px, 0, 0); }
  10% { opacity: 0; transform: translate3d(0, 0, 0); }
  34% { opacity: 0.84; transform: translate3d(14px, 0, 0); }
  36% { opacity: 0.22; transform: translate3d(-8px, 0, 0); }
  38% { opacity: 0; transform: translate3d(0, 0, 0); }
  67% { opacity: 0.88; transform: translate3d(-16px, 0, 0); }
  69% { opacity: 0.18; transform: translate3d(9px, 0, 0); }
  71% { opacity: 0; transform: translate3d(0, 0, 0); }
}

@keyframes abaDividerGlitchSecondary {
  0%, 100% { opacity: 0; transform: translate3d(0, 0, 0); }
  18% { opacity: 0.72; transform: translate3d(8px, 0, 0); }
  19% { opacity: 0; transform: translate3d(0, 0, 0); }
  52% { opacity: 0.78; transform: translate3d(-12px, 0, 0); }
  54% { opacity: 0.18; transform: translate3d(4px, 0, 0); }
  56% { opacity: 0; transform: translate3d(0, 0, 0); }
  82% { opacity: 0.66; transform: translate3d(10px, 0, 0); }
  84% { opacity: 0; transform: translate3d(0, 0, 0); }
}

@keyframes abaDividerScanline {
  0% {
    transform: translateX(0);
  }
  100% {
    transform: translateX(760%);
  }
}

@keyframes abaDividerGlow {
  0%, 100% {
    opacity: 0.88;
    filter:
      drop-shadow(0 0 calc(8px * var(--aba-divider-strength)) color-mix(in srgb, var(--aba-divider-glow-color) 34%, transparent))
      drop-shadow(0 0 calc(16px * var(--aba-divider-strength)) color-mix(in srgb, var(--aba-divider-glow-color) 18%, transparent));
  }
  50% {
    opacity: 1;
    filter:
      drop-shadow(0 0 calc(14px * var(--aba-divider-strength)) color-mix(in srgb, var(--aba-divider-glow-color) 56%, transparent))
      drop-shadow(0 0 calc(26px * var(--aba-divider-strength)) color-mix(in srgb, var(--aba-divider-glow-color) 34%, transparent));
  }
}

/* ==========================================================================
   Aidem Portfolio GSAP Carousel
   ========================================================================== */
.apgc-wrap {
  --apgc-wrap-width: 100%;
  --apgc-slide-width: 420px;
  --apgc-stage-min-height: 540px;
  --apgc-stage-height: 540px;
  --apgc-stage-top-clearance: 112px;
  --apgc-stage-bottom-clearance: 0px;
  --apgc-frame-top-offset: 18px;
  --apgc-frame-bottom-offset: 18px;
  --apgc-frame-rail-top-offset: 26px;
  --apgc-frame-rail-bottom-offset: 26px;
  --apgc-live-height: auto;
  --apgc-image-ratio: 16 / 9;
  --apgc-perspective: 1400px;
  --apgc-shell-bg: rgba(10, 11, 16, 0.92);
  --apgc-slide-bg: #181a21;
  --apgc-slide-border: rgba(255, 255, 255, 0.08);
  --apgc-slide-edge: #8c5ff5;
  --apgc-frame-color: #8c5ff5;
  --apgc-signal-color: #ceff25;
  --apgc-alert-color: #ffb50d;
  --apgc-meter-bg: rgba(14, 16, 22, 0.92);
  --apgc-meter-text: #ceff25;
  --apgc-nav-color: rgba(255, 255, 255, 0.56);
  --apgc-nav-active: #ffb50d;
  --apgc-filter: grayscale(0%) saturate(1) brightness(1);
  --apgc-glitch-strength: 1;
  --apgc-glitch-tint-opacity: 0.24;
  position: relative;
  width: min(100%, var(--apgc-wrap-width));
  max-width: 100%;
  margin-inline: auto;
  color: #fff;
}

.apgc-empty {
  margin: 0;
  padding: 1rem 1.2rem;
  border: 1px solid rgba(255, 255, 255, 0.08);
  background: rgba(12, 14, 20, 0.9);
}

.apgc-stage {
  position: relative;
  min-height: var(--apgc-stage-min-height);
  height: var(--apgc-stage-height);
  perspective: var(--apgc-perspective);
  perspective-origin: 50% 42%;
  overflow: visible;
  isolation: isolate;
  touch-action: pan-y;
  user-select: none;
}

.apgc-hud {
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: 8;
  display: none;
}

.apgc-hud__top-rail,
.apgc-hud__bottom-rail {
  position: absolute;
  left: 18px;
  right: 18px;
  height: 1px;
  background:
    linear-gradient(
      90deg,
      transparent 0,
      color-mix(in srgb, var(--apgc-frame-color) 64%, white) 18%,
      color-mix(in srgb, var(--apgc-frame-color) 88%, white) 50%,
      color-mix(in srgb, var(--apgc-frame-color) 64%, white) 82%,
      transparent 100%
    );
  opacity: 0.44;
}

.apgc-hud__top-rail {
  top: var(--apgc-frame-rail-top-offset);
}

.apgc-hud__bottom-rail {
  bottom: var(--apgc-frame-rail-bottom-offset);
}

.apgc-hud__corner {
  position: absolute;
  width: 28px;
  height: 28px;
  z-index: 1;
  border-color: color-mix(in srgb, var(--apgc-frame-color) 84%, white);
  border-style: solid;
  opacity: 0.74;
}

.apgc-hud__corner--tl {
  top: var(--apgc-frame-top-offset);
  left: 18px;
  border-width: 2px 0 0 2px;
}

.apgc-hud__corner--tr {
  top: var(--apgc-frame-top-offset);
  right: 18px;
  border-width: 2px 2px 0 0;
}

.apgc-hud__corner--bl {
  bottom: var(--apgc-frame-bottom-offset);
  left: 18px;
  border-width: 0 0 2px 2px;
}

.apgc-hud__corner--br {
  bottom: var(--apgc-frame-bottom-offset);
  right: 18px;
  border-width: 0 2px 2px 0;
}

.apgc-meter {
  position: absolute;
  z-index: 20;
  display: inline-flex;
  align-items: center;
  gap: 0.28rem;
  padding: 0.72rem 0.98rem 0.68rem;
  border: 1px solid color-mix(in srgb, var(--apgc-frame-color) 44%, rgba(255, 255, 255, 0.08));
  background:
    linear-gradient(180deg, var(--apgc-meter-bg), color-mix(in srgb, var(--apgc-meter-bg) 82%, rgba(8, 10, 12, 1))),
    linear-gradient(180deg, rgba(255, 255, 255, 0.04), rgba(255, 255, 255, 0));
  box-shadow:
    0 0 0 1px color-mix(in srgb, var(--apgc-frame-color) 16%, transparent),
    0 12px 28px rgba(0, 0, 0, 0.28),
    inset 0 0 0 1px rgba(255, 255, 255, 0.02);
  color: var(--apgc-meter-text);
  font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, Courier, monospace;
  font-size: clamp(11px, 0.84vw, 13px);
  font-weight: 600;
  line-height: 1;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  text-shadow: 0 0 10px color-mix(in srgb, var(--apgc-signal-color) 32%, transparent);
  white-space: nowrap;
  backdrop-filter: blur(8px) saturate(110%);
  -webkit-backdrop-filter: blur(8px) saturate(110%);
}

.apgc-meter__bracket {
  display: none;
}

.apgc-meter__prefix,
.apgc-meter__value,
.apgc-meter__typed,
.apgc-meter__cursor {
  display: inline-block;
}

.apgc-meter__value--client {
  min-width: 8ch;
}

.apgc-meter--top-drag::before,
.apgc-meter--bottom::before {
  content: '< ' attr(data-drag-desktop) ' >';
}

@media (max-width: 1024px) {
  .apgc-meter--top-drag::before,
  .apgc-meter--bottom::before {
    content: '< ' attr(data-drag-touch) ' >';
  }
}

.apgc-meter__typed-wrap {
  position: relative;
  display: inline-grid;
  align-items: center;
}

.apgc-meter__typed--measure,
.apgc-meter__typed--live {
  grid-area: 1 / 1;
}

.apgc-meter__typed--measure {
  visibility: hidden;
  pointer-events: none;
}

.apgc-meter__cursor {
  width: 0.56em;
  height: 1.1em;
  margin-left: 0.1em;
  border-radius: 0.08em;
  background: color-mix(in srgb, var(--apgc-signal-color) 86%, white);
  box-shadow: 0 0 12px color-mix(in srgb, var(--apgc-signal-color) 28%, transparent);
  animation: apgc-meter-cursor 0.82s step-end infinite;
}

.apgc-meter--top-left {
  top: 18px;
  left: 50%;
  transform: translateX(calc(-50% - 4px));
}

.apgc-meter--top-drag {
  top: 64px;
  left: 50%;
  transform: translateX(-50%);
}

.apgc-meter--bottom {
  position: relative !important;
  left: 50%;
  width: max-content;
  max-width: none;
  margin-top: 0.4rem;
  transform: translateX(-50%);
  white-space: nowrap;
}

.apgc-track {
  position: relative;
  z-index: 4;
  display: flex;
  align-items: stretch;
  gap: 22px;
  min-height: var(--apgc-stage-height);
  padding: 112px clamp(52px, 6vw, 88px) 0px;
  overflow-x: auto;
  scrollbar-width: none;
}

.apgc-track::-webkit-scrollbar {
  display: none;
}

.apgc-wrap--ready .apgc-track {
  display: block;
  padding: 0;
  overflow: visible;
}

.apgc-slide {
  position: relative;
  flex: 0 0 var(--apgc-slide-width);
  width: var(--apgc-slide-width);
  min-width: 0;
  border-radius: 18px;
  overflow: hidden;
  background: var(--apgc-slide-bg);
  border: 1px solid var(--apgc-slide-border);
  box-shadow: 0 26px 54px rgba(0, 0, 0, 0.44);
  color: #fff;
  will-change: transform, opacity;
  filter: var(--apgc-filter);
  transition: box-shadow 0.3s ease, border-color 0.3s ease;
}

.apgc-wrap--ready .apgc-slide {
  position: absolute;
  top: var(--apgc-stage-top-clearance);
  left: 50%;
}

.apgc-slide.is-slot-centre {
  border-color: color-mix(in srgb, var(--apgc-slide-edge) 58%, rgba(255, 255, 255, 0.14));
  box-shadow:
    0 34px 70px rgba(0, 0, 0, 0.52),
    0 0 0 1px color-mix(in srgb, var(--apgc-slide-edge) 24%, transparent),
    0 0 22px color-mix(in srgb, var(--apgc-slide-edge) 14%, transparent);
}

.apgc-slide.is-slot-left-1,
.apgc-slide.is-slot-left-2,
.apgc-slide.is-slot-hidden-left,
.apgc-slide.is-slot-right-1,
.apgc-slide.is-slot-right-2,
.apgc-slide.is-slot-hidden-right {
  box-shadow:
    0 20px 44px rgba(0, 0, 0, 0.42),
    0 0 0 1px color-mix(in srgb, var(--apgc-frame-color) 10%, transparent);
}

.apgc-slide__shell {
  display: flex;
  min-height: 100%;
  flex-direction: column;
  background: var(--apgc-slide-bg);
}

.apgc-slide__shell--template > * {
  min-height: 100%;
}

.apgc-slide__media {
  position: relative;
}

.apgc-slide__media-link,
.apgc-slide__image {
  display: block;
  width: 100%;
}

.apgc-slide__image {
  aspect-ratio: var(--apgc-image-ratio);
  object-fit: cover;
}

.apgc-slide__body {
  display: flex;
  flex: 1 1 auto;
  flex-direction: column;
  gap: 0.88rem;
  padding: 1.2rem 1.2rem 1.28rem;
}

.apgc-slide__title {
  margin: 0;
}

.apgc-slide__title a {
  color: inherit;
  text-decoration: none;
}

.apgc-slide__client {
  margin: 0;
  font-weight: 600;
  color: rgba(255, 255, 255, 0.96);
}

.apgc-slide__copy {
  margin: 0;
  display: -webkit-box;
  overflow: hidden;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 5;
}

.apgc-slide__copy--social {
  color: rgba(255, 255, 255, 0.72);
}

.apgc-arrow {
  position: absolute;
  top: 50%;
  z-index: 22;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 46px;
  height: 46px;
  border: 1px solid color-mix(in srgb, var(--apgc-frame-color) 44%, rgba(255, 255, 255, 0.1));
  background: color-mix(in srgb, var(--apgc-shell-bg) 88%, rgba(8, 10, 12, 0.98));
  color: var(--apgc-nav-color);
  transform: translateY(-50%);
  box-shadow: 0 14px 28px rgba(0, 0, 0, 0.3);
  cursor: pointer;
  transition: color 0.22s ease, border-color 0.22s ease, transform 0.22s ease;
}

.apgc-arrow:hover,
.apgc-arrow:focus-visible {
  color: var(--apgc-nav-active);
  border-color: color-mix(in srgb, var(--apgc-alert-color) 60%, rgba(255, 255, 255, 0.1));
}

.apgc-arrow--prev {
  left: 10px;
}

.apgc-arrow--next {
  right: 10px;
}

.apgc-dots {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: 0.7rem;
  margin-top: 1rem;
}

.apgc-dot {
  width: 10px;
  height: 10px;
  padding: 0;
  border: 0;
  border-radius: 999px;
  background: color-mix(in srgb, var(--apgc-nav-color) 78%, transparent);
  cursor: pointer;
  transition: transform 0.2s ease, background-color 0.2s ease;
}

.apgc-dot.is-active {
  transform: scale(1.18);
  background: var(--apgc-nav-active);
  box-shadow: 0 0 12px color-mix(in srgb, var(--apgc-alert-color) 28%, transparent);
}

.apgc-ghost {
  position: absolute;
  overflow: hidden;
  pointer-events: none;
  transform-origin: center center;
  background: var(--apgc-slide-bg);
  border: 1px solid color-mix(in srgb, var(--apgc-slide-edge) 36%, rgba(255, 255, 255, 0.08));
  box-shadow:
    0 26px 54px rgba(0, 0, 0, 0.54),
    0 0 20px color-mix(in srgb, var(--apgc-frame-color) 18%, transparent);
}

.apgc-ghost::before,
.apgc-ghost::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
}

.apgc-ghost::before {
  background:
    linear-gradient(
      180deg,
      color-mix(in srgb, var(--apgc-frame-color) calc(var(--apgc-ghost-alpha, 0.16) * 100%), transparent),
      transparent 42%,
      color-mix(in srgb, var(--apgc-frame-color) calc(var(--apgc-ghost-alpha, 0.16) * 72%), transparent) 100%
    );
  opacity: 0.96;
  mix-blend-mode: screen;
}

.apgc-ghost::after {
  background:
    repeating-linear-gradient(
      180deg,
      color-mix(in srgb, var(--apgc-frame-color) 28%, transparent) 0 10px,
      rgba(255, 255, 255, 0) 10px 16px,
      color-mix(in srgb, var(--apgc-frame-color) 18%, transparent) 16px 26px
    );
  opacity: calc(var(--apgc-ghost-alpha, 0.16) * 1.6);
  mix-blend-mode: lighten;
}

.apgc-wrap--static .apgc-arrow,
.apgc-wrap--static .apgc-dots {
  display: none;
}

@keyframes apgc-meter-cursor {
  0%, 48% { opacity: 1; }
  49%, 100% { opacity: 0; }
}

@media (max-width: 1024px) {
  .apgc-meter--top-left {
    transform: translateX(calc(-50% - 4px));
  }

  .apgc-meter--top-drag {
    top: 64px;
  }

  .apgc-track {
    padding: 106px 38px 82px;
  }
}

@media (max-width: 767px) {
  .apgc-stage {
    min-height: var(--apgc-stage-min-height);
  }

  .apgc-hud__corner {
    width: 18px;
    height: 18px;
  }

  .apgc-hud__corner--tl,
  .apgc-hud__corner--tr {
    top: 10px;
  }

  .apgc-hud__corner--bl,
  .apgc-hud__corner--br {
    bottom: 10px;
  }

  .apgc-hud__corner--tl,
  .apgc-hud__corner--bl {
    left: 10px;
  }

  .apgc-hud__corner--tr,
  .apgc-hud__corner--br {
    right: 10px;
  }

  .apgc-hud__top-rail {
    top: 16px;
    left: 10px;
    right: 10px;
  }

  .apgc-hud__bottom-rail {
    bottom: 16px;
    left: 10px;
    right: 10px;
  }

  .apgc-meter {
    padding: 0.58rem 0.72rem 0.54rem;
    font-size: 10px;
    letter-spacing: 0.06em;
  }

  .apgc-meter--top-left {
    top: 12px;
    left: 50%;
    transform: translateX(-50%);
    max-width: calc(100vw - 32px);
  }

  .apgc-meter--top-drag {
    top: 58px;
    left: 50%;
    transform: translateX(-50%);
  }

  .apgc-meter--top-left .apgc-meter__value--client {
    max-width: 40vw;
    overflow: hidden;
    text-overflow: ellipsis;
    min-width: 0;
  }

  .apgc-meter--top-right {
    top: 12px;
    right: 16px;
    left: auto;
    transform: none;
  }

  .apgc-track {
    padding: 98px 22px 74px;
  }

  .apgc-arrow {
    width: 38px;
    height: 38px;
  }

  .apgc-arrow--prev {
    left: 2px;
  }

  .apgc-arrow--next {
    right: 2px;
  }
}
