/* public/shared/ui/tokens.css — source unique des couleurs, espacements, typographie. */
/* Chemins RELATIFS : servie sous /shared/ui/ (consoles), la feuille charge /fonts/… ; servie sous
   /vitrine/shared/ui/ (vitrine de l'apex), elle charge /vitrine/fonts/… — une seule source. */
@font-face { font-family: 'Inter'; font-weight: 400; font-display: swap; src: url('../../fonts/Inter-Regular.woff2') format('woff2'); }
@font-face { font-family: 'Inter'; font-weight: 500; font-display: swap; src: url('../../fonts/Inter-Medium.woff2') format('woff2'); }
@font-face { font-family: 'Inter'; font-weight: 600; font-display: swap; src: url('../../fonts/Inter-SemiBold.woff2') format('woff2'); }
@font-face { font-family: 'Inter'; font-weight: 700; font-display: swap; src: url('../../fonts/Inter-Bold.woff2') format('woff2'); }
/* L'Atlas (spec 2026-10-26 § 5) : trois familles, sous-ensemble latin (le français, l'euro et la typographie compris). */
@font-face { font-family: 'Archivo'; font-style: normal; font-weight: 400 800; font-stretch: 62% 125%; font-display: swap; src: url('../../fonts/Archivo-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: 'Newsreader'; font-style: italic; font-weight: 400 600; font-display: swap; src: url('../../fonts/Newsreader-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: 'Chivo Mono'; font-style: normal; font-weight: 400 600; font-display: swap; src: url('../../fonts/ChivoMono-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; }

:root {
  --bg: #0b1220; --panel: #111a2e; --panel-2: #172238; --border: #24314d;
  --text: #e6eaf2; --muted: #93a0b8;
  --ok: #22c55e; --warn: #f59e0b; --bad: #ef4444; --info: #38bdf8; --brand: #3b82f6; --accent: #38bdf8;
  --radius: 10px; --radius-sm: 6px; --shadow: 0 10px 30px rgba(0,0,0,.35);
  --space-1: 4px; --space-2: 8px; --space-3: 12px; --space-4: 16px; --space-5: 24px; --space-6: 32px; --space-7: 48px; --space-8: 64px;
  --font-1: 12px; --font-2: 13px; --font-3: 14px; --font-4: 16px; --font-5: 20px; --font-6: 28px;
  /* Tailles d'affichage de la vitrine : titres et chiffre horaire. */
  --font-7: 40px; --font-8: 60px;
  --font-family: 'Inter', system-ui, -apple-system, 'Segoe UI', Roboto, Arial, sans-serif;
  --on-brand: #ffffff;
  /* Fond d'un bouton plein portant du texte --on-brand : 4,5:1 au moins dans les deux thèmes
     (--brand sombre n'atteint que 3,7:1 sous du blanc). Largeur de page de la vitrine. */
  --brand-solid: #2563eb; --page-max: 1160px; --radius-lg: 16px; --target-min: 44px;
  /* Alias de compatibilité : --good, que lisent encore les pages accept-invitation et reset-password ;
     --panel2 et --purple ne sont lus nulle part ailleurs. */
  --good: var(--ok); --panel2: var(--panel-2); --purple: #a855f7;
  color-scheme: dark;
}
:root[data-theme="light"] {
  --bg: #f5f7fb; --panel: #ffffff; --panel-2: #eef2f8; --border: #d9e0ec;
  --text: #0f172a; --muted: #5b6577;
  --ok: #16a34a; --warn: #d97706; --bad: #dc2626; --info: #0284c7; --brand: #2563eb; --accent: #0284c7;
  --radius: 10px; --radius-sm: 6px; --shadow: 0 10px 30px rgba(15,23,42,.10);
  --space-1: 4px; --space-2: 8px; --space-3: 12px; --space-4: 16px; --space-5: 24px; --space-6: 32px; --space-7: 48px; --space-8: 64px;
  --font-1: 12px; --font-2: 13px; --font-3: 14px; --font-4: 16px; --font-5: 20px; --font-6: 28px;
  --font-7: 40px; --font-8: 60px;
  --on-brand: #ffffff;
  --brand-solid: #1d4ed8; --page-max: 1160px; --radius-lg: 16px; --target-min: 44px;
  --good: var(--ok); --panel2: var(--panel-2); --purple: #7c3aed;
  color-scheme: light;
}
html, body { margin: 0; background: var(--bg); color: var(--text); font-family: var(--font-family); font-size: var(--font-3); }
* { box-sizing: border-box; }
/* La règle d'agent utilisateur `[hidden] {
   display: none }` a la spécificité la plus faible qui soit : n'importe
   quelle règle d'auteur posant `display:` sur le même élément (une pastille
   en `inline-block`, un menu en `flex`) la bat, et l'attribut `hidden`
   n'a alors plus AUCUN effet dans un vrai navigateur — bug invisible sous
   jsdom, qui n'applique pas de feuille d'agent utilisateur. Cette règle
   globale rend `el.hidden = true` fiable pour tout composant, présent et
   futur. */
[hidden] { display: none !important; }
a { color: var(--brand); }

/* L'Atlas (spec 2026-10-26 § 5) — la peau de l'espace, posée par <html data-skin="atlas"> quand l'espace l'active.
   Le jour par défaut, la nuit quand la personne a choisi le thème sombre (même clé `obelisk.theme` qu'aujourd'hui). La
   console n'a pas cet attribut : elle garde les jetons ci-dessus. En fin de fichier : à spécificité égale, il l'emporte
   sur [data-theme="light"]. Une couleur, un sens : `--live` agit et dit le direct, `--money` ne dit que l'argent. */
:root[data-skin="atlas"] {
  --bg: #EEF0EA; --panel: #F8F9F5; --panel-2: #E3E6DD; --border: #7C857B; --rule: #15201B;
  --text: #15201B; --muted: #4A554E;
  --ok: #15201B; --warn: #BE2F1D; --bad: #BE2F1D; --info: #4A554E;
  --brand: #BE2F1D; --brand-solid: #BE2F1D; --on-brand: #FFFFFF; --accent: #BE2F1D;
  --live: #BE2F1D; --money: #8C5A0B; --hatch: #F1EBDD;
  --radius: 3px; --radius-sm: 2px; --radius-lg: 3px; --shadow: none; --line: 1.5px;
  --font-family: 'Archivo', system-ui, -apple-system, 'Segoe UI', Roboto, Arial, sans-serif;
  --font-place: 'Newsreader', Georgia, 'Times New Roman', serif;
  --font-mono: 'Chivo Mono', ui-monospace, 'SFMono-Regular', Menlo, Consolas, monospace;
  --map-0: #E6E9E1; --map-1: #D9DED2; --map-2: #C7D1C2; --map-3: #B2C1AE; --map-4: #9DB09A; --map-edge: #4F5951;
  color-scheme: light;
}
:root[data-skin="atlas"][data-theme="dark"] {
  --bg: #101820; --panel: #16212C; --panel-2: #1B2938; --border: #62778C; --rule: #E7ECF0;
  --text: #E7ECF0; --muted: #9FB0BF;
  --ok: #E7ECF0; --warn: #FF6A4D; --bad: #FF6A4D; --info: #9FB0BF;
  --brand: #FF6A4D; --brand-solid: #FF6A4D; --on-brand: #1A0A06; --accent: #FF6A4D;
  --live: #FF6A4D; --money: #E8A93E; --hatch: #2A2414;
  --map-0: #16212C; --map-1: #1B2938; --map-2: #213246; --map-3: #283D55; --map-4: #304A66; --map-edge: #8FA3B6;
  color-scheme: dark;
}
