/* ===== Zumo — Minimal CSS (Tailwind handles the rest) ===== */

/* Animations */
@keyframes fadeSlideIn {
    from { opacity: 0; transform: translateY(8px); }
    to { opacity: 1; transform: translateY(0); }
}

@keyframes spin {
    to { transform: rotate(360deg); }
}

.result-row-enter {
    animation: fadeSlideIn 0.3s ease-out;
}

/* HTMX Loading Indicators */
.htmx-indicator {
    display: none;
    opacity: 0;
    transition: opacity 200ms ease-in;
}

.htmx-request .htmx-indicator,
.htmx-request.htmx-indicator {
    display: inline;
    opacity: 1;
}

/* SSE Pipeline Spinner */
.stage-spinner {
    width: 16px;
    height: 16px;
    border: 2px solid #e2e8f0;
    border-top-color: #3B82F6;
    border-radius: 50%;
    animation: spin 0.8s linear infinite;
    flex-shrink: 0;
}

.stage-spinner.done,
#elapsed-timer.done {
    display: none;
}

/* Line clamping (Tailwind CDN may not include these) */
.line-clamp-1 {
    display: -webkit-box;
    -webkit-line-clamp: 1;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.line-clamp-2 {
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

/* Tabular numbers for timers/stats */
.tabular-nums {
    font-variant-numeric: tabular-nums;
}
