/* ============================================================
   BUREAU DE BEAUFORT — ÉCRANS W5a (css/ecrans.css)
   ------------------------------------------------------------
   Styles complémentaires pour Dashboard / Templates / Contacts
   NON couverts par theme.css : la modale d'édition d'un contact
   (formulaire + overlay) et quelques petits états (chargement,
   vide, erreur discrète). Tout en var(--...) (palette Bleu Plume).
   ============================================================ */

/* ===== Modale (édition / création de contact) ================ */
.voile-modale{
  position:fixed; inset:0; background:rgba(38,48,63,.42);
  display:flex; align-items:center; justify-content:center;
  padding:20px; z-index:100;
}
.modale{
  background:var(--blanc-carte); border-radius:var(--rayon); box-shadow:var(--ombre);
  width:100%; max-width:520px; max-height:88vh; overflow-y:auto;
  padding:26px 28px;
}
.modale h3{margin-bottom:18px}
.modale .form-grille{margin-bottom:6px}
/* ★ LES BOUTONS D'ACTION RESTENT TOUJOURS À L'ÉCRAN (25/08/2026)
   -------------------------------------------------------------
   MESURÉ sur l'écran d'Hubert (1366 × 673), fenêtre « Nouveau contact » :
   « Annuler » et « Enregistrer » s'ouvraient à **735-776 px pour 673 de haut**,
   soit 103 px sous le bord. La page, elle, ne défile pas (`.voile-modale` est
   en `position:fixed`). On POUVAIT les atteindre — en faisant défiler DANS la
   fenêtre, vérifié : le bouton remonte à 565-606 et redevient cliquable — mais
   rien ne le disait : on voyait un formulaire coupé sur « Pays » et aucun
   bouton. Sur son portable, l'écran Contacts avait l'air en lecture seule.

   `sticky` colle le pied au bas de la zone qui défile : quelle que soit la
   hauteur de l'écran, les deux boutons sont visibles à l'ouverture. Le fond
   opaque est indispensable — sans lui, les champs défilent sous les boutons. */
.modale-pied{
  display:flex; justify-content:space-between; align-items:center;
  margin-top:22px; padding-top:18px; border-top:1px solid var(--ligne);
  position:sticky; bottom:0; z-index:1;
  background:var(--blanc-carte);
  /* annule le padding latéral de .modale pour que le fond couvre toute la
     largeur, sinon on voit le texte passer dans les marges */
  margin-left:-28px; margin-right:-28px; padding-left:28px; padding-right:28px;
  padding-bottom:6px;
}
.modale-actions{display:flex; gap:10px}
.lien-danger{
  background:none; border:none; color:var(--cire); font-size:.84rem; font-weight:600;
  padding:8px 4px; text-decoration:underline; cursor:pointer;
}
.modale-erreur{
  background:#F7E4E1; color:var(--cire); border-radius:var(--rayon-ctrl);
  padding:10px 14px; font-size:.84rem; margin-bottom:14px;
}

/* ===== États discrets (chargement / vide / erreur réseau) ===== */
.etat-discret{
  color:var(--encre-doux); font-size:.88rem; padding:26px 16px; text-align:center;
}
.etat-discret.erreur{color:var(--cire)}

/* ===== Toast léger (bas d'écran, confirmation import CSV...) === */
.toast-bdb{
  position:fixed; left:50%; bottom:28px; transform:translateX(-50%);
  background:var(--encre); color:#fff; padding:12px 20px; border-radius:999px;
  font-size:.86rem; box-shadow:var(--ombre); z-index:200; opacity:0;
  transition:opacity .2s ease; pointer-events:none;
}
.toast-bdb.visible{opacity:1}

/* ===== Case à cocher d'action groupée (enrichissement) ========= */
.outils .info-selection{font-size:.83rem; color:var(--encre-doux)}

@media (max-width:600px){
  .modale{padding:20px}
}

/* ===== Corbeille sur une tuile de template (18/08/2026) ======
   Demande d'Hubert du 17/08 : « il me faut la possibilité de supprimer ».
   Aucun écran n'appelait DELETE /templates/{id} jusqu'ici — et comme chaque
   campagne partie d'un fichier en fabrique un automatiquement, la grille ne
   pouvait que grossir.

   ⚠️ theme.css est NO-TOUCH : la tuile y est déclarée sans `position`, donc on
   la passe en `relative` ICI, sinon le bouton se placerait par rapport à la
   page entière. `overflow:hidden` de la tuile suffit à garder le bouton dans
   ses bords arrondis. */
.tuile-template{position:relative}
.tuile-suppr{
  position:absolute; top:8px; right:8px; z-index:2;
  width:30px; height:30px; line-height:1; font-size:14px;
  border:1px solid var(--ligne); border-radius:8px;
  background:var(--blanc-carte); color:var(--encre-doux);
  cursor:pointer; opacity:0; transition:opacity .15s, border-color .15s, color .15s;
}
/* Découverte au survol, comme la corbeille des campagnes — mais TOUJOURS
   visible au clavier et au doigt : `opacity:0` seul rendrait la fonction
   inatteignable sans souris. */
.tuile-template:hover .tuile-suppr,
.tuile-suppr:focus-visible{opacity:1}
@media (hover:none){ .tuile-suppr{opacity:1} }
.tuile-suppr:hover, .tuile-suppr:focus-visible{
  border-color:var(--cire, #a23); color:var(--cire, #a23); outline:none;
}
.tuile-suppr[disabled]{opacity:.5; cursor:default}

/* ============================================================
   BANDEAU DU TABLEAU DE BORD — « votre campagne est payée »
   (25/08/2026, demande d'Hubert : « qu'on ai un message ou un truc du
   genre, et qu'on revienne automaiquement au tableau de bord »)
   ------------------------------------------------------------
   Posé par dashboard.js à l'arrivée, une seule fois, puis effacé. Mêmes
   jetons de couleur que la confirmation de l'étape III (.camp-confirmation)
   pour que le message qu'on vient de lire soit reconnu à l'arrivée.
   ============================================================ */
.dash-bandeau{
  background:var(--accent-voile); color:var(--accent-fonce);
  border-radius:var(--rayon-ctrl); padding:14px 16px;
  font-size:.92rem; font-weight:600; margin:0 0 16px;
}
