/* =====================================================
   1. SEO WORD REVEAL HEADING
   Preserves span.highlight
===================================================== */

  .seo-word-reveal .elementor-heading-title {
    overflow: hidden;
  }

  .seo-word-reveal .elementor-heading-title .word {
    display: inline-block;
    opacity: 0;
    transform: translateY(1.1em);
    transition:
      opacity 0.65s ease,
      transform 0.65s cubic-bezier(0.22, 1, 0.36, 1);
    transition-delay: var(--word-delay, 0ms);
    will-change: opacity, transform;
  }

  .seo-word-reveal.is-visible .elementor-heading-title .word {
    opacity: 1;
    transform: translateY(0);
  }

  /* Keep highlight style inherited before color animation */
  .seo-word-reveal .elementor-heading-title .highlight .word {
    color: inherit;
  }


  /* =====================================================
   1B. DESKTOP ONLY HIGHLIGHT TRIM-PATH BORDER + COLOR
   Applies only to span.highlight
   Exclude with class: no-heading-border
===================================================== */

  @media (min-width: 1025px) {
    .seo-word-reveal:not(.no-heading-border) .elementor-heading-title .highlight {
      position: relative;
      display: inline-block;
      padding-bottom: 10px;
      transition: color 1.6s ease;
    }

    .seo-word-reveal:not(.no-heading-border) .elementor-heading-title .highlight .word {
      transition: color 1.6s ease;
    }

    .seo-word-reveal:not(.no-heading-border) .highlight-trim-svg {
      position: absolute;
      left: 0;
      bottom: 0;
      width: 100%;
      height: 8px;
      overflow: visible;
      pointer-events: none;
    }

    .seo-word-reveal:not(.no-heading-border) .highlight-trim-path {
      fill: none;
      stroke: #9e0d02;
      stroke-width: 2;
      stroke-linecap: round;
      stroke-linejoin: round;

      stroke-dasharray: var(--trim-path-length, 100);
      stroke-dashoffset: var(--trim-path-length, 100);

      transition:
        stroke-dashoffset 3.4s cubic-bezier(0.16, 1, 0.3, 1);
      transition-delay: var(--heading-border-delay, 900ms);
    }

    .seo-word-reveal.trim-path-active:not(.no-heading-border) .highlight-trim-path {
      stroke-dashoffset: 0;
    }

    @media (min-width: 1025px) {
      .seo-word-reveal.trim-path-reverse:not(.no-heading-border) .highlight-trim-path {
        stroke-dashoffset: calc(var(--trim-path-length, 100) * -1);
        transition-delay: 0ms;
        transition-duration: 2.2s;
        transition-timing-function: cubic-bezier(0.65, 0, 0.35, 1);
      }
    }

    .seo-word-reveal.highlight-color-active:not(.no-heading-border) .elementor-heading-title .highlight,
    .seo-word-reveal.highlight-color-active:not(.no-heading-border) .elementor-heading-title .highlight .word {
      color: #9e0d02 !important;
    }

    .seo-word-reveal:not(.is-visible) .highlight-trim-path {
      transition-delay: 0ms;
    }
  }

  /* Mobile / Tablet: no trim-path underline animation */
  @media (max-width: 1024px) {
    .seo-word-reveal .highlight-trim-svg {
      display: none !important;
    }

    .seo-word-reveal .elementor-heading-title .highlight,
    .seo-word-reveal .elementor-heading-title .highlight .word {
      transition: none !important;
    }
  }


  /* =====================================================
   2. INDUSTRY CARD IMAGE REVEAL
===================================================== */

  .elementor-widget-aimbeat_single_industry_card .ab-single-industry-card {
    overflow: hidden;
  }

  .elementor-widget-aimbeat_single_industry_card .ab-single-industry-card img {
    display: block;
    transform-origin: center center;
  }

  .elementor-widget-aimbeat_single_industry_card .ab-single-industry-card.ab-industry-reveal-ready img {
    opacity: 0;
    clip-path: polygon(0 0, 100% 0, 100% 0, 0 0);
    transform: translate3d(0, 0, 0) scale(1.08);
    transition:
      opacity 0.65s ease,
      clip-path 1.75s cubic-bezier(0.16, 1, 0.3, 1),
      transform 1.85s cubic-bezier(0.16, 1, 0.3, 1);
    transition-delay: var(--reveal-delay, 0ms);
    will-change: opacity, clip-path, transform;
  }

  .elementor-widget-aimbeat_single_industry_card .ab-single-industry-card.ab-industry-reveal-ready.ht-img-active img {
    opacity: 1;
    clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%);
    transform: translate3d(0, 0, 0) scale(1);
  }


  /* =====================================================
   3. COUNTER BACKGROUND REVEAL
===================================================== */

  .counter-bg-reveal {
    --counter-bg-image: none;

    position: relative;
    overflow: hidden;
    isolation: isolate;
  }

  .counter-bg-reveal.counter-bg-image-ready {
    background-image: none !important;
  }

  .counter-bg-reveal.counter-bg-image-ready .elementor-background-overlay {
    background-image: none !important;
  }

  .counter-bg-reveal:not(.counter-bg-image-ready)::before {
    display: none;
  }

  .counter-bg-reveal::before {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 0;

    background-image: var(--counter-bg-image);
    background-size: cover;
    background-position: center center;
    background-repeat: no-repeat;

    opacity: 0;
    clip-path: polygon(0 0, 100% 0, 100% 0, 0 0);
    transform: translate3d(0, 0, 0) skewY(5deg) scale(1.08);
    transform-origin: top center;

    transition:
      opacity 0.8s ease,
      clip-path 2.2s cubic-bezier(0.16, 1, 0.3, 1),
      transform 2.4s cubic-bezier(0.16, 1, 0.3, 1);

    will-change: opacity, clip-path, transform;
    pointer-events: none;
  }

  .counter-bg-reveal.ht-bg-active::before {
    opacity: 1;
    clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%);
    transform: translate3d(0, 0, 0) skewY(0deg) scale(1);
  }

  .counter-bg-reveal>*,
  .counter-bg-reveal .elementor-container,
  .counter-bg-reveal .elementor-widget-wrap,
  .counter-bg-reveal .elementor-element {
    position: relative;
    z-index: 2;
  }


  /* =====================================================
   4. PORTFOLIO IMAGE REVEAL
===================================================== */

  .ab-project-image {
    position: relative;
    overflow: hidden;
  }

  .ab-project-image img {
    display: block;
    transform-origin: center center;
  }

  .ab-project-image.ab-project-reveal-ready img {
    opacity: 0;
    clip-path: polygon(0 0, 100% 0, 100% 0, 0 0);
    transform: translate3d(0, 0, 0);
    transition:
      opacity 0.6s ease,
      clip-path 1.65s cubic-bezier(0.16, 1, 0.3, 1);
    transition-delay: var(--reveal-delay, 0ms);
    will-change: opacity, clip-path;
  }

  .ab-project-image.ab-project-reveal-ready.ht-img-active img {
    opacity: 1;
    clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%);
  }


  /* =====================================================
   5. SOLUTIONS CARD IMAGE REVEAL
===================================================== */

  .vsa-card figure.vsa-art {
    overflow: hidden;
  }

  .vsa-card figure.vsa-art>img {
    display: block;
    transform-origin: center center;
  }

  .vsa-card.vsa-img-reveal-ready figure.vsa-art>img {
    opacity: 0;
    clip-path: polygon(0 0, 100% 0, 100% 0, 0 0);
    transform: translate3d(0, 0, 0) scale(1.08);
    transition:
      opacity 0.65s ease,
      clip-path 1.75s cubic-bezier(0.16, 1, 0.3, 1),
      transform 1.85s cubic-bezier(0.16, 1, 0.3, 1);
    transition-delay: var(--vsa-img-delay, 0ms);
    will-change: opacity, clip-path, transform;
  }

  .vsa-card.vsa-img-reveal-ready.vsa-img-reveal-active figure.vsa-art>img {
    opacity: 1;
    clip-path: polygon(0 0, 100% 0, 100% 100%, 0 100%);
    transform: translate3d(0, 0, 0) scale(1);
  }


  /* =====================================================
   6. SERVICES CARD REVEAL
===================================================== */

  .services {
    opacity: 1;
    transform: none;
  }

  .services.services-reveal-ready {
    opacity: 0;
    transform: translateY(2rem);
    transition:
      opacity 0.7s ease,
      transform 0.7s cubic-bezier(0.22, 1, 0.36, 1);
    transition-delay: var(--service-delay, 0ms);
    will-change: opacity, transform;
  }

  .services.services-reveal-ready.services-visible {
    opacity: 1;
    transform: translateY(0);
  }


  /* =====================================================
   ELEMENTOR EDITOR SAFETY
===================================================== */

  body.elementor-editor-active .services,
  body.elementor-editor-preview .services,
  html.solverix-editor-safe .services,
  body.elementor-editor-active .seo-word-reveal,
  body.elementor-editor-preview .seo-word-reveal,
  html.solverix-editor-safe .seo-word-reveal,
  body.elementor-editor-active .seo-word-reveal .elementor-heading-title,
  body.elementor-editor-preview .seo-word-reveal .elementor-heading-title,
  html.solverix-editor-safe .seo-word-reveal .elementor-heading-title,
  body.elementor-editor-active .seo-word-reveal .word,
  body.elementor-editor-preview .seo-word-reveal .word,
  html.solverix-editor-safe .seo-word-reveal .word,
  body.elementor-editor-active .seo-word-reveal .highlight,
  body.elementor-editor-preview .seo-word-reveal .highlight,
  html.solverix-editor-safe .seo-word-reveal .highlight,
  body.elementor-editor-active .seo-word-reveal .highlight .word,
  body.elementor-editor-preview .seo-word-reveal .highlight .word,
  html.solverix-editor-safe .seo-word-reveal .highlight .word,
  body.elementor-editor-active .ab-single-industry-card img,
  body.elementor-editor-preview .ab-single-industry-card img,
  html.solverix-editor-safe .ab-single-industry-card img,
  body.elementor-editor-active .ab-project-image img,
  body.elementor-editor-preview .ab-project-image img,
  html.solverix-editor-safe .ab-project-image img,
  body.elementor-editor-active .vsa-card figure.vsa-art>img,
  body.elementor-editor-preview .vsa-card figure.vsa-art>img,
  html.solverix-editor-safe .vsa-card figure.vsa-art>img {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
    visibility: visible !important;
    filter: none !important;
    clip-path: none !important;
  }

  body.elementor-editor-active .highlight-trim-svg,
  body.elementor-editor-preview .highlight-trim-svg,
  html.solverix-editor-safe .highlight-trim-svg {
    display: none !important;
  }

  body.elementor-editor-active .seo-word-reveal .highlight,
  body.elementor-editor-preview .seo-word-reveal .highlight,
  body.elementor-editor-active .seo-word-reveal .highlight .word,
  body.elementor-editor-preview .seo-word-reveal .highlight .word,
  html.solverix-editor-safe .seo-word-reveal .highlight,
  html.solverix-editor-safe .seo-word-reveal .highlight .word {
    color: inherit !important;
  }

  body.elementor-editor-active .counter-bg-reveal::before,
  body.elementor-editor-preview .counter-bg-reveal::before,
  html.solverix-editor-safe .counter-bg-reveal::before {
    opacity: 1 !important;
    clip-path: none !important;
    transform: none !important;
    transition: none !important;
  }


  /* =====================================================
   REDUCED MOTION ACCESSIBILITY
===================================================== */

  @media (prefers-reduced-motion: reduce) {

    .services.services-reveal-ready,
    .seo-word-reveal .elementor-heading-title .word,
    .elementor-widget-aimbeat_single_industry_card .ab-single-industry-card.ab-industry-reveal-ready img,
    .ab-project-image.ab-project-reveal-ready img,
    .vsa-card.vsa-img-reveal-ready figure.vsa-art>img,
    .counter-bg-reveal::before {
      opacity: 1;
      transform: none;
      transition: none;
      clip-path: none;
    }

    .seo-word-reveal .highlight-trim-svg {
      display: none !important;
    }
  }
</style>

<noscript>
  <style>
    .services,
    .services.services-reveal-ready,
    .seo-word-reveal .elementor-heading-title .word,
    .elementor-widget-aimbeat_single_industry_card .ab-single-industry-card img,
    .ab-project-image img,
    .vsa-card figure.vsa-art>img,
    .counter-bg-reveal::before {
      opacity: 1 !important;
      transform: none !important;
      transition: none !important;
      clip-path: none !important;
    }

    .highlight-trim-svg {
      display: none !important;
    }
  </style>
</noscript>

<style>
  /* =====================================================
   ELEMENTOR VIEWPORT TRIM BORDER ANIMATION
   Class to add on Elementor container: trim-border-draw
===================================================== */

  .trim-border-draw {
    position: relative;
    overflow: hidden;
    isolation: isolate;
    border: none !important;

    --trim-border-color: #e1dddd;
    --trim-border-width: 1px;
    --trim-border-duration: 5.15s;
    --trim-border-ease: cubic-bezier(0.16, 1, 0.3, 1);
  }

  /* Keep real Elementor content normal and above background */
  .trim-border-draw> :not(.trim-border-line) {
    position: relative;
    z-index: 1;
  }

  /* JS-injected decorative lines */
  .trim-border-line {
    position: absolute;
    z-index: 5;
    display: block;
    pointer-events: none;
    background: var(--trim-border-color);
    transition: transform var(--trim-border-duration) var(--trim-border-ease);
    will-change: transform;
  }

  /* Top: starts from top-left and finishes top-right */
  .trim-border-line--top {
    top: 0;
    left: 0;
    width: 100%;
    height: var(--trim-border-width);
    transform: scaleX(0);
    transform-origin: left center;
  }

  /* Bottom: starts from bottom-right and finishes bottom-left */
  .trim-border-line--bottom {
    right: 0;
    bottom: 0;
    width: 100%;
    height: var(--trim-border-width);
    transform: scaleX(0);
    transform-origin: right center;
  }

  /* Left: starts from top-left and finishes bottom-left */
  .trim-border-line--left {
    top: 0;
    left: 0;
    width: var(--trim-border-width);
    height: 100%;
    transform: scaleY(0);
    transform-origin: top center;
  }

  /* Right: starts from bottom-right and finishes top-right */
  .trim-border-line--right {
    right: 0;
    bottom: 0;
    width: var(--trim-border-width);
    height: 100%;
    transform: scaleY(0);
    transform-origin: bottom center;
  }

  /* Active state */
  .trim-border-draw.is-trim-visible .trim-border-line--top,
  .trim-border-draw.is-trim-visible .trim-border-line--bottom {
    transform: scaleX(1);
  }

  .trim-border-draw.is-trim-visible .trim-border-line--left,
  .trim-border-draw.is-trim-visible .trim-border-line--right {
    transform: scaleY(1);
  }

  /* Reduced motion accessibility */
  @media (prefers-reduced-motion: reduce) {
    .trim-border-line {
      transition: none;
    }
  }