/* ============================================================
   FINAL — chargée EN DERNIER par toutes les pages
   1. Utilitaires d'espacement et d'alignement : ils doivent l'emporter sur les composants
      (ex. « .offres mt-3 », « .etapes mt-3 »), d'où leur place après les feuilles de zone.
   2. ZONE IMPRESSION : devis, factures, rapports d'audit (A4 propre), masquage des interfaces.
   ============================================================ */

/* ---------- Utilitaires ---------- */
.centre { text-align: center; }
.mt-0 { margin-top: 0; } .mt-1 { margin-top: 1rem; } .mt-2 { margin-top: 2rem; } .mt-3 { margin-top: 3rem; }
.mb-2 { margin-bottom: 2rem; }

/* ============================================================
   5. ZONE IMPRESSION — devis, factures, rapports d'audit (A4 propre)
   Contrat avec les pages du Studio :
   - impression ciblée : <body class="… impression-active"> + le document dans UN élément
     `.zone-impression` ENFANT DIRECT de <body> → seul cet élément est imprimé (classe retirée
     après l'impression, événement afterprint). À l'écran, `.zone-impression` reste masquée.
   - sans cette classe : navigation, barre latérale, en-tête de page, barre client, boutons,
     bandeaux et tout `.no-print` (éditeurs, listes : à poser par chaque page) sont masqués.
   ============================================================ */
.doc-imprimable, .zone-impression { display: none; }
@media print {
  @page { size: A4; margin: 12mm; }
  body, body.atelier { background: #fff !important; color: #111 !important; font-size: 11pt; }
  body::before, body::after { display: none !important; }   /* grain et aurore : décor d'écran */

  /* --- Impression ciblée (body.impression-active > .zone-impression) --- */
  body.impression-active { padding: 0 !important; margin: 0 !important; }
  body.impression-active > :not(.zone-impression) { display: none !important; }
  body.impression-active > .zone-impression { display: block !important; color: #111; }

  /* --- Toujours masqués : interface, commandes, bandeaux --- */
  .no-print, .skip-link, .toast, .voile, .verrou, .pwa-banniere, .cookie-banner, .btn-haut, .fa-sync { display: none !important; }
  /* Vitrine */
  .entete, .pied, .sous-menu, .ruban, .ruban-zone, .burger { display: none !important; }
  .reveal, .js .reveal { opacity: 1 !important; transform: none !important; transition: none !important; animation: none !important; }
  /* Studio : menu, onglets, notifications, barres d'action ; le contenu de la vue s'imprime seul */
  .st-nav, .st-onglets, .st-toasts, .st-barre-enreg, .st-tete__actions, .st-zone-danger, .st-btn, .st-btn-mini, .st-icone-btn { display: none !important; }
  .st-app { display: block !important; }
  .st-carte { box-shadow: none !important; break-inside: avoid; }

  /* --- Document (devis / facture) : .doc-imprimable (bloc de la page) ou .zone-impression --- */
  .doc-imprimable { display: block !important; color: #111; }
  :is(.doc-imprimable, .zone-impression) { font-size: 10pt; line-height: 1.42; }
  :is(.doc-imprimable, .zone-impression)::before {   /* filet aux couleurs de l'agence, en tête de document */
    content: ""; display: block; height: 3pt; border-radius: 2pt; margin-bottom: 5mm;
    background: linear-gradient(90deg, #d8442b, #e09c33, #6fae9a, #6e93d6, #9a82d8); -webkit-print-color-adjust: exact; print-color-adjust: exact;
  }
  :is(.doc-imprimable, .zone-impression) :is(h1, h2, h3) { color: #111; line-height: 1.15; }
  :is(.doc-imprimable, .zone-impression) .doc-marque { font-size: 20pt; margin: 0; letter-spacing: -.3pt; }
  :is(.doc-imprimable, .zone-impression) p { margin: 0 0 1.5mm; }
  :is(.doc-imprimable, .zone-impression) .doc-entete { display: flex; justify-content: space-between; gap: 10mm; border-bottom: 1.5pt solid #22252e; padding-bottom: 4mm; margin-bottom: 5mm; }
  :is(.doc-imprimable, .zone-impression) table { width: 100%; border-collapse: collapse; margin: 4mm 0; }
  :is(.doc-imprimable, .zone-impression) th { background: #22252e !important; color: #fff !important; -webkit-print-color-adjust: exact; print-color-adjust: exact; padding: 2mm 2.5mm; text-align: left; font-size: 9pt; text-transform: uppercase; letter-spacing: .3pt; }
  :is(.doc-imprimable, .zone-impression) td { padding: 2mm 2.5mm; border-bottom: .5pt solid #ccc; font-size: 10pt; }
  :is(.doc-imprimable, .zone-impression) tbody tr:nth-child(even) td { background: #faf6ee; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  :is(.doc-imprimable, .zone-impression) tr { break-inside: avoid; }
  :is(.doc-imprimable, .zone-impression) .doc-totaux { margin-left: auto; width: 90mm; break-inside: avoid; }
  :is(.doc-imprimable, .zone-impression) .doc-totaux div { display: flex; justify-content: space-between; gap: 4mm; padding: 1.3mm 0; border-bottom: .5pt dashed #ccc; }
  :is(.doc-imprimable, .zone-impression) .doc-totaux span:last-child { white-space: nowrap; }
  :is(.doc-imprimable, .zone-impression) .doc-totaux .grand { font-weight: 700; font-size: 12pt; border-bottom: 0; border-top: 1.5pt solid #22252e; margin-top: 1mm; padding-top: 2mm; color: #b33420; }
  :is(.doc-imprimable, .zone-impression) .mentions { font-size: 7.5pt; line-height: 1.4; color: #555; margin-top: 6mm; border-top: .5pt solid #999; padding-top: 2.5mm; break-inside: avoid; }
  :is(.doc-imprimable, .zone-impression) .doc-pied { position: fixed; bottom: 0; left: 0; right: 0; text-align: center; font-size: 8pt; color: #555; }
}
