/* ============================================================
   COULEUR — l'or de la marque sur le site public (2026-10-06).
   Chargee EN DERNIER par les gabarits `n-`.

   ⚠️⚠️ POURQUOI CE FICHIER. La refonte blanche avait pour règle « aucune
   couleur d'accent, comme la référence [absurdventures] ». Le site en est
   devenu fade : tout en noir sur blanc. Demande du user : « ajoute de la
   couleur au site c'est trop fade ».

   ⚠️ On réintroduit l'or DU LOGO (#C8A24A), en trois valeurs dont les
   contrastes sont MESURÉS sur blanc (#ffffff) — pas estimés :
       --n-or        #b8892e   3,16:1   aplats, traits, gros chiffres (>= 24 px)
       --n-or-texte  #8a6a2a   5,03:1   texte fin, et encré des boutons or
       --n-or-pale   #f3ead6   1,20:1   fonds très légers (bandeaux, cartes)
   ⚠️ L'or vif #c8a24a (2,41:1) reste réservé aux APLATS : jamais sur du texte
   courant. C'est la règle de `refonte_blanche.css`, on l'applique ici.

   ⚠️ Aucune règle ne cible une classe de l'ancien thème : uniquement `n-`.
   ============================================================ */

/* ---- L'ÉTIQUETTE DE HAUT DE PAGE : un filet or, pas un trait gris ---- */
.n-kicker {
  color: var(--n-or-texte);
}
.n-kicker::before {
  content: "";
  display: inline-block; vertical-align: middle;
  width: 26px; height: 2px; margin-right: 10px;
  background: var(--n-or);
}

/* ---- LE FILET SOUS LA BARRE : discret, or pâle ---- */
/* ⚠️ NEUTRALISE (2026-10-06) : le site interdit les DEGRADES. Le fond de
   barre est desormais un simple aplat, pose par no_scroll_barre.css. */
.n-head { background: none; }
.n-logo b span { color: var(--n-or-texte); }
.n-menu-btn:hover { color: var(--n-or-texte); }

/* ---- LES BOUTONS : l'action principale garde l'encre, la SECONDAIRE passe à
   l'or quand elle mène à une demande de devis. ---- */
.n-btn { border: 1px solid var(--n-fg); }
.n-btn:hover { background: var(--n-or-texte); border-color: var(--n-or-texte); color: #fff; }
.n-btn--or {
  background: var(--n-or-texte); color: #fff; border-color: var(--n-or-texte);
}
.n-btn--or:hover { background: var(--n-fg); border-color: var(--n-fg); color: #fff; }
.n-btn-ghost:hover { background: var(--n-or-pale); border-color: var(--n-or); color: var(--n-or-texte); }

/* ---- LE MENU : l'entrée survolée prend l'or, le pied aussi ---- */
.n-menu a.n-link:hover { color: var(--n-or-texte); }
.n-menu-foot a:hover { color: var(--n-or-texte); }
.n-menu-group { color: var(--n-or-texte); }

/* ---- LES CHIFFRES CLÉS (accueil) : la valeur en or, comme un repère ---- */
.n-facts dd { color: var(--n-fg); }
.n-facts > div:first-child dd { color: var(--n-or-texte); }

/* ---- LES CARTES DE PRIX / DE PRESTATION : filet or pâle, jamais gris ---- */
.n-car-item { border-right: 1px solid var(--n-or-ligne); }
.n-car { border: 1px solid var(--n-or-ligne); }
.n-car-label { color: var(--n-or-texte); }

/* ---- L'ACCROCHE : le mot mis en avant prend l'or (au lieu du contour noir) ---- */
.n-title .n-or { color: var(--n-or); }
.n-title .n-outline { -webkit-text-stroke: 1.4px var(--n-or); color: transparent; }

/* ============================================================
   LA GRILLE DE TARIFS — trois offres, un écran.
   ⚠️ Sur desktop : 3 colonnes. Sur mobile : carrousel natif (meme motif que le
   reste du site) — on n'empile pas 3 cartes, ça ne tiendrait pas.
   ============================================================ */
.n-plans {
  display: grid; grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 1px; margin-top: 1.6rem;
  border: 1px solid var(--n-or-ligne); background: var(--n-or-ligne);
}
.n-plan {
  background: var(--n-bg); padding: 1.5rem 1.4rem;
  display: flex; flex-direction: column; gap: .7rem;
}
.n-plan__nom {
  font-family: 'IBM Plex Mono', monospace; font-size: .66rem;
  letter-spacing: .2em; text-transform: uppercase; color: var(--n-or-texte);
  margin: 0;
}
.n-plan__titre { font-size: 1.25rem; line-height: 1.2; margin: 0; }
.n-plan__prix {
  font-family: 'IBM Plex Mono', monospace; font-size: 2rem;
  line-height: 1; letter-spacing: -.02em; margin: .2rem 0 0;
}
.n-plan__prix small { font-size: .7rem; color: var(--n-dim); letter-spacing: .06em; }
.n-plan__liste { list-style: none; padding: 0; margin: .5rem 0 0; font-size: .92rem; }
.n-plan__liste li { padding: .32rem 0; border-top: 1px solid var(--n-rule); }
.n-plan__pied { margin-top: auto; padding-top: 1rem; }
.n-plan__pied .n-btn { display: block; text-align: center; width: 100%; }

/* l'offre mise en avant : bandeau or, contraste net */
.n-plan--phare { background: var(--n-or-pale); }
.n-plan--phare .n-plan__titre { color: var(--n-fg); }
.n-plan__badge {
  align-self: flex-start;
  font-family: 'IBM Plex Mono', monospace; font-size: .6rem;
  letter-spacing: .16em; text-transform: uppercase;
  background: var(--n-or-texte); color: #fff; padding: 4px 8px;
}

/* l'offre « sur devis » : pas de prix affiché, on vend le principe */
.n-plan__note {
  font-family: 'IBM Plex Mono', monospace; font-size: .68rem;
  letter-spacing: .08em; color: var(--n-dim); margin: .35rem 0 0;
}

/* ============================================================
   /pricing : LA GRILLE COMPLÈTE TIENT DANS L'ÉCRAN.
   ⚠️ Mesure avant correction : 73 px de débordement sur 1440x900 (3 cartes +
   bandeau de CTA + FAQ repliée). Comme le motif du site est « la section fait
   l'écran, son contenu défile dedans », on resserre la grille sur les écrans
   de hauteur moyenne au lieu de rogner : c'est la même règle que `.n-screen`.
   ============================================================ */
.n-screen--prix { justify-content: flex-start; padding-top: 5.5rem; }
@media (max-height: 900px) {
  .n-plans { margin-top: 1rem; }
  .n-plan { padding: 1.1rem 1.1rem; gap: .45rem; }
  .n-plan__titre { font-size: 1.08rem; }
  .n-plan__prix { font-size: 1.65rem; margin-top: .1rem; }
  .n-plan__note { font-size: .62rem; margin-top: .2rem; }
  .n-plan__liste { font-size: .84rem; margin-top: .3rem; }
  .n-plan__liste li { padding: .22rem 0; }
  .n-plan__pied { padding-top: .7rem; }
  .n-screen--prix .n-cta { margin-top: 1rem; }
  .n-screen--prix .n-detail { margin-top: .7rem; }
}

@media (max-width: 900px) {
  /* carrousel natif : 3 offres, défilement horizontal au doigt, sans JS */
  .n-plans {
    display: flex; gap: 1px; overflow-x: auto;
    scroll-snap-type: x mandatory; -webkit-overflow-scrolling: touch;
    scrollbar-width: thin; padding-bottom: 2px;
  }
  .n-plan { flex: 0 0 auto; min-width: min(84vw, 320px); scroll-snap-align: start; }
  /* ⚠️⚠️ L'OFFRE PHARE PASSE EN PREMIER sur mobile. Mesure : à 390 px, seule la
     première carte est visible à l'ouverture — si c'est le logiciel gratuit, le
     visiteur ne voit JAMAIS l'offre à 129,90 €, qui est celle qu'on vend. On
     remonte donc l'offre recommandée en tête du carrousel. */
  .n-plan--phare { order: -1; }
}

/* l'indication de défilement, comme partout ailleurs sur le site */
.n-plans-label { display: none; }
@media (max-width: 900px) {
  .n-plans-label {
    display: block; margin: 1.2rem 0 0;
    font-family: 'IBM Plex Mono', monospace; font-size: .68rem;
    letter-spacing: .18em; text-transform: uppercase; color: var(--n-or-texte);
  }
}
@media (max-height: 760px) {
  .n-plan { padding: 1.1rem 1rem; gap: .5rem; }
  .n-plan__titre { font-size: 1.1rem; }
  .n-plan__prix { font-size: 1.7rem; }
  .n-plan__liste { font-size: .86rem; }
  .n-plans { margin-top: 1rem; }
}

/* ============================================================
   LE DEVIS CONSULTABLE EN LIGNE (`shared_quote.html`) — 2026-10-06.
   ⚠️ Meme identite que le site : Anton pour les titres, Inter pour le texte,
   or pour les accents, angles droits, zero ombre. L'ancien gabarit affichait un
   bandeau DEGRADE dore qui ne ressemblait a rien du site que le client venait
   de voir.
   ============================================================ */
.n-screen--doc { padding-top: 5.5rem; }
.n-doc {
  margin-top: 1.4rem; border: 1px solid var(--n-or-ligne);
  background: var(--n-bg);
}
.n-doc__entete {
  display: flex; justify-content: space-between; align-items: flex-end;
  gap: 1rem; padding: 1.1rem 1.3rem;
  background: var(--n-or-pale); border-bottom: 1px solid var(--n-or-ligne);
}
.n-doc__titre { font-family: Anton, Archivo, sans-serif; font-size: 1.4rem;
  text-transform: uppercase; letter-spacing: -.01em; color: var(--n-fg); line-height: 1.15; }
.n-doc__sous { font-family: 'IBM Plex Mono', monospace; font-size: .66rem;
  letter-spacing: .14em; text-transform: uppercase; color: var(--n-or-texte); margin-top: .3rem; }
.n-doc__num { font-family: 'IBM Plex Mono', monospace; font-size: .78rem;
  letter-spacing: .2em; color: var(--n-fg); }
.n-doc__note { font-size: .82rem; color: var(--n-dim); margin: .9rem 1.3rem 0;
  white-space: pre-line; line-height: 1.6; }

.n-doc__table { width: 100%; border-collapse: collapse; margin-top: .9rem; }
.n-doc__table th {
  text-align: left; padding: .7rem 1.3rem;
  font-family: 'IBM Plex Mono', monospace; font-size: .62rem;
  letter-spacing: .16em; text-transform: uppercase; color: var(--n-or-texte);
  border-bottom: 1px solid var(--n-or-ligne);
}
.n-doc__table th.num, .n-doc__table td.num { text-align: right; }
.n-doc__table td { padding: .7rem 1.3rem; border-bottom: 1px solid var(--n-rule);
  font-size: .92rem; vertical-align: top; }
.n-doc__label { display: block; }
.n-doc__detail { display: block; font-size: .72rem; color: var(--n-dim); margin-top: .15rem; }
.n-doc__prix { font-family: 'IBM Plex Mono', monospace; }

.n-doc__totaux { padding: 1rem 1.3rem 1.2rem; }
.n-doc__ligne { display: flex; justify-content: space-between; gap: 1rem;
  padding: .35rem 0; font-size: .95rem; color: var(--n-fg); }
.n-doc__ligne span:last-child { font-family: 'IBM Plex Mono', monospace; }
.n-doc__ligne--grand {
  margin-top: .4rem; padding: .8rem 1rem; background: var(--n-or-pale);
  border: 1px solid var(--n-or-ligne);
  font-family: Anton, Archivo, sans-serif; text-transform: uppercase;
  letter-spacing: -.005em; font-size: 1.1rem;
}
.n-doc__ligne--grand span:last-child { font-family: 'IBM Plex Mono', monospace;
  color: var(--n-or-texte); font-size: 1.25rem; }
.n-doc__message { margin: 0 1.3rem 1.2rem; font-size: .88rem; color: var(--n-dim);
  line-height: 1.6; font-style: italic; }
.n-doc__pied { margin-top: 1.2rem; text-align: center;
  font-family: 'IBM Plex Mono', monospace; font-size: .64rem;
  letter-spacing: .14em; text-transform: uppercase; color: var(--n-dim); }

@media (max-width: 600px) {
  .n-doc__entete { flex-direction: column; align-items: flex-start; }
  .n-doc__table th, .n-doc__table td { padding: .6rem .8rem; }
  .n-doc__table th:nth-child(3), .n-doc__table td:nth-child(3) { display: none; }
  .n-doc__note, .n-doc__message { margin-left: .8rem; margin-right: .8rem; }
  .n-doc__totaux { padding: .9rem .8rem 1rem; }
}

/* ============================================================
   LES EXEMPLES DE SITES — /resultats (2026-10-06).

   ⚠️ Demande du user : « dans la section resultats integre plein d'exemples de
   site web ». Chaque exemple est une CAPTURE d'un site d'artisan fictif, rendu
   depuis le vrai gabarit du produit : ce que le visiteur voit est ce que le
   produit genere.

   ⚠️ Contraintes du site : angles droits, AUCUNE ombre, aucun degrade, zero
   emoji. Une capture d'ecran n'a donc qu'un filet pour la separer du fond.
   ============================================================ */
.n-car--exemples { align-items: stretch; }
.n-car--exemples .n-ex {
  /* ⚠️⚠️ LARGEUR EXPLICITE, PAS SEULEMENT `min-width`.
     Meme piege que les cartes d'offres : `.n-car-item` porte `flex: 0 0 auto`,
     donc la largeur suit le CONTENU — ici l'image, large de 1000 px. Les cartes
     mesuraient **1001 px** et debordaient de l'ecran avant ce correctif.
     `min-width` n'est qu'un plancher : il faut `width`. */
  flex: 0 0 auto;
  /* ⚠️⚠️ DEUX CARTES PLEINES, PAS DEUX ET DEMIE (corrige 2026-10-06).
     Le user a signale « un manque de symetrie ». Mesure : le carrousel fait
     1180 px et les cartes 460 px -> 2 cartes pleines (920) + une 3e COUPEE de
     260 px. Cette 3e carte tronquee desalignait tout et donnait l'impression
     d'un bloc casse.
     On demande donc EXACTEMENT 2 cartes : la largeur se calcule sur celle du
     carrousel, moins le filet de separation (1 px, `gap` de `.n-car`).
     `min-width: 0` reste indispensable pour que le texte se replie DANS la
     carte au lieu de l'elargir. */
  width: calc((100% - 1px) / 2);
  min-width: 0;
  padding: 0;                      /* l'image touche les bords de la carte */
  display: flex; flex-direction: column;
}
.n-ex__visuel {
  border-bottom: 1px solid var(--n-or-ligne);
  background: var(--n-or-pale);
  line-height: 0;                  /* supprime l'espace sous l'image */
}
.n-ex__visuel img {
  display: block; width: 100%; height: auto;
  aspect-ratio: 16 / 10; object-fit: cover; object-position: top center;
}
.n-ex__corps { padding: 1rem 1.1rem 1.2rem; display: flex; flex-direction: column; flex: 1; }
.n-ex__variante {
  font-family: 'IBM Plex Mono', monospace; font-size: .62rem;
  letter-spacing: .16em; text-transform: uppercase; color: var(--n-or-texte);
  margin: 0 0 .5rem;
}
.n-ex__titre {
  font-family: Anton, Archivo, sans-serif; font-weight: 400;
  font-size: 1.15rem; line-height: 1.2; text-transform: uppercase;
  letter-spacing: -.01em; margin: 0; color: var(--n-fg);
}
.n-ex__meta {
  font-size: .78rem; color: var(--n-dim); margin: .35rem 0 0;
}
.n-ex__pourquoi {
  font-size: .88rem; line-height: 1.5; color: var(--n-fg);
  margin: .7rem 0 0; padding-top: .7rem; border-top: 1px solid var(--n-rule);
}

/* ⚠️ La page porte desormais un CARROUSEL d'images : la section doit tenir dans
   l'ecran (« no scroll »). Le carrousel lui-meme defile horizontalement. */
.n-screen--exemples { justify-content: flex-start; padding-top: 76px; }
.n-screen--exemples .n-title { font-size: clamp(1.6rem, 3.2vw, 2.2rem); max-width: 26ch; }
.n-screen--exemples .n-sub { margin-top: .8rem; max-width: 74ch; }
.n-screen--exemples .n-car { margin-top: 1rem; }
.n-screen--exemples .n-cta { margin-top: 1.2rem; }
@media (max-height: 760px) {
  .n-screen--exemples { padding-top: 64px; }
  .n-screen--exemples .n-title { font-size: clamp(1.35rem, 5.4vw, 1.7rem); }
  .n-screen--exemples .n-sub { font-size: .88rem; margin-top: .55rem; }
  .ex__sep { display: none; }
  .n-ex__corps { padding: .75rem .85rem .9rem; }
  .n-ex__pourquoi { font-size: .82rem; margin-top: .5rem; padding-top: .5rem; }
  .n-screen--exemples .n-cta { margin-top: .8rem; }
}

/* ⚠️⚠️ LE CARROUSEL ETAIT COMPRIME VERTICALEMENT (2026-10-06).
   Mesure a 320x568 : la carte mesurait **129 px de haut** alors que son contenu
   (image 176 + corps 155) en demandait **331**. Les enfants debordaient donc
   hors de la carte.

   CAUSE : identique a celle des cartes d'offres. `.n-screen` est une colonne
   flex ; `.n-car` en est un enfant SANS `flex-shrink: 0`, donc le navigateur le
   RETRECIT pour faire tenir le tout — au lieu de laisser la section defiler.

   CORRECTIF : `flex-shrink: 0` sur le carrousel (il garde sa hauteur naturelle),
   et `align-items: flex-start` pour qu'une carte ne soit pas etiree a la hauteur
   d'une autre plus longue. C'est la SECTION qui defile, conformement au motif
   « no scroll » du site. */
.n-screen > .n-car,
.n-screen > .n-plans {
  flex-shrink: 0;
}
.n-car--exemples { align-items: flex-start; }

/* ⚠️ Le lien « Ouvrir le site » de chaque exemple (2026-10-06) : discret mais
   cliquable, dans le langage du site (encre + soulignement or). */
.n-ex__ouvrir {
  display: inline-block; margin-top: .8rem; align-self: flex-start;
  font-family: 'IBM Plex Mono', monospace; font-size: .66rem;
  letter-spacing: .16em; text-transform: uppercase;
  color: var(--n-or-texte); text-decoration: none;
  border-bottom: 1px solid var(--n-or-ligne); padding-bottom: 2px;
  transition: color .15s, border-color .15s;
}
.n-ex__ouvrir:hover { color: var(--n-fg); border-color: var(--n-fg); }
/* le visuel entier est cliquable : on le signale */
.n-ex__visuel { display: block; cursor: pointer; }
.n-ex__visuel:hover img { opacity: .92; }
.n-ex__visuel img { transition: opacity .18s; }

/* ⚠️ SUR MOBILE : UNE carte pleine, pas « une et demie ».
   Meme raisonnement que pour le PC : une carte tronquee cree un desequilibre.
   A moins de 900 px, une carte occupe donc toute la largeur du carrousel, et le
   libelle « faites glisser » porte l'indication qu'il y en a d'autres. */
@media (max-width: 900px) {
  .n-car--exemples .n-ex { width: 100%; }
}
