/*
 * GISweaver documentation theme overrides.
 *
 * The brand values here are transcribed from docs/design/tokens.css — the
 * repository's single source of truth for colour and type. Each application
 * carries a BYTE-IDENTICAL copy of that file at src/styles/tokens.css, and
 * scripts/verify_repository_boundary.sh enforces the copies; what is below is
 * a mapped SUBSET, thirteen values written into Material's own --md-*
 * variables, so no gate covers it. Any change to a token in
 * docs/design/tokens.css must be mirrored here by hand. --gw-accent has
 * already moved once ("one stop brighter"), and nothing would have told
 * anybody this site had gone off-brand.
 */

/* ---------------------------------------------------------------------------
 * Inter, self-hosted.
 *
 * The theme used to ask Material to load Inter from Google Fonts, which put a
 * preconnect to fonts.gstatic.com and a stylesheet request to
 * fonts.googleapis.com on every page of a customer-facing site. The rest of
 * this repository has already answered that question: gisweaver-web serves
 * Inter from its own origin because the policy's font-src is 'self'
 * (gisweaver-web/config/csp.ts), docs/THIRD_PARTY_NOTICES.md records Inter as
 * self-hosted, and gisweaver-web/scripts/verify_dist_boundary.mjs asserts the
 * faces are present precisely so a lost copy step cannot ship the system
 * fallback with a green verify.
 *
 * It also fixed a rendering bug. Material's Google Fonts request asks for
 * 300/400/700; the h1 rule below asks for 800, so every page title on this
 * site was drawn faux-bold rather than in Inter 800. The 800 face is now here.
 *
 * The files are the same woff2 instances gisweaver-web ships, copied from
 * gisweaver-web/public/fonts/inter/ into docs/assets/fonts/inter/ with their
 * licence (LICENSE.txt, SIL OFL 1.1) beside them. `theme.font: false` in
 * mkdocs.yml is what stops Material emitting its own font request — not
 * `font.text` alone, which would have left Roboto Mono still coming from
 * Google.
 *
 * Paths are relative to this stylesheet, so the site keeps working if it is
 * ever served under a sub-path.
 * ------------------------------------------------------------------------ */

@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-display: swap;
  font-weight: 400;
  src: url('../assets/fonts/inter/inter-latin-400-normal.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: 'Inter';
  font-style: normal;
  font-display: swap;
  font-weight: 500;
  src: url('../assets/fonts/inter/inter-latin-500-normal.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: 'Inter';
  font-style: normal;
  font-display: swap;
  font-weight: 600;
  src: url('../assets/fonts/inter/inter-latin-600-normal.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: 'Inter';
  font-style: normal;
  font-display: swap;
  font-weight: 700;
  src: url('../assets/fonts/inter/inter-latin-700-normal.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: 'Inter';
  font-style: normal;
  font-display: swap;
  font-weight: 800;
  src: url('../assets/fonts/inter/inter-latin-800-normal.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: 'Inter';
  font-style: italic;
  font-display: swap;
  font-weight: 400;
  src: url('../assets/fonts/inter/inter-latin-400-italic.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: 'Inter';
  font-style: italic;
  font-display: swap;
  font-weight: 700;
  src: url('../assets/fonts/inter/inter-latin-700-italic.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;
}

/* latin-ext */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-display: swap;
  font-weight: 400;
  src: url('../assets/fonts/inter/inter-latin-ext-400-normal.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;
}

@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-display: swap;
  font-weight: 500;
  src: url('../assets/fonts/inter/inter-latin-ext-500-normal.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;
}

@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-display: swap;
  font-weight: 600;
  src: url('../assets/fonts/inter/inter-latin-ext-600-normal.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;
}

@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-display: swap;
  font-weight: 700;
  src: url('../assets/fonts/inter/inter-latin-ext-700-normal.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;
}

@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-display: swap;
  font-weight: 800;
  src: url('../assets/fonts/inter/inter-latin-ext-800-normal.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;
}

@font-face {
  font-family: 'Inter';
  font-style: italic;
  font-display: swap;
  font-weight: 400;
  src: url('../assets/fonts/inter/inter-latin-ext-400-italic.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;
}

@font-face {
  font-family: 'Inter';
  font-style: italic;
  font-display: swap;
  font-weight: 700;
  src: url('../assets/fonts/inter/inter-latin-ext-700-italic.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;
}

/* Inter first, then the same fallback ladder the product's --gw-font-sans
 * uses, so a page renders in something sane before the faces arrive. */
:root {
  --md-text-font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI',
    Roboto, 'Helvetica Neue', Arial, sans-serif;
}

:root {
  /* Ground and ink from the light palette. */
  --md-default-bg-color: #f1f4f3;      /* --gw-bg (paper-200) */
  --md-typeset-color: #0f1a17;         /* --gw-text (ink-900) */
  --md-typeset-a-color: #0b5f59;       /* --gw-accent-deep: teal-700 for text links */

  /* Accent ladder (light): --gw-accent = teal-600. */
  --md-primary-fg-color: #0f766e;        /* teal-600 */
  --md-primary-fg-color--light: #14918a; /* teal-500 (hover) */
  --md-primary-fg-color--dark: #0b5f59;  /* teal-700 */
  --md-accent-fg-color: #0b5f59;
}

/* Dark: --gw-accent = #34b3a8. */
[data-md-color-scheme="slate"] {
  --md-primary-fg-color: #34b3a8;
  --md-primary-fg-color--light: #42c7bb;
  --md-primary-fg-color--dark: #2a9a90;
  --md-accent-fg-color: #42c7bb;
  --md-default-bg-color: #0f1513;      /* --gw-bg (dark) */
  --md-typeset-color: #e6ebe9;         /* --gw-text (dark) */
  --md-typeset-a-color: #42c7bb;       /* --gw-accent-on-soft (dark) */
}

/* Headings carry the product's tight tracking and heavy page-title weight.
 * The 800 face is shipped above, so this is now a real weight rather than a
 * request the browser had to fake. */
.md-typeset h1 {
  font-weight: 800;            /* --gw-weight-heavy */
  letter-spacing: -0.02em;     /* --gw-tracking-tight */
}
.md-typeset h2,
.md-typeset h3 {
  letter-spacing: -0.02em;
}
