/* Customer Portal — mobile-first public surface. Page-specific styling lives in
   co-located CSS-isolation files; this file holds only app-wide resets. */

html, body {
    min-height: 100vh;
    margin: 0;
    padding: 0;
    background: var(--mud-palette-background, #fff);
}

html[data-bs-theme="dark"],
html[data-bs-theme="dark"] body {
    background: #1a1a1a;
    color: #e8e8e8;
}

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

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

/* Shared status-pill pattern used across the authenticated membership portal
   (Dashboard, Estimates, Invoices) — kept here rather than per-page CSS isolation
   since CSS isolation doesn't share styles across component files. */
.portal-status-badge {
    align-items: center;
    border: 1px solid transparent;
    border-radius: 999px;
    box-sizing: border-box;
    display: inline-flex;
    font-size: 0.72rem;
    font-weight: 700;
    line-height: 1.4;
    padding: 2px 10px;
    white-space: nowrap;
}

.portal-status-badge--active {
    background: color-mix(in srgb, #16a34a 12%, transparent);
    border-color: color-mix(in srgb, #16a34a 40%, transparent);
    color: #15803d;
}

.portal-status-badge--warning {
    background: color-mix(in srgb, #f59e0b 14%, transparent);
    border-color: color-mix(in srgb, #f59e0b 40%, transparent);
    color: #b45309;
}

.portal-status-badge--error {
    background: color-mix(in srgb, #dc2626 14%, transparent);
    border-color: color-mix(in srgb, #dc2626 40%, transparent);
    color: #b91c1c;
}

.portal-status-badge--default {
    background: color-mix(in srgb, #6b7280 12%, transparent);
    border-color: color-mix(in srgb, #6b7280 40%, transparent);
    color: #374151;
}
