/* =========================================================
   N8 - FEUILLE DE STYLE COMMUNE
   Partagée par index.html, accueil.html, qui-suis-je.html,
   creations.html et livre-d-or.html.

   >>> LA PHOTO SE CHANGE ICI, UNE SEULE FOIS, POUR TOUT LE SITE <<<
   ========================================================= */

:root{

  /* ---- LA PHOTO (une seule fois, pour tout le site) -------------- */
  --photo: url("assets/n8.png");

  /* Palette : le nuancier du CD-ROM gratuit */
  --lime:    #00ff00;
  --magenta: #ff00ff;
  --cyan:    #00ffff;
  --jaune:   #ffff00;
  --navy:    #000080;
  --gris:    #c0c0c0;

  /* Machoire (marionnette) */
  --jaw-rest: -4px;
  --jaw-drop-max: 18px;
}

*{ box-sizing: border-box; }
html, body{ margin: 0; padding: 0; min-height: 100%; }

body{
  background-color: #000010;
  color: var(--jaune);
  font-family: "Comic Sans MS", "Comic Neue", "Chalkboard SE", cursive;
  overflow-x: hidden;
}

/* ---------- LE CIEL ETOILE QUI DEFILE ---------- */
#ciel{
  position: fixed;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  background-color: #000010;
  background-image:
    radial-gradient(1.5px 1.5px at 20px 30px,  #fff, transparent),
    radial-gradient(1.5px 1.5px at 140px 90px, #fff, transparent),
    radial-gradient(1px 1px   at 70px 160px,   #cff, transparent),
    radial-gradient(2px 2px   at 190px 40px,   #ffd, transparent),
    radial-gradient(1px 1px   at 110px 220px,  #fff, transparent),
    radial-gradient(1.5px 1.5px at 30px 200px, #fdf, transparent);
  background-size: 240px 240px;
  animation: defile 14s linear infinite;
}
@keyframes defile{
  from{ background-position: 0 0, 0 0, 0 0, 0 0, 0 0, 0 0; }
  to  { background-position: 0 240px, 0 240px, 0 240px, 0 240px, 0 240px, 0 240px; }
}

/* ---------- STRUCTURE ---------- */
#site{
  position: relative;
  z-index: 1;
  max-width: 900px;
  margin: 0 auto;
  padding: 12px;
}

.grille{
  display: grid;
  grid-template-columns: 200px 1fr;
  gap: 12px;
  align-items: start;
}
@media (max-width: 640px){ .grille{ grid-template-columns: 1fr; } }

.cadre{
  background: var(--navy);
  border: 4px ridge var(--gris);
  padding: 12px;
}

/* ---------- BANDEAU DEROULANT ---------- */
.bandeau{
  overflow: hidden;
  white-space: nowrap;
  background: var(--navy);
  border: 3px ridge var(--gris);
  padding: 6px 0;
  margin-bottom: 12px;
}
.bandeau span{
  display: inline-block;
  padding-left: 100%;
  color: var(--lime);
  font-size: 15px;
  font-weight: bold;
  animation: glisse 18s linear infinite;
}
@keyframes glisse{ to{ transform: translateX(-100%); } }

/* ---------- TITRES WORDART ---------- */
header{ text-align: center; margin-bottom: 14px; }
h1{
  margin: 0;
  font-family: Impact, "Haettenschweiler", "Arial Black", sans-serif;
  font-size: clamp(38px, 11vw, 84px);
  line-height: .95;
  letter-spacing: 2px;
  background: linear-gradient(180deg, #fff 0%, var(--jaune) 35%, #ff8800 60%, #cc0000 100%);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  -webkit-text-stroke: 2px var(--navy);
  filter: drop-shadow(4px 4px 0 var(--magenta));
  transform: skewX(-6deg);
}
h1.geant{ font-size: clamp(52px, 17vw, 128px); line-height: .9; }

.sous-titre{
  margin: 4px 0 0;
  color: var(--cyan);
  font-size: clamp(13px, 3.4vw, 18px);
  font-weight: bold;
  text-shadow: 2px 2px 0 var(--navy);
}

h2{
  font-family: Impact, "Arial Black", sans-serif;
  font-size: 26px;
  letter-spacing: 1px;
  color: var(--lime);
  text-shadow: 2px 2px 0 var(--magenta);
  margin: 26px 0 12px;
  transform: skewX(-4deg);
}
h2:first-child{ margin-top: 0; }

.clignote{ animation: clignote 1s steps(1) infinite; }
@keyframes clignote{ 50%{ opacity: 0; } }

/* ---------- MARIONNETTE (sidebar + commun) ---------- */
.marionnette{
  position: relative;
  overflow: hidden;
  background: #000;
}
.marionnette .visage-parle{
  position: absolute;
  inset: 0;
}
.marionnette .visage{
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.marionnette .visage-top{
  z-index: 1;
  pointer-events: none;
}
.marionnette .visage-bottom{
  z-index: 2;
  will-change: transform;
  transform: translateY(var(--jaw-rest));
}
.marionnette .visage-muet{
  z-index: 3;
  display: none;
}
.marionnette.muet .visage-parle{
  visibility: hidden;
}
.marionnette.muet .visage-muet{
  display: block;
}

.marionnette-sidebar{
  width: 100%;
  aspect-ratio: 6048 / 8064;
  border: 4px ridge var(--gris);
  margin-bottom: 12px;
}

/* ---------- COLONNE DE GAUCHE ---------- */
.vignette{
  width: 100%;
  aspect-ratio: 1;
  background-image: var(--photo);
  background-size: cover;
  background-position: center;
  border: 4px ridge var(--gris);
  margin-bottom: 12px;
}

.bouton-don{
  display: block;
  text-align: center;
  text-decoration: none;
  font-family: Impact, "Arial Black", sans-serif;
  font-size: 21px;
  letter-spacing: 1px;
  color: var(--navy);
  background: linear-gradient(180deg, #fffb8a 0%, var(--jaune) 45%, #e0a800 100%);
  border: 5px outset var(--jaune);
  padding: 14px 8px;
  margin-bottom: 10px;
  cursor: pointer;
  animation: pulse 1.1s ease-in-out infinite alternate;
}
.bouton-don:active{ border-style: inset; }
.bouton-don:hover{ background: linear-gradient(180deg, #fff, var(--lime)); }
.bouton-don:focus-visible{ outline: 4px solid var(--cyan); outline-offset: 3px; }
@keyframes pulse{
  from{ box-shadow: 0 0 6px var(--jaune); transform: scale(1); }
  to  { box-shadow: 0 0 26px var(--lime); transform: scale(1.045); }
}
.don-note{
  color: var(--cyan);
  font-size: 12px;
  text-align: center;
  margin: 0 0 14px;
  text-wrap: pretty;
}

.mini-titre{
  color: var(--magenta);
  font-size: 13px;
  font-weight: bold;
  text-transform: uppercase;
  border-bottom: 2px dashed var(--gris);
  padding-bottom: 4px;
  margin: 0 0 8px;
}
.liens{ list-style: none; margin: 0 0 16px; padding: 0; font-size: 14px; }
.liens li{ margin: 5px 0; }
.liens a{ color: var(--cyan); }
.liens a:hover{ color: var(--lime); }
.liens .actif{ color: var(--lime); font-weight: bold; }

/* ---------- COMPTEUR ---------- */
.compteur{
  font-family: "Courier New", monospace;
  font-size: 22px;
  letter-spacing: 4px;
  color: var(--lime);
  background: #000;
  border: 3px inset var(--gris);
  padding: 6px;
  text-align: center;
}
.compteur-legende{ font-size: 11px; color: var(--gris); text-align: center; margin: 4px 0 0; }

/* ---------- CORPS DE TEXTE ---------- */
.texte{ color: #fff; font-size: 15px; line-height: 1.65; }
.texte p{ margin: 0 0 13px; }
.surligne{ background: var(--magenta); color: var(--jaune); padding: 1px 5px; }

/* ---------- BOUTONS 3D ---------- */
.btn{
  font-family: "Comic Sans MS", cursive;
  font-size: 15px;
  font-weight: bold;
  color: var(--navy);
  background: linear-gradient(180deg, #fff 0%, var(--gris) 100%);
  border: 4px outset var(--gris);
  padding: 9px 16px;
  margin: 14px 5px 0;
  cursor: pointer;
}
.btn:active{ border-style: inset; }
.btn:focus-visible{ outline: 3px solid var(--magenta); outline-offset: 2px; }

.retour{ display: inline-block; margin-top: 22px; font-size: 15px; color: var(--jaune); }
.retour:hover{ color: var(--lime); }

/* ---------- TRAVAUX EN COURS ---------- */
.travaux{ text-align: center; margin-top: 18px; color: var(--jaune); font-size: 13px; font-weight: bold; }
.panneau{
  display: inline-block;
  background: repeating-linear-gradient(45deg, #000 0 10px, var(--jaune) 10px 20px);
  padding: 4px;
  margin-bottom: 6px;
}
.panneau span{ display: block; background: var(--jaune); color: #000; padding: 5px 12px; }

footer{
  text-align: center;
  margin-top: 18px;
  padding: 12px;
  color: var(--gris);
  font-size: 12px;
  border-top: 3px double var(--gris);
}
footer .version{
  margin-top: 6px;
  font-size: 10px;
  color: #666;
}

/* ---------- ETINCELLES ---------- */
.etincelle{
  position: fixed;
  z-index: 999;
  pointer-events: none;
  font-size: 15px;
  animation: tombe .8s linear forwards;
}
@keyframes tombe{ to{ transform: translateY(26px) scale(.2); opacity: 0; } }

/* ---------- ACCESSIBILITE ---------- */
@media (prefers-reduced-motion: reduce){
  #ciel, .bandeau span, .clignote, .bouton-don{ animation: none !important; }
}
