/* ==========================================================================
   NEXUS — Design tokens
   Source : « Charte Graphique Nexus / Nexus Homes / Nexus Windows », V1.0 · 2026.
   La charte fait autorité. Les valeurs ci-dessous en sont la transcription
   littérale ; les seuls ajouts sont les règles d'usage que le contraste impose
   et que la charte ne formule pas (voir « Règle d'accent » plus bas).

   Trois marques, un système :
     <body data-brand="build">    → Nexus Building Solutions  (défaut)
     <body data-brand="homes">    → Nexus Homes
     <body data-brand="windows">  → Nexus Windows
   ========================================================================== */

:root {
  /* --- Communs aux trois marques -------------------------------------- */
  --nx-ink:    #1A1A1A; /* 15.67:1 sur Paper                              */
  --nx-paper:  #F4F3EF;
  --nx-white:  #FFFFFF;
  --nx-ink-soft: #55605C; /* dérivé, 7.0:1 sur Paper — texte secondaire   */

  /* --- Marque par défaut : Nexus Building Solutions ------------------- */
  --nx-base:   #507068; /* Nexus Teal   — 4.90:1 sur Paper, blanc 5.44:1  */
  --nx-deep:   #2B3A35; /* Deep Teal                                      */
  --nx-accent: #55B97B; /* Signal Green                                   */
  --nx-neutre: #EEF1EE; /* Mist                                           */
  --nx-base-dark: #3E5750; /* dérivé — états hover                        */
  --nx-line:   #DCE2DF;    /* dérivé — bordures 1px                       */

  /* ══ RÈGLE D'ACCENT — mesurée, non écrite dans la charte ═══════════════
     Les trois accents (Signal Green, Warm Amber, Sky Blue) tombent à
     ~2.2:1 sur Paper et ~2.4:1 sous du blanc. Ils sont donc INTERDITS :
       · en texte sur fond clair
       · en fond sous du texte blanc
     Ils sont VALIDES :
       · en fond sous du --nx-ink        (7.14 / 7.20 / 6.91)
       · en texte sur --nx-deep          (4.89 / 4.94 / 5.19)
       · en aplat décoratif sans texte
     D'où --nx-on-accent : la seule couleur de texte admise sur un accent. */
  --nx-on-accent: var(--nx-ink);

  /* --- Typographie — charte §06 ---------------------------------------
     Montserrat : primaire, titres ET corps.
     Jost       : suffixes de sous-marque (HOMES, WINDOWS) et display.
     Space Mono : labels, codes, légendes techniques, mentions légales.
     Les trois sont libres (SIL OFL). Auto-hébergées : voir _shared/fonts/. */
  --nx-font-display: "Montserrat", "Segoe UI", system-ui, sans-serif;
  --nx-font-body:    "Montserrat", "Segoe UI", system-ui, sans-serif;
  --nx-font-alt:     "Jost", "Montserrat", system-ui, sans-serif;
  --nx-font-mono:    "Space Mono", ui-monospace, "Cascadia Mono", monospace;

  /* Échelle modulaire, ratio 1.25, fluide 375→1280px. */
  --nx-text-xs:   0.75rem;
  --nx-text-sm:   0.875rem;
  --nx-text-base: 1rem;
  --nx-text-md:   clamp(1.125rem, 0.35vw + 1.05rem, 1.25rem);
  --nx-text-lg:   clamp(1.35rem, 0.6vw + 1.2rem, 1.5625rem);
  --nx-text-xl:   clamp(1.65rem, 1.1vw + 1.4rem, 1.953rem);
  --nx-text-2xl:  clamp(2rem, 1.9vw + 1.55rem, 2.441rem);
  --nx-text-3xl:  clamp(2.4rem, 3.2vw + 1.65rem, 3.052rem);
  --nx-text-4xl:  clamp(2.8rem, 5vw + 1.6rem, 3.815rem);

  --nx-leading-tight: 1.1;
  --nx-leading-snug:  1.3;
  --nx-leading-body:  1.65;
  --nx-measure:       68ch;

  --nx-tracking-display: -0.02em;
  --nx-tracking-tight:   -0.01em;
  --nx-tracking-label:    0.08em;

  /* --- Espacements — base 4/8px --------------------------------------- */
  --nx-1: 0.25rem;  --nx-2: 0.5rem;   --nx-3: 0.75rem;  --nx-4: 1rem;
  --nx-6: 1.5rem;   --nx-8: 2rem;     --nx-12: 3rem;    --nx-16: 4rem;
  --nx-24: 6rem;    --nx-32: 8rem;
  --nx-section: clamp(3.5rem, 7vw, 7rem);

  /* --- Layout ---------------------------------------------------------- */
  --nx-container: 1140px;
  --nx-container-wide: 1440px;
  --nx-gutter: clamp(1.25rem, 4vw, 3rem);

  /* --- Rayons / ombres / durées ---------------------------------------- */
  --nx-radius-sm: 2px;
  --nx-radius:    3px;
  --nx-shadow-1:  0 1px 2px rgba(26, 26, 26, 0.06);
  --nx-shadow-2:  0 4px 16px rgba(26, 26, 26, 0.08);

  --nx-dur-fast: 120ms;
  --nx-dur:      220ms;
  --nx-ease:     cubic-bezier(0.4, 0, 0.2, 1);
}

/* ══════════════════════════════════════════════════ NEXUS HOMES ═══════════
   Même base Teal que la maison mère — la parenté se lit. L'accent bascule sur
   l'ambre et les neutres se réchauffent : « warm neutrals soften the surface
   for a residential feel » (charte Homes §05).                              */
[data-brand="homes"] {
  --nx-base:   #507068; /* Nexus Teal — inchangé                          */
  --nx-deep:   #2B3A35; /* Deep Teal  — inchangé                          */
  --nx-accent: #D99A4E; /* Warm Amber — 2.18:1 sur Paper → jamais en texte */
  --nx-neutre: #FDF1E2; /* Warm Sand                                      */
  --nx-base-dark: #3E5750;
  --nx-line:   #E8DFD0;
  --nx-radius: 6px;     /* angles adoucis : le B2C vend un lieu, pas un procédé */
  --nx-radius-sm: 4px;
}

/* ════════════════════════════════════════════════ NEXUS WINDOWS ═══════════
   Seule marque qui change de teinte de base : le vert devient acier.
   « Sky Blue is reserved for the lit pane and highlights » (charte Windows §05).
   Le carreau allumé du logo EST l'accent — ne pas le diluer ailleurs.        */
[data-brand="windows"] {
  --nx-base:   #3F6070; /* Steel Teal — 6.06:1 sur Paper                   */
  --nx-deep:   #22333C; /* Deep Steel                                      */
  --nx-accent: #4FB0C4; /* Sky Blue   — 2.27:1 sur Paper → jamais en texte */
  --nx-neutre: #EEF6F8; /* Glass                                           */
  --nx-base-dark: #314B58;
  --nx-line:   #D6E3E8;
}

@media (prefers-reduced-motion: reduce) {
  :root { --nx-dur-fast: 0ms; --nx-dur: 0ms; }
}

/* ==========================================================================
   Alias de compatibilité — l'ancien jeu de noms (--nx-green, --nx-cream…)
   pointe désormais sur les tokens de charte. À retirer quand les feuilles
   de style auront été renommées.
   ========================================================================== */
:root {
  --nx-green:        var(--nx-base);
  --nx-green-dark:   var(--nx-base-dark);
  --nx-green-bright: var(--nx-accent);
  --nx-cream:        var(--nx-paper);
  --nx-mist:         var(--nx-neutre);
}
