/* content stack rows — animated icon tiles (TW w-20 h-20 has no BS util) */
.content-stack-rows__icon-tile {
    width: 5rem;
    height: 5rem;
}

.content-stack-rows__icon-pulse {
    animation: content-stack-rows-pulse 3.5s ease-in-out infinite;
}

.content-stack-rows__icon-tile {
    animation: content-stack-rows-float 6s ease-in-out infinite;
}

.content-stack-rows__icon-glyph {
    animation: content-stack-rows-tilt 5s ease-in-out infinite;
    transform-origin: center;
}

.content-stack-rows__icon-slot--0 .content-stack-rows__icon-pulse {
    animation-delay: 0s;
}

.content-stack-rows__icon-slot--0 .content-stack-rows__icon-tile {
    animation-delay: 0s;
}

.content-stack-rows__icon-slot--0 .content-stack-rows__icon-glyph {
    animation-delay: 0.2s;
}

.content-stack-rows__icon-slot--1 .content-stack-rows__icon-pulse {
    animation-delay: 0.8s;
}

.content-stack-rows__icon-slot--1 .content-stack-rows__icon-tile {
    animation-delay: 0.8s;
}

.content-stack-rows__icon-slot--1 .content-stack-rows__icon-glyph {
    animation-delay: 1s;
}

.content-stack-rows__icon-slot--2 .content-stack-rows__icon-pulse {
    animation-delay: 1.6s;
}

.content-stack-rows__icon-slot--2 .content-stack-rows__icon-tile {
    animation-delay: 1.6s;
}

.content-stack-rows__icon-slot--2 .content-stack-rows__icon-glyph {
    animation-delay: 1.8s;
}

@keyframes content-stack-rows-float {
    0%,
    100% {
        transform: translateY(0);
    }

    50% {
        transform: translateY(-0.35rem);
    }
}

@keyframes content-stack-rows-pulse {
    0%,
    100% {
        transform: scale(1);
        opacity: 0.55;
    }

    50% {
        transform: scale(1.14);
        opacity: 0.2;
    }
}

@keyframes content-stack-rows-tilt {
    0%,
    100% {
        transform: rotate(0deg) scale(1);
    }

    50% {
        transform: rotate(-6deg) scale(1.06);
    }
}

@media (prefers-reduced-motion: reduce) {
    .content-stack-rows__icon-pulse,
    .content-stack-rows__icon-tile,
    .content-stack-rows__icon-glyph {
        animation: none;
    }
}

.glossary-chevron {
    transition: transform 0.3s ease;
}

.glossary-item[open] .glossary-chevron {
    transform: rotate(180deg);
}

.dispatch-stack-media__frame {
    height: 12rem;
}

.dispatch-stack-media__col {
    min-width: 0;
}

/* BS-only gradient (TW uses @sem layer) */
.dispatch-stack-media__canvas-bg {
    background: linear-gradient(
        to bottom right,
        color-mix(in srgb, var(--bs-primary) 50%, black),
        color-mix(in srgb, var(--bs-primary) 38%, black),
        var(--bs-primary)
    );
}

.dark .dispatch-stack-media__canvas-bg,
[data-bs-theme="dark"] .dispatch-stack-media__canvas-bg {
    background: linear-gradient(
        to bottom right,
        color-mix(in srgb, var(--bs-primary) 10%, black),
        color-mix(in srgb, var(--bs-primary) 24%, black),
        color-mix(in srgb, var(--bs-primary) 40%, black)
    );
}

.dispatch-stack-media__svg {
    display: block;
}

.dispatch-stack-media__orb {
    transform-origin: center;
    transform-box: fill-box;
}

.dispatch-stack-media__orb--a {
    animation: dispatch-stack-media-drift-a 8s ease-in-out infinite;
}

.dispatch-stack-media__orb--b {
    animation: dispatch-stack-media-drift-b 10s ease-in-out infinite;
    animation-delay: 1s;
}

.dispatch-stack-media__wave {
    stroke-linecap: round;
    stroke-linejoin: round;
    transform-origin: center;
}

.dispatch-stack-media__wave--a {
    animation: dispatch-stack-media-wave-slide 12s linear infinite;
}

.dispatch-stack-media__wave--b {
    animation: dispatch-stack-media-wave-slide 16s linear infinite reverse;
    animation-delay: 1.5s;
}

.dispatch-stack-media__stage--1 .dispatch-stack-media__orb--a {
    animation-delay: 0.6s;
}

.dispatch-stack-media__stage--1 .dispatch-stack-media__wave--a {
    animation-duration: 14s;
}

@keyframes dispatch-stack-media-drift-a {
    0%,
    100% {
        transform: translate(0, 0) scale(1);
    }

    50% {
        transform: translate(10px, -8px) scale(1.07);
    }
}

@keyframes dispatch-stack-media-drift-b {
    0%,
    100% {
        transform: translate(0, 0) scale(1);
    }

    50% {
        transform: translate(-12px, 6px) scale(1.05);
    }
}

@keyframes dispatch-stack-media-wave-slide {
    0% {
        transform: translateX(0);
    }

    100% {
        transform: translateX(-36px);
    }
}

@media (prefers-reduced-motion: reduce) {
    .dispatch-stack-media__orb--a,
    .dispatch-stack-media__orb--b,
    .dispatch-stack-media__wave--a,
    .dispatch-stack-media__wave--b {
        animation: none;
    }
}

