/* ═══════════════════════════════════════════════════════════════
   PIANO PANIER — POLICES (v284, 29/08/2026)
   Cinq familles servies par piano-panier.fr, jamais par Google.
   Fichiers repris tels que Google les sert : memes decoupages, memes plages
   Unicode, memes descripteurs — seule l'URL a change.
   Un navigateur ne telecharge une police QUE si du texte l'utilise : declarer
   cinq familles ne coute que quelques kilo-octets de CSS.
   Licences : SIL Open Font License pour les cinq (auto-hebergement autorise).
   ATTENTION : les noms de fichiers sont STABLES et mis en cache un an.
   Pour changer une police, RENOMMER le fichier — jamais remplacer son contenu.
   ═══════════════════════════════════════════════════════════════ */

/* latin-ext */
@font-face {
  font-family: 'DM Sans';
  font-style: normal;
  font-weight: 300;
  font-display: swap;
  src: url(polices/dm-sans-300-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-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'DM Sans';
  font-style: normal;
  font-weight: 300;
  font-display: swap;
  src: url(polices/dm-sans-300-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;
}
/* latin-ext */
@font-face {
  font-family: 'DM Sans';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(polices/dm-sans-400-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-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'DM Sans';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(polices/dm-sans-400-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;
}
/* latin-ext */
@font-face {
  font-family: 'DM Sans';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(polices/dm-sans-500-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-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'DM Sans';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(polices/dm-sans-500-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;
}
/* latin-ext */
@font-face {
  font-family: 'DM Sans';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(polices/dm-sans-600-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-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'DM Sans';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(polices/dm-sans-600-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;
}
/* latin-ext */
@font-face {
  font-family: 'DM Sans';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(polices/dm-sans-700-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-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'DM Sans';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(polices/dm-sans-700-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;
}
/* vietnamese */
@font-face {
  font-family: 'Fraunces';
  font-style: italic;
  font-weight: 300 900;
  font-display: swap;
  src: url(polices/fraunces-300-900i-vietnamese.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Fraunces';
  font-style: italic;
  font-weight: 300 900;
  font-display: swap;
  src: url(polices/fraunces-300-900i-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-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Fraunces';
  font-style: italic;
  font-weight: 300 900;
  font-display: swap;
  src: url(polices/fraunces-300-900i-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;
}
/* vietnamese */
@font-face {
  font-family: 'Fraunces';
  font-style: normal;
  font-weight: 300 900;
  font-display: swap;
  src: url(polices/fraunces-300-900-vietnamese.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Fraunces';
  font-style: normal;
  font-weight: 300 900;
  font-display: swap;
  src: url(polices/fraunces-300-900-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-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Fraunces';
  font-style: normal;
  font-weight: 300 900;
  font-display: swap;
  src: url(polices/fraunces-300-900-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;
}
/* latin-ext */
@font-face {
  font-family: 'Instrument Sans';
  font-style: italic;
  font-weight: 400 700;
  font-stretch: 100%;
  font-display: swap;
  src: url(polices/instrument-sans-400-700i-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-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Instrument Sans';
  font-style: italic;
  font-weight: 400 700;
  font-stretch: 100%;
  font-display: swap;
  src: url(polices/instrument-sans-400-700i-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;
}
/* latin-ext */
@font-face {
  font-family: 'Instrument Sans';
  font-style: normal;
  font-weight: 400 700;
  font-stretch: 100%;
  font-display: swap;
  src: url(polices/instrument-sans-400-700-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-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Instrument Sans';
  font-style: normal;
  font-weight: 400 700;
  font-stretch: 100%;
  font-display: swap;
  src: url(polices/instrument-sans-400-700-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;
}
/* latin-ext */
@font-face {
  font-family: 'Instrument Serif';
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url(polices/instrument-serif-400i-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-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Instrument Serif';
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url(polices/instrument-serif-400i-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;
}
/* latin-ext */
@font-face {
  font-family: 'Instrument Serif';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(polices/instrument-serif-400-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-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Instrument Serif';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(polices/instrument-serif-400-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;
}
/* cyrillic */
@font-face {
  font-family: 'Playfair Display';
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url(polices/playfair-display-400i-cyrillic.woff2) format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* vietnamese */
@font-face {
  font-family: 'Playfair Display';
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url(polices/playfair-display-400i-vietnamese.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Playfair Display';
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url(polices/playfair-display-400i-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-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Playfair Display';
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url(polices/playfair-display-400i-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;
}
/* cyrillic */
@font-face {
  font-family: 'Playfair Display';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(polices/playfair-display-400-cyrillic.woff2) format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* vietnamese */
@font-face {
  font-family: 'Playfair Display';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(polices/playfair-display-400-vietnamese.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Playfair Display';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(polices/playfair-display-400-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-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Playfair Display';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(polices/playfair-display-400-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;
}
/* cyrillic */
@font-face {
  font-family: 'Playfair Display';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(polices/playfair-display-700-cyrillic.woff2) format('woff2');
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
/* vietnamese */
@font-face {
  font-family: 'Playfair Display';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(polices/playfair-display-700-vietnamese.woff2) format('woff2');
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}
/* latin-ext */
@font-face {
  font-family: 'Playfair Display';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(polices/playfair-display-700-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-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Playfair Display';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(polices/playfair-display-700-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;
}

/* ═══════════════════════════════════════════════════════════════
   LES JETONS DE TYPOGRAPHIE
   Tout le site pointe sur ces deux variables. Valeur par defaut : la
   typographie historique du Maitre — rien ne change tant qu'il n'a pas choisi.
   ═══════════════════════════════════════════════════════════════ */
:root {
  --pp-titre: 'Playfair Display', Georgia, serif;
  --pp-texte: 'DM Sans', sans-serif;
}

/* ── LES THEMES ──────────────────────────────────────────────────
   Le back-office ecrit data-pp-typo sur <html>, et le middleware le pose
   AVANT que la page n'arrive : la page se peint deja dans la bonne
   typographie, sans le moindre clignotement.
   ─────────────────────────────────────────────────────────────── */

/* Heritage — la typographie historique (defaut, identique a l'absence d'attribut) */
[data-pp-typo="heritage"] {
  --pp-titre: 'Playfair Display', Georgia, serif;
  --pp-texte: 'DM Sans', sans-serif;
}

/* Signature — Fraunces + Instrument Sans.
   font-optical-sizing:auto laisse Fraunces adapter son dessin a la taille :
   c'est l'equivalent gratuit des deux tailles optiques que Back Market a fait
   dessiner sur mesure. */
[data-pp-typo="signature"] {
  --pp-titre: 'Fraunces', Georgia, serif;
  --pp-texte: 'Instrument Sans', system-ui, sans-serif;
  font-optical-sizing: auto;
}

/* Atelier — Instrument Serif (une seule graisse : les titres ne sont plus gras
   mais grands) + Instrument Sans. */
[data-pp-typo="atelier"] {
  --pp-titre: 'Instrument Serif', Georgia, serif;
  --pp-texte: 'Instrument Sans', system-ui, sans-serif;
  /* Instrument Serif n'existe qu'en une seule graisse. Le site demande du 700
     sur 88 % de ses titres : sans cette ligne, le navigateur FABRIQUE un faux
     gras en epaississant les traits — c'est laid, et c'est exactement ce qu'un
     typographe reproche a un site. On lui interdit de le faire : le titre rend
     alors dans son dessin d'origine, grand plutot que gras. C'est le parti pris
     du theme, assume. */
  font-synthesis-weight: none;
  font-synthesis: none;
}

/* ── DENSITE ─────────────────────────────────────────────────────
   Toutes les tailles du site sont en rem : agir sur la racine les met
   toutes a l'echelle d'un coup, sans toucher a une seule declaration.
   ─────────────────────────────────────────────────────────────── */
:root[data-pp-densite="compact"]      { font-size: 15px; }
:root[data-pp-densite="confortable"]  { font-size: 17px; }

/* ── CHIFFRES TABULAIRES SUR LES MONTANTS ────────────────────────
   Sans cela, un « 1 » est plus etroit qu'un « 8 » et deux prix empiles ne
   s'alignent pas. C'est le genre de detail qu'on ne remarque que corrige.
   ─────────────────────────────────────────────────────────────── */
[class*="prix"], [class*="Prix"], [class*="montant"], [class*="Montant"],
[class*="price"], [class*="total"], [class*="Total"], [class*="stat-value"] {
  font-variant-numeric: tabular-nums;
}

/* ═══════════════════════════════════════════════════════════════
   LES JETONS DE COULEUR (v287)
   En mode « or » (defaut), chaque jeton vaut exactement la valeur historique :
   le rendu ne change pas d un pixel. Le mode « cuivre » — choix du Maitre du
   30/08, reference a l accastillage et au cadre du piano — les redefinit. Le
   middleware pose data-pp-couleur sur <html> AVANT que la page n arrive.
   NB : depuis v313 la charte porte elle-meme --or ; une page qui le redeclare le fait
   a l identique, et html[data-pp-couleur] l emporte de toute facon (specificite superieure).
   ═══════════════════════════════════════════════════════════════ */
/* ═══════════════════════════════════════════════════════════════
   LA CHARTE, A UN SEUL ENDROIT (v313, nuit du 18-19/09/2026)
   Avant : la charte vivait a QUATRE endroits qui ne disaient pas la meme chose — le :root de
   chaque page (35 copies, six desaccords mesures dont --gris a 3,39:1 et --vert a 2,66:1),
   ce bloc de jetons, les consignes de projet, et des encres assombries nommees nulle part.
   Maintenant : TOUT est ici. Une page n a plus a declarer une couleur ; elle prend un jeton.
   Les contrastes en commentaire sont MESURES (WCAG 2.1, sur --blanc #fafaf8 sauf mention).

   TROIS REGLES
   1. Aucun hexadecimal en dur dans une page : var(--jeton) toujours.
   2. Une couleur metier a TROIS jetons : la surface, son fond pale, et son ENCRE lisible.
      La surface ne fait pas toujours une encre : --attention vaut 3,63 (insuffisant pour du
      texte) et --admin 2,06 (jamais une encre, en aucun cas).
   3. Sur fond SOMBRE, le cuivre texte n est plus lisible (2,1 sur noir) : prendre
      --or-texte-sombre (5,43). Regle locale par page a footer noir, jamais globale ici.
   ═══════════════════════════════════════════════════════════════ */
:root {
  /* ── LES NEUTRES ─────────────────────────────────────────────── */
  --noir: #0a0a0a;          /* encre principale, boutons d action standard */
  --blanc: #fafaf8;         /* le fond des pages et des cartes qui flottent */
  --creme: #f5f0e8;         /* les conteneurs poses sur le blanc */
  --gris: #6b6b6b;          /* 5,10 — le texte secondaire. #888 (3,39) etait employe par
                               quatre pages : insuffisant, ramene ici */
  --gris-clair: #e0ddd6;    /* filets et bordures douces — jamais une encre */
  --accent: #2a2a2a;        /* 13,9 — le corps de texte long (pages legales) */
  --gris-ultra-clair: var(--creme);   /* alias historique */

  /* ── LA MARQUE (mode « or » par defaut ; le mode cuivre les redefinit plus bas) ── */
  --or: #c8a455;            /* la couleur de marque : boutons principaux, traits, accents */
  --or-clair: #e8d5a0;
  --or-fonce: #7d611e;
  --or-texte: #c8a455;      /* tout ce qui est ecrit en couleur de marque */
  --or-sur: #0a0a0a;        /* le texte pose sur un fond de marque */
  --or-pale: #f3ecdc;       /* plaque, fonds legers */
  --or-filet: #c8a455;      /* traits */
  --attention: #e65100;     /* la charte metier « attention » */
  --attention-fond: #fff3e0;
  --litige: #bf360c;        /* v303k — l encre du LITIGE (arbitrage Maitre 15/09) : 5,60 sur blanc, 4,78 sur son fond pale ;
                               #ff5722 reste une couleur de SURFACE (points, traits), jamais une encre (3,16) */
  --litige-fond: #fbe9e7;
  --or-rvb: 200,164,85;     /* pour les ombres/halos rgba(var(--or-rvb),X) — repli embarque dans chaque appel */
  --or-texte-sombre: #c0733a;  /* 5,43 sur le noir — le cuivre des fonds sombres (pied de page, barres) */

  /* ── LES COULEURS METIER ──────────────────────────────────────────
     Chacune a une SURFACE (pastilles, boutons), un FOND pale (bandeaux) et une ENCRE
     lisible sur ce fond. Ne jamais employer une couleur hors de son sens. */
  --succes: #2e7d32;        /* 4,91 — confirme, offert, valide, economie. #4caf50 (2,66) etait
                               employe par trois pages : insuffisant, ramene ici */
  --succes-fond: #e8f5e9;
  --succes-encre: #1b5e20;  /* 7,00 sur son fond — l encre du positif */
  --vert: var(--succes);            /* alias historique */
  --vert-bg: var(--succes-fond);

  --attention: #e65100;     /* 3,63 : SURFACE seulement, jamais une encre sur clair */
  --attention-fond: #fff3e0;
  --attention-encre: #a33f00;  /* 5,86 sur le fond pale — arbitrage v303e : l orange de charte
                                  n y valait que 3,46, l encre a ete assombrie */
  --orange-bg: var(--attention-fond);

  --alerte: #c62828;        /* 5,38 — annulation, erreur, urgence admin */
  --alerte-fond: #ffebee;
  --rouge: var(--alerte);
  --rouge-bg: var(--alerte-fond);

  --litige: #bf360c;        /* 5,36 — l encre du LITIGE (arbitrage Maitre 15/09) ; #ff5722 reste
                               une couleur de SURFACE (points, traits), jamais une encre (3,16) */
  --litige-fond: #fbe9e7;
  --litige-surface: #ff5722;

  --accord: #7b1fa2;        /* 7,85 — accord, intervention technique */
  --accord-fond: #f3e5f5;
  --violet: var(--accord);

  --expertise: #00695c;     /* 6,33 — expertise, et le RECEVEUR de la messagerie */
  --expertise-fond: #e0f2f1;
  --receveur: var(--expertise);
  --expediteur: #6a1b9a;    /* 8,66 — l EXPEDITEUR de la messagerie (violet profond) */

  --pro: #1565c0;           /* 5,50 — tout ce qui est PRO : bouton, badge, mission transport */
  --pro-fond: #e3f2fd;
  --bleu: var(--pro);

  --admin: #ff9800;         /* 2,06 — gestion admin, mediation. SURFACE UNIQUEMENT :
                               cette couleur ne porte JAMAIS de texte, ni n en est une */
  --ambre: var(--admin);

  --compte: #041d15;        /* le bouton « Mon compte » de l en-tete et son reflet miroir
                               (design valide par le Maitre le 31/08) — blanc dessus : 17,62 */

  /* ── LA PLAQUE (impression / PDF) ─────────────────────────────────────
     Un document genere ne resout pas les variables CSS : le generateur LIT ces jetons
     au moment de la generation (getComputedStyle) plutot que de recopier des valeurs. */
  --plaque-fond: #f4eee0;
  --plaque-maison: #8a6f2e;
  --plaque-num: #3a2f14;
  --plaque-filet: #c8a455;
  --plaque-sous: #7a6634;
}
html[data-pp-couleur="cuivre"] {
  --or: #a65d2b;            /* preleve sur les cordes du C3 (mediane #9a5722), eclairci pour le bouton */
  --or-fonce: #8f4f22;
  --or-clair: #f6e9df;
  --or-texte: #8f4f22;      /* 6,35 sur blanc, 5,99 sur creme */
  --or-sur: #ffffff;        /* le cuivre porte du blanc (4,97), la ou l or portait du noir */
  --or-pale: #f6e9df;
  --or-filet: #d8b79c;
  --attention: #946200;     /* l orange (21°) est indiscernable du cuivre (25°) : l attention passe a l ocre */
  --attention-fond: #fdf6e3;
  --litige: #bf360c;        /* identique en cuivre : le litige ne suit pas la marque */
  --litige-fond: #fbe9e7;
  --or-rvb: 166,93,43;      /* les halos dores deviennent cuivre */
  --or-texte-sombre: #c0733a;  /* 5,43 sur le noir — inchange : le cuivre vif sert aux deux modes */
  --attention-encre: #946200;  /* 4,86 sur #fdf6e3 — en cuivre l ocre EST deja une encre lisible,
                                  inutile de l assombrir davantage */
  --plaque-fond: #f6e9df;
  --plaque-maison: #8f4f22;
  --plaque-num: #3a2118;
  --plaque-filet: #d8b79c;
  --plaque-sous: #7a4a2a;
}
/* sur les surfaces SOMBRES (barres laterales, section estimateur), le cuivre texte #8f4f22
   ne se lit plus (2,1 sur noir) : on remonte au cuivre vif #c0733a (5,4 sur noir).
   Les FOOTERS ne sont PAS tous sombres (pages legales = footer clair, canari K.11 l a prouve) :
   chaque page a footer NOIR porte sa propre regle locale, jamais de regle globale ici. */
html[data-pp-couleur="cuivre"] .sidebar, html[data-pp-couleur="cuivre"] .pro-sidebar, html[data-pp-couleur="cuivre"] .ai-section {
  --or-texte: #c0733a;
  --or-filet: #7a4a2a;
}
/* les icones SVG dessinees en or (stroke/fill en dur) suivent le mode cuivre */
html[data-pp-couleur="cuivre"] svg[stroke="#c8a455"], html[data-pp-couleur="cuivre"] svg [stroke="#c8a455"] { stroke: var(--or); }
html[data-pp-couleur="cuivre"] svg[fill="#c8a455"], html[data-pp-couleur="cuivre"] svg [fill="#c8a455"] { fill: var(--or); }
