/* Pieces Tailwind's CDN build cannot express: keyframes and counters. */

@keyframes live-pulse {
    0%   { box-shadow: 0 0 0 0 rgba(0, 94, 196, .45); }
    70%  { box-shadow: 0 0 0 10px rgba(0, 94, 196, 0); }
    100% { box-shadow: 0 0 0 0 rgba(0, 94, 196, 0); }
}
.live-pulse { animation: live-pulse 1.8s infinite; }

@keyframes ring {
    0%   { transform: scale(.4); opacity: .7; }
    100% { transform: scale(1.6); opacity: 0; }
}
.ring { transform-origin: center; transform-box: fill-box; animation: ring 2.4s ease-out infinite; }
.ring2 { animation-delay: 1.2s; }

@media (prefers-reduced-motion: reduce) {
    .live-pulse, .ring { animation: none; }
}

/* Numbered steps on the location-blocked page. */
.steps { counter-reset: step; }
.steps li {
    counter-increment: step;
    display: grid;
    grid-template-columns: 28px minmax(0, 1fr);
    gap: 10px;
    align-items: start;
    font-size: 15px;
    line-height: 1.4;
}
.steps li::before {
    content: counter(step);
    width: 24px;
    height: 24px;
    border-radius: 12px;
    background: #1C2430;
    color: #FFFFFF;
    font-family: 'Source Code Pro', ui-monospace, monospace;
    font-size: 12px;
    font-weight: 500;
    display: flex;
    align-items: center;
    justify-content: center;
}

/* Leaflet stop labels. */
.stop-label {
    font-family: 'Source Sans 3', system-ui, sans-serif;
    font-size: 12px;
    font-weight: 600;
    color: #1C2430;
}

/* Tailwind display utilities otherwise beat the hidden attribute. */
[hidden] { display: none !important; }
