/* Polices auto-hébergées (SIL OFL 1.1, licences dans /fonts/) : versions
   variables de Google Fonts, sous-ensembles latin et latin étendu. Le second
   n'est téléchargé que si la page contient un de ses caractères. Avant :
   feuille fonts.googleapis.com bloquante + deux connexions à établir.
   Servies avec un cache d'un an (vercel.json) : pour changer un fichier,
   changer aussi son nom. */
@font-face {
    font-family: 'Montserrat';
    font-style: normal;
    font-weight: 100 900;
    font-display: swap;
    src: url(/fonts/montserrat-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-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
    font-family: 'Montserrat';
    font-style: normal;
    font-weight: 100 900;
    font-display: swap;
    src: url(/fonts/montserrat-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: 'Montserrat';
    font-style: italic;
    font-weight: 100 900;
    font-display: swap;
    src: url(/fonts/montserrat-italic-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-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
    font-family: 'Montserrat';
    font-style: italic;
    font-weight: 100 900;
    font-display: swap;
    src: url(/fonts/montserrat-italic-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: 'Teko';
    font-style: normal;
    font-weight: 300 700;
    font-display: swap;
    src: url(/fonts/teko-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-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
    font-family: 'Teko';
    font-style: normal;
    font-weight: 300 700;
    font-display: swap;
    src: url(/fonts/teko-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;
}

/* ============================================================
   DESIGN — échelle de texte, styles de texte et icônes
   Chargé avant style.css / paris.css sur toutes les pages.
   Guide : docs/DESIGN.md · aperçu local : /styleguide.html
============================================================ */
:root {
    /* Échelle de tailles : toute font-size du site passe par une de ces
       variables (tests/design.test.js refuse une valeur en dur). */
    --fs-3xs:  0.62rem;   /* micro-badges, onglets de la barre du bas */
    --fs-2xs:  0.72rem;   /* étiquettes en capitales, pastilles */
    --fs-xs:   0.8rem;    /* légendes, en-têtes de tableau */
    --fs-sm:   0.85rem;   /* texte secondaire, boutons compacts */
    --fs-md:   0.9rem;    /* texte des cartes et des listes */
    --fs-base: 1rem;      /* texte courant */
    --fs-lg:   1.15rem;   /* titres de carte */
    --fs-xl:   1.3rem;    /* petits chiffres, icônes de boutons */
    --fs-2xl:  1.45rem;   /* noms en vedette, positions */
    --fs-3xl:  1.6rem;    /* titres de section */
    --fs-4xl:  1.8rem;    /* titres de modale */
    --fs-5xl:  2.3rem;    /* titres d'intro, grands noms */
    --fs-6xl:  2.8rem;    /* grands chiffres (mobile) */
    --fs-7xl:  3.5rem;    /* titre de page, chiffres géants */
    --fs-deco: 5rem;      /* icônes décoratives en filigrane */
    --fs-hero: clamp(2.6rem, 9vw, 4.2rem); /* titre de la page maintenance */
}

/* ============================================================
   STYLES DE TEXTE (rôles). La couleur s'ajoute à côté si besoin.
============================================================ */
.t-display  { font-size: var(--fs-7xl); font-weight: 800; text-transform: uppercase; letter-spacing: -1.5px; line-height: 1; }
.t-title    { font-size: var(--fs-3xl); font-weight: 800; text-transform: uppercase; letter-spacing: -0.5px; }
.t-heading  { font-size: var(--fs-lg); font-weight: 800; text-transform: uppercase; letter-spacing: 0.5px; }
.t-label    { font-size: var(--fs-xs); font-weight: 800; text-transform: uppercase; letter-spacing: 0.5px; }
.t-body     { font-size: var(--fs-base); font-weight: 500; line-height: 1.6; }
.t-small    { font-size: var(--fs-sm); font-weight: 600; }
.t-caption  { font-size: var(--fs-xs); font-weight: 600; color: var(--gray, #636977); }
.t-number   { font-family: var(--font-numbers); font-size: var(--fs-xl); font-weight: 600; line-height: 1; }
.t-number-lg { font-family: var(--font-numbers); font-size: var(--fs-7xl); font-weight: 600; line-height: 1; }

/* Message d'erreur de chargement (Firestore injoignable…) */
.load-error { grid-column: 1 / -1; text-align: center; padding: 20px; color: var(--f1-red, #ff1801); font-weight: 700; }

/* ============================================================
   ICÔNES (Phosphor, sprite public/icons/phosphor.svg)
   Prennent la taille et la couleur du texte autour.
============================================================ */
.ic { width: 1.15em; height: 1.15em; fill: currentColor; vertical-align: -0.2em; flex: none; margin-inline-end: 0.35em; }
.ic-only { margin-inline-end: 0; }
.ic-after { margin-inline-end: 0; margin-inline-start: 0.35em; }
.medal-gold   { color: #f1c40f; }
.medal-silver { color: #aab4c0; }
.medal-bronze { color: #cd7f32; }
