/* Manrope, the Vitals typeface (visual baseline D-V7). Every layout names it first, but the app never
   loaded it, so it rendered in Segoe UI or whatever the machine had. These are the same two subsets the
   report embeds (ReportFonts.cs), served as files: one variable font per subset covers every weight, and
   the unicode ranges match, so the browser fetches the extended subset only when a page needs it.
   The file names carry the first 8 hex digits of the content's SHA-256, so /fonts/* is cached as immutable
   (Program.cs) and a changed font is a new URL. */
@font-face {
    font-family: 'Manrope'; font-style: normal; font-weight: 200 800; font-display: swap;
    src: url('fonts/manrope-latin.a30ddcd3.woff2') format('woff2');
    unicode-range: U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face {
    font-family: 'Manrope'; font-style: normal; font-weight: 200 800; font-display: swap;
    src: url('fonts/manrope-latin-ext.3911b66d.woff2') format('woff2');
    unicode-range: U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}

html, body {
    margin: 0;
    font-family: Manrope, 'Segoe UI', system-ui, -apple-system, sans-serif;
}

h1:focus {
    outline: none;
}

/* Blazor EditForm validation cues */
.valid.modified:not([type=checkbox]) {
    outline: 1px solid var(--progress);
}

.invalid {
    outline: 1px solid var(--error);
}

.validation-message {
    color: var(--error);
}

/* Fallback shown if a component throws inside an error boundary */
.blazor-error-boundary {
    background: var(--tint-error);
    border-left: 3px solid var(--error);
    padding: var(--s4);
    color: var(--text);
}

    .blazor-error-boundary::after {
        content: "An error has occurred.";
    }


/* Blazor's circuit-failure banner.

   Global rather than scoped to one layout: it was defined only in MainLayout.razor.css, which
   CSS isolation limits to MainLayout, so the admin pages rendered the element with no styles at
   all — permanently visible, telling the only person who uses them that everything is broken.
   There is one banner, so there is one rule for it. */
#blazor-error-ui {
    display: none;
    position: fixed;
    left: 0; right: 0; bottom: 0;
    z-index: 1000;
    box-sizing: border-box;
    padding: 14px 44px 14px 20px;
    font: var(--fw-body) var(--fs-control)/1.5 var(--font);
    color: var(--text);
    background: var(--raised);
    border-top: 2px solid var(--error);
    box-shadow: var(--shadow-overlay);
}
#blazor-error-ui a { color: var(--text); font-weight: 700; }
#blazor-error-ui .dismiss { position: absolute; right: 16px; top: 12px; cursor: pointer; }
