@keyframes slide-in {
    from { transform: translateX(100%); opacity: 0; }
    to { transform: translateX(0); opacity: 1; }
}

.animate-slide-in {
    animation: slide-in 0.3s ease-out;
}

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

.animate-spin {
    animation: spin 0.8s linear infinite;
}

#blazor-error-ui {
    display: none;
}

#blazor-error-ui.visible {
    display: block;
}

.blazor-error-boundary {
    background-color: #b91c1c;
    padding: 1rem 1rem 1rem 3.7rem;
    color: white;
}

.blazor-error-boundary::after {
    content: "An error has occurred.";
}

.valid.modified:not([type=checkbox]) {
    outline: 2px solid #22c55e;
}

.invalid {
    outline: 2px solid #ef4444;
}

.validation-message {
    color: #ef4444;
    font-size: 0.75rem;
    margin-top: 0.25rem;
}