/* ============================================================
   site.css
   Application-specific styles that live alongside the Tailwind
   compiled output (app.css). Keep only things that Tailwind
   utilities can't express cleanly — toast positioning, blazor
   error UI overrides, keyframe animations, etc.
   ============================================================ */

/* Blazor's default unhandled-error banner. We leave it styled so
   it's visible but unobtrusive — hiding it entirely silently swallows
   real runtime errors and makes debugging painful in production too.
   If a deployment truly needs it hidden, uncomment the rule below. */
/*
#blazor-error-ui {
    display: none !important;
}
*/

#blazor-error-ui {
    background: #fff3cd;
    bottom: 0;
    box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2);
    display: none;
    left: 0;
    padding: 0.6rem 1.25rem 0.7rem 1.25rem;
    position: fixed;
    width: 100%;
    z-index: 1000;
}

    #blazor-error-ui .dismiss {
        cursor: pointer;
        position: absolute;
        right: 0.75rem;
        top: 0.5rem;
    }

.red_message {
    color: #ff0000;
    font-weight: bold;
}

/* Toast system — a fixed-position container in the top-right that
   our ToastContainer.razor component renders toasts into. */
#toast-root {
    position: fixed;
    top: 1.5rem;
    right: 1.5rem;
    z-index: 9999;
    display: flex;
    flex-direction: column;
    gap: 0.625rem;
    pointer-events: none;
    max-width: 22rem;
}

#toast-root > * {
    pointer-events: auto;
}

@keyframes slideInRight {
    from {
        transform: translateX(20px);
        opacity: 0;
    }
    to {
        transform: translateX(0);
        opacity: 1;
    }
}

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

/* Loading spinner for the initial app bootstrap (see index.html). */
.loading-progress {
    position: relative;
    display: block;
    width: 8rem;
    height: 8rem;
    margin: 20vh auto 1rem auto;
}
