/* Progress bars */
.progress-bar {
    transition: width 0.5s ease-in-out;
}

/* HTMX loading indicator */
.htmx-indicator {
    display: none;
}
.htmx-request .htmx-indicator,
.htmx-request.htmx-indicator {
    display: inline-block;
}

/* Spinner */
@keyframes spin {
    to { transform: rotate(360deg); }
}
.spinner {
    animation: spin 1s linear infinite;
    border: 2px solid transparent;
    border-top-color: #89b4fa;
    border-radius: 50%;
    width: 16px;
    height: 16px;
    display: inline-block;
}

/* Log viewer */
.log-viewer {
    font-family: 'Courier New', monospace;
    font-size: 0.75rem;
    line-height: 1.4;
    white-space: pre-wrap;
    word-break: break-all;
    max-height: 400px;
    overflow-y: auto;
}

/* Scrollbar dark */
::-webkit-scrollbar { width: 8px; }
::-webkit-scrollbar-track { background: #1e1e2e; }
::-webkit-scrollbar-thumb { background: #45475a; border-radius: 4px; }
::-webkit-scrollbar-thumb:hover { background: #585b70; }

/* Card hover */
.card-hover {
    transition: border-color 0.2s;
}
.card-hover:hover {
    border-color: #89b4fa40;
}

/* Fade in for HTMX swaps */
.htmx-added {
    opacity: 0;
}
.htmx-settling {
    opacity: 1;
    transition: opacity 0.3s ease-in;
}
