/* ==========================================================
   GUICHET FACILE — identité "papier administratif réinventé"
   Palette : encre #2438C6 · papier #FBFBF8 · trait #E4E6F2
             texte #16181D · tampon #C9273A
   Typo : Bricolage Grotesque (display) · Archivo (texte)
          Spline Sans Mono (chiffres, labels techniques)
   ========================================================== */

:root {
  --encre: #2438C6;
  --encre-fonce: #1A2A96;
  --papier: #FBFBF8;
  --grille: rgba(36, 56, 198, 0.07);
  --trait: #E4E6F2;
  --texte: #16181D;
  --texte-doux: #5A5E6E;
  --tampon: #C9273A;
  --blanc: #FFFFFF;
  --ombre: 0 2px 0 var(--trait);
  --rayon: 10px;
}

* { box-sizing: border-box; margin: 0; padding: 0; }

html { scroll-behavior: smooth; }
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation: none !important; transition: none !important; }
}

body {
  font-family: 'Archivo', system-ui, sans-serif;
  color: var(--texte);
  background-color: var(--papier);
  /* Grille millimétrée façon bloc-notes */
  background-image:
    linear-gradient(var(--grille) 1px, transparent 1px),
    linear-gradient(90deg, var(--grille) 1px, transparent 1px);
  background-size: 28px 28px;
  line-height: 1.55;
  -webkit-font-smoothing: antialiased;
}

/* ---------- Structure ---------- */
.conteneur { max-width: 1080px; margin: 0 auto; padding: 0 20px; }

header.site {
  background: var(--blanc);
  border-bottom: 2px solid var(--encre);
  position: sticky; top: 0; z-index: 50;
}
header.site .conteneur {
  display: flex; align-items: center; justify-content: space-between;
  min-height: 62px; gap: 16px;
}
.logo {
  font-family: 'Bricolage Grotesque', sans-serif;
  font-weight: 800; font-size: 1.15rem; letter-spacing: -0.02em;
  color: var(--texte); text-decoration: none; white-space: nowrap;
}
.logo span { color: var(--encre); }
nav.principal { display: flex; gap: 4px; flex-wrap: wrap; }
nav.principal a {
  font-family: 'Spline Sans Mono', monospace;
  font-size: 0.78rem; text-decoration: none; color: var(--texte-doux);
  padding: 6px 10px; border-radius: 6px;
}
nav.principal a:hover, nav.principal a[aria-current="page"] {
  color: var(--encre); background: rgba(36,56,198,0.07);
}

/* ---------- Hero ---------- */
.hero { padding: 64px 0 48px; position: relative; }
.hero h1 {
  font-family: 'Bricolage Grotesque', sans-serif;
  font-weight: 800; letter-spacing: -0.03em;
  font-size: clamp(2rem, 5.5vw, 3.4rem);
  line-height: 1.05; max-width: 15ch;
}
.hero h1 em { font-style: normal; color: var(--encre); }
.hero p.sous-titre {
  margin-top: 18px; font-size: 1.05rem; color: var(--texte-doux); max-width: 52ch;
}

/* Tampon — élément signature */
.tampon {
  display: inline-block;
  font-family: 'Spline Sans Mono', monospace;
  font-weight: 700; font-size: 0.82rem; letter-spacing: 0.14em;
  color: var(--tampon);
  border: 3px double var(--tampon);
  border-radius: 6px;
  padding: 7px 14px;
  transform: rotate(-4deg);
  text-transform: uppercase;
  background: rgba(201,39,58,0.04);
  user-select: none;
}
.hero .tampon { position: absolute; top: 40px; right: 20px; }
@media (max-width: 720px) { .hero .tampon { position: static; margin-bottom: 20px; } }

/* ---------- Cartes outils ---------- */
.grille-outils {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 16px; padding: 8px 0 64px;
}
.carte-outil {
  background: var(--blanc); border: 1.5px solid var(--trait);
  border-radius: var(--rayon); padding: 22px;
  text-decoration: none; color: inherit; display: block;
  transition: border-color 0.15s ease, transform 0.15s ease;
}
.carte-outil:hover { border-color: var(--encre); transform: translateY(-2px); }
.carte-outil .code {
  font-family: 'Spline Sans Mono', monospace; font-size: 0.72rem;
  color: var(--encre); letter-spacing: 0.1em;
}
.carte-outil h2 {
  font-family: 'Bricolage Grotesque', sans-serif; font-weight: 700;
  font-size: 1.18rem; margin: 8px 0 6px; letter-spacing: -0.01em;
}
.carte-outil p { font-size: 0.9rem; color: var(--texte-doux); }
.carte-outil .action {
  margin-top: 14px; font-size: 0.85rem; font-weight: 600; color: var(--encre);
}

/* ---------- Pages outil : formulaire + aperçu ---------- */
.entete-outil { padding: 40px 0 24px; }
.entete-outil .code {
  font-family: 'Spline Sans Mono', monospace; font-size: 0.75rem;
  color: var(--encre); letter-spacing: 0.12em;
}
.entete-outil h1 {
  font-family: 'Bricolage Grotesque', sans-serif; font-weight: 800;
  font-size: clamp(1.6rem, 4vw, 2.4rem); letter-spacing: -0.02em; margin-top: 6px;
}
.entete-outil p { margin-top: 10px; color: var(--texte-doux); max-width: 60ch; }

.deux-colonnes {
  display: grid; grid-template-columns: 1fr 1.1fr; gap: 24px;
  align-items: start; padding-bottom: 64px;
}
@media (max-width: 860px) { .deux-colonnes { grid-template-columns: 1fr; } }

.panneau {
  background: var(--blanc); border: 1.5px solid var(--trait);
  border-radius: var(--rayon); padding: 24px;
}
.panneau h2 {
  font-family: 'Spline Sans Mono', monospace; font-size: 0.78rem;
  letter-spacing: 0.12em; text-transform: uppercase; color: var(--texte-doux);
  margin-bottom: 18px;
}

/* Formulaires */
.champ { margin-bottom: 16px; }
.champ label {
  display: block; font-size: 0.85rem; font-weight: 600; margin-bottom: 5px;
}
.champ .aide { font-size: 0.76rem; color: var(--texte-doux); margin-top: 4px; }
input[type="text"], input[type="number"], input[type="date"],
input[type="email"], select, textarea {
  width: 100%; padding: 10px 12px;
  border: 1.5px solid var(--trait); border-radius: 8px;
  font-family: inherit; font-size: 0.95rem; color: var(--texte);
  background: var(--blanc);
}
input:focus, select:focus, textarea:focus {
  outline: 3px solid rgba(36,56,198,0.25); border-color: var(--encre);
}
textarea { resize: vertical; min-height: 80px; }

.rangee { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
@media (max-width: 480px) { .rangee { grid-template-columns: 1fr; } }

/* Boutons */
.bouton {
  display: inline-flex; align-items: center; gap: 8px;
  font-family: 'Bricolage Grotesque', sans-serif; font-weight: 700;
  font-size: 0.95rem; padding: 11px 20px; border-radius: 8px;
  border: 2px solid var(--encre); cursor: pointer;
  background: var(--encre); color: var(--blanc);
  transition: background 0.15s ease;
}
.bouton:hover { background: var(--encre-fonce); }
.bouton.secondaire { background: var(--blanc); color: var(--encre); }
.bouton.secondaire:hover { background: rgba(36,56,198,0.06); }
.barre-actions { display: flex; gap: 10px; flex-wrap: wrap; margin-top: 18px; }

/* Aperçu document */
.apercu {
  position: sticky; top: 84px;
}
@media (max-width: 860px) { .apercu { position: static; } }
.document {
  background: var(--blanc); border: 1.5px solid var(--trait);
  border-radius: var(--rayon); padding: 34px 32px;
  font-family: 'Archivo', sans-serif; font-size: 0.88rem; line-height: 1.7;
  white-space: pre-wrap; position: relative; min-height: 340px;
  box-shadow: 4px 4px 0 var(--trait);
}
.document .tampon-doc {
  position: absolute; top: 18px; right: 18px;
  font-family: 'Spline Sans Mono', monospace; font-weight: 700;
  font-size: 0.68rem; letter-spacing: 0.12em; color: var(--tampon);
  border: 2.5px double var(--tampon); border-radius: 5px;
  padding: 5px 10px; transform: rotate(6deg); text-transform: uppercase;
  background: var(--blanc);
}

/* Résultats calculateurs */
.resultat-principal {
  background: var(--encre); color: var(--blanc);
  border-radius: var(--rayon); padding: 22px; margin-bottom: 16px;
}
.resultat-principal .etiquette {
  font-family: 'Spline Sans Mono', monospace; font-size: 0.72rem;
  letter-spacing: 0.12em; text-transform: uppercase; opacity: 0.8;
}
.resultat-principal .montant {
  font-family: 'Bricolage Grotesque', sans-serif; font-weight: 800;
  font-size: clamp(1.8rem, 5vw, 2.6rem); letter-spacing: -0.02em; margin-top: 4px;
}
.detail-ligne {
  display: flex; justify-content: space-between; gap: 12px;
  padding: 10px 2px; border-bottom: 1px dashed var(--trait);
  font-size: 0.88rem;
}
.detail-ligne:last-child { border-bottom: none; }
.detail-ligne .val { font-family: 'Spline Sans Mono', monospace; font-weight: 600; white-space: nowrap; }

.note-legale {
  margin-top: 16px; padding: 12px 14px; font-size: 0.78rem;
  color: var(--texte-doux); background: rgba(36,56,198,0.05);
  border-left: 3px solid var(--encre); border-radius: 0 6px 6px 0;
}

/* Emplacement publicité (AdSense) */
.pub {
  margin: 32px 0; min-height: 90px; border: 1.5px dashed var(--trait);
  border-radius: var(--rayon); display: flex; align-items: center;
  justify-content: center; color: var(--texte-doux);
  font-family: 'Spline Sans Mono', monospace; font-size: 0.72rem;
  letter-spacing: 0.1em;
}

/* FAQ / SEO */
.section-texte { padding: 24px 0 56px; max-width: 720px; }
.section-texte h2 {
  font-family: 'Bricolage Grotesque', sans-serif; font-weight: 700;
  font-size: 1.4rem; margin: 28px 0 10px; letter-spacing: -0.01em;
}
.section-texte h3 { font-size: 1.05rem; margin: 20px 0 6px; }
.section-texte p { color: var(--texte-doux); margin-bottom: 10px; }

/* Pied de page */
footer.site {
  background: var(--blanc); border-top: 2px solid var(--encre);
  padding: 28px 0; margin-top: 24px;
}
footer.site .conteneur {
  display: flex; justify-content: space-between; gap: 16px; flex-wrap: wrap;
  font-size: 0.82rem; color: var(--texte-doux);
}
footer.site a { color: var(--encre); text-decoration: none; }
footer.site a:hover { text-decoration: underline; }

/* Impression : seul le document généré sort */
@media print {
  body { background: #fff; }
  header.site, footer.site, .panneau.formulaire, .barre-actions,
  .pub, .entete-outil, .note-legale, .section-texte { display: none !important; }
  .deux-colonnes { display: block; padding: 0; }
  .document {
    border: none; box-shadow: none; padding: 0;
    font-size: 12pt; min-height: auto;
  }
  .document .tampon-doc { display: none; }
}

/* Accessibilité clavier */
a:focus-visible, button:focus-visible {
  outline: 3px solid rgba(36,56,198,0.4); outline-offset: 2px;
}
