/*
 * SomaPlus brand typography — Outfit, everywhere, one definition.
 *
 * Nova ships Nunito Sans in its vendor bundle; this sheet is the single
 * deliberate override (registered in NovaServiceProvider via Nova::style).
 * Outfit is self-hosted as a variable font (weights 100–900) so the
 * dashboard never depends on Google Fonts being reachable from a school
 * office. Absolute font URLs: this CSS is served from /nova-api/styles/,
 * not from /css/.
 */

@font-face {
    font-family: 'Outfit';
    font-style: normal;
    font-weight: 100 900;
    font-display: swap;
    src: url('/fonts/Outfit-Variable-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: 'Outfit';
    font-style: normal;
    font-weight: 100 900;
    font-display: swap;
    src: url('/fonts/Outfit-Variable-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;
}

/* Space Age — the wordmark face. Used ONLY by the logo (config
   nova.brand.logo inlines an SVG whose text asks for it); never in the
   body stack. Shipped as an app asset in /public/fonts. */
@font-face {
    font-family: 'Space Age';
    font-style: normal;
    font-weight: 400;
    font-display: swap;
    src: url('/fonts/SpaceAge.ttf') format('truetype');
}

/* Digits render in the mono face, text in Outfit — the reports convention,
   applied to the whole panel with zero markup changes: this face covers ONLY
   the ten digit codepoints, and sits first in the stack so every number falls
   through to it while letters and punctuation fall through to Outfit.
   DM Mono — the owner's final pick (2026-08-30) after live comparison
   against Spline Sans Mono, JetBrains Mono, IBM Plex Mono and Monaco
   (Monaco rejected: Apple-licensed, undistributable). Identical on every
   machine, and it matches the PDF reports, which already set their figures
   in DM Mono. No bold exists; 500 Medium serves everything semibold up. */
@font-face {
    font-family: 'SomaPlus Digits';
    font-style: normal;
    font-weight: 100 450;
    font-display: swap;
    src: url('/fonts/DMMono-Regular-latin.woff2') format('woff2');
    unicode-range: U+0030-0039;
}

@font-face {
    font-family: 'SomaPlus Digits';
    font-style: normal;
    font-weight: 451 900;
    font-display: swap;
    src: url('/fonts/DMMono-Medium-latin.woff2') format('woff2');
    unicode-range: U+0030-0039;
}


/* Nova's chrome takes its family from body / .font-sans; Tailwind's preflight
   makes form controls inherit. These two rules therefore cascade through the
   entire panel — including Nova components and custom tools — with no
   per-element chasing. */
body,
.font-sans {
    font-family: 'SomaPlus Digits', 'Outfit', 'Nunito Sans', ui-sans-serif,
        system-ui, -apple-system, 'Segoe UI', sans-serif !important;
    /* Outfit renders heavy under macOS subpixel smoothing; antialiased
       brings it back to its true weight. */
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

button,
input,
optgroup,
select,
textarea {
    font-family: inherit;
}

/* Header wordmark: Nova caps the inlined logo at h-6 (24px) but leaves
   its width at the SVG's own 300px attribute — an aspect mismatch, so the
   drawing letterboxes: scaled to ~164px and centered inside a 300px box,
   which reads as mysterious blank space either side of the mark. width:auto
   lets the element take its width from the viewBox ratio instead, so the
   canvas hugs the glyphs at any height. */
svg.somaplus-logo {
    width: auto !important;
}
