/* AXIS — fondations : polices auto-hébergées, couleurs, base. Source : docs/02-identite-visuelle.md */

/* Polices variables, servies par ce serveur (aucun appel à Google). display=swap : le texte s'affiche tout de suite. */
@font-face{font-family:'Montserrat';font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/montserrat-latin-ext-wght-normal.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}
@font-face{font-family:'Montserrat';font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/montserrat-latin-wght-normal.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:'Manrope';font-style:normal;font-weight:200 800;font-display:swap;src:url(/fonts/manrope-latin-ext-wght-normal.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}
@font-face{font-family:'Manrope';font-style:normal;font-weight:200 800;font-display:swap;src:url(/fonts/manrope-latin-wght-normal.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:'Source Code Pro';font-style:normal;font-weight:200 900;font-display:swap;src:url(/fonts/source-code-pro-latin-ext-wght-normal.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-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'Source Code Pro';font-style:normal;font-weight:200 900;font-display:swap;src:url(/fonts/source-code-pro-latin-wght-normal.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{
  /* Palette de marque (trois couleurs maximum par écran) */
  --nuit:#1B140E;      /* fond */
  --surface:#251C14;   /* cartes */
  --brun:#3A2E22;      /* contours, réserve */
  --brun-clair:#A67B52;/* boutons, accent */
  --accent:#BC906B;    /* petit texte accentué, focus */
  --sable:#C9B39A;     /* texte atténué */
  --creme:#E8E1D7;     /* texte courant */
  --blanc:#F6F3ED;     /* texte fort, bouton principal, sélection */

  /* Nuances d'interface dérivées des maquettes */
  --accent-clair:#E0C4A6;
  --neutre:#9A8D7C;
  --neutre-fonce:#6B645A;
  --alerte:#E3B25F;
  --danger:#A5453A;
  --danger-texte:#E8978B;
  --ok-texte:#A9C79A;

  --police-titre:'Montserrat',Arial,sans-serif;
  --police-texte:'Manrope',Arial,sans-serif;
  --police-mono:'Source Code Pro',ui-monospace,monospace;

  --marge-ecran:clamp(18px,4vw,56px);
  --courbe:cubic-bezier(.2,.7,.2,1);
}

*{box-sizing:border-box}
html{background:var(--nuit)}
body{margin:0;background:var(--nuit);color:var(--blanc);font-family:var(--police-texte);-webkit-font-smoothing:antialiased}
button,input,textarea,select{font-family:inherit}
img{max-width:100%}

/* Focus visible : anneau 3 px #BC906B, partout */
:focus-visible{outline:3px solid var(--accent);outline-offset:3px}

/* Textes */
.mono{font-family:var(--police-mono);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--sable)}
.mono.acc{color:var(--accent)}
.mono.fort{color:var(--blanc)}
.h1{margin:0;font-family:var(--police-titre);font-weight:800;text-transform:uppercase;letter-spacing:-.02em;line-height:1.05;text-wrap:balance;font-size:clamp(24px,4.2vw,52px)}
.qh{margin:0;font-family:var(--police-titre);font-weight:800;text-transform:uppercase;letter-spacing:-.02em;line-height:1.12;text-wrap:balance;font-size:clamp(20px,2.7vw,36px)}
.h1 .acc,.qh .acc{color:var(--accent)}
.hint{margin:0;font-size:16px;line-height:1.45;color:var(--sable);max-width:640px}
.petit{font-size:13px;line-height:1.5;color:var(--sable)}
.err{font-size:13px;line-height:1.4;color:var(--alerte)}
.lien{color:var(--sable);text-decoration:underline;text-underline-offset:3px;display:inline-flex;align-items:center;min-height:32px}

/* Grain : bruit SVG feTurbulence, ≈ 10 % (voir docs/02) */
.grain{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;opacity:.10;mix-blend-mode:overlay}

/* Animations douces : transform et opacity seulement */
@keyframes rise{from{opacity:0;transform:translateY(26px)}to{opacity:1;transform:none}}
@keyframes entree{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
@keyframes ping{0%{transform:scale(1);opacity:.25}100%{transform:scale(2.4);opacity:0}}
.rise{animation:rise .9s var(--courbe) both}
.entree{animation:entree .8s ease-out both}
.d1{animation-delay:.1s}.d2{animation-delay:.25s}.d3{animation-delay:.4s}.d4{animation-delay:.55s}.d5{animation-delay:.8s}

/* Texte réservé aux lecteurs d'écran */
.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

/* Mouvement réduit : tout se fige */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms !important;animation-iteration-count:1 !important;transition:none !important}
}
