/* =====================================================================
   LEDIAGIMMO — Interface web
   Charte officielle : blanc #FFFFFF · teal #001D1F · degrade #00F663 -> #00393B
   Gris : Cloud #EDEFF7 · Smoke #D3D6E0 · Steel #BCBFCC · Space #9DA2B3 · Graphite #6E7180
   Typo : Manrope
   ===================================================================== */

@font-face { font-family:'Manrope'; font-weight:400; src:url('../fonts/Manrope-Regular.ttf') format('truetype'); font-display:swap; }
@font-face { font-family:'Manrope'; font-weight:600; src:url('../fonts/Manrope-SemiBold.ttf') format('truetype'); font-display:swap; }
@font-face { font-family:'Manrope'; font-weight:700; src:url('../fonts/Manrope-Bold.ttf') format('truetype'); font-display:swap; }

:root{
  --blanc:#FFFFFF; --teal:#001D1F; --vert:#00753A; --vert-vif:#00F663; --vert-fonce:#00393B;
  --cloud:#EDEFF7; --smoke:#D3D6E0; --steel:#BCBFCC; --space:#9DA2B3; --graphite:#6E7180;
  --texte:#40424D; --bord:#E6E9EE; --fond-bloc:#F3F5F4; --vert-pale:#E7F3EC;
}

*{box-sizing:border-box}

/* L'attribut hidden doit primer : sans cela, label{display:block} ci-dessous
   re-affiche les blocs masques (prix manuel, arbitrage...). */
[hidden]{display:none !important}
body{
  margin:0; background:var(--cloud); color:var(--texte);
  font-family:'Manrope',-apple-system,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;
  font-size:14px; line-height:1.45;
}
h1{font-size:20px;color:var(--teal);margin:18px 0 12px}
h2{font-size:12px;color:var(--vert);text-transform:uppercase;letter-spacing:1.2px;margin:18px 0 8px}
a{color:var(--vert-fonce)}
code{background:var(--fond-bloc);padding:1px 4px;border-radius:3px}

/* --- Barre de navigation --- */
.barre{
  display:flex;align-items:center;gap:24px;
  background:var(--teal);color:#fff;padding:10px 20px;
  border-bottom:3px solid transparent;
  border-image:linear-gradient(90deg,var(--vert-vif),var(--vert-fonce)) 1;
}
.barre nav{display:flex;gap:18px;flex:1}
.barre nav a{color:#fff;text-decoration:none;font-weight:600;font-size:13px;opacity:.85}
.barre nav a:hover{opacity:1}
.barre .utilisateur{display:flex;gap:12px;align-items:center;font-size:13px;color:var(--steel)}

/* --- Bouton hamburger (mobile uniquement) --- */
.burger{
  display:none;margin-left:auto;width:44px;height:44px;padding:10px;
  background:transparent;border:0;cursor:pointer;border-radius:6px;
}
.burger span{
  display:block;height:2px;background:#fff;border-radius:2px;
  transition:transform .2s ease, opacity .2s ease;
}
.burger span + span{margin-top:5px}
.burger[aria-expanded="true"] span:nth-child(1){transform:translateY(7px) rotate(45deg)}
.burger[aria-expanded="true"] span:nth-child(2){opacity:0}
.burger[aria-expanded="true"] span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
.mobile-seul{display:none}
.barre .deconnexion{color:var(--vert-vif);text-decoration:none;font-weight:600}
.marque img{display:block}

main{max-width:1180px;margin:0 auto;padding:0 20px 50px}
.pied{text-align:center;color:var(--space);font-size:11px;padding:16px}

/* --- Cartes --- */
.carte{background:#fff;border:1px solid var(--bord);border-radius:8px;padding:18px 20px;margin-bottom:16px}
.colonnes{display:grid;grid-template-columns:1fr 1fr;gap:16px}

/* --- Indicateurs --- */
.indicateurs{display:grid;grid-template-columns:repeat(auto-fit,minmax(185px,1fr));gap:12px;margin-bottom:16px}
.kpi{background:#fff;border:1px solid var(--bord);border-radius:8px;padding:14px 16px;border-left:4px solid var(--steel)}
.kpi span{display:block;font-size:11px;text-transform:uppercase;letter-spacing:1px;color:var(--graphite)}
.kpi strong{display:block;font-size:22px;color:var(--teal);margin-top:4px}
.kpi small{color:var(--space);font-size:11px}
.kpi.vert{border-left-color:var(--vert)}
.kpi.orange{border-left-color:#C97A00}

/* --- Formulaires --- */
label{display:block;font-size:12px;color:var(--graphite);margin-bottom:10px}
input,select,textarea{
  width:100%;padding:8px 10px;margin-top:3px;
  border:1px solid var(--smoke);border-radius:6px;background:#fff;
  font-family:inherit;font-size:14px;color:var(--teal);
}
input:focus,select:focus,textarea:focus{outline:2px solid var(--vert);border-color:var(--vert)}
.grille2{display:grid;grid-template-columns:1fr 1fr;gap:0 16px}
.actions{margin-top:14px;display:flex;gap:10px;align-items:center}
.enligne{display:inline-flex;gap:8px;align-items:center;margin:0 10px 8px 0}
.enligne input,.enligne select{width:auto}
.indice{font-size:11px;color:var(--graphite)}

/* --- Boutons --- */
.btn{
  display:inline-block;padding:8px 14px;border-radius:6px;cursor:pointer;
  border:1px solid var(--smoke);background:#fff;color:var(--teal);
  font-family:inherit;font-size:13px;font-weight:600;text-decoration:none;
}
.btn:hover{border-color:var(--vert)}
.btn.primaire{background:linear-gradient(90deg,var(--vert-vif),var(--vert-fonce));color:#001D1F;border:0}
.btn.primaire:hover{filter:brightness(1.05)}
.btn.danger{color:#A11B1B;border-color:#E8C4C4}
.btn.discret{color:var(--graphite)}
.btn.mini{padding:4px 8px;font-size:12px}
.droite{float:right;margin-left:8px}

/* --- Tableaux --- */
table.liste,table.lignes{width:100%;border-collapse:collapse;background:#fff;font-size:13px}
table.liste th,table.lignes th{
  background:var(--fond-bloc);color:var(--teal);text-align:left;
  font-size:11px;text-transform:uppercase;letter-spacing:1px;padding:9px 10px;
  border-bottom:1px solid var(--bord);
}
table.liste td,table.lignes td{padding:9px 10px;border-bottom:1px solid var(--bord)}
table.liste{border:1px solid var(--bord);border-radius:8px;overflow:hidden}
.d{text-align:right}.c{text-align:center}
.discret{color:var(--graphite);font-size:12px}
.montant{font-weight:700;color:var(--teal)}
.num{font-weight:700;font-family:'Manrope',monospace;color:var(--vert-fonce);text-decoration:none}
.vide{text-align:center;color:var(--space);padding:26px}
.mini-input{font-size:12px}
table.lignes input{margin:0}
table.mini-totaux{width:100%;font-size:14px}
table.mini-totaux td{padding:5px 0;border-bottom:1px solid var(--bord)}
table.mini-totaux tr.ttc td{font-weight:700;color:var(--teal);background:var(--vert-pale)}

/* --- Etats --- */
.etat{display:inline-block;padding:2px 8px;border-radius:20px;font-size:11px;font-weight:700;
      background:var(--cloud);color:var(--graphite)}
.etat.accepte,.etat.payee{background:var(--vert-pale);color:#00593A}
.etat.emise,.etat.en_attente{background:#FFF4DC;color:#8A5A00}
.etat.retard{background:#FDE2E2;color:#A11B1B}
.etat.refuse,.etat.expire,.etat.annulee{background:var(--smoke);color:#4A4D59}
.etat.transforme{background:#E3ECFF;color:#26478D}

/* --- Alertes --- */
.alerte{padding:10px 14px;border-radius:6px;margin:10px 0;font-size:13px}
.alerte.succes{background:var(--vert-pale);color:#00593A;border:1px solid #B6E2C9}
.alerte.danger{background:#FDE2E2;color:#A11B1B;border:1px solid #F3C2C2}
.alerte.info{background:#EEF3FF;color:#26478D;border:1px solid #C9D8F5}
.alerte.conforme{font-size:12px;padding:6px 12px}

/* --- Editeur de devis --- */
.ajout-prestations{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}
.ajout-prestations select{width:auto;min-width:340px;margin:0}
.totaux-live{display:flex;gap:24px;justify-content:flex-end;padding:12px 0;font-size:14px}
.totaux-live strong{color:var(--teal);margin-left:6px}
.totaux-live .ttc strong{background:var(--vert-pale);padding:3px 8px;border-radius:4px}
.historique{list-style:none;padding:0;font-size:12px}
.historique li{padding:5px 0;border-bottom:1px solid var(--bord)}
.filtres{display:flex;gap:8px;margin:14px 0;align-items:center}
.filtres select,.filtres input{width:auto;margin:0}
.annee{font-size:13px;color:var(--space);font-weight:400}

/* --- Page de connexion --- */
.page-login{
  display:flex;align-items:center;justify-content:center;min-height:100vh;
  background:linear-gradient(135deg,var(--teal),var(--vert-fonce));
}
.carte-login{background:#fff;padding:34px;border-radius:12px;width:360px;box-shadow:0 20px 60px rgba(0,0,0,.28)}
.carte-login h1{font-size:17px;margin:14px 0 20px}
.carte-login .btn{width:100%;text-align:center;margin-top:6px}
.carte-login .note{text-align:center;font-size:11px;color:var(--space);margin:16px 0 0}


/* =====================================================================
   Composants de l'editeur de devis
   ===================================================================== */

/* --- Autocompletion adresse (Base Adresse Nationale) --- */
.ban-suggestions{
  position:relative;border:1px solid var(--smoke);border-top:0;border-radius:0 0 6px 6px;
  background:#fff;z-index:20;overflow:hidden;
}
.ban-item{
  display:block;width:100%;text-align:left;padding:10px 12px;border:0;background:#fff;
  font-family:inherit;font-size:14px;color:var(--teal);cursor:pointer;
  border-bottom:1px solid var(--cloud);
}
.ban-item:last-child{border-bottom:0}
.ban-item:hover,.ban-item:focus{background:var(--vert-pale)}

/* --- Cases a cocher des diagnostics --- */
.cases{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:8px;margin-bottom:14px}
.case{
  display:flex;align-items:center;gap:10px;margin:0;padding:12px 14px;
  border:1px solid var(--smoke);border-radius:8px;background:#fff;cursor:pointer;
  font-size:13px;color:var(--teal);line-height:1.3;transition:border-color .12s,background .12s;
}
.case:hover{border-color:var(--vert)}
.case input{width:20px;height:20px;margin:0;flex:0 0 auto;accent-color:#00753A;cursor:pointer}
.case span{flex:1}
.case:has(input:checked){border-color:var(--vert);background:var(--vert-pale);font-weight:600}

/* --- Bloc forfait --- */
.forfait{
  border:1px solid var(--bord);border-radius:8px;background:var(--fond-bloc);
  padding:14px 16px;margin-bottom:16px;
}
.forfait-tete{display:flex;justify-content:space-between;align-items:baseline;gap:12px;flex-wrap:wrap}
.forfait-tete span{font-size:13px;color:var(--teal);font-weight:600}
.forfait-tete strong{font-size:24px;color:var(--vert-fonce);white-space:nowrap}

/* --- Arbitrage typologie / superficie --- */
.conflit{
  margin-top:12px;padding:12px;border:1px solid #F0C36D;border-radius:6px;background:#FFF8E7;
}
.conflit p{margin:0 0 10px;font-size:13px;color:#8A5A00}
.conflit-options{display:flex;gap:10px;flex-wrap:wrap}
.choix-base{
  flex:1 1 160px;padding:12px;text-align:center;line-height:1.35;
  border:1px solid var(--smoke);background:#fff;
}
.choix-base strong{display:block;font-size:18px;color:var(--vert-fonce)}
.choix-base small{color:var(--graphite);font-size:11px}
.choix-base:hover{border-color:var(--vert);background:var(--vert-pale)}

/* =====================================================================
   RESPONSIVE — l'application est utilisable au doigt sur telephone
   ===================================================================== */
@media (max-width:900px){
  .indicateurs,.grille2,.colonnes{grid-template-columns:1fr}
  .barre{flex-wrap:wrap;gap:10px}
}

@media (max-width:640px){
  body{font-size:15px}
  main{padding:0 12px 40px}
  h1{font-size:18px}
  .carte{padding:14px;border-radius:8px}

  /* --- Navigation mobile : menu deroulant au hamburger --- */
  .barre{padding:8px 12px;gap:8px;position:relative;flex-wrap:nowrap}
  .burger{display:block}
  .mobile-seul{display:block}
  .barre .utilisateur{display:none}      /* le nom prend trop de place ; deconnexion passe dans le menu */

  .barre nav{
    display:none;                        /* ferme par defaut */
    position:absolute;top:100%;left:0;right:0;z-index:50;
    flex-direction:column;gap:0;
    background:var(--teal);
    border-top:1px solid rgba(255,255,255,.12);
    box-shadow:0 12px 24px rgba(0,0,0,.28);
  }
  .barre nav.ouvert{display:flex}        /* bascule par le JS */
  .barre nav a{
    padding:15px 16px;font-size:15px;opacity:1;
    border-bottom:1px solid rgba(255,255,255,.08);
  }
  .barre nav a:last-child{border-bottom:0}
  .barre nav a:active{background:rgba(255,255,255,.08)}

  /* Cibles tactiles : 44px minimum */
  input,select,textarea{
    font-size:16px;      /* empeche le zoom automatique d'iOS */
    padding:12px;min-height:44px;
  }
  .btn{padding:12px 16px;min-height:44px;font-size:15px}
  .btn.mini{min-height:36px;padding:6px 10px}
  .actions{flex-direction:column;align-items:stretch}
  .actions .btn{width:100%;text-align:center}

  .cases{grid-template-columns:1fr}
  .case{padding:14px;font-size:14px}

  .forfait-tete strong{font-size:21px}
  .conflit-options{flex-direction:column}
  .choix-base{width:100%}

  .ajout-prestations{flex-direction:column;align-items:stretch}
  .ajout-prestations select{width:100%;min-width:0}

  .totaux-live{
    flex-direction:column;gap:6px;align-items:stretch;text-align:right;
    background:#fff;border:1px solid var(--bord);border-radius:8px;padding:12px;
  }

  .filtres{flex-wrap:wrap}
  .filtres select,.filtres input,.filtres .btn{flex:1 1 100%}

  /* Tableaux : defilement horizontal plutot que compression illisible */
  table.liste,table.lignes{display:block;overflow-x:auto;white-space:nowrap}

  /* Suppléments : une ligne = un bloc empile */
  #table-supplements thead{display:none}
  #table-supplements,#table-supplements tbody,#table-supplements tr,#table-supplements td{
    display:block;width:100%;white-space:normal;
  }
  #table-supplements tr{
    border:1px solid var(--bord);border-radius:8px;padding:10px;margin-bottom:10px;background:#fff;
  }
  #table-supplements td{border:0;padding:4px 0}
  #table-supplements td.d{text-align:right}

  .droite{float:none;display:block;margin:8px 0 0}
  .carte-login{width:100%;padding:24px;margin:0 12px}
}

/* --- Ecran d'envoi par e-mail --- */
.piece-jointe{
  border:1px solid var(--bord);border-radius:6px;background:var(--fond-bloc);
  padding:12px 14px;margin:12px 0;font-size:13px;color:var(--teal);
}
.piece-jointe .indice{display:block;margin-top:2px}

/* --- Canal d'acquisition : cases plus compactes --- */
.canaux{grid-template-columns:repeat(auto-fill,minmax(190px,1fr))}
.canaux .case{padding:10px 12px}

/* --- Prix final editable dans le bandeau de totaux --- */
.totaux-live .prix-final{margin:0;font-size:13px;color:var(--graphite);display:flex;align-items:center;gap:8px}
.totaux-live .prix-final input{
  width:130px;margin:0;text-align:right;font-weight:700;font-size:16px;color:var(--teal);
}
#ligne-remise strong{color:#A11B1B}

/* --- Rendement par canal (tableau de bord) --- */
.canaux-stats{margin:22px 0}
.canaux-stats h2{font-size:15px;margin:0 0 8px}
table.liste.compacte td, table.liste.compacte th{padding:7px 10px;font-size:13px}
table.liste.compacte em{color:var(--graphite);font-style:normal}

/* --- Pieces jointes --- */
.carte.pieces{margin-top:18px}
.carte.pieces h2{font-size:15px;margin:0 0 6px}
.pieces-liste{margin:12px 0 0;border:1px solid var(--bord);border-radius:8px;overflow:hidden}
.piece{display:flex;align-items:center;gap:12px;padding:9px 12px;font-size:13px;
  border-bottom:1px solid var(--bord);background:#fff}
.piece:last-child{border-bottom:0}
.piece .nom{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.piece .taille{color:var(--graphite);font-variant-numeric:tabular-nums}
.piece.total{background:var(--fond-bloc)}
.piece.total.attention{background:#FFF4E5;color:#8A4B00}
.en-ligne{display:inline;margin:0}
.etoile{color:#A11B1B;font-weight:700}
.note-etoile{font-size:12px;color:var(--graphite);line-height:1.45;margin:6px 0 0}
@media (max-width:640px){
  .piece{flex-wrap:wrap}
  .piece .nom{flex:1 0 100%}
}

/* --- v6 : packs, criteres d'age, termites, nouveau client, bien 2, admin --- */
.sous-titre{font-size:13px;text-transform:uppercase;letter-spacing:.6px;color:var(--vert);
  margin:18px 0 6px;font-weight:700}
.indice-inline{font-weight:400;text-transform:none;letter-spacing:0;color:var(--graphite);font-size:12px}

.packs{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:10px 0 4px}
.btn.pack{border:1.5px solid var(--vert);color:var(--vert);font-weight:700;background:#fff}
.btn.pack:hover{background:var(--vert-pale)}
.packs .indice{flex:1;min-width:220px;margin:0}

.criteres-age{grid-template-columns:repeat(auto-fit,minmax(230px,1fr))}
.criteres-age .case small{display:block;color:var(--graphite);font-weight:400}
.radios-install{display:flex;flex-wrap:wrap;align-items:center;gap:10px;cursor:default}
.radios-install label{display:inline-flex;align-items:center;gap:5px;margin:0;font-weight:400;cursor:pointer}

.alerte-termites{margin:8px 0;padding:9px 12px;border-radius:8px;font-size:13px;font-weight:600}
.alerte-termites.attention{background:#FFF4E5;color:#8A4B00;border:1px solid #F0C489}
.alerte-termites.ok{background:var(--vert-pale);color:#0A5C36;border:1px solid #A8D8BC}

.nouveau-client{border:1.5px dashed var(--steel);border-radius:10px;padding:14px 16px;margin:0 0 14px}

#section-bien2{border-top:3px solid var(--vert);margin-top:18px;padding-top:4px}
#section-bien2 h2 .btn{margin-left:10px;vertical-align:middle}

.case-relance{margin-top:12px}
.case-relance small{display:block;color:var(--graphite);font-weight:400;line-height:1.4}

/* Administration des tarifs */
.tableau-defilant{overflow-x:auto}
.grille-prix input.prix-cellule, input.prix-cellule{
  width:74px;margin:0;padding:5px 6px;text-align:right;font-variant-numeric:tabular-nums}
.carte h3{font-size:13.5px;margin:14px 0 6px;color:var(--teal)}

/* --- v7 : prix du forfait editable --- */
.prix-forfait-zone{display:inline-flex;align-items:center;gap:5px;font-weight:700;white-space:nowrap}
input.prix-forfait{width:104px;margin:0;padding:6px 8px;text-align:right;
  font-weight:700;font-size:15.5px;color:var(--teal)}

/* --- v7 : tableau de bord epure --- */
.tdb-colonnes{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:16px}
@media (max-width:900px){.tdb-colonnes{grid-template-columns:1fr}}
.tdb-liste{margin:0;padding:0;list-style:none}
.tdb-liste li{display:flex;align-items:baseline;gap:10px;padding:8px 2px;
  border-bottom:1px solid var(--bord);font-size:13.5px;flex-wrap:wrap}
.tdb-liste li:last-child{border-bottom:0}
.tdb-liste .num a{font-weight:700;color:var(--vert);text-decoration:none}
.tdb-liste .qui{flex:1;min-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tdb-liste .tel{color:var(--graphite);font-variant-numeric:tabular-nums}
.tdb-liste .cb{font-weight:700;font-variant-numeric:tabular-nums}
.tdb-liste .quand{color:var(--graphite);font-size:12.5px}
.tdb-liste .retard{color:#A11B1B;font-weight:700}
.tdb-vide{color:var(--graphite);font-size:13.5px;padding:10px 2px}
.carte .tout-voir{float:right;font-size:12.5px}

/* Graphique canaux (SVG genere en PHP, aucune dependance) */
.graphe-canaux{margin:6px 0 2px}
.graphe-canaux text{font-family:inherit}

/* =====================================================================
   LOTS A & D — Rendez-vous (accueil mobile-first, calendrier, cartes,
   fiche detail, case dans le formulaire de devis).
   Pensé smartphone d'abord : la grille des cartes s'élargit sur desktop.
   ===================================================================== */

/* --- Accueil : action principale + zone RDV --- */
.accueil-mobile{margin:16px 0 20px}
.cta-devis{display:block;text-align:center;font-size:17px;font-weight:800;
  padding:16px;border-radius:10px;margin-bottom:14px}
.accueil-rdv{display:grid;grid-template-columns:1fr;gap:14px}
@media (min-width:760px){
  .accueil-rdv{grid-template-columns:280px 1fr;align-items:start}
}

/* --- Mini-calendrier mensuel --- */
.mini-calendrier{background:#fff;border:1px solid var(--bord);border-radius:10px;padding:12px}
.cal-tete{text-align:center;font-weight:700;color:var(--teal);font-size:14px;
  text-transform:capitalize;margin-bottom:8px}
.cal-grille{display:grid;grid-template-columns:repeat(7,1fr);gap:3px}
.cal-jour-nom{text-align:center;font-size:10px;font-weight:700;color:var(--space);
  text-transform:uppercase;padding-bottom:2px}
.cal-case{position:relative;text-align:center;font-size:12.5px;color:var(--texte);
  padding:7px 0;border-radius:6px;font-variant-numeric:tabular-nums}
.cal-case.vide{visibility:hidden}
.cal-case.aujourdhui{outline:1.5px solid var(--steel)}
.cal-case.a-rdv{background:var(--vert-pale);color:#0A5C36;font-weight:700}
.cal-case.a-rdv::after{content:"";position:absolute;left:50%;bottom:3px;transform:translateX(-50%);
  width:4px;height:4px;border-radius:50%;background:var(--vert)}
.cal-case.prochain{background:linear-gradient(90deg,var(--vert-vif),var(--vert-fonce));
  color:#001D1F;font-weight:800}
.cal-case.prochain::after{background:#001D1F}
.cal-legende{margin:10px 0 0;font-size:12px;color:var(--graphite)}
.cal-legende strong{color:var(--teal)}

/* --- Cartes des 2 prochains RDV (cliquables) --- */
.rdv-cartes{display:grid;grid-template-columns:1fr;gap:10px}
@media (min-width:520px){.rdv-cartes{grid-template-columns:1fr 1fr}}
.rdv-carte{display:flex;flex-direction:column;gap:4px;background:#fff;
  border:1px solid var(--bord);border-left:4px solid var(--vert);border-radius:10px;
  padding:12px 14px;text-decoration:none;color:var(--texte);min-height:44px}
.rdv-carte:hover{border-color:var(--vert);box-shadow:0 4px 14px rgba(0,0,0,.06)}
.rdv-carte.vide{border-left-color:var(--steel);color:var(--graphite);text-align:center}
.rdv-carte.vide small{display:block;margin-top:4px;font-size:11.5px}
.rdv-quand{font-size:11px;text-transform:uppercase;letter-spacing:.5px;
  font-weight:800;color:var(--vert)}
.rdv-client{font-size:15px;font-weight:700;color:var(--teal)}
.rdv-lieu{font-size:12.5px;color:var(--graphite)}
.rdv-pied{display:flex;justify-content:space-between;align-items:baseline;gap:8px;margin-top:4px}
.rdv-pied strong{font-size:15px;color:var(--teal);font-variant-numeric:tabular-nums}
.rdv-pied em{font-style:normal;font-size:12.5px;color:var(--graphite)}

/* --- Fiche detail d'un RDV --- */
.fil-ariane{font-size:13px;margin:0 0 6px}
.fil-ariane a{color:var(--graphite);text-decoration:none}
.rdv-date-titre{display:block;font-size:14px;font-weight:600;color:var(--vert);margin-top:2px}
.rdv-detail{display:grid;grid-template-columns:1fr;gap:14px}
@media (min-width:700px){.rdv-detail{grid-template-columns:1fr 1fr}}
.rdv-fiche h2{margin-top:0}
.rdv-nom{font-size:17px;font-weight:700;color:var(--teal);margin:2px 0}
.rdv-contact{color:var(--graphite);margin:0 0 6px}
.rdv-appel{display:inline-block;text-align:center;font-weight:700;margin:6px 0}
.rdv-adresse{font-size:15px;color:var(--teal);font-weight:600}
.rdv-lien-devis{font-size:13px;color:var(--graphite)}

/* --- Case « prise de RDV » dans le formulaire de devis (toggle CSS pur) --- */
.bloc-rdv{background:var(--fond-bloc);border:1px solid var(--bord);border-radius:8px;
  padding:12px 14px;margin:6px 0 4px}
.rdv-toggle{width:18px;height:18px;vertical-align:middle;accent-color:var(--vert)}
.rdv-toggle-label{font-weight:600;color:var(--teal);margin-left:6px;cursor:pointer}
.rdv-champs{display:none;margin-top:12px}
.rdv-toggle:checked ~ .rdv-champs{display:block}

/* --- Lot K : barre d'export ZIP des factures payees --- */
.filtres.export-zip{margin-top:-6px;background:var(--fond-bloc);border:1px solid var(--bord);
  border-radius:8px;padding:10px 12px}
.export-zip-libelle{font-size:13px;color:var(--texte);align-self:center}
.export-zip-libelle strong{color:var(--vert)}

/* --- Ajustements 09/09/2026 (retours Olivier) --- */
/* Bouton "Créer un devis" : plus discret et non pleine largeur sur ordinateur */
@media (min-width:760px){
  .cta-devis{display:inline-block;width:auto;min-width:300px;padding:13px 28px;font-size:15px}
}
/* Prise de RDV : empêcher le débordement des champs date/heure sur mobile */
.rdv-champs label{min-width:0}
.rdv-champs .grille2{gap:12px}
.rdv-champs input[type=date],.rdv-champs input[type=time]{width:100%;max-width:100%;min-width:0}
@media (max-width:520px){.rdv-champs .grille2{grid-template-columns:1fr}}
/* Toggle "Le bien possède le gaz" (avant les cases diagnostics) */
.a-gaz-label{display:flex;align-items:center;gap:9px;margin:4px 0 12px;
  padding:9px 12px;background:var(--vert-pale);border:1px solid var(--bord);
  border-radius:8px;font-weight:600;color:var(--teal);cursor:pointer}
.a-gaz-label input{width:18px;height:18px;flex:0 0 auto;accent-color:var(--vert)}

/* =====================================================================
   LOT 1 (10/09/2026) — calendrier navigable, recherche client, HT.
   ===================================================================== */

/* --- Respiration au-dessus du bouton « Créer un nouveau devis » --- */
.accueil-mobile{margin-top:22px}

/* --- Calendrier : barre de navigation mois / année --- */
.cal-nav{display:flex;align-items:center;justify-content:space-between;gap:8px;
  margin-bottom:8px}
.cal-fleche{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;
  width:34px;height:34px;border:1px solid var(--bord);border-radius:8px;
  color:var(--teal);text-decoration:none;font-size:20px;line-height:1;font-weight:700;
  background:#fff}
.cal-fleche:hover{border-color:var(--vert);background:var(--vert-pale)}
.cal-choix{display:flex;align-items:center;gap:6px;margin:0;flex:1 1 auto;
  justify-content:center}
.cal-mois-nom{font-weight:700;color:var(--teal);font-size:14px;text-transform:capitalize}
.cal-choix select{padding:4px 6px;font-size:13px;font-weight:700;color:var(--teal);
  border:1px solid var(--bord);border-radius:6px;background:#fff;max-width:90px}

/* --- Calendrier : les jours sont maintenant des liens --- */
.cal-case{display:block;text-decoration:none}
a.cal-case:hover{background:var(--vert-pale);color:#0A5C36}
.cal-case.choisi{outline:2px solid var(--teal);outline-offset:-2px}

/* --- Panneau « jour sélectionné » sous le calendrier --- */
.cal-jour-detail{margin-top:10px;padding-top:10px;border-top:1px dashed var(--bord)}
.cal-jour-titre{margin:0 0 6px;font-size:12.5px;font-weight:700;color:var(--teal);
  text-transform:capitalize}
.cal-jour-vide{margin:0;font-size:12px;color:var(--graphite)}
.cal-jour-ligne{display:flex;gap:8px;align-items:baseline;padding:6px 8px;
  border-radius:6px;text-decoration:none;color:var(--texte);font-size:12.5px}
.cal-jour-ligne:hover{background:var(--fond-bloc)}
.cal-jour-ligne strong{flex:0 0 42px;color:var(--vert);font-variant-numeric:tabular-nums}
.cal-jour-fermer,.cal-retour a{display:inline-block;margin-top:6px;font-size:12px;
  color:var(--graphite)}
.cal-retour{margin:8px 0 0;text-align:center}

/* --- Rappel HT sous un montant TTC --- */
.kpi-ht{display:block;font-variant-numeric:tabular-nums}
.ht-ligne{display:block;font-size:11px;color:var(--graphite);font-weight:400;
  font-variant-numeric:tabular-nums}
/* Ligne du mois mis en avant dans « Détail mensuel » (mois en cours, ou mois filtré). */
.mois-courant{background:var(--fond-bloc)}
.mois-filtre{outline:2px solid var(--vert);outline-offset:-2px}

/* Boutons de repli des filtres : utiles seulement si lot1.js ne s'exécute pas.
   Dès qu'il tourne, il pose .js-actif sur <html> et les masque. */
.js-actif .sans-js{display:none}

/* --- Recherche client dans le formulaire de devis --- */
.recherche-client-label{display:block;margin-bottom:10px}
.recherche-client{width:100%}
#recherche-client-compte{display:block;margin-top:3px;min-height:15px}

/* =====================================================================
   LOT 2 — Journée de terrain : vue « aujourd'hui », fiche RDV enrichie,
   marqueur devis signé, avertissement de chevauchement.
   ===================================================================== */

/* --- Vue « aujourd'hui » (tableau de bord) --- */
.rdv-aujourdhui{margin:14px 0 4px}
.rdv-auj-titre{font-size:15px;margin:0 0 8px;color:var(--teal)}
.rdv-auj-titre span{font-weight:400;color:var(--graphite);font-size:13px;margin-left:6px}
.rdv-auj{display:flex;gap:12px;align-items:flex-start;padding:10px 12px;margin-bottom:8px;
  background:#fff;border:1px solid #E3E6EF;border-radius:10px}
.rdv-auj-heure{flex:0 0 54px;text-align:center;line-height:1.1}
.rdv-auj-heure strong{display:block;font-size:17px;color:var(--teal)}
.rdv-auj-heure small{display:block;font-size:11px;color:#9DA2B3}
.rdv-auj-corps{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:2px}
.rdv-auj-client{font-weight:700;color:var(--teal);text-decoration:none}
.rdv-auj-client:hover{text-decoration:underline}
.rdv-auj-lieu{font-size:13px;color:var(--graphite);overflow-wrap:anywhere}
.rdv-auj-signe{font-size:12px;font-weight:600;margin-top:2px}
.rdv-auj-signe.ok{color:#00753A}
.rdv-auj-signe.a-faire{color:#B3261E}
.rdv-auj-actions{flex:0 0 auto;display:flex;flex-direction:column;align-items:flex-end;gap:4px}
.rdv-auj-montant{font-size:15px;color:var(--teal)}

/* =====================================================================
   LOT 5 — Agenda : creneaux libres, lieux, temps de trajet
   ===================================================================== */

/* Un creneau libre se distingue d'un rendez-vous client au premier coup
   d'oeil : bordure a gauche, fond neutre, pas de montant. */
.rdv-auj.creneau{background:var(--fond-bloc,#F6F7FB);border-left:3px solid #9DA2B3}
.rdv-auj-etiquette{display:inline-block;align-self:flex-start;margin-top:2px;
  padding:1px 7px;border-radius:9px;background:#EDEFF5;color:#40424D;
  font-size:11px;font-weight:600}

/* Temps de trajet intercale entre deux etapes de la journee. */
.rdv-auj-trajet{margin:0 0 6px 8px;font-size:12px;color:#6E7180;font-style:italic}

/* Fiche RDV : trajet depuis l'etape precedente. */
.rdv-trajet{margin:10px 0;padding:8px 12px;border-radius:8px;
  background:var(--fond-bloc,#F6F7FB);font-size:14px}
.rdv-trajet small{display:block;font-size:11px;font-weight:400}

/* Trajet calcule en direct pendant la saisie d'un creneau. « tendu » =
   l'enchainement ne tient pas : c'est un AVERTISSEMENT, jamais un blocage,
   le formulaire s'enregistre quoi qu'il arrive. */
.trajet-direct{margin:10px 0;padding:8px 12px;border-radius:8px;
  background:var(--fond-bloc,#F6F7FB);border:1px solid #E3E6EF;font-size:13.5px}
.trajet-direct p{margin:0 0 4px}
.trajet-direct p:last-child{margin-bottom:0}
.trajet-direct.tendu{background:#FFF4F3;border-color:#F3C6C2;color:#8A1E17}
.trajet-direct.tendu p:last-child{font-weight:600}

/* Boutons secondaires sous l'action principale du tableau de bord. */
.cta-secondaires{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0 14px}

/* Lien « poser un creneau ce jour-la », sous le detail du jour choisi. */
.cal-jour-ajouter{margin:6px 0 0;font-size:13px}
.cal-jour-ligne.creneau strong{color:#6E7180}

/* Formulaires lieux / creneaux : grilles simples, sans dependance. */
.deux-colonnes,.trois-colonnes{display:grid;gap:10px;margin-bottom:10px}
.deux-colonnes{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}
.trois-colonnes{grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}
.form-lieu label,.form-creneau label{display:block;margin:10px 0 4px;font-weight:600;font-size:13.5px}
.form-lieu label.case,.form-creneau label.case{font-weight:500}
.lieu-autre{margin-top:6px;padding:10px 12px;border-left:3px solid var(--vert,#00F663);
  background:var(--fond-bloc,#F6F7FB);border-radius:0 8px 8px 0}
.lieu-autre[hidden]{display:none}

/* Lien d'abonnement .ics : lisible, selectionnable d'un clic. */
.ics-url{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}
.ics-etat{font-weight:600;font-size:13.5px;margin:6px 0}
.ics-etat.ok{color:#00753A}
.ics-etat.coupe{color:#B3261E}

/* --- Fiche RDV : diagnostics nominatifs --- */
.rdv-diag-compte{display:inline-block;margin-left:6px;padding:1px 8px;border-radius:10px;
  background:var(--vert,#00F663);color:#001D1F;font-size:12px;font-weight:700;vertical-align:middle}
.rdv-diagnostics{margin:6px 0 12px;padding-left:24px}
.rdv-diagnostics li{padding:3px 0;font-size:15px;color:#001D1F}
.rdv-diag-tag{font-style:normal;font-size:11px;font-weight:700;text-transform:uppercase;
  letter-spacing:.03em;margin-left:6px;padding:1px 6px;border-radius:8px;
  background:#EEF0F6;color:#6E7180}
.rdv-diag-tag.bien2{background:#E0F3E8;color:#00753A}
.rdv-montant{margin:0;padding-top:8px;border-top:1px solid #E3E6EF;font-size:15px}

/* --- Waze --- */
.rdv-waze{display:inline-block;font-weight:700;margin:6px 8px 2px 0}

/* --- Marqueur « devis signé » --- */
.rdv-signature{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:space-between;
  padding:9px 12px;margin:0 0 14px;border-radius:10px;border:1px solid}
.rdv-signature.ok{background:#EAF7EF;border-color:#9FD8B6}
.rdv-signature.a-faire{background:#FDECEA;border-color:#F2B8B2}
.rdv-signature-etat{font-weight:700;font-size:14px}
.rdv-signature.ok .rdv-signature-etat{color:#00753A}
.rdv-signature.a-faire .rdv-signature-etat{color:#B3261E}

/* --- Chevauchement de créneaux (avertissement, jamais un blocage) --- */
.rdv-chevauchement div{font-size:13px;margin-top:3px}
.rdv-conflit{margin:6px 0 0;padding:8px 10px;border-radius:8px;font-size:13px;font-weight:600;
  background:#FFF4E5;border:1px solid #F0C48A;color:#7A4B00}

@media (max-width:600px){
  .rdv-auj{flex-wrap:wrap}
  .rdv-auj-actions{flex-direction:row;align-items:center;width:100%;justify-content:flex-start;
    gap:8px;padding-left:66px}
}

/* =====================================================================
   LOT 3 — Suivi des rapports a rendre.
   Code couleur unique, repris a l'identique sur le tableau de bord, la
   page de suivi et la fiche RDV : rouge = butoir depasse, orange = tombe
   aujourd'hui ou demain, gris = a venir, vert = rendu.
   ===================================================================== */
.rapports-tdb{background:#fff;border:1px solid var(--bord);border-radius:12px;
  padding:12px 14px;margin:0 0 14px}
.rap-titre{display:flex;flex-wrap:wrap;align-items:baseline;gap:8px;margin:0 0 8px}
.rap-titre span{font-size:11px;font-weight:600;color:var(--graphite);text-transform:none;letter-spacing:0}
.rap-titre .tout-voir{margin-left:auto;font-size:11px;text-transform:none;letter-spacing:0}

.rap-groupe{border-left:4px solid var(--steel);padding:4px 0 4px 10px;margin:8px 0}
.rap-groupe.retard{border-left-color:#A11B1B}
.rap-groupe.aujourdhui{border-left-color:#C97A00}
.rap-groupe.demain{border-left-color:#C9A400}
.rap-groupe.avenir{border-left-color:var(--steel)}
.rap-groupe-titre{margin:0 0 4px;font-size:11px;font-weight:700;text-transform:uppercase;
  letter-spacing:1px;color:var(--graphite)}
.rap-groupe-titre span{display:inline-block;min-width:18px;padding:0 5px;margin-left:4px;
  border-radius:9px;background:var(--fond-bloc);color:var(--teal);font-size:11px;text-align:center}
.rap-groupe.retard .rap-groupe-titre{color:#A11B1B}

.rap-ligne{display:flex;flex-wrap:wrap;gap:8px;align-items:center;
  padding:5px 0;border-bottom:1px solid var(--bord)}
.rap-ligne:last-child{border-bottom:0}
.rap-client{font-weight:700;font-size:14px;color:var(--teal);text-decoration:none}
.rap-client:hover{text-decoration:underline}
.rap-lieu{font-size:12px;color:var(--graphite)}
.rap-butoir{margin-left:auto;font-size:12px;font-weight:600;color:var(--graphite)}
.rap-groupe.retard .rap-butoir{color:#A11B1B}
.rap-groupe.aujourdhui .rap-butoir{color:#C97A00}
.rap-reste{margin:4px 0 0;font-size:12px}

/* Page dediee « Rapports a rendre » */
.rap-bloc.retard{border-left:4px solid #A11B1B}
.rap-bloc.aujourdhui{border-left:4px solid #C97A00}
.rap-bloc.demain{border-left:4px solid #C9A400}
.rap-table td{vertical-align:top}
.rap-table input[type=date]{width:auto;display:inline-block;margin:0 6px 0 0;padding:5px 7px;font-size:13px}
.rap-echeance{font-weight:600}
.rap-echeance.retard{color:#A11B1B}
.rap-echeance.aujourdhui{color:#C97A00}

/* Fiche RDV : bandeau du rapport, meme forme que « devis signé » */
.rdv-rapport{display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:space-between;
  padding:9px 12px;margin:0 0 14px;border-radius:10px;border:1px solid}
.rdv-rapport.ok{background:#EAF7EF;border-color:#9FD8B6}
.rdv-rapport.retard{background:#FDECEA;border-color:#F2B8B2}
.rdv-rapport.urgent{background:#FFF4E5;border-color:#F0C48A}
.rdv-rapport.a-faire{background:var(--fond-bloc);border-color:var(--smoke)}
.rdv-rapport-etat{font-weight:700;font-size:14px}
.rdv-rapport.ok .rdv-rapport-etat{color:#00753A}
.rdv-rapport.retard .rdv-rapport-etat{color:#B3261E}
.rdv-rapport.urgent .rdv-rapport-etat{color:#7A4B00}
.rdv-rapport input[type=date]{width:auto;display:inline-block;margin:0 6px 0 0;padding:5px 7px;font-size:13px}
.rdv-rapport-butoir{display:inline-block;margin:0 6px 0 0;font-size:11px;color:var(--graphite)}

@media (max-width:600px){
  .rap-butoir{margin-left:0;width:100%}
  .rap-table{display:block;overflow-x:auto}
}

/* =====================================================================
   LOT 4 — Devis accepté : préparation de la mission et modèles de message.
   ===================================================================== */

/* Teinte « à faire » manquante sur .alerte (seuls succes/danger/info existaient). */
.alerte.attention{background:#FFF4E5;color:#8A4B00;border:1px solid #F0C489}

/* Bandeau « devis accepté, mission à préparer » sur la fiche du document */
.preparer-mission{font-size:13.5px}
.preparer-mission .actions{margin:10px 0 0;display:flex;flex-wrap:wrap;gap:8px}

/* Écran d'envoi : sélecteur de modèle, au-dessus du message */
.choix-modele{padding-bottom:12px}
.choix-modele .actions{margin-top:8px}
.choix-modele .indice{margin:8px 0 0}

/* Page « Modèles de message » */
.carte.modele{padding:0}
.carte.modele>summary{cursor:pointer;padding:12px 16px;display:flex;flex-wrap:wrap;
  gap:10px;align-items:center;font-size:14px}
.carte.modele>summary::-webkit-details-marker{color:var(--space)}
.carte.modele[open]>summary{border-bottom:1px solid var(--bord);margin-bottom:12px}
.carte.modele form{padding:0 16px 14px}
.carte.modele fieldset.suggestion{border:1px solid var(--bord);border-radius:8px;
  padding:10px 14px 14px;margin:12px 0}
.carte.modele fieldset.suggestion legend{font-size:12.5px;font-weight:700;color:var(--teal);
  padding:0 6px}
.carte.modele .natures{display:flex;flex-wrap:wrap;gap:10px 18px;margin:6px 0 10px}
.carte.modele .case{display:inline-flex;align-items:center;gap:7px;font-weight:600;
  font-size:13px;color:var(--texte)}
.carte.modele .interrupteur{margin:12px 0 4px;align-items:flex-start;line-height:1.45}
textarea.corps-modele{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  font-size:12.5px;line-height:1.5;white-space:pre-wrap}

/* Fiche RDV : caractéristiques du bien sous l'adresse */
.rdv-bien-carac{margin:2px 0 6px;font-size:13.5px;color:var(--graphite);font-weight:600}

/* Jetons de variables : cliquables (lot4.js), lisibles sans JavaScript */
.aide-variables{background:var(--fond-bloc);border:1px solid var(--bord);border-radius:8px;
  padding:10px 12px;margin:4px 0 6px;font-size:12.5px;color:var(--graphite)}
.aide-variables strong{display:block;margin:6px 0 4px;color:var(--teal)}
.jetons{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:6px}
.jeton{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11.5px;
  padding:3px 7px;border:1px solid var(--smoke);border-radius:6px;background:#fff;
  color:var(--teal);cursor:pointer}
.jeton:hover{border-color:var(--vert);background:var(--vert-pale)}
.jeton.bloc{color:#7A4B00;background:#FFF8EF;border-color:#F0C489}

/* ===================================================================
   LOT 6 — durees lisibles, saisie par heure de fin, boutons « Copier ».
   Pense pour le pouce : c'est sur telephone que ces ecrans servent.
   =================================================================== */

/* --- Bascule Duree / Jusqu'a : deux cibles pleine largeur, 44 px de haut
       (le minimum confortable au doigt), qui ne se chevauchent pas. --- */
.duree-modes{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:10px}
.duree-mode{display:flex;align-items:center;justify-content:center;gap:8px;
  min-height:44px;margin:0;padding:8px 10px;cursor:pointer;
  border:1px solid var(--bord);border-radius:10px;background:#fff;
  font-size:13px;color:var(--texte);-webkit-tap-highlight-color:transparent}
.duree-mode input{width:18px;height:18px;margin:0;flex:0 0 auto;accent-color:#00753A}
.duree-mode:has(input:checked){border-color:var(--vert);background:var(--vert-pale);font-weight:600}
.duree-mode.inactif{opacity:.5;cursor:not-allowed}

/* Le champ de duree : chiffres en chasse fixe, « 04h00 » ne danse pas. */
.champ-duree{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  letter-spacing:.5px}

/* L'echo « 09:00 – 14:00 (5 h) » — meme forme que la fiche rendez-vous. */
.duree-echo{min-height:18px;margin:2px 0 8px;font-size:13px;font-weight:600;
  color:var(--vert-fonce)}
.duree-echo.tendu{color:#7A4B00;font-weight:400}
.duree-echo:empty{min-height:0;margin:0}

/* --- Valeur longue + bouton « Copier ». En colonne sur mobile : un champ de
       64 caracteres et un bouton cote a cote donneraient deux elements
       illisibles plutot qu'un. --- */
.copiable{display:flex;flex-direction:column;gap:6px;margin-bottom:10px}
.valeur-copiable{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  font-size:12px;margin-bottom:0;width:100%}
textarea.valeur-copiable{white-space:pre;overflow-x:auto}
.copiable .btn.copier{min-height:44px;padding:8px 14px;font-size:13px;align-self:flex-start}
.btn.copier.copie-ok{border-color:var(--vert);background:var(--vert-pale);
  color:var(--vert);font-weight:600}
.btn.copier.copie-ko{border-color:#F0C489;background:#FFF8EF;color:#7A4B00}

@media (min-width:520px){
  .copiable{flex-direction:row;align-items:center}
  .copiable .valeur-copiable{flex:1 1 auto;min-width:0}
  .copiable .btn.copier{flex:0 0 auto;align-self:auto}
}

/* --- Bandeau « Google Agenda deconnecte ». DISCRET a dessein : la
       synchronisation est en veille, l'application n'a rien perdu. --- */
.bandeau-google{display:flex;flex-wrap:wrap;gap:8px;align-items:center;
  margin:0 0 12px;padding:8px 12px;border-radius:8px;
  border:1px solid #F0C489;background:#FFF8EF;color:#7A4B00;font-size:12.5px}
.bandeau-google a{color:#7A4B00;font-weight:600}

/* Liste d'etapes numerotees (ecran de fin d'autorisation Google). */
.liste-etapes{margin:6px 0 0;padding-left:20px;font-size:12.5px;color:var(--texte)}
.liste-etapes li{margin-bottom:6px}

/* =====================================================================
   LOT 7 — DEMANDES ENTRANTES

   Pense pour le telephone d'abord : c'est la, le soir, que le tri se
   fait. Toutes les cibles tactiles font au moins 44 px de haut.
   ===================================================================== */

/* --- Ecran de liste --- */
.filtres .filtre{display:inline-block;padding:8px 12px;border-radius:999px;
  border:1px solid var(--bord);background:var(--blanc);color:var(--graphite);
  font-size:12.5px;text-decoration:none}
.filtres .filtre.actif{border-color:var(--vert);background:var(--vert-pale);
  color:var(--vert);font-weight:600}

.demande-tete{display:flex;flex-wrap:wrap;gap:8px;align-items:baseline;
  justify-content:space-between}
.demande-tete h2{margin:0}

.etiquette{display:inline-block;padding:3px 10px;border-radius:999px;
  font-size:11.5px;font-weight:600;border:1px solid var(--bord);
  background:var(--fond-bloc);color:var(--graphite)}
.etiquette.etat-a_rappeler{border-color:#F0C489;background:#FFF8EF;color:#7A4B00}
.etiquette.etat-traitee{border-color:var(--vert);background:var(--vert-pale);color:var(--vert)}

/* Le corps du message, tel qu'il a ete ecrit : ni tronque, ni reformate.
   pre-wrap conserve les retours a la ligne, break-word evite qu'une URL
   collee fasse deborder la carte sur telephone. */
.message-demande{margin:6px 0 0;padding:10px 12px;border-radius:8px;
  border:1px solid var(--bord);background:var(--fond-bloc);
  font-family:inherit;font-size:13px;line-height:1.5;color:var(--texte);
  white-space:pre-wrap;overflow-wrap:break-word;word-break:break-word}

/* --- Ecran de tri --- */
.tri-mode-emploi{margin-bottom:14px}

.tri-jour{margin:18px 0 8px;font-size:14px;color:var(--graphite)}
.tri-jour.arriere{color:#7A4B00}

.tri-pile{display:flex;flex-direction:column;gap:12px}

/* position:relative + overflow:hidden : les deux etiquettes de sens sont
   posees DERRIERE la carte et n'apparaissent qu'au glissement.
   touch-action:pan-y : le doigt peut toujours faire defiler la page
   verticalement — seul l'axe horizontal est a nous. */
.tri-carte{position:relative;overflow:hidden;border-radius:12px;
  border:1px solid var(--bord);background:var(--blanc);
  touch-action:pan-y;user-select:none}

.tri-carte .tri-corps{position:relative;z-index:1;padding:14px 16px;
  background:var(--blanc);border-radius:12px;
  transition:transform .18s ease}
.tri-carte.glisse .tri-corps{transition:none}

.tri-carte h3{margin:0 0 4px}
.tri-meta{margin:0 0 8px;font-size:12px;color:var(--space)}
.tri-lieu,.tri-projet{margin:4px 0;font-size:13px;color:var(--texte)}

.tri-indice{position:absolute;top:0;bottom:0;display:flex;align-items:center;
  padding:0 18px;font-weight:700;font-size:13px;opacity:0;z-index:0}
.tri-indice.gauche{right:0;color:#7A4B00;background:#FFF8EF;left:0;
  justify-content:flex-end}
.tri-indice.droite{left:0;right:0;color:var(--vert);background:var(--vert-pale);
  justify-content:flex-start}
.tri-carte.vers-gauche .tri-indice.gauche{opacity:1}
.tri-carte.vers-droite .tri-indice.droite{opacity:1}
.tri-carte.au-seuil .tri-indice{font-size:15px}

.tri-contact{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0}
.tri-appel{min-height:44px;display:inline-flex;align-items:center}

.tri-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px;
  align-items:stretch}
.tri-actions form{margin:0}
.tri-btn{min-height:44px}
.tri-btn.gauche{border-color:#F0C489;background:#FFF8EF;color:#7A4B00}
.tri-btn.droite{border-color:var(--vert);background:var(--vert-pale);color:var(--vert)}
.tri-btn.devis{display:inline-flex;align-items:center;min-height:44px}

.tri-joint{margin-top:10px}
.tri-joint .btn.mini{min-height:44px;padding:8px 14px;font-size:13px}

/* Depart de la carte validee : un mouvement court, juste assez pour que le
   geste soit confirme a l'oeil avant le rechargement de la page. */
.tri-carte.partie-gauche .tri-corps{transform:translateX(-110%);opacity:.3}
.tri-carte.partie-droite .tri-corps{transform:translateX(110%);opacity:.3}

/* --- Page de rebond (le lien de l'e-mail de 18h) --- */
body.rebond{padding:24px}
body.rebond main{max-width:520px;margin:0 auto;text-align:center}


/* =====================================================================
   LOT 8 — L'espace entre deux rendez-vous devient cliquable.
   ===================================================================== */

/* L'espace lui-meme : la ou s'affichait deja le temps de trajet. La barre
   verticale a gauche prolonge celle de la journee, pour qu'on lise une
   cascade et non une suite de blocs independants. */
.etape-espace{margin:2px 0 2px 14px;padding-left:14px;
  border-left:2px dashed #D6D9E2}
.etape-espace .rdv-auj-trajet{margin:2px 0}

/* Le declencheur. Cible tactile de 44 px : c'est un espace, il doit rester
   discret, mais il doit se toucher du pouce en marchant. */
.etape-choix{margin:2px 0}
.etape-choix>summary{display:inline-flex;align-items:center;min-height:36px;
  padding:4px 10px;border-radius:999px;cursor:pointer;
  font-size:12.5px;color:#6E7180;list-style:none}
.etape-choix>summary::-webkit-details-marker{display:none}
.etape-choix>summary:hover,.etape-choix[open]>summary{color:var(--vert);
  background:var(--vert-pale)}

.etape-form{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0 4px}
.etape-form .btn.mini{min-height:44px}
.etape-choix .indice{margin:2px 0 6px}

/* Une etape posee en un tap : meme forme qu'un creneau, en plus leger.
   Elle n'est pas un rendez-vous, et ne doit pas en avoir l'air. */
.rdv-auj.etape{border-style:dashed}
.rdv-auj-etape{display:block;font-size:12px;color:#6E7180;margin-top:2px}
.rdv-auj-etape.manque{color:#A3282F;font-weight:600}
.rdv-auj-etape.manque a{color:inherit}

/* Correctif cascade — une etape sans coordonnees rompt la chaine des temps
   de trajet. Ambre et non rouge : rien n'est casse, il manque une donnee,
   et elle se repare en un clic. */
.rdv-auj-etape.non-situe{color:#8A5A00;font-weight:600}
.rdv-auj-etape.non-situe a{color:inherit}

/* La page « cette etape ne rentre pas » : le nombre de minutes d'abord. */
.etape-refus p{margin:4px 0}
.etape-manque{font-size:15px}

/* L'interrupteur des blocs de trajet, sur « Agenda & lieux ». */
.blocs-trajet .ics-etat{margin:8px 0}

/* ===== Lot 11 — dépenses ===== */
.champ-boutonne{display:flex;gap:6px;align-items:center}
.champ-boutonne input{flex:1;min-width:0}
.actions-cellule{display:flex;gap:6px;justify-content:center;flex-wrap:wrap;align-items:center}
tr.inactive{opacity:.5}
.indice-inline{font-weight:400;color:#6a6f7a;font-size:.85em}