/* ============================================================
   NEXUS VORTEX — BASE
   Polices, reset, typographie, liens, accessibilite.
   ============================================================ */

/* ---------- Polices self-hebergees ---------- */
@font-face{
  font-family:'Caviar Dreams';
  src:url('../assets/fonts/CaviarDreams-Bold.woff2') format('woff2');
  font-weight:700;
  font-style:normal;
  font-display:swap;
}
@font-face{
  font-family:'Caviar Dreams';
  src:url('../assets/fonts/CaviarDreams-Regular.woff2') format('woff2');
  font-weight:400;
  font-style:normal;
  font-display:swap;
}

/* Big Shoulders Display : police variable (100-900), un seul fichier par
   sous-ensemble. Hebergee ici, donc aucun appel a un serveur tiers. */
@font-face{
  font-family:'Big Shoulders Display';
  src:url('../assets/fonts/BigShouldersDisplay-latin.woff2') format('woff2');
  font-weight:100 900;
  font-style:normal;
  font-display:swap;
  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:'Big Shoulders Display';
  src:url('../assets/fonts/BigShouldersDisplay-latin-ext.woff2') format('woff2');
  font-weight:100 900;
  font-style:normal;
  font-display:swap;
  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;
}

/* ---------- Reset ---------- */
*,*::before,*::after{box-sizing:border-box}
*{margin:0}
html{-webkit-text-size-adjust:100%}
body{
  min-height:100svh;
  background:var(--nv-noir);
  color:var(--nv-ivoire);
  font-family:var(--nv-font-body);
  font-size:var(--nv-body);
  line-height:var(--nv-lh-body);
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  overflow-x:hidden;
}
img,svg,video{display:block;max-width:100%}
img{height:auto}
button,input,select,textarea{font:inherit;color:inherit}
button{background:none;border:0;cursor:pointer}
ul[role="list"],ol[role="list"]{list-style:none;padding:0}

/* Ancrage du scroll sous le header fixe */
html{scroll-behavior:smooth}
:target{scroll-margin-top:calc(var(--nv-header-h) + var(--nv-s4))}

/* ---------- Titres ---------- */
h1,h2,h3,h4{
  font-family:var(--nv-font-display);
  font-weight:700;
  line-height:var(--nv-lh-title);
  letter-spacing:var(--nv-ls-title);
  text-wrap:balance;
  /* Garantie : sur un ecran tres etroit, un mot long se coupe plutot
     que de faire deborder la page. N'a aucun effet tant que le mot tient. */
  overflow-wrap:break-word;
}
h1{font-size:var(--nv-h1)}
h2{font-size:var(--nv-h2);line-height:1.05}
h3{font-size:var(--nv-h3);line-height:1.15}

p{text-wrap:pretty;overflow-wrap:break-word}

/* ---------- Label (Big Shoulders Display) ---------- */
.nv-label{
  display:block;
  font-family:var(--nv-font-label);
  font-weight:600;
  font-size:var(--nv-label);
  line-height:1.2;
  letter-spacing:var(--nv-ls-label);
  text-transform:uppercase;
  color:var(--accent-on,var(--nv-brun));
}

/* ---------- Chapeau d'introduction ---------- */
.nv-lead{
  font-size:var(--nv-lead);
  line-height:1.55;
  max-width:var(--nv-measure);
  color:var(--muted,inherit);
}
.nv-text{
  max-width:var(--nv-measure);
  color:var(--muted,inherit);
}

/* ---------- Liens : soulignement anime gauche -> droite ---------- */
a{color:inherit;text-decoration:none}

.nv-link{
  position:relative;
  display:inline-block;
  font-family:var(--nv-font-label);
  font-weight:600;
  font-size:var(--nv-label);
  letter-spacing:.08em;
  text-transform:uppercase;
  color:var(--accent-on,var(--nv-brun));
  padding-bottom:4px;
}
.nv-link::after{
  content:"";
  position:absolute;
  left:0;bottom:0;
  width:100%;height:1px;
  background:currentColor;
  transform:scaleX(0);
  transform-origin:left;
  transition:transform 300ms var(--nv-ease);
}
.nv-link:hover::after,
.nv-link:focus-visible::after{transform:scaleX(1)}

/* La fleche avance legerement au survol */
.nv-link .nv-arrow,
.nv-btn .nv-arrow{
  display:inline-block;
  transition:transform 250ms var(--nv-ease);
}
.nv-link:hover .nv-arrow,
.nv-btn:hover .nv-arrow{transform:translateX(5px)}

/* ---------- Focus clavier ---------- */
:focus-visible{
  outline:2px solid var(--accent-on,var(--nv-brun));
  outline-offset:3px;
  border-radius:var(--nv-r1);
}

/* ---------- Lien d'evitement ---------- */
.nv-skip{
  position:absolute;
  left:var(--nv-s3);top:-100px;
  z-index:calc(var(--nv-z-menu) + 10);
  padding:12px 20px;
  background:var(--nv-ivoire);
  color:var(--nv-noir);
  font-family:var(--nv-font-label);
  letter-spacing:.08em;
  text-transform:uppercase;
  transition:top var(--nv-fast) var(--nv-ease);
}
.nv-skip:focus{top:var(--nv-s3)}

/* Masque visuellement mais reste lisible par les lecteurs d'ecran */
.nv-sr{
  position:absolute;
  width:1px;height:1px;
  padding:0;margin:-1px;
  overflow:hidden;
  clip:rect(0 0 0 0);
  white-space:nowrap;
  border:0;
}
