@keyframes rotateSquare {
    0% { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
}

.intro-pattern-overlay {
    background-image: repeating-linear-gradient(45deg, transparent, transparent 20px, currentColor 20px, currentColor 40px);
    opacity: 0.03;
    top: -20%;
    left: -30%;
    width: 100%;
    height: 100%;
    animation: rotateSquare 20s linear infinite;
}

.intro-pattern-content {
    max-width: 56rem;
}

.services__tile--lift {
  transition: box-shadow 0.3s ease, transform 0.3s ease;
}

.services__tile--lift:hover {
  box-shadow: 0 25px 50px -12px rgb(0 0 0 / 0.25);
}

@media (min-width: 640px) {
  .services__tile--lift:hover {
    transform: scale(1.05);
  }
}

.services__cta--lift {
  transition: filter 0.3s ease, transform 0.3s ease;
}

@media (min-width: 640px) {
  .services__cta--lift:hover {
    transform: scale(1.05);
  }
}

.services__cta--lift:hover {
  filter: brightness(0.92);
}

/* advantages ticker — seamless horizontal marquee (layout/motion only, no colors) */

.advantages-ticker__chip {
    width: 20rem;
}

/* track holds two identical copies; -50% scroll makes the loop seamless */
.advantages-ticker__track {
    width: max-content;
    animation: advantages-ticker-scroll 40s linear infinite;
}

.advantages-ticker__track.is-paused {
    animation-play-state: paused;
}

@keyframes advantages-ticker-scroll {
    from { transform: translateX(0); }
    to { transform: translateX(-50%); }
}

@media (prefers-reduced-motion: reduce) {
    .advantages-ticker__track {
        animation: none;
    }
}

/* process stack — sticky scroll layering, marker, oversized step numbers */
.process-stack__marker {
    width: 0.625rem;
    height: 0.625rem;
}

.process-stack__num {
    font-size: clamp(3.5rem, 11vw, 7.5rem);
    line-height: 0.85;
    letter-spacing: -0.04em;
}

@media (min-width: 768px) {
    .process-stack__slot {
        min-height: min(52vh, 26rem);
    }

    .process-stack__slot:last-child {
        min-height: 0;
    }

    .process-stack__panel {
        position: sticky;
        top: 5rem;
        z-index: calc(var(--stack-index, 0) + 1);
    }
}

/* FAQ v6 — JS hooks */
.guides-solver-content-tucked {
    display: none;
}

.guides-solver-symbol-reveal {
    transform: rotate(180deg);
}

/* Cluster positions */
.guides-solver__cluster-a { top: 4rem; left: 4rem; }
.guides-solver__cluster-b { bottom: 5rem; right: 5rem; }

/* Standalone dot positions and sizes */
.guides-solver__dot-a { top: 33%; left: 3rem; width: 0.5rem; height: 0.5rem; }
.guides-solver__dot-b { top: 66%; right: 4rem; width: 0.75rem; height: 0.75rem; }
.guides-solver__dot-c { top: 25%; right: 33%; width: 0.5rem; height: 0.5rem; }

/* Inner cluster child positions */
.guides-solver__accent--inner-a { top: 1rem; left: 1.5rem; width: 0.75rem; height: 0.75rem; }
.guides-solver__accent--inner-b { top: 2rem; left: 3rem; width: 0.5rem; height: 0.5rem; }
.guides-solver__accent--inner-c { top: -0.5rem; left: 2rem; width: 1rem; height: 1rem; }

/* Decorative lines */
.guides-solver__line-a { top: 0.25rem; left: 0.25rem; width: 1.5rem; height: 0.125rem; transform: rotate(45deg); }
.guides-solver__line-b { top: 1.25rem; left: 1.75rem; width: 2rem; height: 0.125rem; transform: rotate(12deg); }
.guides-solver__line-c { top: -0.75rem; left: -0.5rem; width: 2.5rem; height: 0.125rem; transform: rotate(-12deg); }
.guides-solver__line-d-pos { top: -0.25rem; left: 1rem; width: 1.5rem; height: 0.125rem; transform: rotate(45deg); }

/* Animation delays */
.guides-solver__accent--delay-1 { animation-delay: 0.3s; }
.guides-solver__accent--delay-2 { animation-delay: 0.5s; }
.guides-solver__accent--delay-4 { animation-delay: 1s; }
.guides-solver__accent--delay-5 { animation-delay: 1.3s; }
.guides-solver__accent--delay-6 { animation-delay: 1.6s; }
.guides-solver__accent--delay-7 { animation-delay: 1.8s; }

@keyframes guides-solver-accent-blink-seq {
    0%, 100% { opacity: 1; }
    50%       { opacity: .5; }
}
.guides-solver__accent--blink {
    animation: guides-solver-accent-blink-seq 2s cubic-bezier(.4,0,.6,1) infinite;
}

@keyframes guides-solver-accent-ripple-seq {
    75%, 100% { transform: scale(2); opacity: 0; }
}
.guides-solver__accent--ripple {
    animation: guides-solver-accent-ripple-seq 1s cubic-bezier(0,0,.2,1) infinite;
}

.guides-solver__accent--offset { top: -1.5rem; left: -1rem; }

.guides-solver__handle--glow:hover { transform: scale(1.05); transition: transform .2s ease; }

.guides-solver__symbol--glow:hover { transform: scale(1.1); transition: transform .2s ease; }

