/* Présentation reprise de la 1.7.0 (D30) : onglets de thèmes, cartes, planning, grande fiche.
   Couleurs du thème clair alignées sur la charte ADG ENERGY (Config-IA 20-01 V03, source 26-ADG-03/SP02) le 2026-10-31 (audit SP01 V01, actions A03 et A07) :
   bleu action #186186, bleu profond #124B68, filet #289ED9, rouge danger #B71915, attention #8A5A00, texte #1E2A32, secondaire #52606B. Contrastes ≥ 4,5:1 sur fond clair. */
:root {
  --fond: #F4F7F9; --carte: #fff; --texte: #1E2A32; --discret: #52606B; --bord: #C9D3DA; --bleu: #186186; --bleu-profond: #124B68; --filet: #289ED9; --rouge: #B71915; --orange: #8A5A00;
  --champ: #fff; --ombre: 0 1px 3px rgba(0,0,0,.08); --voile: rgba(15,20,30,.55);
  --s0: #6B7780; --s1: #8A5A00; --s2: #186186; --s3: #197737; --s4: #6B7780; --s5: #B71915;
  /* thèmes : 0 Application, 1 Appel d'offres, 2 Travaux, 3 Futur projet, 4 autre (toutes ≥ 5:1 sur blanc) */
  --t0: #186186; --t1: #7b4fc4; --t2: #8A5A00; --t3: #0E7575; --t4: #6B7780;
}
:root { color-scheme: light dark; }
:root[data-theme="clair"] { color-scheme: light; }
/* Thème sombre : choisi (bouton 🌙, data-theme="sombre") ou automatique (réglage de l'appareil, sauf choix ☀ Clair). */
:root[data-theme="sombre"] { color-scheme: dark;
  --fond: #13171d; --carte: #1c222b; --texte: #e8ecf1; --discret: #98a3b3; --bord: #2d3643; --bleu: #5b9bf0; --rouge: #ef7a6c; --orange: #f0a63a;
  --champ: #141a22; --ombre: none; --voile: rgba(0,0,0,.65);
  --s0: #98a3b3; --s1: #f0a63a; --s2: #5b9bf0; --s3: #4cc486; --s4: #7d8591; --s5: #ef7a6c;
  --t0: #5b9bf0; --t1: #a98af0; --t2: #f0a63a; --t3: #46c3c3; --t4: #98a3b3;
}
@media (prefers-color-scheme: dark) { :root:not([data-theme="clair"]) {
  --fond: #13171d; --carte: #1c222b; --texte: #e8ecf1; --discret: #98a3b3; --bord: #2d3643; --bleu: #5b9bf0; --rouge: #ef7a6c; --orange: #f0a63a;
  --champ: #141a22; --ombre: none; --voile: rgba(0,0,0,.65);
  --s0: #98a3b3; --s1: #f0a63a; --s2: #5b9bf0; --s3: #4cc486; --s4: #7d8591; --s5: #ef7a6c;
  --t0: #5b9bf0; --t1: #a98af0; --t2: #f0a63a; --t3: #46c3c3; --t4: #98a3b3;
} }
* { box-sizing: border-box; }
[hidden] { display: none !important; }
body { margin: 0; font: 15px/1.45 Carlito, Calibri, "Segoe UI", system-ui, sans-serif; background: var(--fond); color: var(--texte); }
header { position: sticky; top: 0; z-index: 5; display: flex; gap: 12px; align-items: center; flex-wrap: wrap; padding: 10px 20px;
  background: var(--carte); border-bottom: 4px solid var(--filet); }
header strong { font-size: 18px; white-space: nowrap; display: inline-flex; align-items: center; gap: 8px; }
header strong svg { height: 30px; width: auto; }
:root[data-theme="sombre"] header { border-bottom-color: var(--bord); } :root[data-theme="sombre"] header strong svg { background: #fff; border-radius: 4px; padding: 2px 4px; }
@media (prefers-color-scheme: dark) { :root:not([data-theme="clair"]) header { border-bottom-color: var(--bord); } :root:not([data-theme="clair"]) header strong svg { background: #fff; border-radius: 4px; padding: 2px 4px; } }
.espace { flex: 1; }
.discret { color: var(--discret); font-size: 13px; }
button { font: inherit; padding: 7px 14px; border-radius: 8px; border: 1px solid var(--bleu); background: var(--bleu); color: #fff; font-weight: 600; cursor: pointer; }
button.secondaire { background: var(--carte); color: var(--texte); border-color: var(--bord); font-weight: 400; }
button.secondaire:hover { border-color: var(--bleu); }
button:disabled { opacity: .5; cursor: wait; }
button.petit { padding: 3px 9px; font-size: 13px; }
button.danger { background: var(--rouge); border-color: var(--rouge); }
input, select, textarea { font: inherit; width: 100%; padding: 7px 10px; border: 1px solid var(--bord); border-radius: 8px; background: var(--champ); color: var(--texte); }
input:focus, select:focus, textarea:focus { outline: 2px solid var(--bleu); outline-offset: -1px; }
textarea { resize: vertical; }
label { display: block; margin: 12px 0 0; font-size: 13px; font-weight: 600; color: var(--texte); }
label > input, label > select, label > textarea { margin-top: 4px; font-weight: 400; font-size: 15px; }
.ligne { display: flex; gap: 10px; align-items: flex-end; flex-wrap: wrap; }
.ligne > label { flex: 1; min-width: 150px; }
.carte { background: var(--carte); border: 1px solid var(--bord); border-radius: 12px; padding: 16px 20px; box-shadow: var(--ombre); }
.etroite { max-width: 440px; margin: 40px auto; }
h1 { font-size: 20px; margin: 0 0 10px; } h2 { font-size: 15px; margin: 18px 0 6px; }
#message { margin: 12px 20px 0; padding: 8px 12px; border-radius: 8px; background: #e3f0ff; color: #0d3c6e; font-size: 14px; }
#message.erreur { background: #fde7e7; color: #8a1c1c; }
#maj { margin: 12px 20px 0; padding: 8px 12px; border-radius: 8px; background: #fff3cd; color: #664d03; font-size: 14px; }
:root[data-theme="sombre"] #message { background: #13304f; color: #cfe3ff; } :root[data-theme="sombre"] #message.erreur { background: #4a1c1c; color: #ffd6d6; } :root[data-theme="sombre"] #maj { background: #3d3210; color: #f3d98b; }
@media (prefers-color-scheme: dark) { :root:not([data-theme="clair"]) #message { background: #13304f; color: #cfe3ff; } :root:not([data-theme="clair"]) #message.erreur { background: #4a1c1c; color: #ffd6d6; } :root:not([data-theme="clair"]) #maj { background: #3d3210; color: #f3d98b; } }
.qr svg { display: block; width: 220px; height: 220px; margin: 8px auto; border-radius: 6px; }
.cle { font: 18px Consolas, monospace; letter-spacing: 2px; user-select: all; background: var(--fond); padding: 8px; border-radius: 6px; overflow-wrap: anywhere; }
.encadre { border: 1px solid var(--bord); border-radius: 10px; padding: 10px 14px; margin: 12px 0; background: var(--fond); }
label.coche { display: flex; gap: 6px; align-items: center; font-weight: 400; font-size: 14px; }
label.coche > input { width: auto; margin: 0; }

/* ---------- Barre, onglets de thèmes, filtres ---------- */
.barre { display: flex; gap: 12px; align-items: center; flex-wrap: wrap; padding: 10px 20px; background: var(--carte); }
.barre #f-texte { flex: 1; min-width: 180px; max-width: 420px; width: auto; }
.nb { color: var(--discret); font-size: 13px; white-space: nowrap; }
.seg { display: inline-flex; border: 1px solid var(--bord); border-radius: 8px; overflow: hidden; }
.seg button { border: 0; border-radius: 0; padding: 6px 12px; background: var(--carte); color: var(--texte); font-weight: 400; }
.seg button.actif { background: var(--bleu); color: #fff; font-weight: 600; }
#onglets { display: flex; gap: 4px; padding: 4px 20px 0; overflow-x: auto; scrollbar-width: none; border-bottom: 1px solid var(--bord); background: var(--carte); }
#onglets::-webkit-scrollbar { display: none; }
.onglet { border: 0; border-bottom: 3px solid transparent; border-radius: 8px 8px 0 0; background: none; padding: 9px 14px; font-weight: 600;
  color: var(--discret); white-space: nowrap; --ta: var(--bleu); }
.onglet:hover { color: var(--texte); border-bottom-color: var(--ta); }
.onglet.on { color: var(--texte); border-bottom-color: var(--ta); background: var(--fond); }
.onglet .cnt { font-size: 11.5px; background: var(--bord); border-radius: 999px; padding: 0 7px; margin-left: 4px; color: var(--texte); font-weight: 600; }
.filtres { display: flex; gap: 8px; padding: 12px 20px 0; flex-wrap: wrap; align-items: center; }
.filtres select { width: auto; }
/* Mobile (audit SP01 V01, action A06) : les filtres sont repliés derrière le bouton « Filtres » ; la première idée reste visible sans défiler. */
#btn-filtres { display: none; }
@media (max-width: 700px) {
  #btn-filtres { display: inline-block; }
  #filtres:not(.ouvert) { display: none; }
  .barre .seg button { padding: 6px 9px; }
}
.chips { display: contents; }
.chip { border: 1px solid var(--bord); background: var(--carte); color: var(--texte); border-radius: 999px; padding: 4px 12px; font-size: 13px; font-weight: 400; }
.chip.on { background: var(--bleu); color: #fff; border-color: var(--bleu); }

/* couleurs : thèmes (--ta) et statuts (st0 gris, st1 orange, st2 bleu, st3 vert, st4 gris barré, st5 rouge) */
.th0 { --ta: var(--t0); } .th1 { --ta: var(--t1); } .th2 { --ta: var(--t2); } .th3 { --ta: var(--t3); } .th4 { --ta: var(--t4); }
.st0 { color: var(--s0); } .st1 { color: var(--s1); } .st2 { color: var(--s2); } .st3 { color: var(--s3); } .st4 { color: var(--s4); text-decoration: line-through; } .st5 { color: var(--s5); }

/* ---------- Cartes des idées ---------- */
#grille { display: grid; grid-template-columns: repeat(auto-fill, minmax(290px, 1fr)); gap: 14px; padding: 16px 20px 40px; }
.carte-idee { background: var(--carte); border: 1px solid var(--bord); border-left: 4px solid var(--ta); border-radius: 12px; box-shadow: var(--ombre);
  cursor: pointer; overflow: hidden; display: flex; flex-direction: column; gap: 6px; padding: 12px 14px; }
.carte-idee:hover, .carte-idee:focus-visible { border-color: var(--bleu); border-left-color: var(--ta); outline: none; }
.carte-idee.choisie { box-shadow: 0 0 0 2px var(--bleu); }
.carte-idee h3 { margin: 0; font-size: 16px; line-height: 1.25; overflow-wrap: anywhere; }
.carte-idee .desc { margin: 0; color: var(--discret); font-size: 13.5px; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical;
  overflow: hidden; white-space: pre-line; overflow-wrap: anywhere; }
.badges { display: flex; gap: 6px; flex-wrap: wrap; }
.b { font-size: 12px; border-radius: 999px; padding: 1px 9px; border: 1px solid var(--bord); color: var(--discret); }
.b.st { font-weight: 600; border-color: currentColor; }
.b.st0 { color: var(--s0); } .b.st1 { color: var(--s1); } .b.st2 { color: var(--s2); } .b.st3 { color: var(--s3); } .b.st4 { color: var(--s4); } .b.st5 { color: var(--s5); }
.b.th { color: var(--ta); border-color: var(--ta); font-weight: 600; }
.b.alerte { color: var(--rouge); border-color: var(--rouge); font-weight: 600; }
.b.bientot { color: var(--orange); border-color: var(--orange); font-weight: 600; }
.b.attente { color: var(--orange); border-color: var(--orange); }
.tags { display: flex; gap: 5px; flex-wrap: wrap; }
.tag { font-size: 12px; color: var(--bleu); }
.meta { font-size: 12px; color: var(--discret); }
.pied { margin-top: auto; padding-top: 6px; display: flex; justify-content: space-between; font-size: 12px; color: var(--discret); gap: 8px; }
.vide { grid-column: 1 / -1; text-align: center; color: var(--discret); padding: 50px 0; white-space: pre-line; }

/* ---------- Planning ---------- */
#plan { padding: 14px 20px 40px; }
.plan-ctl { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; margin-bottom: 10px; }
.plan-ctl select { width: auto; }
.leg { font-size: 12.5px; color: var(--discret); }
.plan-tab { background: var(--carte); border: 1px solid var(--bord); border-radius: 12px; overflow: hidden; box-shadow: var(--ombre); }
.pl { display: grid; grid-template-columns: 230px 1fr; border-bottom: 1px solid var(--bord); min-height: 40px; cursor: pointer; }
.pl:last-child { border-bottom: 0; }
.pl:hover, .pl:focus-visible { background: rgba(31,95,191,.06); outline: none; }
.pl.entete { cursor: default; background: var(--fond); }
.pl .nom { padding: 5px 10px; overflow: hidden; border-right: 1px solid var(--bord); }
.pl .nom strong { display: block; font-size: 13.5px; white-space: nowrap; text-overflow: ellipsis; overflow: hidden; }
.pl .nom .sm { font-size: 11.5px; color: var(--discret); white-space: nowrap; text-overflow: ellipsis; overflow: hidden; display: block; }
.pl .nom .sm.al { color: var(--rouge); font-weight: 600; }
.pl-t { position: relative; min-height: 40px; }
.entete .pl-t { min-height: 30px; }
.gl { position: absolute; top: 0; bottom: 0; width: 1px; background: var(--bord); }
.auj { position: absolute; top: 0; bottom: 0; width: 2px; background: var(--rouge); opacity: .75; z-index: 2; }
.mois { position: absolute; top: 0; font-size: 12px; font-weight: 600; padding: 6px; border-left: 1px solid var(--bord); white-space: nowrap; overflow: hidden; text-transform: capitalize; }
.barre-pl { position: absolute; top: 11px; height: 18px; border-radius: 5px; background: currentColor; min-width: 6px; }
.barre-pl.cg { border-top-left-radius: 0; border-bottom-left-radius: 0; }
.barre-pl.cd { border-top-right-radius: 0; border-bottom-right-radius: 0; }
.barre-pl.retard, .jalon.retard { outline: 2px solid var(--rouge); outline-offset: 1px; }
.jalon { position: absolute; top: 7px; transform: translateX(-50%); font-size: 18px; line-height: 26px; }
.hors { position: absolute; top: 12px; font-size: 12px; color: var(--discret); }
.hors.g { left: 8px; } .hors.d { right: 8px; }
.sans { margin-top: 16px; }
.sans h4 { margin: 0 0 8px; font-size: 14px; }
.puce { display: inline-block; border: 1px dashed var(--bord); background: var(--carte); color: var(--texte); border-radius: 999px; padding: 4px 12px;
  font-size: 13px; font-weight: 400; margin: 0 6px 6px 0; }
.puce:hover { border-color: var(--bleu); }

/* ---------- Grande fiche (fenêtre) ---------- */
#voile { position: fixed; inset: 0; background: var(--voile); z-index: 20; overflow: auto; padding: 24px 12px; }
#voile[hidden] { display: none; }
.fiche { background: var(--carte); max-width: 860px; margin: 0 auto; border-radius: 14px; padding: 20px 22px 22px; box-shadow: 0 10px 40px rgba(0,0,0,.3);
  border-top: 5px solid var(--ta); }
.fiche-tete { display: flex; align-items: center; gap: 10px; }
.fiche .fiche-tete h2 { flex: 1; margin: 0; font-size: 18px; }
.fiche h2 { font-size: 13px; margin: 18px 0 4px; }
.fiche .l { display: block; font-size: 13px; font-weight: 600; margin: 14px 0 4px; }
.fiche label.l { margin-bottom: 0; }
.pills { display: flex; gap: 8px; flex-wrap: wrap; margin: 4px 0 2px; }
.pill { border: 2px solid var(--bord); border-radius: 999px; padding: 6px 14px; background: var(--carte); color: var(--texte); font-weight: 600; }
.pill.on { border-color: var(--ta); color: var(--ta); background: var(--fond); }
.rang { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; }
.bloc-theme { margin-top: 14px; padding: 2px 14px 14px; border: 1px solid var(--bord); border-left: 4px solid var(--ta); border-radius: 10px; background: var(--fond); }
.bloc-theme[hidden] { display: none; }
.bloc-theme h3 { margin: 12px 0 0; font-size: 13px; color: var(--ta); }
.champs { display: grid; grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); gap: 0 12px; }
.actions { display: flex; gap: 10px; margin-top: 20px; align-items: center; flex-wrap: wrap; }
#e-meta { margin-top: 10px; }
.liste-l { list-style: none; padding: 0; margin: 0; }
.liste-l li { display: flex; gap: 8px; align-items: center; padding: 6px 0; border-bottom: 1px solid var(--bord); }
.liste-l .t { flex: 1; min-width: 0; overflow-wrap: anywhere; }
.liste-l .u { display: block; color: var(--discret); font-size: 12.5px; }
.liste-l .ty { font-size: 12px; color: var(--discret); white-space: nowrap; }
.ajout { display: grid; grid-template-columns: 1fr 1.6fr auto auto; gap: 8px; margin-top: 8px; align-items: center; }
.ajout > :nth-child(3):last-child { grid-column: span 2; justify-self: start; }
@media (max-width: 700px) { .ajout { grid-template-columns: 1fr; } }
.conflit { border: 1px solid var(--orange); border-radius: 8px; padding: 8px 10px; margin: 8px 0; }
.conflit pre, #commentaires p { white-space: pre-wrap; overflow-wrap: anywhere; margin: 4px 0; font: inherit; }
#commentaires { list-style: none; padding: 0; } #commentaires li { border-bottom: 1px solid var(--bord); padding: 8px 0; }
#pieces, #versions { list-style: none; padding: 0; margin: 4px 0 8px; }
#pieces li, #versions li { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; padding: 4px 0; border-bottom: 1px solid var(--bord); }
#pieces li .nom { flex: 1; overflow-wrap: anywhere; } #versions li .quoi { flex: 1; }
details#historique { margin: 12px 0; }
details#suppression { margin: 12px 0; border: 1px solid var(--rouge); border-radius: 8px; padding: 6px 10px; }
details#suppression summary { color: var(--rouge); font-weight: 600; cursor: pointer; }
details#suppression select { max-width: 100%; }
#n-commentaire { margin: 8px 0; }

/* ---------- Administration ---------- */
#vue-admin { padding: 14px 20px; }
.onglets { display: flex; gap: 6px; margin-bottom: 10px; flex-wrap: wrap; }
.onglets button.actif { background: var(--bleu); color: #fff; border-color: var(--bleu); }
ul.admin { list-style: none; padding: 0; margin: 8px 0; }
ul.admin li { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; padding: 6px 0; border-bottom: 1px solid var(--bord); }
ul.admin li .qui { flex: 1 1 100%; overflow-wrap: anywhere; }   /* nom et état sur leur ligne, actions dessous */
ul.admin select, ul.admin input { width: auto; }

@media (max-width: 700px) { .rang { grid-template-columns: 1fr; } .pl { grid-template-columns: 120px 1fr; } header, .barre { padding: 8px 12px; } }

/* ---------- Carte mentale (D24) ---------- */
#carte { position: relative; overflow: hidden; border: 1px solid var(--bord); border-radius: 12px; background: var(--fond);
  margin: 14px 20px 20px; height: calc(100vh - 250px); min-height: 420px; }
#carte[hidden] { display: none; }
.cm-vue { position: absolute; inset: 0; overflow: hidden; cursor: grab; touch-action: none; outline: none;
  background-image: radial-gradient(var(--bord) 1px, transparent 1px); background-size: 26px 26px; }
.cm-vue:focus-visible { box-shadow: inset 0 0 0 3px var(--bleu); }
.cm-vue.pan, .cm-vue.glisse-en-cours { cursor: grabbing; }
.cm-scene { position: absolute; left: 0; top: 0; width: 0; height: 0; transform-origin: 0 0; }
.cm-liens { position: absolute; left: 0; top: 0; width: 1px; height: 1px; overflow: visible; pointer-events: none; }
.cm-liens path { fill: none; stroke-linecap: round; }
.cm-liens path.fl { fill: var(--discret); }
.cm-liens path.br.th0 { stroke: var(--t0); } .cm-liens path.br.th1 { stroke: var(--t1); } .cm-liens path.br.th2 { stroke: var(--t2); }
.cm-liens path.br.th3 { stroke: var(--t3); } .cm-liens path.br.th4 { stroke: var(--t4); }
.cm-liens path.tr { stroke: var(--discret); stroke-width: 2; stroke-dasharray: 7 6; pointer-events: stroke; cursor: help; }
.cm-n { position: absolute; left: 0; top: 0; width: max-content; max-width: 220px; transform-origin: 0 0; --ta: var(--t4); }
.cm-n.th0 { --ta: var(--t0); } .cm-n.th1 { --ta: var(--t1); } .cm-n.th2 { --ta: var(--t2); } .cm-n.th3 { --ta: var(--t3); }
.cm-b { position: relative; display: flex; flex-direction: column; align-items: center; gap: 2px; background: var(--carte); color: var(--texte);
  border: 2.5px solid var(--ta); border-radius: 16px; padding: 7px 13px; box-shadow: 0 4px 14px rgba(15,23,42,.12);
  font-size: 13.5px; font-weight: 600; line-height: 1.25; text-align: center; cursor: pointer; user-select: none; transition: transform .18s ease; }
.cm-b:hover { transform: scale(1.05); }
.cm-t { display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; overflow-wrap: anywhere; }
.cm-st, .cm-m { font-size: 11px; font-weight: 500; color: var(--discret); }
.cm-c { font-size: 11.5px; opacity: .85; }
.cm-n.racine { max-width: 280px; }
.cm-n.racine .cm-b { background: var(--texte); color: var(--fond); border-color: var(--texte); border-radius: 999px; font-size: 17px; padding: 13px 24px; }
.cm-n.theme .cm-b { background: var(--ta); color: #fff; border-color: var(--ta); border-radius: 999px; font-size: 14.5px; padding: 9px 17px; }
.cm-n.theme .cm-c { color: #fff; }
.cm-n.idee.p3 .cm-b, .cm-n.idee.p4 .cm-b { font-size: 12.5px; padding: 6px 11px; border-width: 2px; }
.cm-n.ctx .cm-b { border-style: dashed; opacity: .6; }
.cm-n.sel { z-index: 3; }
.cm-n.sel .cm-b { transform: scale(1.08); box-shadow: 0 0 0 4px var(--bleu), 0 12px 28px rgba(15,23,42,.24); }
.cm-n.cible .cm-b { outline: 3px dashed var(--bleu); outline-offset: 5px; }
.cm-n.glisse { z-index: 6; opacity: .85 !important; }
.cm-pl { position: absolute; top: -10px; right: -10px; min-width: 24px; height: 24px; padding: 0 6px; border-radius: 999px; border: 2px solid var(--carte);
  background: var(--ta); color: #fff; font-size: 11.5px; font-weight: 700; line-height: 1; }
.cm-n.racine .cm-pl { background: var(--carte); color: var(--texte); border-color: var(--texte); }
.cm-outils { position: absolute; top: 8px; left: 8px; display: flex; flex-wrap: wrap; gap: 6px; z-index: 8; max-width: calc(100% - 360px); }
.cm-outils button { padding: 4px 10px; }
.cm-outils button.actif { background: var(--bleu); color: #fff; border-color: var(--bleu); }
.cm-aide { position: absolute; left: 8px; bottom: 6px; z-index: 7; pointer-events: none; max-width: calc(100% - 360px); }
.cm-annonce { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); }
.cm-panneau { position: absolute; top: 8px; right: 8px; z-index: 9; width: min(320px, calc(100% - 16px)); max-height: calc(100% - 16px); overflow: auto;
  background: var(--carte); border: 1px solid var(--bord); border-top: 5px solid var(--bleu); border-radius: 10px; padding: 10px 14px; box-shadow: 0 18px 50px rgba(0,0,0,.22); }
.cm-panneau h3 { margin: 6px 26px 6px 0; font-size: 16px; overflow-wrap: anywhere; }
.cm-x { position: absolute; top: 6px; right: 6px; padding: 2px 8px; }
.cm-act { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; padding-top: 8px; border-top: 1px solid var(--bord); }
.cm-saisie { position: absolute; z-index: 10; width: 320px; background: var(--carte); border: 2px solid var(--bleu); border-radius: 10px; padding: 8px; box-shadow: 0 14px 34px rgba(0,0,0,.25); }
.cm-saisie .discret { display: block; margin-top: 5px; }
.cm-panneau[hidden], .cm-saisie[hidden] { display: none; }
@media (prefers-reduced-motion: reduce) { .cm-b { transition: none; } }
@media (max-width: 800px) { .cm-aide { display: none; } .cm-outils { max-width: calc(100% - 16px); } .cm-panneau { top: auto; bottom: 8px; max-height: 45%; } }

/* Lieu : point GPS sur une petite carte (D32) */
.lieu { display: grid; grid-template-columns: minmax(0, 520px) minmax(220px, 1fr); gap: 14px; align-items: start; margin: 4px 0 12px; }
#e-carte { width: 100%; height: auto; aspect-ratio: 520 / 300; border: 1px solid var(--bord); border-radius: 10px; cursor: grab; touch-action: none; background: #e8eef3; }
#e-carte:active { cursor: grabbing; }
#e-carte:focus-visible { outline: 2px solid var(--bleu); outline-offset: 2px; }
.lieu-cote { display: flex; flex-direction: column; gap: 8px; min-width: 0; }
.lieu-cote .ligne { gap: 6px; align-items: center; }
.g-point { font-weight: 600; overflow-wrap: anywhere; }
.petit-texte { font-size: 12px; margin: 0; }
#g-resultats li .t { overflow-wrap: anywhere; }
@media (max-width: 800px) { .lieu { grid-template-columns: 1fr; } }
.lieu .ajout { grid-template-columns: 1fr auto; margin-top: 0; }

/* Photos jointes : canevas dessinés par la page (D30) */
.photo-carte { display: block; width: calc(100% + 28px); max-width: none; margin: -12px -14px 2px; height: auto; aspect-ratio: 640 / 260; background: var(--fond); }
.photo-piece { width: 120px; height: 80px; border-radius: 6px; border: 1px solid var(--bord); cursor: zoom-in; flex: none; background: var(--fond); }

/* Doublons (comme la 1.7.0) */
.doublons { border: 1px solid var(--orange); background: color-mix(in srgb, var(--orange) 10%, var(--carte)); border-radius: 10px; padding: 8px 12px; margin: 6px 0 10px; display: flex; flex-direction: column; gap: 6px; }
.ligne-doublon { display: flex; gap: 6px; align-items: center; flex-wrap: wrap; }
.ligne-doublon .t { flex: 1; min-width: 200px; overflow-wrap: anywhere; }
.doublons-panneau { margin: 12px 20px; background: var(--carte); }
.doublons-panneau h2 { margin: 0; font-size: 18px; }
.doublons-panneau .fiche-tete { display: flex; justify-content: space-between; align-items: center; gap: 12px; }

/* Idées reçues (fichiers « idée 3.0 ») */
#ir-liste li { align-items: flex-start; }
#ir-liste input[type=checkbox] { width: auto; margin-top: 4px; flex: none; }
#ir-liste .t { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
#ir-liste .refus { color: var(--rouge); }
#recues .ligne > label { max-width: 360px; }
