/* Charte du site bioteris.fr (relevée le 01/10) : encre vert sapin, vert principal, jaune « signal »,
   fonds crème et sable ; Space Grotesk (titres), DM Sans (texte), IBM Plex Mono (chiffres en colonne). */
:root { --fond:#f9f7f3; --carte:#fdfcf9; --texte:#10241e; --encre:#071b17; --encre-2:#12302a; --vert:#2b5746;
  --vert-clair:#e3ece6; --gris:#606c66; --bord:#dbdcd3; --sable:#e9e2d3; --signal:#dbb55e; --rouge:#ab4238;
  --orange:#b26a00; --ombre:0 1px 2px rgba(7,27,23,.06), 0 4px 16px rgba(7,27,23,.05);
  --titres:"Space Grotesk", system-ui, sans-serif; --mono:"IBM Plex Mono", ui-monospace, monospace; }
* { box-sizing: border-box; }
body { margin:0; font:15px/1.5 "DM Sans", system-ui, -apple-system, "Segoe UI", sans-serif; background:var(--fond); color:var(--texte); }
h1, h2, h3 { font-family:var(--titres); letter-spacing:-.01em; }
main { max-width:1300px; margin:0 auto; padding:1.5rem; }
a { color:var(--vert); }
.haut { display:flex; align-items:center; gap:2rem; padding:.55rem 1.5rem; background:var(--encre); color:#fff; position:sticky; top:0; z-index:20; }
.haut a { color:#fff; text-decoration:none; }
.haut .logo { display:flex; align-items:center; gap:.6rem; font-family:var(--titres); font-weight:600; letter-spacing:.08em; text-transform:uppercase; font-size:.8rem; color:var(--signal); }
.haut .logo img { display:block; }
/* Menu regroupé (01/10) : Accueil, puis Veille / Réponse / Pilotage en menus déroulants. */
.menu { display:flex; gap:.3rem; flex:1; align-items:center; }
.menu > a, .groupe-titre { padding:.45rem .8rem; border-radius:4px; color:#dfe6e1; background:none; font-size:.92rem; }
.menu > a:hover, .groupe:hover .groupe-titre, .groupe:focus-within .groupe-titre { background:var(--encre-2); color:#fff; }
.menu > a.actif, .groupe.actif .groupe-titre { color:#fff; box-shadow:inset 0 -2px 0 var(--signal); }
.groupe { position:relative; }
.groupe-titre::after { content:" ▾"; font-size:.7rem; opacity:.7; }
.sous-menu { display:none; position:absolute; top:100%; left:0; min-width:220px; padding:.4rem; background:var(--carte);
  border:1px solid var(--bord); border-radius:6px; box-shadow:var(--ombre); }
.groupe:hover .sous-menu, .groupe:focus-within .sous-menu { display:block; }
.sous-menu a { display:block; padding:.45rem .7rem; border-radius:4px; color:var(--texte); }
.sous-menu a:hover { background:var(--vert-clair); }
.pastille-personne { display:inline-flex; align-items:center; justify-content:center; min-width:2rem; height:1.6rem; padding:0 .55rem;
  border-radius:999px; background:var(--signal); color:var(--encre); font-size:.78rem; font-weight:600; }
.deconnexion { display:flex; gap:.8rem; align-items:center; margin:0; }
button, .bouton { font:inherit; padding:.45rem .9rem; border:0; border-radius:6px; background:var(--vert); color:#fff; cursor:pointer; text-decoration:none; display:inline-block; }
.bouton.secondaire { background:#fff; color:var(--vert); border:1px solid var(--vert); }
.actions-documents { display:flex; flex-wrap:wrap; gap:.6rem; }
button.lien { background:none; padding:0; color:inherit; text-decoration:underline; }
.filtres button.lien, .filtres a.lien { color:var(--vert); }
button.petit { padding:.15rem .5rem; font-size:.8rem; background:#fff; color:var(--vert); border:1px solid var(--vert); }
button.petit:hover { background:var(--vert-clair); }
input, select, textarea { font:inherit; padding:.35rem .5rem; border:1px solid var(--bord); border-radius:6px; background:#fff; }
label { display:flex; flex-direction:column; gap:.2rem; font-size:.8rem; color:var(--gris); }
.filtres { display:flex; flex-wrap:wrap; gap:.8rem; align-items:flex-end; background:#fff; border:1px solid var(--bord); border-radius:8px; padding:.8rem 1rem; }
.filtres label.case { flex-direction:row; align-items:center; gap:.4rem; padding-bottom:.4rem; }
.compte { color:var(--gris); margin:.8rem 0; }
table.liste { width:100%; border-collapse:collapse; background:#fff; border:1px solid var(--bord); border-radius:8px; overflow:hidden; }
.liste th { text-align:left; font-size:.78rem; text-transform:uppercase; letter-spacing:.03em; color:var(--gris); padding:.6rem .7rem; background:#eef1ee; }
.liste td { padding:.55rem .7rem; border-top:1px solid var(--bord); vertical-align:top; }
.liste td.titre { max-width:520px; }
.liste td.titre a { font-weight:600; text-decoration:none; }
.liste td.titre a:hover { text-decoration:underline; }
.acheteur { color:var(--gris); font-size:.85rem; }
.actions { white-space:nowrap; }
.actions form { display:inline; }
.badge { display:inline-block; font-size:.7rem; padding:.05rem .4rem; border-radius:999px; border:1px solid; vertical-align:middle; }
.badge.modifiee { color:var(--orange); border-color:var(--orange); background:#fff4e0; font-weight:600; }
.badge.annulee { color:var(--rouge); border-color:var(--rouge); background:#fbe3e1; font-weight:600; }
.badge.faible { color:var(--orange); border-color:var(--orange); background:#fff4e0; }
.badge.taille-petite { color:var(--gris); border-color:var(--gris); background:#f0f2f0; }
.badge.taille-importante { color:var(--orange); border-color:var(--orange); background:#fff4e0; }
.badge.taille-tres_importante { color:var(--rouge); border-color:var(--rouge); background:#fbe3e1; }
.badge.couverture-bioteris { color:var(--vert); border-color:var(--vert); background:var(--vert-clair); }
.badge.couverture-externe { color:var(--orange); border-color:var(--orange); background:#fff4e0; }
.competences { list-style:none; padding:0; margin:.6rem 0; display:flex; flex-direction:column; gap:.4rem; }
.competences li { display:flex; align-items:center; gap:.6rem; }
.statut { display:inline-block; font-size:.8rem; padding:.1rem .55rem; border-radius:999px; background:#eee; white-space:nowrap; }
.s-nouveau { background:#dbe9ff; } .s-a-etudier { background:#fff1c2; } .s-retenu { background:#cdeedb; } .s-a-repondre { background:#ffd8a8; font-weight:600; }
.s-ecarte { background:#e6e6e6; color:var(--gris); } .s-repondu { background:#e4d9fb; } .s-gagne { background:#a6e3bf; } .s-perdu { background:#f5cfcf; }
.e-ok { background:#cdeedb; } .e-panne { background:#f5cfcf; color:var(--rouge); font-weight:700; } .e-retard { background:#fff1c2; color:var(--orange); font-weight:700; } .e-jamais { background:#eee; }
.s-brouillon { background:#eee; color:var(--gris); } .s-envoye { background:#dbe9ff; } .s-accepte { background:#a6e3bf; } .s-refuse { background:#f5cfcf; }
.formulaire-devis { display:flex; flex-direction:column; gap:.7rem; align-items:flex-start; max-width:100%; }
.formulaire-devis input, .formulaire-devis textarea { width:100%; }
.ligne-champs { display:flex; flex-wrap:wrap; gap:.7rem; align-items:flex-end; }
.nouvelle-ligne textarea { min-width:220px; }
table.lignes-devis textarea { width:100%; min-height:2.2rem; resize:vertical; }
table.lignes-devis tfoot td { border-top:1px solid var(--bord); border-bottom:none; }
.bouton-principal { background:var(--vert); color:#fff; font-weight:600; padding:.6rem 1.4rem; align-self:flex-start; }

/* édition d'un devis : deux colonnes, aperçu collant à droite */
.devis-page { display:grid; grid-template-columns:1fr 420px; gap:2rem; align-items:start; }
@media (max-width:960px) { .devis-page { grid-template-columns:1fr; } }
.devis-apercu { position:sticky; top:1rem; }
.apercu-papier { background:#fff; border:1px solid var(--bord); border-radius:8px; padding:1.4rem; font-size:.85rem; }
.apercu-entete { display:flex; justify-content:space-between; align-items:flex-start; border-bottom:2px solid var(--vert); padding-bottom:.7rem; margin-bottom:1rem; gap:.8rem; }
.apercu-marque { font-weight:700; color:var(--vert); font-size:1.1rem; }
.apercu-devis-meta { text-align:right; color:var(--gris); font-size:.8rem; }
.apercu-numero { font-weight:700; color:var(--texte); font-size:.95rem; }
.apercu-bloc { margin-bottom:.9rem; }
.apercu-bloc h4 { margin:0 0 .2rem; font-size:.7rem; text-transform:uppercase; letter-spacing:.03em; color:var(--gris); }
.apercu-bloc p { margin:0; }
.apercu-table { width:100%; border-collapse:collapse; font-size:.8rem; margin-top:.8rem; }
.apercu-table th, .apercu-table td { padding:.35rem .3rem; border-bottom:1px solid var(--bord); text-align:left; }
.apercu-table th { color:var(--gris); font-weight:600; font-size:.7rem; text-transform:uppercase; }
.apercu-table td.num, .apercu-table th.num { text-align:right; }
.apercu-table tfoot td { border-bottom:none; }
.apercu-table tr.apercu-total td { font-weight:700; border-top:2px solid var(--texte); }
.apercu-vide { color:var(--gris); text-align:center; padding:.8rem 0 !important; }
.apercu-note { margin-top:.6rem; font-size:.75rem; }

/* résultats de recherche de prix (mots-clés ou IA) */
.resultats-prix { display:flex; flex-direction:column; gap:.5rem; margin:.6rem 0 1.2rem; }
.resultat-prix { display:flex; justify-content:space-between; align-items:center; gap:1rem; background:#fff; border:1px solid var(--bord); border-radius:6px; padding:.6rem .8rem; }
.resultat-prix-objet { font-weight:600; }
.resultat-prix-meta { color:var(--gris); font-size:.85rem; margin-top:.1rem; }
.resultat-prix-raison { color:var(--vert); font-size:.82rem; margin-top:.2rem; font-style:italic; }
.message { color:var(--rouge); font-size:.85rem; max-width:420px; word-break:break-word; }
.vide { color:var(--gris); padding:1.5rem 0; }
.pages { display:flex; gap:1.5rem; justify-content:center; margin:1.2rem 0; }
.carte { background:#fff; border:1px solid var(--bord); border-radius:8px; padding:1.5rem; }
.fiche-page { display:grid; grid-template-columns:1fr 340px; gap:2rem; align-items:start; max-width:1260px; }
@media (max-width:960px) { .fiche-page { grid-template-columns:1fr; } }
.fiche-lots { position:sticky; top:1rem; }
.fiche-lots .carte { padding:1.2rem; }
.liste-lots { list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:.9rem; }
.lot { border-top:1px solid var(--bord); padding-top:.7rem; }
.lot:first-child { border-top:none; padding-top:0; }
.lot p { margin:.3rem 0 0; }
.badge.lot-oui { color:var(--vert); border-color:var(--vert); background:var(--vert-clair); }
.badge.lot-partiel { color:var(--orange); border-color:var(--orange); background:#fff4e0; }
.badge.lot-non { color:var(--rouge); border-color:var(--rouge); background:#fbe3e1; }
.badge.lot-incertain { color:var(--gris); border-color:var(--gris); background:#f0f2f0; }
.fiche h1 { margin-top:0; font-size:1.35rem; }
.fiche dl { display:grid; grid-template-columns:150px 1fr; gap:.4rem 1rem; margin:1rem 0; }
.fiche dt { color:var(--gris); } .fiche dd { margin:0; }
.suivi { display:flex; flex-wrap:wrap; gap:2rem; padding:1rem 0; border-top:1px solid var(--bord); border-bottom:1px solid var(--bord); }
.suivi form { display:flex; gap:.6rem; align-items:flex-end; }
.formulaire-dce { display:flex; gap:.6rem; align-items:flex-end; flex-wrap:wrap; margin-top:.3rem; }
.texte { white-space:pre-wrap; background:#f8f9f8; border:1px solid var(--bord); border-radius:6px; padding:.8rem 1rem; max-height:420px; overflow:auto; }
.note { border-left:3px solid var(--vert); padding:.2rem 0 .2rem .8rem; margin:.8rem 0; }
.note p { margin:.2rem 0 0; white-space:pre-wrap; } .note .date { color:var(--gris); font-size:.8rem; margin-left:.5rem; }
.nouvelle-note { display:flex; flex-direction:column; gap:.5rem; align-items:flex-start; }
.nouvelle-note textarea { width:100%; }
.connexion { max-width:380px; margin:6rem auto; display:flex; flex-direction:column; gap:1rem; }
.connexion h1 { margin:0; text-align:center; color:var(--vert); }
.erreur { background:#fbe3e1; color:var(--rouge); padding:.5rem .8rem; border-radius:6px; margin:0; }
.ok { background:#dcf1e4; color:#1d5a3a; padding:.5rem .8rem; border-radius:6px; margin:0; }

/* Rectificatifs (ajouté le 01/10) */
.rectificatifs { margin:1rem 0; padding:.75rem 1rem; border-left:3px solid var(--orange); background:#fffaf0; }
.rectificatifs.annulee { border-left-color:var(--rouge); background:#fdf3f2; }
.rectificatifs h2 { font-size:1rem; margin:0 0 .5rem; }
.rectificatifs ul { margin:0; padding-left:1.1rem; }
.rectificatifs li { margin:.4rem 0; }
.rectificatifs .texte-rectificatif { white-space:pre-line; font-size:.85rem; color:var(--gris); margin-top:.2rem; }

/* Copies et versions proches des bibliothèques (ajouté le 01/10) */
.encart-parente { margin:.75rem 0; padding:.6rem .9rem; border-left:3px solid var(--gris); background:#f4f6f4; font-size:.9rem; }
.encart-parente.copie { border-left-color:var(--orange); background:#fffaf0; }
.encart-parente.proches ul { margin:.3rem 0; padding-left:1.1rem; }
.badge.bientot { color:var(--gris); border-color:var(--gris); background:#f0f2f0; font-weight:400; }
/* Motif d'écartement (ajouté le 01/10) */
form.ecarter { display:inline-flex; gap:.25rem; align-items:center; }
form.ecarter select { font-size:.75rem; padding:.1rem .2rem; max-width:9rem; }

/* Réponse en cours : échéance, pièces à fournir, CRM (ajouté le 01/10) */
.echeance { margin:1rem 0; padding:.6rem .9rem; border-left:3px solid var(--vert); background:var(--vert-clair); }
.echeance.urgente { border-left-color:var(--rouge); background:#fbe3e1; }
.echeance .bouton { margin-left:.5rem; }
.pieces ul { list-style:none; padding-left:0; }
.pieces li { margin:.25rem 0; }
.pieces li.faite { color:var(--gris); text-decoration:line-through; }
form.en-ligne { display:inline-flex; gap:.3rem; align-items:center; }
button.case { background:none; border:none; font-size:1.1rem; cursor:pointer; padding:0 .2rem; color:inherit; }
.badge.idf-ok { color:var(--vert); border-color:var(--vert); background:var(--vert-clair); }

/* ================= Accueil (tableau de bord, 01/10) ================= */
.accueil { display:flex; flex-direction:column; gap:1.2rem; }
.bandeau { display:flex; justify-content:space-between; align-items:flex-end; gap:1rem; padding:1.6rem 1.8rem; border-radius:8px;
  background:linear-gradient(160deg, #071b17 0%, #12302a 70%, #1d4a3c 100%); color:#fff; position:relative; overflow:hidden; }
.bandeau::after { content:""; position:absolute; right:-60px; top:-60px; width:260px; height:260px; border-radius:50%;
  border:1px solid rgba(219,181,94,.35); box-shadow:0 0 0 40px rgba(219,181,94,.05), 0 0 0 80px rgba(219,181,94,.03); }
.bandeau h1 { margin:.1rem 0 .3rem; font-size:2rem; }
.bandeau .surtitre { margin:0; text-transform:uppercase; letter-spacing:.12em; font-size:.72rem; color:var(--signal); font-family:var(--mono); }
.bandeau .phrase { margin:0; color:#dfe6e1; font-size:1.05rem; max-width:62ch; }
.bascule { display:flex; background:rgba(255,255,255,.08); border-radius:999px; padding:.2rem; position:relative; z-index:1; }
.bascule a { padding:.35rem .9rem; border-radius:999px; color:#dfe6e1; text-decoration:none; font-size:.85rem; }
.bascule a.actif { background:var(--signal); color:var(--encre); font-weight:600; }

.tuiles { display:grid; grid-template-columns:repeat(6, 1fr); gap:.8rem; }
.tuile { display:flex; flex-direction:column; gap:.15rem; padding:1rem 1rem .8rem; background:var(--carte); border:1px solid var(--bord);
  border-radius:8px; color:var(--texte); text-decoration:none; box-shadow:var(--ombre); transition:transform .15s, box-shadow .15s; }
.tuile:hover { transform:translateY(-2px); box-shadow:0 6px 22px rgba(7,27,23,.10); }
.tuile-libelle { font-size:.78rem; color:var(--gris); }
.tuile-valeur { font-size:2rem; font-weight:600; line-height:1.1; }
.tuile-detail { font-size:.75rem; color:var(--gris); }
.tuile.alerte { border-color:var(--rouge); background:linear-gradient(0deg, #fbeeec, var(--carte)); }
.tuile.alerte .tuile-valeur { color:var(--rouge); }
.sparkline { margin-top:.35rem; width:100%; height:34px; }

.grille-accueil { display:grid; grid-template-columns:2fr 1fr; gap:1rem; align-items:start; }
.grille-tendances { display:grid; grid-template-columns:2fr 1fr; gap:1rem; align-items:start; }
.panneau { background:var(--carte); border:1px solid var(--bord); border-radius:8px; padding:1rem 1.2rem; box-shadow:var(--ombre); min-width:0; }
.panneau header { display:flex; justify-content:space-between; align-items:baseline; margin-bottom:.6rem; }
.panneau h2 { font-size:1.02rem; margin:0; }
.panneau h3 { font-size:.85rem; margin:1rem 0 .4rem; color:var(--gris); }
.lien-discret { font-size:.8rem; color:var(--gris); text-decoration:none; }
.lien-discret:hover { color:var(--vert); }
.titre-section { margin:.6rem 0 0; font-size:1.25rem; }
.vide-doux { color:var(--gris); font-size:.9rem; background:var(--fond); border:1px dashed var(--bord); border-radius:6px; padding:.9rem 1rem; margin:0; }

.echeances, .a-trier, .entonnoir, .voyants, .alertes, .activite, .barres, .legende { list-style:none; margin:0; padding:0; }
.carte-echeance { display:grid; grid-template-columns:78px 1fr auto; gap:.9rem; align-items:center; padding:.7rem 0; border-top:1px solid var(--bord); }
.carte-echeance:first-child { border-top:0; }
.compte-a-rebours { display:flex; align-items:center; justify-content:center; height:52px; border-radius:6px; font-family:var(--mono);
  font-weight:500; font-size:.95rem; color:#fff; background:#0b764d; }
.carte-echeance.orange .compte-a-rebours { background:#b26a00; }
.carte-echeance.rouge .compte-a-rebours, .carte-echeance.depasse .compte-a-rebours { background:var(--rouge); }
.carte-echeance.rouge .compte-a-rebours { animation:pouls 2s ease-in-out infinite; }
@keyframes pouls { 50% { box-shadow:0 0 0 6px rgba(171,66,56,.15); } }
.echeance-titre { font-weight:600; text-decoration:none; color:var(--texte); }
.echeance-titre:hover { color:var(--vert); text-decoration:underline; }
.carte-echeance .acheteur { margin:.1rem 0; }
.progression { height:6px; border-radius:3px; background:var(--vert-clair); overflow:hidden; margin:.35rem 0 .1rem; max-width:260px; }
.progression span { display:block; height:100%; background:#0b764d; border-radius:3px; }

.entonnoir li a { display:grid; grid-template-columns:92px 1fr 2.2rem; gap:.6rem; align-items:center; padding:.32rem .3rem; border-radius:4px;
  color:var(--texte); text-decoration:none; font-size:.86rem; }
.entonnoir li a:hover { background:var(--fond); }
.barre { display:block; height:10px; background:var(--fond); border-radius:0 4px 4px 0; }
.barre > span { display:block; height:100%; min-width:2px; background:#0b764d; border-radius:0 4px 4px 0; }
.nombre { text-align:right; font-family:var(--mono); font-size:.85rem; font-variant-numeric:tabular-nums; }

.a-trier li { display:grid; grid-template-columns:44px 1fr auto; gap:.8rem; align-items:center; padding:.6rem 0; border-top:1px solid var(--bord); }
.a-trier li:first-child { border-top:0; }
.score { display:flex; align-items:center; justify-content:center; width:40px; height:40px; border-radius:50%; font-family:var(--mono);
  font-weight:500; background:var(--fond); border:2px solid var(--bord); font-size:.88rem; }
.score.fort { border-color:#0b764d; color:#0b764d; background:#e8f3ec; }
.a-trier-corps a { font-weight:600; text-decoration:none; color:var(--texte); }
.a-trier-corps a:hover { color:var(--vert); text-decoration:underline; }
.a-trier-corps .acheteur { margin:.1rem 0 0; }
.actions-rapides { display:flex; gap:.4rem; align-items:center; }
.actions-rapides form { display:inline-flex; gap:.25rem; margin:0; }
.actions-rapides select { font-size:.75rem; padding:.15rem .2rem; }

.voyants li { display:grid; grid-template-columns:14px 1fr auto; gap:.6rem; align-items:center; padding:.35rem 0; font-size:.88rem; }
.voyant { width:10px; height:10px; flex:none; border-radius:50%; background:var(--gris); }
.voyant.v-ok { background:#0b764d; box-shadow:0 0 0 3px rgba(11,118,77,.15); }
.voyant.v-panne { background:var(--rouge); box-shadow:0 0 0 3px rgba(171,66,56,.18); }
.voyant.v-retard { background:var(--orange); }
.etat-texte { font-size:.75rem; color:var(--gris); }
.etat-texte.t-panne { color:var(--rouge); font-weight:600; }
.etat-texte.t-retard { color:var(--orange); font-weight:600; }
.alertes li { font-size:.84rem; padding:.25rem 0; border-top:1px dashed var(--bord); }

.calendrier { width:100%; table-layout:fixed; border-collapse:separate; border-spacing:3px; font-family:var(--mono); font-size:.8rem; }
.calendrier th { color:var(--gris); font-weight:400; font-size:.7rem; }
.calendrier td { text-align:center; padding:.35rem 0; border-radius:4px; }
.calendrier td.aujourdhui { outline:2px solid var(--signal); font-weight:600; }
.calendrier td.echeance-forte { background:var(--rouge); color:#fff; font-weight:600; cursor:help; }
.calendrier td.echeance-legere { background:var(--vert-clair); color:var(--vert); cursor:help; }
.legende-calendrier { font-size:.75rem; color:var(--gris); display:flex; gap:.4rem; align-items:center; flex-wrap:wrap; margin:.5rem 0 0; }
.puce { display:inline-block; width:10px; height:10px; border-radius:3px; }
.puce.forte { background:var(--rouge); } .puce.legere { background:var(--vert-clair); border:1px solid var(--vert); }

.activite li { display:grid; grid-template-columns:118px 1fr; gap:.7rem; padding:.4rem 0 .4rem .7rem; border-left:2px solid var(--bord);
  font-size:.86rem; position:relative; }
.activite li::before { content:""; position:absolute; left:-5px; top:.75rem; width:8px; height:8px; border-radius:50%; background:var(--bord); }
.activite li.type-statut::before { background:#0b764d; } .activite li.type-rectificatif::before { background:#c59711; }
.activite li.type-annulation::before { background:var(--rouge); } .activite li.type-collecte::before { background:#3a80b7; }
.activite .quand { color:var(--gris); font-family:var(--mono); font-size:.75rem; }
.activite a { color:var(--texte); }

.legende { display:flex; flex-wrap:wrap; gap:.4rem 1rem; font-size:.8rem; color:var(--gris); margin-bottom:.4rem; }
.legende li { display:flex; align-items:center; gap:.35rem; }
.cle { display:inline-block; width:12px; height:12px; border-radius:3px; }
.legende.echelle { gap:.2rem .6rem; margin-top:.4rem; }
.graphique { width:100%; height:auto; display:block; }
.graphique .axe { font-size:11px; fill:var(--gris); font-family:var(--mono); }
.graphique .valeur { font-size:11px; fill:var(--texte); font-family:var(--mono); }
.graphique path:hover, .carte-france path:hover { opacity:.82; }
.carte-france { width:100%; height:auto; max-height:360px; display:block; }
.source-carte { font-size:.68rem; color:var(--gris); margin:.4rem 0 0; }
.donnees summary { font-size:.78rem; color:var(--gris); cursor:pointer; margin-top:.5rem; }
.donnees table { margin-top:.4rem; font-size:.8rem; }
.barres li { display:grid; grid-template-columns:minmax(90px, 40%) 1fr 3.4rem; gap:.6rem; align-items:center; padding:.3rem 0; font-size:.84rem; }
.barre-nom { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.barre-nom a { color:var(--texte); }

#infobulle { position:fixed; z-index:50; max-width:320px; padding:.4rem .6rem; border-radius:4px; background:var(--encre); color:#fff;
  font-size:.78rem; pointer-events:none; box-shadow:var(--ombre); }

@media (max-width: 1100px) {
  .tuiles { grid-template-columns:repeat(3, 1fr); }
  .grille-accueil, .grille-tendances { grid-template-columns:1fr; }
}

/* ================= Suivi des réponses (tableau en colonnes, 01/10) ================= */
.suivi-entete { display:flex; justify-content:space-between; align-items:flex-end; gap:1rem; margin-bottom:1rem; }
.suivi-entete h1 { margin:0 0 .2rem; }
.bascule.claire { background:#ebe8df; }
.bascule.claire a { color:var(--texte); }
.tableau-reponses { display:grid; grid-auto-flow:column; grid-auto-columns:minmax(230px, 1fr); gap:.8rem; overflow-x:auto;
  padding-bottom:.5rem; align-items:start; }
.colonne { background:#efede6; border-radius:8px; padding:.6rem; min-height:300px; transition:background .15s, box-shadow .15s; }
.colonne.survol { background:#e3ece6; box-shadow:inset 0 0 0 2px #0b764d; }
.colonne-entete { display:flex; align-items:baseline; gap:.5rem; padding:.2rem .3rem .6rem; border-bottom:3px solid var(--bord); margin-bottom:.6rem; }
.colonne-entete h2 { font-size:.95rem; margin:0; }
.colonne-entete .compteur { font-family:var(--mono); font-size:.8rem; color:var(--gris); background:var(--carte); border-radius:999px; padding:0 .45rem; }
.colonne-montant { margin-left:auto; font-size:.72rem; color:var(--gris); font-family:var(--mono); }
.s-bord-a-etudier { border-bottom-color:#c59711; } .s-bord-retenu { border-bottom-color:#78b296; }
.s-bord-a-repondre { border-bottom-color:#b26a00; } .s-bord-repondu { border-bottom-color:#3a80b7; }
.s-bord-gagne { border-bottom-color:#0b764d; } .s-bord-perdu { border-bottom-color:var(--rouge); }
.colonne-cartes { display:flex; flex-direction:column; gap:.5rem; min-height:60px; }
.colonne-vide { color:var(--gris); font-size:.8rem; text-align:center; padding:1rem 0; margin:0; border:1px dashed var(--bord); border-radius:6px; }
.carte-reponse { background:var(--carte); border:1px solid var(--bord); border-radius:6px; padding:.6rem .7rem; box-shadow:var(--ombre);
  cursor:grab; transition:transform .12s, box-shadow .12s; }
.carte-reponse:hover { transform:translateY(-1px); box-shadow:0 4px 14px rgba(7,27,23,.10); }
.carte-reponse.en-deplacement { opacity:.45; cursor:grabbing; }
.carte-haut { display:flex; align-items:center; gap:.35rem; flex-wrap:wrap; margin-bottom:.35rem; }
.carte-haut .pastille-personne { margin-left:auto; }
.pastille-personne.petite { height:1.3rem; min-width:1.6rem; font-size:.7rem; padding:0 .4rem; }
.score-mini { font-family:var(--mono); font-size:.72rem; padding:.05rem .35rem; border-radius:4px; background:var(--fond); border:1px solid var(--bord); }
.score-mini.fort { color:#0b764d; border-color:#0b764d; background:#e8f3ec; }
.rebours { font-family:var(--mono); font-size:.72rem; font-weight:500; padding:.05rem .4rem; border-radius:4px; color:#fff; background:#0b764d; }
.rebours.orange { background:#b26a00; } .rebours.rouge { background:var(--rouge); }
.date-discrete { font-family:var(--mono); font-size:.72rem; color:var(--gris); }
.carte-titre { display:block; font-weight:600; font-size:.88rem; line-height:1.3; color:var(--texte); text-decoration:none; }
.carte-titre:hover { color:var(--vert); text-decoration:underline; }
.carte-reponse .acheteur { font-size:.76rem; margin:.25rem 0 0; }
.carte-reponse .progression { margin:.45rem 0 0; }
.carte-reponse form.deplacer { display:none; gap:.25rem; margin-top:.45rem; }
.carte-reponse:hover form.deplacer, .carte-reponse:focus-within form.deplacer { display:flex; }
.carte-reponse form.deplacer select { font-size:.72rem; padding:.1rem .2rem; flex:1; }
.zone-ecarter { display:none; position:fixed; left:50%; bottom:1.2rem; transform:translateX(-50%); padding:.9rem 2.2rem; border-radius:999px;
  background:var(--carte); border:2px dashed var(--rouge); color:var(--rouge); box-shadow:var(--ombre); z-index:30; }
.glisser-en-cours .zone-ecarter { display:block; }
.zone-ecarter.survol { background:#fbeeec; }
dialog { border:1px solid var(--bord); border-radius:8px; padding:1.2rem 1.4rem; box-shadow:0 10px 40px rgba(7,27,23,.25); }
dialog::backdrop { background:rgba(7,27,23,.35); }

/* Calendrier cliquable (01/10) */
.calendrier td { padding:0; }
.calendrier button.jour { width:100%; padding:.35rem 0; background:none; color:inherit; font:inherit; border-radius:4px; cursor:pointer; }
.calendrier button.jour:hover { background:var(--fond); }
.calendrier td.echeance-forte button.jour:hover { background:#93382f; }
.calendrier button.jour[aria-pressed="true"] { box-shadow:inset 0 0 0 2px var(--encre); font-weight:700; }
.detail-calendrier { margin-top:.7rem; border-top:1px solid var(--bord); padding-top:.6rem; }
.indice-calendrier { font-size:.78rem; color:var(--gris); margin:0; }
.detail-jour h3 { margin:0 0 .4rem; font-size:.88rem; color:var(--texte); }
.detail-jour ul { list-style:none; margin:0; padding:0; }
.detail-jour li { padding:.4rem 0; border-top:1px dashed var(--bord); font-size:.84rem; }
.detail-jour li:first-child { border-top:0; }
.detail-jour li > a { font-weight:600; color:var(--texte); text-decoration:none; display:block; }
.detail-jour li > a:hover { color:var(--vert); text-decoration:underline; }
.detail-meta { display:flex; flex-wrap:wrap; gap:.35rem; align-items:center; color:var(--gris); font-size:.76rem; margin-top:.15rem; }
.detail-meta .statut { font-size:.7rem; }

/* ================= Aperçu latéral dans la liste (01/10) ================= */
.panneau-apercu { position:fixed; top:54px; right:0; bottom:0; width:min(560px, 46vw); background:var(--carte); border-left:1px solid var(--bord);
  box-shadow:-12px 0 32px rgba(7,27,23,.12); z-index:25; display:flex; flex-direction:column; animation:glisser-gauche .18s ease-out; }
@keyframes glisser-gauche { from { transform:translateX(24px); opacity:.4; } }
.apercu-ouvert main { margin-right:min(560px, 46vw); max-width:none; }
.panneau-barre { display:flex; align-items:center; gap:.4rem; padding:.5rem .8rem; border-bottom:1px solid var(--bord); background:var(--fond); }
.panneau-barre .fermer { margin-left:auto; }
.panneau-contenu { overflow-y:auto; padding:1rem 1.2rem 2rem; flex:1; }
.chargement { color:var(--gris); }
tr.selectionnee td { background:#eaf3ed; }
tr.selectionnee td:first-child { box-shadow:inset 3px 0 0 #0b764d; }
.apercu-haut { display:flex; gap:.8rem; align-items:flex-start; }
.apercu-haut h2 { font-size:1.12rem; margin:0 0 .2rem; line-height:1.3; }
.apercu-haut .score { flex:none; }
.apercu-badges { display:flex; flex-wrap:wrap; gap:.35rem; align-items:center; margin:.7rem 0; }
.apercu-actions { display:flex; flex-wrap:wrap; gap:.4rem; align-items:center; padding:.7rem; background:var(--fond); border-radius:6px; }
.apercu-actions form { margin:0; display:inline-flex; gap:.25rem; }
.apercu-actions select { font-size:.8rem; }
.apercu-liens { display:flex; flex-wrap:wrap; gap:.8rem; align-items:center; margin:.8rem 0; font-size:.85rem; }
.apercu-resume { background:#f3f6f1; border-left:3px solid #0b764d; padding:.6rem .8rem; border-radius:0 6px 6px 0; margin:.6rem 0; font-size:.92rem; }
.apercu-infos { display:grid; grid-template-columns:auto 1fr; gap:.25rem 1rem; font-size:.86rem; margin:.8rem 0; }
.apercu-infos dt { color:var(--gris); }
.apercu-infos dd { margin:0; }
.apercu-bloc { border-top:1px solid var(--bord); padding-top:.6rem; margin-top:.8rem; }
.apercu-bloc h3 { font-size:.9rem; margin:0 0 .4rem; color:var(--texte); }
.verdict { font-weight:600; font-size:.88rem; margin:.2rem 0 .5rem; padding:.4rem .6rem; border-radius:4px; }
.verdict.seule { background:#e8f3ec; color:#0b5c3a; }
.verdict.groupement { background:#fff4e0; color:#8a5200; }
.competences, .lots-apercu { list-style:none; margin:0; padding:0; font-size:.84rem; }
.competences li, .lots-apercu li { padding:.2rem 0; }
@media (max-width: 1100px) { .apercu-ouvert main { margin-right:0; } .panneau-apercu { width:min(560px, 92vw); } }
.panneau-apercu[hidden], .zone-ecarter[hidden], .detail-jour[hidden] { display:none !important; }
/* Panneau ouvert : la liste rétrécit — on masque Nature, Montant et les actions de ligne (présentes dans le panneau). */
.apercu-ouvert table.liste th:nth-child(2), .apercu-ouvert table.liste td:nth-child(2), .apercu-ouvert table.liste th:nth-child(3), .apercu-ouvert table.liste td:nth-child(3), .apercu-ouvert table.liste th:nth-child(9), .apercu-ouvert table.liste td:nth-child(9) { display:none; }

/* ================= Recherche globale dans l'en-tête (01/10) ================= */
.recherche-entete { position:relative; flex:0 1 380px; min-width:200px; }
.recherche-entete input { width:100%; padding:.45rem 2rem .45rem .8rem; border-radius:6px; border:1px solid rgba(255,255,255,.14);
  background:rgba(255,255,255,.08); color:#fff; font-size:.88rem; }
.recherche-entete input::placeholder { color:#9fb2a9; }
.recherche-entete input:focus { outline:none; background:#fff; color:var(--texte); border-color:var(--signal); box-shadow:0 0 0 3px rgba(219,181,94,.3); }
.recherche-entete input:focus::placeholder { color:var(--gris); }
.recherche-entete kbd { position:absolute; right:.5rem; top:50%; transform:translateY(-50%); font-family:var(--mono); font-size:.7rem;
  color:#9fb2a9; border:1px solid rgba(255,255,255,.2); border-radius:3px; padding:0 .3rem; pointer-events:none; }
.recherche-entete input:focus + kbd { display:none; }
.recherche-resultats { position:absolute; top:calc(100% + 6px); left:0; width:min(560px, 92vw); max-height:70vh; overflow-y:auto;
  background:var(--carte); color:var(--texte); border:1px solid var(--bord); border-radius:8px; box-shadow:0 12px 36px rgba(7,27,23,.22); padding:.4rem; z-index:40; }
.recherche-resultats[hidden] { display:none !important; }
.recherche-groupe + .recherche-groupe { border-top:1px solid var(--bord); margin-top:.3rem; padding-top:.3rem; }
.recherche-titre-groupe { margin:.3rem .5rem .2rem; font-size:.68rem; text-transform:uppercase; letter-spacing:.08em; color:var(--gris); font-family:var(--mono); }
a.recherche-resultat { display:grid; grid-template-columns:1fr auto; gap:0 .6rem; padding:.4rem .6rem; border-radius:5px; color:var(--texte) !important; text-decoration:none; }
a.recherche-resultat:hover, a.recherche-resultat.choisi { background:var(--vert-clair); }
.recherche-principal { font-size:.88rem; font-weight:500; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.recherche-detail { grid-column:1; font-size:.75rem; color:var(--gris); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.recherche-etiquette { grid-column:2; grid-row:1 / span 2; align-self:center; font-size:.7rem; font-family:var(--mono); color:var(--gris); }
a.recherche-resultat.action .recherche-principal::before { content:"→ "; color:#0b764d; }
a.recherche-resultat.texte .recherche-principal { color:var(--gris); font-weight:400; font-style:italic; }
a.recherche-resultat.tout { border-top:1px solid var(--bord); margin-top:.3rem; border-radius:0 0 5px 5px; font-size:.82rem; color:#0b764d !important; }
.recherche-vide { padding:.6rem; color:var(--gris); font-size:.85rem; margin:0; }

/* ================= Bandeau de décision de la fiche (01/10) ================= */
.bandeau-decision { position:sticky; top:54px; z-index:15; display:grid; grid-template-columns:auto 1fr auto; gap:1.2rem; align-items:center;
  max-width:1260px; margin:0 0 1.2rem; padding:.8rem 1.1rem; background:var(--carte); border:1px solid var(--bord);
  border-left:6px solid var(--gris); border-radius:8px; box-shadow:0 6px 20px rgba(7,27,23,.10); }
.bandeau-decision.verdict-seule { border-left-color:#0b764d; }
.bandeau-decision.verdict-groupement { border-left-color:#b26a00; }
.bandeau-decision.verdict-hors_perimetre { border-left-color:var(--rouge); }
.bd-score { display:flex; flex-direction:column; align-items:center; min-width:62px; }
.bd-score-valeur { display:flex; align-items:center; justify-content:center; width:56px; height:56px; border-radius:8px; font-size:1.5rem;
  font-weight:600; color:#fff; background:#9aa9a1; }
.bd-score-valeur.fort { background:#0b764d; } .bd-score-valeur.moyen { background:#b26a00; }
.bd-score-unite { font-size:.65rem; color:var(--gris); text-transform:uppercase; letter-spacing:.06em; margin-top:.2rem; font-family:var(--mono); }
.bd-libelle { margin:0 0 .25rem; font-family:var(--titres); font-weight:600; font-size:1.05rem; }
.verdict-seule .bd-libelle { color:#0b5c3a; } .verdict-groupement .bd-libelle { color:#8a5200; }
.verdict-hors_perimetre .bd-libelle { color:var(--rouge); } .verdict-inconnu .bd-libelle { color:var(--gris); }
.bd-raisons { margin:0; padding-left:1.1rem; font-size:.84rem; color:var(--texte); }
.bd-raisons li { margin:.1rem 0; }
.bd-lots { margin:.35rem 0 0; font-size:.82rem; }
.bd-etat { display:flex; flex-direction:column; gap:.5rem; align-items:flex-end; }
.bd-ligne { display:flex; gap:.4rem; align-items:center; margin:0; }
.bd-actions { display:flex; flex-wrap:wrap; gap:.4rem; justify-content:flex-end; }
.bd-actions form { display:inline-flex; gap:.25rem; margin:0; align-items:center; }
.bd-actions select { font-size:.8rem; padding:.3rem .3rem; }
@media (max-width:1100px) { .bandeau-decision { grid-template-columns:auto 1fr; } .bd-etat { grid-column:1 / -1; align-items:flex-start; } }
.bandeau-sentinelle { height:1px; }
.bandeau-decision { transition:padding .15s; }
.bandeau-decision.replie { padding:.4rem 1rem; }
.bandeau-decision.replie .bd-raisons, .bandeau-decision.replie .bd-lots, .bandeau-decision.replie .bd-score-unite { display:none; }
.bandeau-decision.replie .bd-score-valeur { width:40px; height:40px; font-size:1.1rem; }
.bandeau-decision.replie .bd-libelle { margin:0; }
.bandeau-decision.replie .bd-etat { flex-direction:row; align-items:center; }

/* Score dans la liste des annonces (à la place du lieu, 01/10) — mêmes couleurs que l'email et le bandeau. */
.cellule-score { white-space:nowrap; }
.score-liste { display:inline-flex; align-items:baseline; gap:1px; padding:.2rem .5rem; border-radius:6px; font-weight:600; font-size:.95rem;
  color:#fff; background:#9aa9a1; font-variant-numeric:tabular-nums; }
.score-liste small { font-size:.65rem; font-weight:400; opacity:.85; }
.score-liste.fort { background:#0b764d; } .score-liste.moyen { background:#b26a00; }
.score-liste.attente { background:var(--fond); color:var(--gris); border:1px dashed var(--bord); }

/* ================= Fiche en onglets (01/10) ================= */
.fiche-onglets { max-width:1260px; }
.fiche-entete h1 { margin-top:0; }
.onglets { display:flex; gap:.2rem; border-bottom:2px solid var(--bord); margin:1rem 0 1.2rem; overflow-x:auto; }
.onglets a { padding:.6rem 1rem; color:var(--gris); text-decoration:none; font-weight:500; border-bottom:3px solid transparent;
  margin-bottom:-2px; white-space:nowrap; display:inline-flex; gap:.4rem; align-items:center; border-radius:4px 4px 0 0; }
.onglets a:hover { color:var(--texte); background:var(--fond); }
.onglets-actifs .onglets a[aria-selected="true"] { color:var(--texte); border-bottom-color:var(--signal); font-weight:600; }
.pastille-onglet { font-family:var(--mono); font-size:.7rem; padding:0 .4rem; border-radius:999px; background:var(--fond); border:1px solid var(--bord); color:var(--gris); }
.pastille-onglet.ok { background:#e8f3ec; border-color:#0b764d; color:#0b5c3a; }
.pastille-onglet.alerte { background:#fff4e0; border-color:#b26a00; color:#8a5200; }
.pastille-onglet.vide { border-style:dashed; }
.onglet[hidden] { display:none !important; }
/* Sans JavaScript, les sections se suivent : un séparateur entre elles. */
.fiche-onglets:not(.onglets-actifs) .onglet + .onglet { border-top:1px solid var(--bord); margin-top:1.5rem; padding-top:1rem; }
.onglet > h2:first-child { margin-top:0; }
/* Arrivée sur un onglet par l'adresse (#lots, #pieces…) : le défilement laisse visibles l'en-tête, le
   bandeau replié et la barre d'onglets au-dessus de la section. */
.onglet { scroll-margin-top:190px; }
#pieces { scroll-margin-top:200px; }
