/* guez.io : Rubik sur tous les onglets (prod 2026-10-24, validée via la preview admin rubik-all).
   Liée sur toutes les pages par renderFooterScrollAssets() (server/nav.js).
   Mêmes fichiers woff2 que fonts.css (axe wght 300..900), famille 'Rubik Site' isolée : la face Rubik 500..900 de fonts.css n'est pas touchée.
   Corps 400, secondaire 500, ex-monospace 600 tabulaire, titres h1-h3 et noms 700, scores 800. Mono gardé : code/pre/kbd/samp, fiche RESI, log de chargement /player. */
@font-face {
  font-family: 'Rubik Site';
  font-style: normal;
  font-weight: 300 900;
  font-display: swap;
  src: url('/assets/fonts/rubik-latin-ext-var.woff2?v=20261024r') 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: 'Rubik Site';
  font-style: normal;
  font-weight: 300 900;
  font-display: swap;
  src: url('/assets/fonts/rubik-latin-var.woff2?v=20261024r') 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;
}
:root {
  --gz-font: 'Rubik Site', 'Rubik', 'Inter', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
  --gz-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, 'Liberation Mono', monospace;
  --font-body: var(--gz-font);
  --font-display: var(--gz-font);
  --wm-body: var(--gz-font);
  --wm-display: var(--gz-font);
}

/* 1. Famille : partout, sauf icônes (Font Awesome) et vrai monospace */
html, body { font-family: var(--gz-font) !important; font-weight: 400; }
body :where(*:not(i, .fa, .fas, .far, .fab, [class*="fa-"])) { font-family: var(--gz-font) !important; }
body code, body pre, body kbd, body samp,
body .resi-fiche, body .resi-fiche *,
body .player-loading-script-log, body .player-loading-script-log *,
body .no-log-v-mono, body [class*="demo-v"] code { font-family: var(--gz-mono) !important; }

/* 2. Chiffres : ex-monospace et tableaux en Rubik tabulaire */
body .font-mono, body .tabular-nums, body td, body th, body time,
body [class*="score"], body [class*="Score"], body [class*="stat"], body [class*="count"],
body .guez-twitch-ticker { font-variant-numeric: tabular-nums; }
body .font-mono:not(.font-normal):not(.font-medium):not(.font-bold):not(.font-extrabold):not(.font-black) { font-weight: 600; letter-spacing: 0; }

/* 3. Hiérarchie : titres et noms 700, scores 800, secondaire 500 */
body h1, body h2, body h3 { font-weight: 700 !important; letter-spacing: -0.005em; }
body .player-name-link, body [class*="player-name"], body [class*="char-name"], body .guez-twitch-ticker-vip { font-weight: 700; }
body [class*="score-value"], body [class*="score-big"], body .rio-score, body #tablebody td.font-mono { font-weight: 800; }
body small,
body :is(.text-xs, .text-zinc-400, .text-zinc-500, .text-gray-400, .text-gray-500):not(.font-semibold):not(.font-bold):not(.font-extrabold):not(.font-black):not(.font-mono) { font-weight: 500; }
body :is(button, .btn, nav a, label, th) { letter-spacing: 0; }

/* 4. /lfg : la barre de filtres (rôles, activité, niveau de résilience) tient sur une ligne en Rubik sur desktop.
   Rubik est un peu plus large que la police système : -2px de marge interne par puce suffit (8 puces, ~32px gagnés).
   Doit battre « body:has(.guez-rail) .avail-role-chip { padding: 0 12px !important } » du layout rail : même !important, spécificité plus haute. */
@media (min-width: 768px) {
  body:has(.guez-rail) .avail-browse-filters__bar :is(.avail-role-chip, .avail-browse-activity-chip),
  body .avail-browse-filters__bar :is(.avail-role-chip, .avail-browse-activity-chip) { padding-left: 10px !important; padding-right: 10px !important; }
  /* si la largeur manque (fenêtre étroite), le bloc « Niveau de résilience + Tous » passe entier à la ligne au lieu de se casser */
  body .avail-browse-filters__bar > .avail-browse-filters__row--resi { flex-shrink: 0; flex-wrap: nowrap; }
  body .avail-browse-filters__row--resi > .avail-browse-filters__label { white-space: nowrap; }
}
