/* ── Blazor loading ─────────────────────────────────── */
.loading-progress {
    display: block;
    width: 4rem;
    height: 4rem;
    margin: 0 auto;
}
.loading-progress circle {
    fill: none;
    stroke: #e5e7eb;
    stroke-width: 0.5rem;
    transform-origin: 50% 50%;
    transform: rotate(-90deg);
}
.loading-progress circle:last-child {
    stroke: #111827;
    stroke-dasharray: calc(3.141 * var(--blazor-load-percentage, 0%) * 0.8), 500%;
    transition: stroke-dasharray 0.05s ease-in-out;
}
.loading-progress-text::after {
    content: var(--blazor-load-percentage-text, "Carregando");
}

/* ── Blazor error UI ────────────────────────────────── */
#blazor-error-ui {
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    display: none;
    align-items: center;
    background: #fef2f2;
    border-top: 1px solid #fecaca;
    color: #b91c1c;
    font-size: .875rem;
    padding: .75rem 1.5rem;
    gap: .75rem;
    z-index: 1000;
}
#blazor-error-ui .reload,
#blazor-error-ui .dismiss { color: #b91c1c; text-decoration: underline; cursor: pointer; }
.blazor-error-boundary { background: #dc2626; color: white; padding: 1rem; }
.blazor-error-boundary::after { content: "Ocorreu um erro."; }

/* ── Blazor form validation ─────────────────────────── */
.validation-message {
    color: #ef4444;
    font-size: .75rem;
    margin-top: .25rem;
    display: block;
}
.valid.modified:not([type=checkbox]) { border-color: #22c55e !important; }
.invalid { border-color: #ef4444 !important; }

/* ── Nav active state (Blazor adds "active" to NavLink) */
nav a.active {
    background-color: #111827 !important;
    color: #fff !important;
}
nav a.active svg { color: #fff !important; }
