*{box-sizing:border-box}
body{margin:0;font-family:-apple-system,"Segoe UI",Roboto,Arial,sans-serif;background:#eef2f6;color:#1c2833}
.nav{background:#1B4F72;color:#fff;padding:0 18px;display:flex;align-items:center;gap:6px;height:52px}
.nav .brand{color:#fff;font-weight:700;text-decoration:none;margin-right:14px;white-space:nowrap}
.nav .links{display:flex;gap:2px;flex:1;flex-wrap:wrap}
.nav .links a{color:#cfe0ef;text-decoration:none;padding:8px 12px;border-radius:8px;font-size:14px}
.nav .links a:hover{background:rgba(255,255,255,.1);color:#fff}
.nav .links a.on{background:#fff;color:#1B4F72;font-weight:600}
.nav .logout button{background:rgba(255,255,255,.15);border:0;color:#fff;padding:7px 12px;border-radius:8px;cursor:pointer}
.nav-ver{color:#9fb8d0;font-size:12px;margin-right:10px;white-space:nowrap;font-variant-numeric:tabular-nums;text-decoration:none;cursor:pointer}
a.nav-ver:hover{color:#fff;text-decoration:underline}
main{max-width:1150px;margin:22px auto;padding:0 16px}
h2{font-size:20px;margin:0 0 14px}h3{margin:22px 0 8px;font-size:16px;color:#1B4F72}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-bottom:12px}
.kpi{background:#fff;border:1px solid #e1e8ed;border-radius:12px;padding:14px}
.kpi .l{color:#5d6d7e;font-size:11.5px;text-transform:uppercase;letter-spacing:.4px;font-weight:600}
.kpi .v{font-size:24px;font-weight:700;color:#1B4F72;margin-top:4px}
table{width:100%;border-collapse:collapse;background:#fff;border:1px solid #e1e8ed;border-radius:12px;overflow:hidden}
th{background:#1B4F72;color:#fff;text-align:left;padding:9px 12px;font-size:12.5px}
td{padding:8px 12px;border-bottom:1px solid #eef2f5;font-size:14px;vertical-align:middle}
tbody tr:hover td{background:#f7fafc}
a{color:#1F618D}
.pill{padding:2px 10px;border-radius:20px;font-size:12px;font-weight:700;white-space:nowrap}
.s-loue{background:#e9f7ef;color:#1e8449}.s-preavis{background:#fef5e7;color:#b9770e}
.s-en_relocation{background:#eaf2f8;color:#1f618d}.s-vacant{background:#fdedec;color:#c0392b}
.p-haute{background:#fdecea;color:#c0392b}.p-moyenne{background:#fef5e7;color:#b9770e}.p-basse{background:#eaf2f8;color:#1f618d}
.muted{color:#5d6d7e}
.btn{display:inline-block;background:#1B4F72;color:#fff;text-decoration:none;padding:8px 14px;border-radius:8px;font-weight:600}
.form{background:#fff;border:1px solid #e1e8ed;border-radius:12px;padding:18px;max-width:520px;display:flex;flex-direction:column;gap:4px}
.form label{font-size:12px;color:#5d6d7e;font-weight:600;margin-top:8px}
.form input,.form select,.form textarea{padding:8px;border:1px solid #d6dee6;border-radius:8px;font-size:14px;font-family:inherit}
.form .actions{margin-top:14px;display:flex;gap:10px;align-items:center}
.form button,.addtask button{background:#1B4F72;color:#fff;border:0;padding:9px 16px;border-radius:8px;cursor:pointer;font-weight:600}
.addtask{display:flex;gap:8px;flex-wrap:wrap;background:#fff;border:1px solid #e1e8ed;border-radius:12px;padding:12px;margin-bottom:8px}
.addtask input,.addtask select{padding:8px;border:1px solid #d6dee6;border-radius:8px}
.addtask input[name=titre]{flex:1;min-width:200px}
.chk form{margin:0}.chk button{background:transparent;border:0;font-size:18px;cursor:pointer}
tr.done td{color:#9aa7b1}
.kanban{display:flex;gap:12px;overflow-x:auto;padding-bottom:8px}
.col{background:#f0f4f8;border:1px solid #e1e8ed;border-radius:12px;min-width:200px;flex:1}
.col h4{margin:0;padding:10px 12px;font-size:12px;color:#1B4F72;border-bottom:1px solid #e1e8ed}
.col .cards{padding:8px;display:flex;flex-direction:column;gap:8px;min-height:30px}
.cand{background:#fff;border:1px solid #e1e8ed;border-radius:9px;padding:9px}
.cand .cn{font-weight:700;font-size:13.5px}
.cand .cn a{color:inherit;text-decoration:none}
.cand .cn a:hover{text-decoration:underline}
.cand .cl{color:#5d6d7e;font-size:12px;margin-top:2px}
.cand .cl a{color:#1F618D;text-decoration:none}
.cand .cl a:hover{text-decoration:underline}
.cand .cmeta{margin-top:5px}
.cand .tag{font-size:11px;background:#eef2f6;padding:1px 7px;border-radius:20px;color:#5d6d7e}
.cand .act{display:flex;gap:4px;align-items:center;margin-top:8px}
.cand .act form{margin:0}
.cand .act button{background:#eef2f6;border:0;border-radius:6px;padding:2px 8px;cursor:pointer;font-weight:700;color:#1B4F72}
.cand .act .edit{font-size:13px;text-decoration:none;color:#1F618D;padding:2px 6px}
.cand .act .conv{margin-left:auto;font-size:12px;font-weight:700}
/* Tableaux enrichis (tri / filtre / totaux) */
th.sortable{cursor:pointer;user-select:none;white-space:nowrap}
th.sortable:hover{background:#21618c}
.arr{font-size:11px}.arr.idle{opacity:.45}
tr.filters th{background:#e9eff5;padding:5px 8px}
tr.filters input{width:100%;min-width:60px;padding:5px 7px;border:1px solid #cdd7e0;border-radius:6px;font-size:12.5px;font-family:inherit;background:#fff}
tr.filters input::placeholder{color:#9aa7b1}
tfoot .totals td{background:#f0f4f8;border-top:2px solid #d3dde6;font-weight:700;color:#1B4F72;font-size:13.5px;padding:9px 12px}
tfoot .totals .tot-count{color:#5d6d7e;font-weight:600;white-space:nowrap}
tfoot .totals .tot-sum{color:#1e8449}
/* Fiche lot */
.fiche-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:16px}
.fiche-actions .back{margin-left:auto;color:#1F618D;text-decoration:none;font-size:14px}
.btn-ghost{display:inline-block;border:1px solid #1B4F72;color:#1B4F72;text-decoration:none;padding:7px 13px;border-radius:8px;font-weight:600;font-size:14px}
.fiche-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}
.card{background:#fff;border:1px solid #e1e8ed;border-radius:12px;padding:16px}
.card.wide{grid-column:1 / -1}
.card h3{margin:0 0 12px;font-size:15px;color:#1B4F72}
.deflist{display:grid;grid-template-columns:auto 1fr;gap:6px 16px;margin:0}
.deflist dt{color:#5d6d7e;font-size:13px;font-weight:600}
.deflist dd{margin:0;font-size:14px}
.dpe-badge{display:inline-block;min-width:24px;text-align:center;padding:2px 8px;border-radius:6px;font-weight:800;color:#fff}
.dpe-a{background:#2e7d32}.dpe-b{background:#4caf50}.dpe-c{background:#8bc34a;color:#1c2833}
.dpe-d{background:#f9d616;color:#1c2833}.dpe-e{background:#f6a821}.dpe-f{background:#ee6a2b}.dpe-g{background:#d7211f}
.copybox{margin-top:12px;background:#f4f8fb;border:1px dashed #b6cbdd;border-radius:8px;padding:10px 12px}
.copybox-t{font-size:11px;text-transform:uppercase;letter-spacing:.4px;color:#5d6d7e;font-weight:700;margin-bottom:4px}
.copybox p{margin:0;font-size:13.5px;line-height:1.5}
.alert-danger{margin-top:10px;background:#fdedec;border:1px solid #f5b7b1;color:#943126;border-radius:8px;padding:10px 12px;font-size:13.5px;font-weight:600}
/* Fiche éditable en place */
.fiche-form label{display:block;font-size:12px;color:#5d6d7e;font-weight:600;margin:10px 0 3px}
.fiche-form .card > label:first-of-type{margin-top:0}
.fiche-form input,.fiche-form select,.fiche-form textarea{width:100%;padding:8px;border:1px solid #d6dee6;border-radius:8px;font-size:14px;font-family:inherit}
.fiche-form .actions{margin:16px 0 0}
.fiche-form .actions button{background:#1B4F72;color:#fff;border:0;padding:10px 18px;border-radius:8px;cursor:pointer;font-weight:600}
@media(max-width:760px){.fiche-grid{grid-template-columns:1fr}}
/* Pipeline candidatures (par lot) */
.intro{color:#5d6d7e;font-size:13.5px;margin:0 0 14px}
.lotblock{background:#fff;border:1px solid #e1e8ed;border-radius:12px;padding:10px 16px 4px;margin-bottom:14px}
.lotblock .lh{display:flex;align-items:center;gap:10px;padding:6px 0 4px}
.lotblock .lh h3{margin:0;font-size:15px;color:#1B4F72}
.lotblock .lh a{color:#1B4F72;text-decoration:none}
.lotblock .lh .disp{color:#5d6d7e;font-size:12.5px;margin-left:auto}
.cand-row{border-top:1px solid #eef2f5;padding:12px 2px;display:grid;grid-template-columns:210px 1fr 220px;gap:16px;align-items:start}
.cand-row .who{font-weight:700;font-size:14px}
.cand-row .who a{color:#1c2833;text-decoration:none}.cand-row .who a:hover{text-decoration:underline}
.cand-row .who .stg{display:inline-block;margin-top:6px;background:#eaf2f8;color:#1f618d;padding:2px 10px;border-radius:20px;font-size:11.5px;font-weight:700}
.cand-row .who .ed{font-size:12px;color:#1F618D;text-decoration:none;margin-left:6px}
.checks label{display:block;font-size:13px;color:#1c2833;margin:3px 0}
.checks form{display:inline}.checks input{margin-right:7px;transform:translateY(1px)}
.checks .none{color:#9aa7b1;font-size:12.5px;font-style:italic}
.checks .gsel label{display:flex;align-items:center;gap:6px}
.checks .gsel select{padding:4px 6px;border:1px solid #d6dee6;border-radius:6px;font:inherit;font-size:12.5px;background:#fff;cursor:pointer}
.checks .mailin{width:100%;max-width:280px;padding:7px;border:1px solid #d6dee6;border-radius:8px;font-size:13px;margin-bottom:4px}
.acts{display:flex;flex-direction:column;gap:6px;align-items:stretch}
.acts form{margin:0}
.acts button{border-radius:8px;cursor:pointer;font-weight:600;width:100%}
.acts .adv{background:#1B4F72;color:#fff;border:0;padding:8px 12px;font-size:13px}
.acts .adv[disabled]{background:#c7d2dc;cursor:not-allowed}
.acts .val{background:#1e8449;color:#fff;border:0;padding:8px 12px;font-size:13px}
.acts .val[disabled]{background:#c7d2dc;cursor:not-allowed}
.acts .ref{background:#fff;border:1px solid #e6b0aa;color:#c0392b;padding:7px 12px;font-size:12.5px}
.acts .conv{display:block;text-align:center;background:#1B4F72;color:#fff;text-decoration:none;padding:8px 12px;font-size:13px;border-radius:8px;font-weight:600}
.acts .hint{font-size:11px;color:#b9770e;text-align:center}
.cand-row.refuse{opacity:.6}.cand-row.refuse .stg{background:#fdedec;color:#c0392b}
/* Badge complétude du dossier (pièces) */
.badge-doss{display:inline-block;margin:6px 0 0 6px;background:#fef3e2;color:#b9770e;padding:2px 10px;border-radius:20px;font-size:11.5px;font-weight:700;font-variant-numeric:tabular-nums}
.badge-doss.ok{background:#e8f6ee;color:#1e8449}
/* surcharge sur la ligne du pipeline (bat .cand-row .who .stg) */
.cand-row .who .badge-doss{background:#fef3e2;color:#b9770e}
.cand-row .who .badge-doss.ok{background:#e8f6ee;color:#1e8449}
/* Aperçu du suivi (zone de texte libre) sur la ligne du pipeline */
.cand-row .who .suivi{display:block;margin-top:6px;font-weight:400;font-size:12px;color:#5d6d7e;max-width:200px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* Affectation d'un lot pour une candidature « Sans lot » */
.cand-row .who .lot-affect{margin-top:7px}
.cand-row .who .lot-affect select{max-width:200px;font-size:12px;padding:3px 6px;border:1px solid #d6dee6;border-radius:7px;background:#fff;color:#1c2833;font-weight:400}
/* Checklist des pièces (formulaire candidature) */
.pieces{display:flex;flex-direction:column;gap:6px;margin:2px 0 6px}
.pieces .pc{display:flex;align-items:center;gap:8px;font-size:14px;color:#1c2833;font-weight:400}
.pieces .pc input{transform:translateY(1px)}
/* Annonce prête à publier */
.copytxt{width:100%;font-family:inherit;font-size:13px;line-height:1.5;border:1px dashed #b6cbdd;border-radius:8px;padding:10px;background:#f4f8fb;color:#1c2833;resize:vertical}
ul.photos{margin:4px 0 0;padding-left:18px;font-size:13px}
ul.photos a{color:#1F618D;word-break:break-all}
/* =====================  Responsive / mobile (téléphone)  ===================== */
@media (max-width: 760px) {
  /* Barre de navigation : on autorise le retour à la ligne, hauteur libre */
  .nav { height:auto; flex-wrap:wrap; padding:8px 12px; gap:4px; }
  .nav .brand { width:100%; margin:0 0 2px; }
  .nav .links { width:100%; gap:2px; }
  .nav .links a { padding:6px 10px; font-size:13px; }
  .nav .logout { width:100%; }
  .nav .logout button { width:100%; margin-top:2px; }
  main { margin:14px auto; padding:0 10px; }
  h2 { font-size:18px; }
  /* Tableaux : défilement horizontal au lieu de déborder ou d'écraser les colonnes */
  main table { display:block; overflow-x:auto; -webkit-overflow-scrolling:touch; white-space:nowrap; }
  /* Pipeline candidatures : les 3 colonnes s'empilent */
  .cand-row { grid-template-columns:1fr; gap:10px; }
  /* Menu de tri/filtre (style Excel) : rester dans l'écran */
  .xl-menu { max-width:calc(100vw - 16px); }
  /* Formulaires et cartes en pleine largeur */
  .form { max-width:100%; }
  .kanban { gap:8px; }
}
/* =====================  Process de sortie (V17)  ===================== */
/* Onglets de la page Locations */
.onglets{display:flex;gap:4px;margin:0 0 14px;border-bottom:1px solid #d9e2ea}
.onglets a{padding:8px 14px;text-decoration:none;color:#5d6d7e;font-size:14px;font-weight:600;border-bottom:2px solid transparent}
.onglets a:hover{color:#1B4F72}
.onglets a.on{color:#1B4F72;border-bottom-color:#1B4F72}
.onglets .cnt{display:inline-block;background:#1B4F72;color:#fff;border-radius:20px;padding:0 7px;font-size:11px;margin-left:4px}

/* Fiche Location : formulaire du bail à gauche, process de sortie à droite */
.loc-cols{display:grid;grid-template-columns:minmax(320px,520px) 1fr;gap:18px;align-items:start}

/* Carte du process de sortie */
.sortie{background:#fff;border:1px solid #e1e8ed;border-radius:12px;padding:16px 18px}
.sortie h3{margin:0;font-size:16px;color:#1B4F72}
.sortie h4{margin:0 0 8px;font-size:14px;color:#1B4F72}
.sortie .hint{color:#6b7a86;font-size:12.5px;margin:4px 0 10px;line-height:1.5}
.sortie-off{color:#6b7a86;font-size:13.5px}
.sortie-h{display:flex;align-items:center;gap:10px;margin-bottom:12px}
.sortie-h .right{margin-left:auto}
.sortie-pill{background:#eaf2f8;color:#1f618d}
.lien-danger{background:none;border:0;color:#b03a3a;font-size:12.5px;cursor:pointer;text-decoration:underline;padding:0}

/* Formulaire « Enregistrer un préavis » */
.preavis-form{margin:0}
.pf-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px 14px}
.pf-grid .full{grid-column:1/-1}
.pf-grid label{display:block;font-size:12px;color:#5d6d7e;font-weight:600;margin-bottom:3px}
.pf-grid input,.pf-grid select{width:100%;box-sizing:border-box;padding:8px;border:1px solid #d6dee6;border-radius:8px;font:inherit;font-size:13.5px;background:#fff}
.pf-grid .hint{display:block;margin:4px 0 0}
.sortie .go{margin-top:14px}
.sortie .go button{background:#1B4F72;color:#fff;border:0;border-radius:8px;padding:10px 18px;font-weight:600;cursor:pointer}

/* Pipeline en 7 étapes */
.pipe{display:flex;flex-wrap:wrap;gap:4px;margin:0 0 16px}
.pipe .st{flex:1 1 108px;border:1px solid #e1e8ed;border-radius:8px;background:#f7fafc;padding:7px 9px;min-width:0}
.pipe .st .n{display:block;font-size:10.5px;color:#8d9aa6;font-weight:700}
.pipe .st .l{display:block;font-size:12px;line-height:1.3;color:#1c2833;margin-top:1px}
.pipe .st.done{background:#e9f7ef;border-color:#cfe6da}
.pipe .st.done .l,.pipe .st.done .n{color:#1e8449}
.pipe .st.cur{background:#1B4F72;border-color:#1B4F72}
.pipe .st.cur .l,.pipe .st.cur .n{color:#fff}

/* Deux colonnes internes : dates/argent | checklist */
.sortie-cols{display:grid;grid-template-columns:1fr 1fr;gap:18px}

/* Petits tableaux internes (sans le chrome des tableaux de liste) */
table.mini{width:100%;border-collapse:collapse;background:transparent;border:0;border-radius:0;margin-bottom:14px}
table.mini th{background:transparent;color:#5d6d7e;font-size:11px;text-transform:uppercase;letter-spacing:.4px;
  padding:0 0 6px;border-bottom:1px solid #e1e8ed}
table.mini td{padding:6px 0;border-bottom:1px solid #f0f4f7;font-size:13.5px;vertical-align:middle}
table.mini td.r{text-align:right;font-variant-numeric:tabular-nums}
table.mini td.b{font-weight:600}
table.mini .muted{font-size:12px}
table.mini input[type=checkbox]{transform:translateY(1px)}
table.mini.cles td{padding:6px 8px 6px 0}
.mnt{width:100px;padding:5px 7px;border:1px solid #d6dee6;border-radius:7px;font:inherit;font-size:13px;text-align:right}

/* Étiquettes d'état */
.tag{display:inline-block;background:#eef2f6;color:#5d6d7e;font-size:11px;font-weight:700;
  padding:1px 8px;border-radius:20px;white-space:nowrap;margin-left:4px}
.tag.ok{background:#e8f6ee;color:#1e8449}
.tag.warn{background:#fef3e2;color:#b9770e}
.tag.danger{background:#fdedec;color:#c0392b}

/* Checklist de sortie */
.chklist{list-style:none;margin:0 0 12px;padding:0}
.chklist li{padding:8px 0;border-bottom:1px solid #f0f4f7;font-size:13.5px}
.chklist li:last-child{border-bottom:0}
.chklist form{margin:0}
.chklist label{display:block;font-size:13.5px;color:#1c2833}
.chklist input[type=checkbox]{margin-right:8px;transform:translateY(1px)}
.chklist .s{display:block;color:#6b7a86;font-size:12px;margin-top:2px}
.chklist .s a{color:#1F618D}
.chklist .box{display:inline-block;width:13px;height:13px;border:1.5px solid #b9bfc9;border-radius:4px;margin-right:8px}
.chklist .box.on{background:#1e8449;border-color:#1e8449}
.chklist .txt{font-size:13.5px}
.sortie .inline{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:6px}
.sortie .inline label{font-size:12px;color:#5d6d7e;font-weight:600}
.sortie .inline input{padding:6px 8px;border:1px solid #d6dee6;border-radius:7px;font:inherit;font-size:13px}
.sortie .inline button{background:#1B4F72;color:#fff;border:0;border-radius:7px;padding:6px 12px;font-size:12.5px;font-weight:600;cursor:pointer}
.sortie .inline button[disabled]{background:#c7d2dc;cursor:not-allowed}

/* Suivi libre + blocs secondaires */
.suivi-form label{display:block;font-size:12px;color:#5d6d7e;font-weight:600;margin-bottom:4px}
.suivi-form textarea{width:100%;box-sizing:border-box;padding:8px;border:1px solid #d6dee6;border-radius:8px;font:inherit;font-size:13px;resize:vertical}
.suivi-form button{margin-top:6px;background:#eef2f6;border:0;color:#1B4F72;border-radius:7px;padding:6px 12px;font-size:12.5px;font-weight:600;cursor:pointer}
.sortie-bloc{margin-top:18px;padding-top:14px;border-top:1px solid #eef2f5}
.sortie-bloc .copytxt{margin-top:4px}

@media (max-width:900px){
  .loc-cols{grid-template-columns:1fr}
  .sortie-cols{grid-template-columns:1fr}
}
/* =====================  Archivage des candidatures (V18)  ===================== */
/* Contrôle d'archivage sur la ligne du pipeline */
.cand-row .who .arch{margin-top:7px}
.cand-row .who .arch select{max-width:200px;font-size:12px;padding:3px 6px;border:1px solid #e0d0d0;
  border-radius:7px;background:#fff;color:#8a5a5a;font-weight:400;cursor:pointer}
.cand-row .who .arch select:hover{border-color:#c9a5a5}

/* Bloc « lot déjà pourvu » : à apurer */
.lotblock.apurer{border-color:#edd9ae;background:#fffdf8}
.lotblock.apurer .lh h3{color:#9a6400}
.lotblock .bulk{margin-left:auto}
.lotblock .bulk button{background:#9a6400;color:#fff;border:0;border-radius:8px;padding:7px 13px;
  font-size:13px;font-weight:600;cursor:pointer}
.lotblock .bulk button:hover{background:#b9770e}

/* Historique des candidatures */
button.reactiver{background:#eef2f6;border:0;color:#1B4F72;border-radius:7px;padding:4px 10px;
  font-size:12.5px;font-weight:600;cursor:pointer}
button.reactiver:hover{background:#dfe7ef}
/* =====================  Note et canal d'acquisition sur la ligne (V19)  ===================== */
/* Aperçu de la note de la fiche, sous le nom du candidat */
.cand-row .who .note-ap{display:block;margin-top:4px;font-weight:400;font-size:12px;color:#6b7a86;
  max-width:200px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* Sélecteur de canal d'acquisition */
.cand-row .who .canal-sel{margin-top:7px}
.cand-row .who .canal-sel select{max-width:200px;font-size:12px;padding:3px 6px;border:1px solid #d6dee6;
  border-radius:7px;background:#fff;color:#1c2833;font-weight:600;cursor:pointer}
.cand-row .who .canal-sel select.vide{color:#9aa7b1;font-weight:400;border-style:dashed}
/* =====================  Note éditable sur la ligne du pipeline (V20)  ===================== */
.checks .steps{margin-bottom:8px}
.checks .note-edit{margin:0}
.checks .note-edit textarea{width:100%;box-sizing:border-box;padding:6px 8px;border:1px solid #d6dee6;
  border-radius:8px;font:inherit;font-size:12.5px;line-height:1.45;color:#1c2833;background:#fbfcfd;
  resize:vertical;min-height:42px}
.checks .note-edit textarea:focus{border-color:#1B4F72;background:#fff;outline:none}
.checks .note-edit textarea::placeholder{color:#9aa7b1}
.checks .note-edit button{margin-top:4px;background:#eef2f6;border:0;color:#1B4F72;border-radius:7px;
  padding:4px 10px;font-size:12px;font-weight:600;cursor:pointer}
.checks .note-edit button:hover{background:#dfe7ef}
/* =====================  Accès au site public depuis le CRM (V21)  ===================== */
.nav-site{color:#9fb8d0;font-size:12px;margin-right:12px;white-space:nowrap;text-decoration:none}
.nav-site:hover{color:#fff;text-decoration:underline}
/* =====================  Page de connexion  =====================
   Le bloc .login n'avait jamais été écrit : seuls .sub et .retour existaient. La page
   s'affichait donc en HTML brut — champs système collés les uns aux autres, aucun cadre.
   C'est la première page que voit quiconque se connecte, et la seule que voit un visiteur
   qui tombe sur /login par erreur. */
.login{max-width:380px;margin:9vh auto;background:#fff;border:1px solid #dde5eb;border-radius:14px;
  padding:30px 32px;box-shadow:0 2px 16px rgba(20,40,60,.07)}
.login h1{font-size:22px;color:#1B4F72;margin:0 0 4px}
.login form{display:flex;flex-direction:column;gap:10px;margin-top:4px}
.login input{width:100%;box-sizing:border-box;padding:11px 12px;border:1px solid #d6dee6;
  border-radius:9px;font:inherit;font-size:15px;background:#fbfcfd}
.login input:focus{border-color:#1B4F72;background:#fff;outline:none}
.login button{margin-top:4px;background:#1B4F72;color:#fff;border:0;border-radius:9px;
  padding:12px 16px;font:inherit;font-size:15px;font-weight:600;cursor:pointer}
.login button:hover{background:#16405d}
/* Messages : identifiants refusés, déconnexion, jeton expiré. Sans ces règles, ils passaient
   inaperçus au milieu du formulaire. */
.login .err,.login .ok{margin:0 0 12px;padding:9px 12px;border-radius:9px;font-size:13.5px;line-height:1.4}
.login .err{background:#fdecea;border:1px solid #f5c6c0;color:#a93226}
.login .ok{background:#e8f6ee;border:1px solid #bfe3ce;color:#1e8449}
.login .sub{color:#5d6d7e;font-size:13.5px;margin:-6px 0 14px}
.login .retour{display:inline-block;margin-top:16px;color:#1F618D;font-size:13.5px;text-decoration:none}
.login .retour:hover{text-decoration:underline}
