/* Lacuna Software's typeface, served from this Server rather than from a font CDN (issue #106).
   Not a preference: an on-premises TrustBridge may be air-gapped, and the page shell already
   refuses fonts.googleapis.com for that reason, as the Scalar reference page refuses its own
   default fonts. A page that waits on a CDN is a page that takes seconds to paint or never does.

   Two files rather than one because Google's subsetting is per script, and the unicode-range
   below is what makes that better than a merged file: a browser fetches latin-ext only when a
   page actually contains a character from it. Both are variable fonts carrying Exo 2's whole
   100-900 weight axis, so every weight the theme asks for comes out of the one file.

   The declared range is that axis and not a narrower one, which is a decision rather than a
   copy. A face's declared range is what CSS clamps to, and it clamps rather than synthesizing —
   so declaring less than the files hold makes any weight outside the declaration render as its
   nearest legal neighbour, at 200 OK, looking almost right. Declaring the whole axis is what
   removes that failure instead of narrowing it. BrandAssetTests reads the range straight out of
   each file's fvar table and fails if this declaration ever exceeds it (issue #161).

   Exo 2 is licensed under the SIL Open Font License 1.1 — see fonts/OFL.txt, which travels with
   the files because the licence requires it to. */

@font-face {
    font-family: 'Exo 2';
    font-style: normal;
    font-weight: 100 900;
    font-display: swap;
    src: url('../fonts/exo2-latin.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: 'Exo 2';
    font-style: normal;
    font-weight: 100 900;
    font-display: swap;
    src: url('../fonts/exo2-latin-ext.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;
}

/* The wordmark: two weights of one word, "Trust" heavy and "Bridge" light (issue #109). Global
   rather than scoped because all three placements need it and two of them are layouts, which a
   component's scoped styles do not reach.

   700/300, which is the brand sheet's own pair. It was 700/400 until issue #161, not because
   anyone wanted 400 but because the faces above were declared across 400-700 and CSS clamps
   rather than synthesizes: `font-weight: 300` rendered identically to 400. The files always
   held the 300 — the declaration was the only thing in the way.

   That is worth knowing because of how it failed. A clamped 300 was invisible beside the front
   door's 700 heading and looked like a two-weight wordmark. The app bar and the signed-out
   header inherit MudBlazor's 500 and 400 heading weights, so there the "light" half came out at
   the weight of the heavy one and the wordmark rendered with no split in it at all. Anything
   that narrows the declaration above brings that straight back, on those two surfaces only.

   Both halves are set here rather than one, so a placement gets the pair whatever the heading
   weight around it happens to be. The Tray renders the same pair, and must move with this one —
   TrayWordmarkTests is what makes that non-optional. And neither class belongs on anything but
   its own half of the word: at 400 a stray use of the light one was invisible, at 300 it is
   thin, which is what Each_wordmark_class_wraps_its_own_half_of_the_word_and_nothing_else is
   for. */
.tb-wordmark-heavy {
    font-weight: 700;
}

.tb-wordmark-light {
    font-weight: 300;
}

/* The drawer's active entry. MudBlazor colours both the label and its 2px end-border from
   --mud-palette-primary; only the border moves to the brand orange here.

   The label deliberately stays navy: an active nav label is small text on a white field, and
   the brand orange measures 3.76:1 there — under the 4.5:1 that WCAG AA asks of body text. The
   border is a UI component rather than text, where the threshold is 3:1 and the orange passes.
   So the entry is marked in the brand colour and still readable, which is the whole point of
   the rule in TrustBridgeTheme.Orange.

   This file is linked after MudBlazor's own stylesheet, which is what lets an equally specific
   selector win. */
.mud-nav-link.active:not(.mud-nav-link-disabled) {
    border-inline-end-color: var(--mud-palette-secondary);
    --mud-ripple-color: var(--mud-palette-secondary);
}
