@charset "UTF-8";
/* =============================================================================
   2026-11-01_KEU_LVB_KHONSU-Patrimoine-DA-Almanach-Tokens_v2.css
   DA gelée pour la plateforme KHONSU Patrimoine — ordre du Régent du 2026-10-31.
   Source : artefact « Refonte du cockpit KHONSU » (DA A' Almanach, retenue le 23/10).
   Valeurs EXTRAITES de la source, non reconstituées. Aucune valeur inventée.

   PORTÉE : couleurs, polices, fond, trame. L'ergonomie et l'ordre de lecture
   restent ceux de la Direction I « Relevé », validée par le Régent — cette
   feuille ne touche PAS la mise en page.

   RÈGLE DE FER : aucun terminal ne modifie une valeur de ce fichier. Toute
   évolution de DA passe par une v2 de ce livrable, jamais par une surcharge
   locale. Un écart = régression (loi zéro-régression).
   ============================================================================= */

/* v2 (2026-11-01, ordre Regent via T-KEOS) : Fraunces passe de la graisse STATIQUE 400
   a la fonte VARIABLE (axes opsz 9..144 et wght 100..900), pour rendre les titres au
   poids 300 + opsz 144 de la maquette choisie par le Regent (le 400 statique faisait le
   << gras partout >>). Face verifiee PEINT avant depot (fontkit/fonttools, lecon A-009 :
   axes presents + codepoints francais portes). v1 reste gelee, non modifiee ; cette v2 la
   supersede par le livrable, jamais par surcharge locale (regle de fer respectee). */

/* -----------------------------------------------------------------------------
   1. POLICES — AUTO-HÉBERGÉES, JAMAIS APPELÉES CHEZ UN TIERS
   La source embarque les trois fontes en woff2 base64. Sur la plateforme
   publique on les sert depuis NOTRE origine : identité au pixel garantie,
   zéro dépendance tierce, zéro requête sortante depuis le navigateur client.
   N'utiliser NI fonts.googleapis.com NI fonts.gstatic.com sur cette surface.
   Fichiers attendus sous /statique/polices/ (woff2, extraits de la source) :
     fraunces-variable.woff2 · source-serif-4-400.woff2 · source-serif-4-600.woff2
     jetbrains-mono-400.woff2
   Mesurer les graisses et axes réellement employés dans la source AVANT de
   figer la liste : Fraunces porte des axes opsz/SOFT/WONK ; une graisse
   approchée casse le « au pixel près ».
   -------------------------------------------------------------------------- */
@font-face{font-family:'Fraunces';font-style:normal;font-weight:100 900;font-display:swap;
  src:url('/statique/polices/fraunces-variable.woff2') format('woff2')}
@font-face{font-family:'Source Serif 4';font-style:normal;font-weight:400;font-display:swap;
  src:url('/statique/polices/source-serif-4-400.woff2') format('woff2')}
@font-face{font-family:'Source Serif 4';font-style:normal;font-weight:600;font-display:swap;
  src:url('/statique/polices/source-serif-4-600.woff2') format('woff2')}
@font-face{font-family:'JetBrains Mono';font-style:normal;font-weight:400;font-display:swap;
  src:url('/statique/polices/jetbrains-mono-400.woff2') format('woff2')}

/* -----------------------------------------------------------------------------
   2. JETONS — VALEURS EXACTES DE LA SOURCE, AUCUNE ALTÉRATION
   -------------------------------------------------------------------------- */
:root{
  /* fonds et encres */
  --fond:#FDFCFA;
  --surface:#EBEBEB;
  --encre:#2E2E28;
  --encre2:#55564E;
  --filet:#86877F;

  /* accent et sémantique — l'accent n'est JAMAIS une couleur sémantique */
  --accent:#8A449A;
  --sur-accent:#FFFFFF;
  --danger:#6B092F;
  --succes:#3D5902;
  --attention:#7A400C;

  /* polices */
  --titre:'Fraunces',Georgia,serif;
  --texte:'Source Serif 4',Georgia,serif;
  --donnee:'JetBrains Mono',ui-monospace,Menlo,monospace;

  color-scheme:light;
}

/* -----------------------------------------------------------------------------
   3. SOCLE — IDENTIQUE À LA SOURCE
   -------------------------------------------------------------------------- */
*{box-sizing:border-box}
html{scroll-padding-top:env(safe-area-inset-top,0px)}
body{background:var(--fond);color:var(--encre);font:15px/1.5 var(--texte);margin:0}
img{max-width:100%}
h1,h2,h3,h4{font-family:var(--titre);font-weight:400;text-wrap:balance}
.donnee,[data-donnee]{font-family:var(--donnee);font-variant-numeric:tabular-nums}
a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible,
select:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--accent);outline-offset:2px}

/* -----------------------------------------------------------------------------
   4. TRAME DE FOND — LE STYLE UNIQUE DEMANDÉ PAR LE RÉGENT
   Les rayures en fond, distinctes PAR CONSTRUCTION des hachures d'état (§5) :
   angle vertical contre 45°/-45°, contraste 12 % contre 55 %/9 %, période 9px.
   Un client ne doit JAMAIS confondre une texture décorative avec le signe
   « donnée absente » ou « rapport périmé ». A-027, étiquette ≠ contenu.
   -------------------------------------------------------------------------- */
:root{
  --trame:repeating-linear-gradient(90deg,
    color-mix(in srgb,var(--filet) 12%,transparent) 0 1px,
    transparent 1px 9px);
  --trame-appuyee:repeating-linear-gradient(90deg,
    color-mix(in srgb,var(--filet) 20%,transparent) 0 1px,
    transparent 1px 7px);
}
.trame{background-image:var(--trame)}
.trame-appuyee{background-image:var(--trame-appuyee)}
/* Bandeau d'accent : la trame se lit en négatif sur l'accent, même géométrie. */
.bandeau-accent{
  background-color:var(--accent);color:var(--sur-accent);
  background-image:repeating-linear-gradient(90deg,
    color-mix(in srgb,var(--sur-accent) 14%,transparent) 0 1px,
    transparent 1px 9px);
}
@media (prefers-reduced-transparency:reduce){
  .trame,.trame-appuyee{background-image:none}
}

/* -----------------------------------------------------------------------------
   5. HACHURES D'ÉTAT — RÉSERVÉES, VALEURS VERBATIM DE LA SOURCE
   Elles PORTENT UN SENS. Ne jamais les employer comme décor, ne jamais en
   changer l'angle, l'échelle ni l'opacité, ne jamais en créer de troisième.
   -------------------------------------------------------------------------- */
/* valeur absente, affichée par sa cause — jamais un zéro de complaisance */
.nm{
  position:relative;border:.75px solid var(--filet);padding:10px 12px;
  font-style:italic;color:var(--encre2);
  background:repeating-linear-gradient(45deg,
    color-mix(in srgb,var(--filet) 55%,transparent) 0 .8px,
    transparent .8px 7px);
}
/* fraîcheur critique : au-delà de 48 h, barré et hachuré */
.f-critique{
  background:repeating-linear-gradient(-45deg,
    transparent 0 6px,
    color-mix(in srgb,var(--danger) 9%,transparent) 6px 7px);
}

/* -----------------------------------------------------------------------------
   6. SIGNES DE FRAÎCHEUR — LA FORME PORTE L'ÉTAT, PAS SEULEMENT LA COULEUR
   Repris de la source : frais = disque, vieilli = triangle, critique = barré.
   Obligatoire pour l'accessibilité : jamais la couleur seule.
   -------------------------------------------------------------------------- */
.f-frais::before{content:"\25CF";margin-right:.4em;color:var(--succes)}
.f-vieilli::before{content:"\25B2";margin-right:.4em;color:var(--attention)}
.f-critique::before{content:"\2014";margin-right:.4em;color:var(--danger)}
.f-critique{text-decoration:line-through}

/* =============================================================================
   FIN. Toute valeur ci-dessus est gelée. v2 par livrable, jamais par surcharge.
   ============================================================================= */
