:root{
  --bg:#f3f5f8;--surface:#fff;--surface2:#f8fafc;--border:#dde3ea;--border2:#c9d2dd;
  --text:#152030;--muted:#556275;--faint:#677386;
  --primary:#1e3a8a;--primary2:#2747a8;--primary-soft:#e8eefc;--focus:#3b82f6;
  --side:#0f1d3a;--side2:#18294d;--side-text:#c9d4ea;
  --prio:#166534;--prio-bg:#dcfce7;--prio-bd:#86efac;
  --exam:#92400e;--exam-bg:#fef3c7;--exam-bd:#fcd34d;
  --ecart:#475569;--ecart-bg:#eef2f6;--ecart-bd:#cbd5e1;
  --danger:#b91c1c;--danger-bg:#fee2e2;--warn:#9a4a07;--warn-bg:#fff7ed;--ok:#166534;
  --serie-1:#2a78d6;--serie-2:#eb6834;--serie-3:#1baf7a;--serie-n1:#a3abb7;--grille:#e8ecf1;
  --radius:8px;--shadow:0 1px 2px rgba(16,24,40,.06),0 1px 3px rgba(16,24,40,.08);
  --rayon-bouton:7px;--espace-blocs:16px;--espace-sections:16px;--taille-base:14px;
  --police-texte:Inter,system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;--police-titres:var(--police-texte);
  font-family:var(--police-texte);
}
h1,h2,h3,h4,.brand-name,.cms-titre{font-family:var(--police-titres)}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--text);font-size:var(--taille-base);line-height:1.45}
button,input,select,textarea{font:inherit;color:inherit}
a{color:var(--primary2)}
.ic{width:16px;height:16px;flex:none;vertical-align:-3px}
.muted{color:var(--muted)}
.hint{color:var(--muted);font-size:12.5px;margin:4px 0 0}
.nowrap{white-space:nowrap}
:focus-visible{outline:2px solid var(--focus);outline-offset:2px}

/* Boutons */
.btn{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--border2);background:var(--surface);padding:7px 12px;border-radius:var(--rayon-bouton);cursor:pointer;font-weight:500;white-space:nowrap}
.btn:hover{background:var(--surface2)}
.btn:disabled{opacity:.55;cursor:not-allowed}
.btn.primary{background:var(--primary2);border-color:var(--primary2);color:#fff}
.btn.primary:hover{background:var(--primary)}
.btn.danger{color:var(--danger);border-color:#f3b4b4}
.btn.danger:hover{background:var(--danger-bg)}
.btn.sm{padding:4px 9px;font-size:13px}
.btn.block{width:100%;justify-content:center}
.btn.ghost-light{background:transparent;border-color:#2c3f66;color:var(--side-text)}
.btn.ghost-light:hover{background:var(--side2)}
.link-btn{background:none;border:0;color:var(--primary2);cursor:pointer;padding:0;text-decoration:underline;font-size:13px}

/* Connexion */
.login-wrap{min-height:100vh;display:grid;place-items:center;padding:24px 16px;background:linear-gradient(160deg,#0f1d3a 0%,#1e3a8a 100%)}
.login-card{width:100%;max-width:420px;background:var(--surface);border-radius:12px;padding:28px;box-shadow:0 20px 50px rgba(0,0,0,.25);display:flex;flex-direction:column;gap:14px}
.login-card h1{font-size:20px;margin:6px 0 0}
.login-card p{margin:0}
.login-card label{display:flex;flex-direction:column;gap:5px;font-weight:500}
.login-card .foot{font-size:12px;color:var(--faint);text-align:center}
.brand-lg{display:flex;gap:12px;align-items:center}
.brand-lg .logo{width:44px;height:44px}
.brand-name{font-weight:700;font-size:17px;letter-spacing:-.01em}
.brand-sub{font-size:12.5px;color:var(--muted)}
.form-err{color:var(--danger);font-size:13px;min-height:1px}

/* Champs */
input[type=text],input[type=password],input[type=number],input[type=search],input[type=date],input[type=time],select,textarea{border:1px solid var(--border2);border-radius:var(--rayon-bouton);padding:7px 10px;background:#fff;width:100%}
textarea{resize:vertical;min-height:70px}
input:focus,select:focus,textarea:focus{outline:2px solid var(--focus);outline-offset:0;border-color:var(--focus)}

/* Structure */
.shell{display:grid;grid-template-columns:228px 1fr;min-height:100vh}
.side{background:var(--side);color:var(--side-text);display:flex;flex-direction:column;padding:16px 12px;position:sticky;top:0;height:100vh}
.side .brand{display:flex;gap:10px;align-items:center;padding:4px 6px 18px}
.side .logo{width:34px;height:34px}
.side .brand-name{color:#fff;font-size:15px}
.side .brand-sub{color:#93a3c4;font-size:12px}
.side nav{display:flex;flex-direction:column;gap:2px}
.nav-btn{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:7px;border:0;background:transparent;color:var(--side-text);cursor:pointer;text-align:left;font-weight:500}
.nav-btn:hover{background:var(--side2);color:#fff}
.nav-btn[aria-current=page]{background:#24386a;color:#fff}
.side-foot{margin-top:auto;display:flex;flex-direction:column;gap:8px}
.side-foot .ver{font-size:12px;color:#6f80a3;text-align:center}
.main{min-width:0;display:flex;flex-direction:column}
.topbar{display:flex;align-items:center;gap:12px;padding:14px 24px;background:var(--surface);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:5;flex-wrap:wrap}
.topbar h1{font-size:18px;margin:0;letter-spacing:-.01em}
.topbar .grow{flex:1}
.topbar .last{font-size:12.5px;color:var(--muted)}
.content{padding:20px 24px 40px;max-width:1400px;width:100%}
#progress{font-size:12.5px;color:var(--primary2);display:flex;align-items:center;gap:8px}
.spin{width:14px;height:14px;border:2px solid var(--primary-soft);border-top-color:var(--primary2);border-radius:50%;animation:sp 0.8s linear infinite;display:inline-block}
@keyframes sp{to{transform:rotate(360deg)}}

/* Bandeau */
.banner{margin:16px 24px 0;padding:10px 14px;border-radius:8px;border:1px solid;display:flex;gap:10px;align-items:flex-start;font-size:13.5px}
.banner.info{background:var(--primary-soft);border-color:#bfcff5;color:#1e3a8a}
.banner.warn{background:var(--warn-bg);border-color:#fed7aa;color:#7c2d12}
.banner.danger{background:var(--danger-bg);border-color:#fecaca;color:#7f1d1d}
.banner .grow{flex:1}
.banner button{background:none;border:0;cursor:pointer;color:inherit;padding:0}

/* Cartes piles */
.piles{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:16px}
.pile-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:12px 14px;cursor:pointer;text-align:left;box-shadow:var(--shadow);border-left-width:4px}
.pile-card:hover{border-color:var(--border2)}
.pile-card[aria-pressed=true]{outline:2px solid var(--primary2);outline-offset:-1px}
.pile-card .n{font-size:24px;font-weight:700;line-height:1.1}
.pile-card .l{font-size:13px;color:var(--muted);display:flex;gap:6px;align-items:center}
.pile-card.prio{border-left-color:var(--prio)}
.pile-card.exam{border-left-color:#d97706}
.pile-card.ecart{border-left-color:#94a3b8}
.pile-card.all{border-left-color:var(--primary2)}

/* Filtres */
.filters{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:12px}
.filters input[type=search]{max-width:280px}
.filters select{width:auto}
.check{display:inline-flex;gap:6px;align-items:center;font-size:13px;color:var(--muted);cursor:pointer}
.types-marche{border:0;padding:0;margin:14px 0 0;display:flex;flex-wrap:wrap;gap:8px 20px}
.types-marche legend{font-size:13px;font-weight:600;color:var(--text);margin-bottom:6px;padding:0}

/* Tableau */
.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}
.tbl-wrap{overflow-x:auto}
table.lots{width:100%;border-collapse:collapse;min-width:860px}
table.lots th{font-size:12px;text-transform:uppercase;letter-spacing:.03em;color:var(--muted);text-align:left;padding:10px 12px;border-bottom:1px solid var(--border);background:var(--surface2);font-weight:600}
table.lots td{padding:10px 12px;border-bottom:1px solid #edf1f5;vertical-align:top}
table.lots tbody tr{cursor:pointer}
table.lots tbody tr:hover{background:#f6f8fc}
table.lots tbody tr.sel{background:var(--primary-soft)}
.t1{font-weight:600}
.t2{color:var(--muted);font-size:13px;margin-top:2px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.tags{display:flex;gap:4px;flex-wrap:wrap;margin-top:5px}
.tag{font-size:12px;padding:1px 7px;border-radius:99px;background:var(--surface2);border:1px solid var(--border);color:var(--muted);white-space:nowrap}
.tag.met{background:#eef2ff;border-color:#c7d2fe;color:#3730a3}
.tag.warn{background:var(--warn-bg);border-color:#fed7aa;color:#9a3412}
.tag.demo{background:#f5f3ff;border-color:#ddd6fe;color:#6d28d9}
.score{display:inline-flex;flex-direction:column;align-items:center;min-width:58px;padding:5px 6px;border-radius:7px;border:1px solid}
.score b{font-size:17px;line-height:1.1}
.score span{font-size:12px;font-weight:600;white-space:nowrap;display:inline-flex;align-items:center;gap:3px}
.score.prio{background:var(--prio-bg);border-color:var(--prio-bd);color:var(--prio)}
.score.exam{background:var(--exam-bg);border-color:var(--exam-bd);color:var(--exam)}
.score.ecart{background:var(--ecart-bg);border-color:var(--ecart-bd);color:var(--ecart)}
.dl{font-size:12px;font-weight:600}
.dl.ok{color:var(--ok)}.dl.warn{color:var(--warn)}.dl.bad{color:var(--danger)}
.chip{display:inline-block;font-size:12px;padding:2px 8px;border-radius:99px;border:1px solid var(--border);background:var(--surface2);white-space:nowrap}
.chip.go,.chip.gagne{background:var(--prio-bg);border-color:var(--prio-bd);color:var(--prio)}
.chip.etude,.chip.depose{background:var(--primary-soft);border-color:#bfcff5;color:var(--primary)}
.chip.nogo,.chip.perdu{background:#f1f5f9;color:#475569}
.empty{padding:40px 20px;text-align:center}
.empty h2{margin:0 0 6px;font-size:18px}
.empty .actions{display:flex;gap:10px;justify-content:center;margin-top:16px;flex-wrap:wrap}

/* Tiroir détail */
.overlay{position:fixed;inset:0;background:rgba(15,23,42,.35);z-index:20}
.drawer{position:fixed;top:0;right:0;bottom:0;width:min(640px,100%);background:var(--surface);z-index:21;display:flex;flex-direction:column;box-shadow:-8px 0 30px rgba(0,0,0,.15)}
.drawer header{padding:16px 20px;border-bottom:1px solid var(--border);display:flex;gap:12px;align-items:flex-start}
.drawer header h2{font-size:16px;margin:0 0 3px}
.drawer header .grow{flex:1;min-width:0}
.drawer .body{overflow-y:auto;padding:16px 20px 40px;display:flex;flex-direction:column;gap:18px}
.sec h3{font-size:13px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:0 0 8px}
.kv{display:grid;grid-template-columns:150px 1fr;gap:6px 12px;font-size:13.5px}
.kv dt{color:var(--muted)}
.kv dd{margin:0;min-width:0;overflow-wrap:anywhere}
.reasons{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:5px}
.reasons li{display:flex;gap:10px;align-items:baseline;font-size:13.5px}
.reasons .pts{min-width:44px;text-align:right;font-weight:700;font-variant-numeric:tabular-nums}
.reasons .plus .pts{color:var(--ok)}
.reasons .moins .pts{color:var(--danger)}
.reasons .mult .pts{color:var(--warn)}
.reasons .info .pts{color:var(--faint)}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.form-grid label,.field{display:flex;flex-direction:column;gap:4px;font-size:13px;font-weight:500}
.form-grid .full{grid-column:1/-1}
.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.star-btn{background:none;border:1px solid var(--border2);border-radius:6px;padding:2px 7px;cursor:pointer;font-size:12px;display:inline-flex;gap:4px;align-items:center;margin-left:6px}
.star-btn[aria-pressed=true]{background:#fef9c3;border-color:#fde047;color:#854d0e}
.star-btn[aria-pressed=true] .ic{fill:#facc15}
.ai-out{border:1px solid var(--border);border-radius:8px;padding:14px 16px;background:var(--surface2);max-height:none;font-size:13.5px}
.ai-out h1,.ai-out h2,.ai-out h3{font-size:15px;margin:14px 0 6px}
.ai-out h1:first-child,.ai-out h2:first-child,.ai-out h3:first-child{margin-top:0}
.ai-out ul,.ai-out ol{padding-left:20px;margin:6px 0}
.ai-out p{margin:6px 0}
.ai-out table{border-collapse:collapse;margin:8px 0;font-size:13px}
.ai-out td,.ai-out th{border:1px solid var(--border2);padding:4px 8px;text-align:left}
.criteres{white-space:pre-wrap;font-size:13px;background:var(--surface2);border:1px solid var(--border);border-radius:7px;padding:8px 10px;max-height:160px;overflow:auto}

/* Réglages */
.settings{display:flex;flex-direction:column;gap:16px}
.settings .card{padding:16px 18px}
.settings h2{font-size:15px;margin:0 0 4px}
.settings .sub{color:var(--muted);font-size:13px;margin:0 0 12px}
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.edit-tbl{width:100%;border-collapse:collapse}
.edit-tbl th{text-align:left;font-size:12px;color:var(--muted);font-weight:600;padding:4px 6px}
.edit-tbl td{padding:4px 6px;vertical-align:top}
.save-bar{position:sticky;bottom:0;background:var(--bg);padding:12px 0;display:flex;gap:10px;justify-content:flex-end;border-top:1px solid var(--border)}

/* Stats */
.kpis{display:grid;grid-template-columns:repeat(6,1fr);gap:12px;margin-bottom:16px}
.kpi{padding:12px 14px}
.kpi .n{font-size:22px;font-weight:700}
.kpi .l{font-size:12.5px;color:var(--muted)}
table.simple{width:100%;border-collapse:collapse;font-size:13.5px}
table.simple th,table.simple td{padding:8px 10px;border-bottom:1px solid #edf1f5;text-align:left}
table.simple th{font-size:12px;color:var(--muted);font-weight:600;background:var(--surface2)}
table.simple td.num,table.simple th.num{text-align:right;font-variant-numeric:tabular-nums}
.stack{display:flex;flex-direction:column;gap:16px}
.pad{padding:16px 18px}

#toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);background:#0f172a;color:#fff;padding:9px 16px;border-radius:8px;font-size:13.5px;opacity:0;pointer-events:none;transition:opacity .2s;z-index:40}
#toast.on{opacity:1}

@media (max-width:1100px){.kpis{grid-template-columns:repeat(3,1fr)}}
@media (max-width:900px){
  .shell{grid-template-columns:1fr}
  .side{position:static;height:auto;flex-direction:row;flex-wrap:wrap;gap:8px;padding:10px 12px;align-items:center}
  .side .brand{padding:0 8px 0 0}
  .side nav{flex-direction:row;flex-wrap:wrap}
  .side-foot{margin:0 0 0 auto;flex-direction:row}
  .side-foot .ver{display:none}
  .piles{grid-template-columns:repeat(2,1fr)}
  .grid3,.form-grid{grid-template-columns:1fr}
  .kv{grid-template-columns:1fr}
  .content,.topbar{padding-left:16px;padding-right:16px}
  .banner{margin-left:16px;margin-right:16px}
}

/* ---- Ajouts version serveur ---- */
.side .ent-select{margin:0 4px 14px;display:flex;flex-direction:column;gap:4px}
.side .ent-select label{font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:#7f90b3}
.side .ent-select select{background:var(--side2);color:#fff;border-color:#2c3f66}
.side .sep{height:1px;background:#22345c;margin:10px 4px}
.side .user{font-size:12.5px;color:#9fb0d1;padding:0 6px 4px;overflow-wrap:anywhere}
.badge{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 6px;border-radius:99px;background:#b91c1c;color:#fff;font-size:12px;font-weight:700;margin-left:auto}
.tabs{display:flex;gap:4px;border-bottom:1px solid var(--border);margin-bottom:16px;flex-wrap:wrap}
.tab{border:0;background:none;padding:9px 12px;cursor:pointer;font-weight:500;color:var(--muted);border-bottom:2px solid transparent;margin-bottom:-1px;display:inline-flex;gap:6px;align-items:center}
.tab[aria-selected=true]{color:var(--primary2);border-bottom-color:var(--primary2)}
.tag.grp{background:#ecfeff;border-color:#a5f3fc;color:#155e75}
.grp-box{background:#ecfeff;border:1px solid #a5f3fc;color:#164e63;border-radius:8px;padding:10px 12px;font-size:13.5px}
.lock-note{display:flex;gap:8px;align-items:flex-start;background:var(--surface2);border:1px solid var(--border);border-radius:8px;padding:10px 12px;font-size:13px;color:var(--muted);margin-bottom:12px}
.ro{background:var(--surface2)!important;color:var(--text)}
.perm-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:6px 16px}
.perm-grid label{display:flex;gap:8px;align-items:flex-start;font-size:13px;font-weight:400}
.perm-grid input{margin-top:3px}
.diff{display:grid;grid-template-columns:160px 1fr 1fr;gap:6px 12px;font-size:13px;margin:8px 0}
.diff .h{font-size:12px;text-transform:uppercase;color:var(--muted);font-weight:600}
.diff .av{background:#fef2f2;border-radius:6px;padding:4px 8px;white-space:pre-wrap;overflow-wrap:anywhere}
.diff .ap{background:#f0fdf4;border-radius:6px;padding:4px 8px;white-space:pre-wrap;overflow-wrap:anywhere}
.modal-bg{position:fixed;inset:0;background:rgba(15,23,42,.4);z-index:30;display:grid;place-items:center;padding:16px}
.modal{background:var(--surface);border-radius:12px;width:min(640px,100%);max-height:90vh;overflow:auto;box-shadow:0 20px 50px rgba(0,0,0,.25)}
.modal header{padding:16px 20px;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:10px}
.modal header h2{font-size:16px;margin:0;flex:1}
.modal .mbody{padding:16px 20px;display:flex;flex-direction:column;gap:12px}
.modal footer{padding:12px 20px;border-top:1px solid var(--border);display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap}
.lien-box{background:var(--warn-bg);border:1px solid #fed7aa;border-radius:8px;padding:10px 12px;font-size:13px;overflow-wrap:anywhere}
.code-input{font-size:22px!important;letter-spacing:.4em;text-align:center;font-variant-numeric:tabular-nums}
.st{font-size:12px;padding:1px 8px;border-radius:99px;border:1px solid var(--border);white-space:nowrap}
.st.ok{background:var(--prio-bg);border-color:var(--prio-bd);color:var(--prio)}
.st.att{background:var(--exam-bg);border-color:var(--exam-bd);color:var(--exam)}
.st.off{background:#f1f5f9;color:#475569}
.st.adm{background:var(--primary-soft);border-color:#bfcff5;color:var(--primary)}
.small{font-size:12.5px}
.right{text-align:right}
table.simple td .row{flex-wrap:nowrap}


/* ==========================================================================
   Améliorations UI/UX (audit ui-ux-pro-max : accessibilité, interactions,
   responsive, typographie, animations, formulaires, navigation)
   ========================================================================== */
.ic-pile{width:12px;height:12px;flex:none}
.fav-ic .ic{width:14px;height:14px;fill:#ca8a04;color:#ca8a04;vertical-align:-2px}
[hidden]{display:none!important}
.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.skip{position:absolute;left:12px;top:-60px;z-index:50;background:var(--primary2);color:#fff;border:0;border-radius:8px;padding:10px 14px;font-weight:600;cursor:pointer}
.skip:focus{top:12px}
#view:focus{outline:none}

/* Lien d'ouverture d'un lot : un vrai bouton, accessible au clavier */
.lot-open{background:none;border:0;padding:0;margin:0;font:inherit;font-weight:600;color:inherit;text-align:left;cursor:pointer;line-height:1.4}
.lot-open:hover{color:var(--primary2);text-decoration:underline;text-underline-offset:2px}
.reasons .info .pts{color:var(--muted)}
.dl.ok{color:var(--ok)}
table.lots tbody tr.sel .dl.ok{color:#14532d}

/* Retour visuel : boutons en cours de traitement */
.btn[aria-busy=true]{position:relative;color:transparent!important;pointer-events:none}
.btn[aria-busy=true]::after{content:"";position:absolute;inset:0;margin:auto;width:16px;height:16px;border-radius:50%;border:2px solid rgba(255,255,255,.45);border-top-color:#fff;animation:sp .8s linear infinite}
.btn:not(.primary)[aria-busy=true]::after{border-color:var(--primary-soft);border-top-color:var(--primary2)}
.btn,.nav-btn,.tab,.pile-card,.chip,.lot-open,input,select,textarea{transition:background-color .15s ease,border-color .15s ease,color .15s ease,box-shadow .15s ease}
.btn:active:not(:disabled){transform:translateY(1px)}
.save-bar .form-err{margin-right:auto;align-self:center}

/* Apparitions (150 à 220 ms, désactivées si l'utilisateur réduit les animations) */
@keyframes glisse{from{transform:translateX(24px);opacity:.4}to{transform:none;opacity:1}}
@keyframes fondu{from{opacity:0}to{opacity:1}}
@keyframes pop{from{transform:scale(.97);opacity:0}to{transform:none;opacity:1}}
.drawer{animation:glisse .2s ease-out}
.overlay,.modal-bg{animation:fondu .15s ease-out}
.modal{animation:pop .18s ease-out}
@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}
  .spin,.btn[aria-busy=true]::after{animation-duration:1.6s!important;animation-iteration-count:infinite!important}
}

/* Menu : bouton visible uniquement sur petit écran */
.menu-btn{display:none;margin-left:auto;background:transparent;border:1px solid #2c3f66;color:#fff;border-radius:8px;width:44px;height:44px;align-items:center;justify-content:center;cursor:pointer}
.menu-btn .ic{width:20px;height:20px}
.nav-panel{display:flex;flex-direction:column;flex:1;min-height:0}

/* Écrans tactiles : cibles d'au moins 44 px, champs en 16 px (pas de zoom automatique sur iPhone) */
@media (pointer: coarse), (max-width: 900px){
  .btn,.nav-btn,.tab,.star-btn{min-height:44px}
  .btn.sm{min-height:44px;padding:8px 12px}
  input[type=text],input[type=password],input[type=number],input[type=search],input[type=date],input[type=time],select,textarea{min-height:44px;font-size:16px}
  textarea{min-height:88px}
  .link-btn{min-height:44px;padding:10px 0}
  .check{min-height:44px}
  .check input,.perm-grid input{width:20px;height:20px}
  .perm-grid label{min-height:44px;align-items:center}
  .lot-open{min-height:44px;display:inline-flex;align-items:center}
  .pile-card{min-height:72px}
}

/* Petits écrans : en-tête compact + menu repliable */
@media (max-width: 900px){
  html,body{font-size:calc(var(--taille-base) + 1px)}
  .side{position:sticky;top:0;z-index:15;height:auto;flex-direction:column;align-items:stretch;padding:8px 12px;gap:0}
  .side .brand{padding:0;display:flex;align-items:center}
  .menu-btn{display:inline-flex}
  .nav-panel{display:none;padding:12px 0 6px}
  .side.ouvert .nav-panel{display:flex}
  .side nav{flex-direction:column}
  .side-foot{margin:12px 0 0;flex-direction:column}
  .side-foot .ver{display:block}
  .topbar{position:static;padding:12px 16px}
  .topbar h1{font-size:17px;width:100%}
  .topbar .grow{display:none}
  .topbar [data-act=veille]{width:100%;justify-content:center}
  .filters input[type=search]{max-width:none;width:100%}
  .filters select{flex:1 1 140px}
  .drawer header{position:sticky;top:0;background:var(--surface);z-index:1}
  .drawer .body{padding:14px 16px 40px}
  .kv dt{margin-top:6px}
  .diff{grid-template-columns:1fr}
  .diff .h{display:none}
  .modal .mbody,.modal header,.modal footer{padding-left:16px;padding-right:16px}
}

/* Tableaux en cartes sur téléphone (plus de défilement horizontal) */
@media (max-width: 760px){
  table.lots{min-width:0}
  table.lots thead,table.cartes thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
  table.lots,table.lots tbody,table.cartes,table.cartes tbody{display:block}
  table.lots tr{display:grid;grid-template-columns:72px 1fr;gap:6px 12px;padding:14px;border-bottom:1px solid var(--border)}
  table.lots td{display:block;padding:0;border:0}
  table.lots td.c-score{grid-row:1 / span 2}
  table.lots td.c-lot{grid-column:2}
  table.lots td.c-meta{grid-column:1 / -1;font-size:14px}
  table.lots td.c-meta .t2{display:inline;margin-left:6px}
  table.lots td.c-meta .dl{display:inline;margin-left:6px}
  table.lots td.c-score .score{min-width:64px}
  table.cartes tr{display:block;padding:12px 14px;border-bottom:1px solid var(--border)}
  table.cartes td{display:block;padding:3px 0;border:0;text-align:left}
  table.cartes td.right .row{justify-content:flex-start!important}
  [data-label]::before{content:attr(data-label);display:inline-block;min-width:110px;color:var(--muted);font-size:13px;font-weight:500}
  table.lots td.c-meta[data-label]::before{min-width:96px}
  .kpis{grid-template-columns:repeat(2,1fr)}
}

/* Cibles minimales restantes (desktop 24 px, tactile 44 px) */
.lot-open{padding:2px 0}
.link-btn{padding:4px 0}
.star-btn{min-height:28px}
.skip{min-height:44px}
@media (pointer: coarse), (max-width: 900px){
  .btn.sm{min-width:44px;justify-content:center}
}
.lot-open{padding:3px 0}
dd.docs{display:flex;flex-wrap:wrap;gap:6px}
dd.docs .btn{text-decoration:none;color:var(--primary2)}
@media (pointer: coarse), (max-width: 900px){
  .star-btn{min-height:44px;padding:6px 12px}
  input[type=file]{min-height:44px}
}
@media (max-width: 760px){
  table.edit-tbl thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
  table.edit-tbl,table.edit-tbl tbody{display:block}
  table.edit-tbl tr{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:12px 0;border-bottom:1px solid var(--border)}
  table.edit-tbl td{display:flex;flex-direction:column;gap:4px;padding:0}
  table.edit-tbl td[data-label]::before{min-width:0}
  table.edit-tbl tr[data-met] td:nth-child(2),table.edit-tbl td.row{grid-column:1 / -1}
  table.edit-tbl td.row{flex-direction:row}
  table.edit-tbl tr[data-met] td:last-child{grid-column:2;justify-self:end}
}

input[type=file]{min-height:30px;font-size:13px}
@media (pointer: coarse), (max-width: 900px){input[type=file]{min-height:44px}}
@media (max-width: 760px){table.edit-tbl tr[data-met] td:first-child{grid-column:1 / -1}}
/* Brouillon IA : titres lisibles (pas le style des intitulés de section) */
.ai-out h1,.ai-out h2,.ai-out h3{text-transform:none;letter-spacing:normal;color:var(--text);font-size:15px}
.ai-out h3{font-size:14px}
.ai-out blockquote{margin:0 0 10px;padding:8px 12px;border-left:3px solid #c4b5fd;background:#f5f3ff;color:var(--muted);font-size:13px;border-radius:0 6px 6px 0}

/* ==========================================================================
   Pages en blocs (éditeur visuel)
   ========================================================================== */
.cms-page{display:flex;flex-direction:column;gap:var(--espace-sections)}
.cms-section{min-width:0}
.cms-section-in{display:grid;grid-template-columns:1fr;gap:var(--espace-blocs);width:100%;margin:0 auto;align-items:start}
.cms-col{display:flex;flex-direction:column;gap:var(--espace-blocs);min-width:0}
.cms-bloc{min-width:0}
.cms-section,.cms-col,.cms-bloc{position:relative}   /* un élément en position absolue se place dans son parent, comme dans l'éditeur */
.cms-bloc[data-app]:empty{display:none}
.cms-bloc>:is(.piles,.filters,.grp-box,.kpis,.lock-note){margin-bottom:0}
.cms-bloc>.save-bar{margin:0}
.login-wrap>.cms-page{width:100%}
.login-card{margin:0 auto}
.logo-img{width:auto!important;max-width:170px;object-fit:contain}
.cms-titre{margin:0;line-height:1.2;letter-spacing:-.01em;color:var(--text)}
h1.cms-titre{font-size:30px}h2.cms-titre{font-size:22px}h3.cms-titre{font-size:18px}h4.cms-titre{font-size:15px}
.cms-lien-titre{text-decoration:none;color:inherit}
.cms-texte>:first-child{margin-top:0}.cms-texte>:last-child{margin-bottom:0}
.cms-texte p{margin:0 0 .7em}.cms-texte ul,.cms-texte ol{margin:0 0 .7em;padding-left:1.3em}
.cms-texte blockquote{margin:0 0 .7em;padding:8px 14px;border-left:3px solid var(--primary2);background:var(--surface2);border-radius:0 6px 6px 0}
.cms-texte h2,.cms-texte h3,.cms-texte h4{margin:.8em 0 .4em;line-height:1.25}
.cms-image{margin:0}.cms-image img{display:block;max-width:100%;height:auto}
.cms-image figcaption{font-size:12.5px;color:var(--muted);margin-top:6px}
.cms-bouton{text-decoration:none}
.cms-bouton.v-primaire{background:var(--primary2);border-color:var(--primary2);color:#fff}
.cms-bouton.v-primaire:hover{background:var(--primary)}
.cms-bouton.v-contour{background:transparent;border-color:var(--primary2);color:var(--primary2)}
.cms-bouton.v-lien{background:none;border-color:transparent;color:var(--primary2);text-decoration:underline;padding-left:0;padding-right:0}
.cms-bouton.t-sm{padding:5px 10px;font-size:13px}.cms-bouton.t-lg{padding:12px 20px;font-size:16px}
.cms-sep{border:0;border-top:1px solid var(--border);margin:0}
.cms-encadre{display:flex;gap:10px;align-items:flex-start;border:1px solid;border-radius:var(--radius);padding:12px 14px;font-size:13.5px}
.cms-encadre strong{display:block;margin-bottom:2px}
.cms-encadre .cms-texte p{margin:0}
.cms-encadre.info{background:var(--primary-soft);border-color:#bfcff5;color:#1e3a8a}
.cms-encadre.succes{background:var(--prio-bg);border-color:var(--prio-bd);color:#14532d}
.cms-encadre.attention{background:var(--warn-bg);border-color:#fed7aa;color:#7c2d12}
.cms-encadre.danger{background:var(--danger-bg);border-color:#fecaca;color:#7f1d1d}
.cms-icone{display:flex;gap:12px}
.cms-icone.haut{flex-direction:column;align-items:flex-start}
.cms-icone .pastille{display:inline-grid;place-items:center;width:42px;height:42px;border-radius:12px;background:var(--primary-soft);color:var(--primary2);flex:none}
.cms-icone .pastille .ic{width:20px;height:20px}
.cms-icone h3{margin:0 0 4px;font-size:15px}
.cms-accordeon{display:flex;flex-direction:column;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);overflow:hidden}
.cms-accordeon details+details{border-top:1px solid var(--border)}
.cms-accordeon summary{padding:12px 14px;cursor:pointer;font-weight:600;min-height:44px;display:flex;align-items:center}
.cms-accordeon details>div{padding:0 14px 12px}
.cms-html{display:block;width:100%;border:0;background:transparent}
.cms-maquette{display:flex;gap:12px;align-items:center;padding:18px;border:1px dashed var(--border2);border-radius:var(--radius);background:repeating-linear-gradient(135deg,var(--surface),var(--surface) 10px,var(--surface2) 10px,var(--surface2) 20px);color:var(--muted)}
.cms-maquette b{display:block;color:var(--text)}
.cms-maquette span{font-size:12.5px}
.cms-vide{display:flex;gap:8px;align-items:center;justify-content:center;padding:24px;border:1px dashed var(--border2);border-radius:var(--radius);color:var(--muted)}
/* ---- conteneurs (flex par défaut, grille au choix) et blocs avancés */
.cms-t-conteneur{display:flex;flex-direction:column;gap:var(--espace-blocs);min-width:0}
.cms-t-composant{display:flex;flex-direction:column;gap:var(--espace-blocs)}
.cms-global{display:flex;flex-direction:column;gap:var(--espace-sections)}
.cms-bouton.pleine{width:100%;justify-content:center}
.cms-video{position:relative;width:100%;background:#0f172a;border-radius:var(--radius);overflow:hidden}
.cms-video video,.cms-video iframe,.cms-cadre-externe{position:absolute;inset:0;width:100%;height:100%;border:0;display:block}
.cms-video-lancer{position:absolute;inset:0;width:100%;border:0;padding:0;cursor:pointer;background:linear-gradient(135deg,#1e293b,#334155);color:#fff;display:grid;place-items:center}
.cms-video-lancer img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.cms-play{position:relative;width:68px;height:68px;border-radius:50%;background:rgba(15,23,42,.72);display:grid;place-items:center;box-shadow:0 6px 24px rgba(0,0,0,.35);transition:transform .15s}
.cms-play svg{width:30px;height:30px;margin-left:4px}
.cms-video-lancer:hover .cms-play,.cms-video-lancer:focus-visible .cms-play{transform:scale(1.08)}
.cms-video-note{position:absolute;left:10px;bottom:8px;font-size:12px;background:rgba(15,23,42,.72);padding:2px 8px;border-radius:99px}
.cms-galerie{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.cms-galerie figure{margin:0;min-width:0}
.cms-galerie img{display:block;width:100%;height:auto;border-radius:calc(var(--radius) - 2px)}
.cms-galerie figcaption{font-size:12.5px;color:var(--muted);margin-top:4px}
.cms-agrandir{display:block;width:100%;padding:0;border:0;background:none;cursor:zoom-in;border-radius:calc(var(--radius) - 2px);overflow:hidden}
.cms-agrandir img{transition:transform .25s}
.cms-agrandir:hover img{transform:scale(1.03)}
.cms-visio{position:fixed;inset:0;z-index:200;background:rgba(2,6,23,.9);display:grid;place-items:center;padding:56px 64px}
.cms-visio figure{margin:0;display:flex;flex-direction:column;align-items:center;gap:10px;max-width:100%;max-height:100%}
.cms-visio img{max-width:100%;max-height:calc(100vh - 150px);object-fit:contain;border-radius:6px}
.cms-visio figcaption{color:#e2e8f0;font-size:14px;text-align:center}
.cms-visio-n{position:absolute;top:18px;left:20px;color:#cbd5e1;font-size:13px}
.cms-visio-btn{position:absolute;width:46px;height:46px;border-radius:50%;border:0;background:rgba(255,255,255,.14);color:#fff;display:grid;place-items:center;cursor:pointer}
.cms-visio-btn:hover,.cms-visio-btn:focus-visible{background:rgba(255,255,255,.28)}
.cms-visio-btn svg,.cms-visio-btn .ic{width:22px;height:22px}
.cms-visio-btn.prec{left:12px;top:50%;transform:translateY(-50%)}.cms-visio-btn.suiv{right:12px;top:50%;transform:translateY(-50%)}.cms-visio-btn.fermer{top:12px;right:12px}
.cms-carrousel{position:relative;border-radius:var(--radius);overflow:hidden}
.cms-car-piste{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;scroll-behavior:smooth}
.cms-car-piste::-webkit-scrollbar{display:none}
.cms-car-diapo{flex:0 0 100%;scroll-snap-align:start;min-height:360px;display:flex;align-items:flex-end;background:#1e293b center/cover no-repeat;color:#fff}
.cms-car-txt{padding:32px 40px 52px;max-width:720px}
.al-centre .cms-car-diapo{align-items:center;justify-content:center;text-align:center}
.al-centre .cms-car-txt{margin:0 auto}
.cms-car-txt h3{margin:0 0 8px;font-size:clamp(20px,3vw,32px);line-height:1.15;color:#fff}
.cms-car-txt p{margin:0 0 14px;font-size:15px;opacity:.95}
.cms-car-btn{position:absolute;top:50%;transform:translateY(-50%);width:42px;height:42px;border-radius:50%;border:0;background:rgba(15,23,42,.6);color:#fff;display:grid;place-items:center;cursor:pointer}
.cms-car-btn svg{width:20px;height:20px}
.cms-car-btn:hover,.cms-car-btn:focus-visible{background:rgba(15,23,42,.85)}
.cms-car-btn.prec{left:10px}.cms-car-btn.suiv{right:10px}
.cms-car-points{position:absolute;left:0;right:0;bottom:14px;display:flex;gap:6px;justify-content:center}
.cms-car-points button{width:24px;height:24px;border:0;background:none;padding:0;cursor:pointer;display:grid;place-items:center}
.cms-car-points button::before{content:"";width:9px;height:9px;border-radius:50%;background:rgba(255,255,255,.55);transition:all .2s}
.cms-car-points button[aria-current=true]::before{background:#fff;width:22px;border-radius:5px}
.cms-car-pause{position:absolute;right:10px;bottom:10px;border:0;border-radius:99px;background:rgba(15,23,42,.6);color:#fff;font-size:12px;padding:4px 10px;cursor:pointer}
.cms-onglets{display:flex;flex-direction:column;gap:12px}
.cms-onglets.gauche{flex-direction:row;align-items:flex-start}
.cms-ong-liste{display:flex;gap:4px;flex-wrap:wrap}
.cms-onglets.gauche .cms-ong-liste{flex-direction:column;min-width:180px}
.cms-ong-liste [role=tab]{border:0;background:none;padding:9px 14px;font:inherit;font-weight:600;color:var(--muted);cursor:pointer;min-height:40px;text-align:left}
.cms-onglets.ligne .cms-ong-liste{border-bottom:1px solid var(--border)}
.cms-onglets.ligne.gauche .cms-ong-liste{border-bottom:0;border-right:1px solid var(--border)}
.cms-onglets.ligne [role=tab]{border-bottom:2px solid transparent;margin-bottom:-1px}
.cms-onglets.ligne [role=tab][aria-selected=true]{color:var(--primary2);border-bottom-color:var(--primary2)}
.cms-onglets.ligne.gauche [role=tab]{border-bottom:0;border-right:2px solid transparent;margin:0 -1px 0 0}
.cms-onglets.ligne.gauche [role=tab][aria-selected=true]{border-right-color:var(--primary2)}
.cms-onglets.pilules [role=tab]{border-radius:99px}
.cms-onglets.pilules [role=tab][aria-selected=true]{background:var(--primary2);color:#fff}
.cms-ong-panneau{flex:1;min-width:0}
.cms-liste{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.cms-liste.ligne{flex-direction:row;flex-wrap:wrap;gap:8px 20px}
.cms-liste li{display:flex;gap:8px;align-items:flex-start}
.cms-liste li .ic{flex:none;color:var(--primary2);margin-top:1px}
.cms-liste.sep:not(.ligne) li+li{border-top:1px solid var(--border);padding-top:8px}
.cms-liste a{color:inherit}
.cms-chiffre{display:flex;flex-direction:column;gap:6px}
.cms-chiffre.gauche{flex-direction:row;align-items:center;gap:14px}
.cms-chiffre .pastille{display:inline-grid;place-items:center;width:46px;height:46px;border-radius:12px;background:var(--primary-soft);color:var(--primary2)}
.cms-chiffre-val{font-size:40px;font-weight:700;line-height:1.05;color:var(--primary2);font-variant-numeric:tabular-nums;letter-spacing:-.02em;font-family:var(--police-titres)}
.cms-chiffre-lib{color:var(--muted);font-size:14px}
.cms-progressions{display:flex;flex-direction:column;gap:14px}
.cms-prog-tete{display:flex;justify-content:space-between;gap:8px;font-size:13.5px;margin-bottom:6px}
.cms-prog-barre{height:10px;background:var(--surface2);border-radius:99px;overflow:hidden}
.cms-prog-barre>i{display:block;height:100%;background:var(--primary2);border-radius:inherit}
.cms-citation{margin:0;display:flex;flex-direction:column;gap:12px}
.cms-citation.carte{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:20px;box-shadow:var(--shadow)}
.cms-citation blockquote{margin:0;font-size:16px;line-height:1.55;white-space:pre-line;color:var(--text)}
.cms-citation blockquote::before{content:"\201C";display:block;font-size:44px;line-height:.6;color:var(--primary2);font-family:Georgia,serif;margin-bottom:6px}
.cms-citation figcaption{display:flex;gap:10px;align-items:center}
.cms-citation figcaption img{width:44px;height:44px;border-radius:50%;object-fit:cover}
.cms-citation figcaption span{display:flex;flex-direction:column}
.cms-citation small{color:var(--muted)}
.cms-etoiles{color:#d97706;letter-spacing:2px;font-size:16px}
.cms-etoiles .vide{color:var(--border2)}
.cms-tableau-cadre{overflow-x:auto;border-radius:var(--radius)}
.cms-tableau{width:100%;border-collapse:collapse;font-size:13.5px;background:var(--surface)}
.cms-tableau caption{text-align:left;font-weight:600;padding:0 0 8px}
.cms-tableau th,.cms-tableau td{padding:10px 12px;text-align:left;border-bottom:1px solid var(--border);vertical-align:top}
.cms-tableau thead th{background:var(--surface2);font-weight:600}
.cms-tableau.rayures tbody tr:nth-child(even){background:var(--surface2)}
.cms-tableau.bordures th,.cms-tableau.bordures td{border:1px solid var(--border)}
.cms-tableau.compact th,.cms-tableau.compact td{padding:5px 8px}
.cms-carte{position:relative;height:320px;border-radius:var(--radius);overflow:hidden;background:repeating-linear-gradient(45deg,#e2e8f0,#e2e8f0 12px,#edf2f7 12px,#edf2f7 24px)}
.cms-carte-lancer{position:absolute;inset:0;width:100%;border:0;background:none;cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;color:#1e293b}
.cms-carte-lancer .ic{width:34px;height:34px;color:var(--primary2)}
.cms-carte-lancer small{color:#475569}
.cms-carte-lien{display:inline-block;margin-top:6px;font-size:12.5px}
.cms-rebours{display:flex;flex-direction:column;gap:10px;align-items:flex-start}
.cms-reb-titre{font-weight:600}
.cms-reb-cases{display:flex;gap:10px;flex-wrap:wrap}
.cms-reb-case{display:flex;flex-direction:column;align-items:center;min-width:72px}
.cms-rebours.cartes .cms-reb-case{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:10px 8px;box-shadow:var(--shadow)}
.cms-reb-case b{font-size:30px;font-variant-numeric:tabular-nums;line-height:1.1;color:var(--primary2)}
.cms-reb-case span{font-size:12px;color:var(--muted)}
.cms-reb-fin{font-weight:600;color:var(--primary2)}
.cms-cta{display:flex;flex-direction:column;gap:18px;align-items:center;text-align:center;padding:36px 28px;border-radius:var(--radius);background:linear-gradient(135deg,var(--primary2),var(--primary));color:#fff;background-size:cover;background-position:center}
.cms-cta.cote{flex-direction:row;justify-content:space-between;text-align:left;flex-wrap:wrap}
.cms-cta h2{margin:0 0 6px;font-size:clamp(20px,2.6vw,28px);color:#fff}
.cms-cta .cms-texte{opacity:.95}
.cms-cta-btns{display:flex;gap:10px;flex-wrap:wrap;justify-content:center}
.cms-cta .cms-bouton.v-primaire{background:#fff;border-color:#fff;color:var(--primary)}
.cms-cta .cms-bouton.v-contour{border-color:#fff;color:#fff}
.cms-carte-image{position:relative;display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow);height:100%}
.cms-carte-image.gauche{flex-direction:row}
.cms-carte-image.gauche .cms-ci-media{flex:0 0 40%}
.cms-ci-media{position:relative}
.cms-ci-media img{display:block;width:100%;height:100%;object-fit:cover;aspect-ratio:16/10}
.cms-ci-badge{position:absolute;top:10px;left:10px;background:var(--primary2);color:#fff;font-size:12px;font-weight:600;padding:2px 9px;border-radius:99px}
.cms-ci-corps{padding:16px;display:flex;flex-direction:column;gap:8px;flex:1}
.cms-ci-corps h3{margin:0;font-size:16px}
.cms-ci-lien{color:inherit;text-decoration:none}
.cms-ci-lien::after{content:"";position:absolute;inset:0}
.cms-carte-image:has(.cms-ci-lien):hover{border-color:var(--primary2)}
.cms-sommaire{border-left:3px solid var(--primary2);padding:4px 0 4px 14px}
.cms-sommaire b{display:block;margin-bottom:6px}
.cms-sommaire ul,.cms-sommaire ol{margin:0;padding-left:1.1em;display:flex;flex-direction:column;gap:4px}
.cms-sommaire ul{list-style:none;padding-left:0}
.cms-sommaire li.n3{margin-left:16px;font-size:.95em}
.cms-etapes{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:0}
.cms-etapes li{display:flex;gap:14px;position:relative;padding-bottom:18px}
.cms-etapes.verticale li:not(:last-child)::before{content:"";position:absolute;left:15px;top:34px;bottom:2px;width:2px;background:var(--border)}
.cms-et-pastille{flex:none;width:32px;height:32px;border-radius:50%;background:var(--primary2);color:#fff;display:grid;place-items:center;font-weight:700;font-size:14px}
.cms-etapes.sans-num .cms-et-pastille{width:14px;height:14px;margin:9px}
.cms-etapes h3{margin:0 0 4px;font-size:15px}
.cms-etapes small{color:var(--muted);display:block;margin-bottom:2px}
.cms-etapes.horizontale{flex-direction:row;gap:16px}
.cms-etapes.horizontale li{flex:1;flex-direction:column;padding-bottom:0}
@media (max-width:767px){.cms-etapes.horizontale{flex-direction:column}.cms-cta.cote{flex-direction:column;text-align:center}.cms-carte-image.gauche{flex-direction:column}.cms-onglets.gauche{flex-direction:column}.cms-onglets.gauche .cms-ong-liste{flex-direction:row;min-width:0}.cms-car-txt{padding:24px 20px 48px}.cms-visio{padding:56px 12px}}
/* ---- animations d'entrée (ajoutées par le script : sans lui, tout reste visible) */
[data-anim]{--anim-duree:700ms;--anim-delai:0ms;transition:opacity var(--anim-duree) ease var(--anim-delai),transform var(--anim-duree) cubic-bezier(.2,.7,.2,1) var(--anim-delai)}
.cms-anim-att{opacity:0}
.cms-anim-att[data-anim=monter]{transform:translateY(32px)}.cms-anim-att[data-anim=descendre]{transform:translateY(-32px)}
.cms-anim-att[data-anim=gauche]{transform:translateX(-40px)}.cms-anim-att[data-anim=droite]{transform:translateX(40px)}
.cms-anim-att[data-anim=zoom]{transform:scale(.9)}.cms-anim-att[data-anim=retourner]{transform:perspective(800px) rotateX(35deg)}
[class*=cms-sv-]{transition:transform .25s ease,box-shadow .25s ease,filter .25s ease}
.cms-sv-soulever:hover{transform:translateY(-6px);box-shadow:0 14px 30px rgba(16,24,40,.16)}
.cms-sv-agrandir:hover{transform:scale(1.04)}.cms-sv-reduire:hover{transform:scale(.97)}
.cms-sv-ombre:hover{box-shadow:0 16px 36px rgba(16,24,40,.22)}.cms-sv-incliner:hover{transform:rotate(-1.5deg)}
.cms-sv-eclaircir:hover{filter:brightness(1.08)}
@supports (animation-timeline:view()){
  [data-defil=parallaxe]{animation:cms-parallaxe linear both;animation-timeline:view()}
  [data-defil=apparition]{animation:cms-apparition linear both;animation-timeline:view();animation-range:entry 0% cover 35%}
  [data-defil=zoom]{animation:cms-zoomdef linear both;animation-timeline:view();animation-range:entry 0% cover 40%}
}
@keyframes cms-parallaxe{from{transform:translateY(40px)}to{transform:translateY(-40px)}}
@keyframes cms-apparition{from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:none}}
@keyframes cms-zoomdef{from{transform:scale(.88);opacity:.4}to{transform:none;opacity:1}}
@media (prefers-reduced-motion:reduce){[data-anim],.cms-anim-att{opacity:1!important;transform:none!important;transition:none!important}[data-defil]{animation:none!important}[class*=cms-sv-]:hover{transform:none!important}}
.cms-annonce .cms-an-img{max-width:100%;border-radius:8px;margin-bottom:10px;display:block}
.nav-btn{text-decoration:none}

/* ---- Statistiques : période, chiffres, courbes */
.periode{display:flex;flex-wrap:wrap;gap:12px 24px;align-items:flex-end}
.periode-ctrl{display:flex;gap:12px}
.periode-ctrl .field{min-width:150px}
.periode-txt{flex:1;min-width:240px}
.periode-txt h2{font-size:17px;margin:0 0 2px}
.periode-txt p{margin:0}
.tuiles{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:12px}
.tuiles.n4{grid-template-columns:repeat(4,minmax(0,1fr))}
.tuile{padding:12px 14px;display:flex;flex-direction:column;gap:2px;min-width:0}
.tuile .l{font-size:12.5px;color:var(--muted);font-weight:500}
.tuile .v{font-size:22px;font-weight:700;line-height:1.25}
.tuile .note{font-size:12px;color:var(--muted)}
.tuile .delta{display:flex;align-items:flex-start;gap:4px;font-size:12px;color:var(--muted);margin-top:4px}
.tuile .delta svg{width:15px;height:15px;flex:none;margin-top:1px}
.tuile .delta.ok b,.tuile .delta.ok svg{color:var(--ok)}
.tuile .delta.bad b,.tuile .delta.bad svg{color:var(--danger)}
.tuile .delta.neutre b{color:var(--text)}
.graph-carte{min-width:0}
.graph-titre{font-size:15px;margin:0}
.graph-vide{display:flex;gap:10px;align-items:flex-start;color:var(--muted);font-size:13px;padding:18px 0 6px}
.graph-vide svg{width:22px;height:22px;flex:none;color:var(--faint)}
.graph-vide p{margin:0;max-width:52ch}
.graph-sous{margin:2px 0 6px}
.legende{display:flex;flex-wrap:wrap;gap:4px 16px;font-size:12.5px;color:var(--muted);margin:0 0 4px}
.legende span{display:inline-flex;align-items:center;gap:6px}
i.k{display:inline-block;width:16px;height:3px;border-radius:2px;flex:none}
.k-dep{background:var(--serie-1)}.k-gag{background:var(--serie-2)}.k-per{background:var(--serie-3)}.k-n1{background:var(--serie-n1)}
.graph{position:relative;border-radius:6px;outline-offset:2px}
.graph svg{display:block;width:100%;height:auto;overflow:visible}
.graph .grille{stroke:var(--grille);stroke-width:1}
.graph .base{stroke:var(--border2);stroke-width:1}
.graph .ax{fill:var(--muted);font-size:12px}
.graph .etiq{fill:var(--text);font-size:12px;font-weight:600}
.graph .bande{fill:var(--primary-soft)}
.graph .viseur{stroke:var(--faint);stroke-width:1}
.graph .ligne{fill:none;stroke-width:2;stroke-linejoin:round;stroke-linecap:round}
.graph .pt{stroke:var(--surface);stroke-width:2}
.graph .s-dep{stroke:var(--serie-1)}.graph .pt.s-dep{fill:var(--serie-1);stroke:var(--surface)}
.graph .s-gag{stroke:var(--serie-2)}.graph .pt.s-gag{fill:var(--serie-2);stroke:var(--surface)}
.graph .s-per{stroke:var(--serie-3)}.graph .pt.s-per{fill:var(--serie-3);stroke:var(--surface)}
.graph .s-n1{stroke:var(--serie-n1)}
.graph{cursor:crosshair}
.graph-bulle{position:absolute;pointer-events:none;background:var(--surface);border:1px solid var(--border);border-radius:8px;box-shadow:0 8px 24px rgba(16,24,40,.14);padding:8px 10px;font-size:12.5px;min-width:160px;z-index:3}
.graph-bulle .t{font-weight:600;margin-bottom:4px}
.graph-bulle .r{display:flex;align-items:center;gap:8px;white-space:nowrap}
.graph-bulle .r span{color:var(--muted)}
.graph-bulle .aide{font-size:12px;color:var(--faint);margin-top:4px}
.stats-sous-titre{font-size:15px;margin:6px 0 10px}
table.simple tr.total td{border-top:1px solid var(--border2)}
.link-btn.mois-btn{display:inline-flex;align-items:center;min-width:72px;min-height:24px;font-size:14px}
@media (max-width:1100px){.tuiles{grid-template-columns:repeat(3,minmax(0,1fr))}.tuiles.n4{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (pointer: coarse), (max-width: 900px){.link-btn.mois-btn{min-height:44px;min-width:88px}}
@media (max-width:760px){.tuiles,.tuiles.n4{grid-template-columns:repeat(2,minmax(0,1fr))}.periode-ctrl{width:100%}.periode-ctrl .field{flex:1;min-width:0}}

/* ---- Entreprises du groupe */
.ent-intro{display:flex;gap:16px;align-items:center;flex-wrap:wrap}
.ent-intro h2{font-size:17px;margin:0 0 4px}
.ent-intro p{margin:0;max-width:80ch}
.ent-grille{display:grid;grid-template-columns:repeat(auto-fill,minmax(360px,1fr));gap:14px}
.ent-fiche{padding:14px 16px;display:flex;flex-direction:column;gap:10px;min-width:0}
.ent-fiche.inactive{opacity:.75}
.ent-fiche header{display:flex;gap:12px;align-items:center}
.ent-fiche h3{font-size:15px;margin:0}
.ent-logo{width:44px;height:44px;border-radius:10px;border:1px solid var(--border);background:var(--surface2);display:grid;place-items:center;overflow:hidden;flex:none;font-weight:700;color:var(--primary2)}
.ent-logo img{max-width:100%;max-height:100%;object-fit:contain}
.ent-logo.grand{width:64px;height:64px;font-size:20px}
.ent-logo.vide{width:44px;height:44px}
.ent-kv{display:grid;grid-template-columns:72px 1fr;gap:6px 10px;margin:0;font-size:13px}
.ent-kv dt{color:var(--muted);font-size:12.5px}
.ent-kv dd{margin:0;min-width:0}
.puces{display:inline-flex;flex-wrap:wrap;gap:4px}
.ent-prete{display:flex;align-items:center;gap:10px}
.ent-prete svg{width:16px;height:16px;color:var(--ok);vertical-align:-3px}
.jauge{flex:1;max-width:160px;height:6px;border-radius:3px;background:var(--surface2);border:1px solid var(--border);overflow:hidden}
.jauge span{display:block;height:100%;background:var(--primary2)}
.ent-manques{margin:0;padding:0;list-style:none;font-size:13px;display:flex;flex-direction:column;gap:2px}
.ent-manques .link-btn{font-size:13px;text-align:left;min-height:24px;display:flex;align-items:flex-start;gap:6px}
.ent-manques .link-btn svg{width:15px;height:15px;flex:none;margin-top:2px;color:var(--warn)}
.ent-fiche footer{gap:6px;margin-top:auto}
.logo-ent{gap:14px;align-items:center}
.reprise{gap:14px;align-items:flex-end}
.reprise .field{min-width:200px}
.grid4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
/* ---- Assistant d'ajout */
.assistant h2{font-size:17px;margin:14px 0 4px}
.assistant h3{font-size:14px;margin:0 0 8px}
.stepper{display:flex;gap:6px 18px;flex-wrap:wrap;list-style:none;margin:6px 0 0;padding:0;font-size:13px;color:var(--muted)}
.stepper li{display:flex;align-items:center;gap:6px}
.stepper li span{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;border:1px solid var(--border2);font-weight:600;font-size:12px;background:var(--surface)}
.stepper li[aria-current=step]{color:var(--text);font-weight:600}
.stepper li[aria-current=step] span{background:var(--primary2);border-color:var(--primary2);color:#fff}
.stepper li.fait span{background:var(--primary-soft);border-color:var(--primary-soft);color:var(--primary)}
.as-recherche input{max-width:420px}
.as-resultats{list-style:none;margin:10px 0 0;padding:0;border:1px solid var(--border);border-radius:var(--radius);max-width:760px}
.as-resultats li{display:flex;gap:10px;align-items:center;padding:8px 12px}
.as-resultats li+li{border-top:1px solid var(--border)}
.as-logo{gap:10px;align-items:center;margin-top:4px}
.as-logo img{width:44px;height:44px;object-fit:contain;border:1px solid var(--border);border-radius:10px;background:#fff}
.as-bloc{border:1px solid var(--border);border-radius:var(--radius);padding:12px 14px;margin-top:12px}
.as-metiers{display:flex;flex-direction:column;gap:6px}
.as-metiers .check{align-items:flex-start;color:var(--text)}
.as-invitations{display:flex;flex-direction:column;gap:8px;margin-bottom:8px}
.as-inv{display:grid;grid-template-columns:1.4fr 1fr 1fr auto;gap:8px;align-items:end}
.as-inv label{display:flex;flex-direction:column;gap:4px;font-size:13px;font-weight:500}
.as-recap{list-style:none;padding:0;margin:8px 0 12px;display:flex;flex-direction:column;gap:10px}
.as-recap li{display:flex;gap:10px;align-items:flex-start}
.as-recap li>svg{width:18px;height:18px;flex:none;color:var(--primary2);margin-top:2px}
.as-nav{margin-top:16px;gap:8px}
/* ---- Paramètres de l'outil */
.param-page{display:grid;grid-template-columns:170px minmax(0,1fr);gap:16px;align-items:start}
.param-nav{position:sticky;top:80px;display:flex;flex-direction:column;gap:2px}
.param-nav a{padding:7px 10px;border-radius:6px;color:var(--text);text-decoration:none;font-size:13.5px}
.param-nav a:hover{background:var(--surface2)}
.param-corps{min-width:0}
.param-corps section h2{font-size:16px;margin:0 0 4px}
.param-corps section h3{font-size:14px;margin:16px 0 8px}
.param-corps section{scroll-margin-top:80px}
.param-etat{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px;margin-top:10px}
.param-etat>div{border:1px solid var(--border);border-radius:var(--radius);padding:10px 12px;display:flex;flex-direction:column;gap:6px;align-items:flex-start}
.param-etat .l{font-size:12.5px;color:var(--muted);font-weight:500}
.param-etat .st{white-space:normal;line-height:1.35}
.heures{border:0;padding:0;margin:10px 0 0;display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:6px}
.heures legend{font-size:13px;font-weight:600;margin-bottom:6px;padding:0}
.heure{justify-content:center;border:1px solid var(--border);border-radius:6px;padding:4px 0;color:var(--text)}
.param-corps details summary{cursor:pointer;list-style-position:outside}
@media (max-width:1100px){.grid4{grid-template-columns:repeat(2,minmax(0,1fr))}.heures{grid-template-columns:repeat(6,minmax(0,1fr))}}
@media (max-width:900px){.param-page{grid-template-columns:minmax(0,1fr)}.param-nav{position:static;flex-direction:row;flex-wrap:wrap}.param-nav a{min-height:44px;display:inline-flex;align-items:center}}
@media (max-width:760px){.ent-grille{grid-template-columns:1fr}.as-inv{grid-template-columns:1fr}.grid4{grid-template-columns:1fr 1fr}.heures{grid-template-columns:repeat(4,minmax(0,1fr))}.ent-kv{grid-template-columns:1fr}}
@media (pointer: coarse), (max-width: 900px){.ent-manques .link-btn{min-height:44px;align-items:center}}
/* ---- Courrier : alertes des plateformes, fil des fiches */
.tag .ic{width:12px;height:12px;vertical-align:-2px}
.tag.mail{background:#f0f9ff;border-color:#bae6fd;color:#075985}
.tag.mail.t-modification,.tag.mail.t-resultat{background:var(--warn-bg);border-color:#fed7aa;color:#9a3412}
.tag.mail.t-echange{background:#f5f3ff;border-color:#ddd6fe;color:#5b21b6}
.tag.suivi{background:var(--primary-soft);border-color:#bfcff5;color:var(--primary)}
.modal.large{width:min(880px,100%)}
.h-petit{font-size:12.5px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:0 0 6px}
.mail-meta{display:flex;flex-direction:column;gap:2px;overflow-wrap:anywhere}
.mail-texte{white-space:pre-wrap;overflow-wrap:anywhere;background:var(--surface2);border:1px solid var(--border);border-radius:var(--radius);padding:12px 14px;font-size:13px;max-height:46vh;overflow:auto;line-height:1.5}
.cands,.liste-fiches,.canal-derniers{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:6px}
.cands li{display:flex;gap:10px;align-items:center;border:1px solid var(--border);border-radius:var(--radius);padding:8px 10px}
.cands li .grow{min-width:0;overflow-wrap:anywhere}
.canal-derniers li{display:flex;gap:6px;flex-wrap:wrap;align-items:baseline;border-bottom:1px solid #edf1f5;padding:4px 0}
.canal-etapes{margin:0 0 8px;padding-left:22px;display:flex;flex-direction:column;gap:12px}
.canal-etapes>li::marker{font-weight:700;color:var(--primary2)}
.canal-adresse{gap:8px;margin-top:4px;flex-wrap:wrap}
.canal-adresse code{background:var(--primary-soft);border:1px solid #bfcff5;color:var(--primary);border-radius:6px;padding:6px 10px;font-size:13.5px;overflow-wrap:anywhere;user-select:all}
.canal-aide{margin-top:8px;font-size:13px}
.canal-aide summary{cursor:pointer;color:var(--primary2);font-weight:500}
.canal-aide h3{font-size:13px;margin:10px 0 2px}
.canal-aide p{margin:0;color:var(--muted)}
.param-liste{margin:0 0 10px;padding-left:20px;display:flex;flex-direction:column;gap:4px}
.suiveurs{list-style:none;padding:0;margin:0 0 8px;display:flex;flex-wrap:wrap;gap:6px}
.suiveur{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--border);background:var(--surface2);border-radius:99px;padding:2px 4px 2px 10px;font-size:13px;max-width:100%}
.suiveur>span:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.suiveur.externe{background:#fff}
.suiveur-x{border:0;background:none;cursor:pointer;color:var(--muted);display:inline-flex;align-items:center;justify-content:center;min-width:26px;min-height:26px;padding:4px;border-radius:99px}
.suiveur-x:hover{background:var(--border);color:var(--text)}
.suiveur-x .ic{width:13px;height:13px}
.suivi-ajout{gap:6px;flex-wrap:nowrap;margin-bottom:4px}
.suivi-ajout input{flex:1;min-width:0}
.msg-form{display:flex;flex-direction:column;gap:6px;margin-top:8px}
.fil{list-style:none;margin:12px 0 0;padding:0 0 0 14px;border-left:2px solid var(--border);display:flex;flex-direction:column;gap:10px}
.fil li{position:relative;font-size:13px;display:flex;flex-direction:column;gap:3px}
.fil li::before{content:'';position:absolute;left:-20px;top:5px;width:10px;height:10px;border-radius:50%;background:var(--surface);border:2px solid var(--border2)}
.fil li.fil-msg::before{border-color:var(--primary2);background:var(--primary-soft)}
.fil li.fil-mail::before{border-color:#38bdf8}
.fil li.fil-etat,.fil li.fil-suivi{flex-direction:row;flex-wrap:wrap;gap:6px;align-items:baseline;justify-content:space-between}
.fil-tete{display:flex;gap:8px;flex-wrap:wrap;align-items:baseline}
.fil-texte{white-space:pre-wrap;overflow-wrap:anywhere}
.fil-msg .fil-texte{background:var(--surface2);border:1px solid var(--border);border-radius:var(--radius);padding:8px 10px}
.fil-msg.entrant .fil-texte{background:#fff}
.fil .link-btn{align-self:flex-start}
.fil-mail .fil-texte{display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}
.liste-fiches .link-btn,table.courrier .link-btn{text-align:left}
.liste-fiches li{overflow-wrap:anywhere}
.canal-aide .hint{margin-top:8px}
@media (pointer: coarse), (max-width: 900px){.suiveur-x{min-width:44px;min-height:44px}}
@media (max-width: 760px){
  table.courrier thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
  table.courrier,table.courrier tbody{display:block}
  table.courrier tr{display:flex;flex-direction:column;gap:4px;padding:12px 0;border-bottom:1px solid var(--border)}
  table.courrier td{display:block;padding:0;border:0}
  .cands li{flex-direction:column;align-items:stretch}
}
.overlay.sans-anim,.drawer.sans-anim{animation:none!important}
@media (max-width: 760px){.modal footer .btn{flex:1 1 auto;justify-content:center}}

/* Cloche : notifications de modification */
.btn.cloche{position:relative;min-width:40px;min-height:36px;justify-content:center;padding:7px 10px}
.btn.cloche .badge{position:absolute;top:-7px;right:-8px;margin:0;min-width:20px;height:20px;font-size:12px}
.notif-panel{position:fixed;top:64px;right:16px;width:min(400px,calc(100vw - 32px));max-height:min(72vh,600px);overflow:auto;background:var(--surface);border:1px solid var(--border2);border-radius:12px;box-shadow:0 12px 32px rgba(16,24,40,.18);z-index:40}
.np-tete{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:12px 14px;border-bottom:1px solid var(--border);position:sticky;top:0;background:var(--surface)}
.np-tete h2{font-size:15px;margin:0}
.np-liste{list-style:none;margin:0;padding:4px 0}
.np-liste li button{display:flex;flex-direction:column;align-items:flex-start;gap:2px;width:100%;text-align:left;background:none;border:0;border-left:3px solid transparent;padding:10px 14px;cursor:pointer;min-height:44px}
.np-liste li button:hover{background:var(--surface2)}
.np-liste li.non-lue button{border-left-color:var(--primary2);background:var(--primary-soft)}
.np-liste li.non-lue .np-titre{font-weight:700}
.np-type{font-size:12px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.03em}
.np-type.t-modification,.np-type.t-rectificatif{color:var(--warn)}
.np-type.t-annulation{color:var(--danger)}
.np-type.t-resultat{color:var(--ok)}
.np-titre{font-size:13.5px;overflow-wrap:anywhere}
.np-texte{font-size:12.5px;color:var(--muted);overflow-wrap:anywhere}
.np-sous{font-size:12px;color:var(--muted)}
/* Rangement des e-mails : fiche proposée, doublon évité */
.as-bloc.suggestions{border-color:var(--exam-bd);background:var(--warn-bg)}
.as-bloc.doublons{border-color:var(--exam-bd);background:var(--warn-bg)}
.sug-fiche{font-size:13px;margin-top:4px}
.banner.ratt{margin:0 0 12px}
@media (max-width:640px){.notif-panel{top:56px;right:8px;width:calc(100vw - 16px)}}
/* Groupes d'entreprises (Dev) dans l'écran Entreprises */
.groupes-org h2{font-size:16px;margin:0}
.grp-liste{list-style:none;margin:12px 0 0;padding:0;display:flex;flex-direction:column;gap:6px}
.grp-ligne{display:flex;gap:10px;align-items:center;border:1px solid var(--border);border-radius:var(--radius);padding:10px 12px;flex-wrap:wrap}
.grp-ligne.actuel{border-color:var(--primary2);background:var(--primary-soft)}
.grp-ligne.inactive{opacity:.75}
.grp-ligne .grow{min-width:220px;flex:1}
.grp-form{border:1px solid var(--border);border-radius:var(--radius);padding:12px 14px}
/* Fiche : onglets Fiche, Étude technique, Documents */
.drawer{width:min(760px,100%)}
.tiroir-onglets{margin:0;padding:0 16px;flex:none;flex-wrap:nowrap;overflow-x:auto}
.tiroir-onglets .tab{min-height:44px;white-space:nowrap}
.tiroir-onglets .tab .spin{width:12px;height:12px}
.banner.travail{margin:0}
.pieces li{align-items:flex-start}
.coller{margin-top:10px}
.coller summary,.sec details summary{cursor:pointer;color:var(--primary2);font-size:13px;min-height:24px}
.maj-liste{list-style:none;margin:6px 0 0;padding:0;display:flex;flex-direction:column;gap:4px;font-size:13px}
.h-petit{font-size:13px;margin:0 0 6px}
.sols{display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));margin:8px 0}
.sol{border:1px solid var(--border);border-radius:var(--radius);padding:12px;display:flex;flex-direction:column;gap:6px;background:var(--surface)}
.sol.choisie{border-color:var(--prio);box-shadow:0 0 0 1px var(--prio) inset;background:#f6fdf8}
.sol-tete{display:flex;gap:8px;align-items:center}
.sol-tete h4{margin:0;font-size:14px;flex:1;min-width:0}
.sol-id{font-weight:700;color:var(--primary2);background:var(--primary-soft);border-radius:6px;padding:2px 7px;font-size:12px}
.sol p{margin:0;font-size:13px}
.sol-kv{font-size:12.5px;margin:0}
.sol-grille{display:grid;gap:6px;grid-template-columns:1fr 1fr;font-size:12.5px;margin-top:6px}
.sol-l ul{margin:2px 0 0;padding-left:18px}
.chat{list-style:none;margin:0 0 10px;padding:0;display:flex;flex-direction:column;gap:8px}
.chat li{border:1px solid var(--border);border-radius:var(--radius);padding:8px 10px;max-width:92%}
.chat li.moi{align-self:flex-end;background:var(--primary-soft);border-color:#c7d4f5}
.chat li.claude{align-self:flex-start;background:var(--surface2)}
.chat-texte{font-size:13px;overflow-wrap:anywhere}
.chat-texte p,.chat-texte ul{margin:4px 0}
.mat-wrap{max-height:460px;overflow:auto}
table.materiel{font-size:12.5px;min-width:860px}
table.materiel th{position:sticky;top:0;background:var(--surface2);z-index:1}
table.materiel td{padding:3px 4px;vertical-align:top}
table.materiel input,table.materiel select{width:100%;min-width:60px;min-height:30px;padding:4px 6px;border:1px solid var(--border);border-radius:5px;font-size:12.5px;background:var(--surface)}
table.materiel td:nth-child(2) input{min-width:190px}
table.materiel td:nth-child(3) input{width:64px;min-width:64px}
table.materiel tr.verifie td{background:#f3fbf5}
table.materiel tr.mat-groupe th{background:var(--primary-soft);text-align:left;font-size:12px;position:static}
.mat-ok{white-space:nowrap;text-align:center}
.mat-ok .check{min-height:30px}
.etapes-mem{list-style:none;padding:0;margin:0 0 10px;display:flex;flex-direction:column;gap:4px;font-size:13px}
.etapes-mem li.ok{color:var(--ok)}
.doc-choix{display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}
.doc-carte{border:1px solid var(--border);border-radius:var(--radius);padding:12px;display:flex;flex-direction:column;gap:6px;align-items:flex-start}
.docs-liste li{flex-wrap:wrap}
.trame-fichier{gap:10px;align-items:center;border:1px solid var(--border);border-radius:var(--radius);padding:10px 12px;flex-wrap:wrap}
.trame-plan{margin:6px 0 0;padding-left:20px;font-size:13px}
.trame-plan li.n2{margin-left:16px}.trame-plan li.n3{margin-left:32px}
.champs-trame{font-size:12.5px}
@media (max-width:640px){.sol-grille{grid-template-columns:1fr}.tiroir-onglets{padding:0 8px}.chat li{max-width:100%}}
table.materiel .check input{width:18px;height:18px;min-height:0}
.drawer header h2{min-height:24px}
@media (max-width:900px){.btn.cloche{min-width:44px;min-height:44px}}
@media (max-width:640px){table.materiel input,table.materiel select{min-height:44px}}
/* Paramètres : garde anti-intrusion */
.secu-n{font-size:22px;font-weight:700}
.secu-form{gap:8px;align-items:flex-end;flex-wrap:wrap;margin:10px 0}
.secu-form label{display:flex;flex-direction:column;gap:4px;font-size:13px}
.secu-ev tr.secu-ban td{background:var(--danger-bg)}
.secu-detail{overflow-wrap:anywhere;max-width:340px}
.secu-form input,.secu-form select{min-height:36px;padding:6px 10px;border:1px solid var(--border2);border-radius:var(--rayon-bouton);background:var(--surface)}
@media (max-width:640px){.secu-form input,.secu-form select{min-height:44px}}
/* Équipe : avatars */
.avatar{display:inline-flex;align-items:center;justify-content:center;flex:none;width:32px;height:32px;border-radius:50%;color:#fff;font-weight:600;font-size:12.5px;object-fit:cover;background:var(--primary2);letter-spacing:.02em}
.avatar.xs{width:24px;height:24px;font-size:12px;letter-spacing:0}
.avatar.sm{width:28px;height:28px;font-size:12px}
.avatar.xl{width:72px;height:72px;font-size:24px}
img.avatar{background:var(--surface2)}
.side-foot .user{display:flex;gap:8px;align-items:center}
.pris-par{display:flex;align-items:center;gap:5px;margin-top:5px;font-size:12px;color:var(--muted)}
/* Prise de la fiche, en haut du tiroir */
.prise{display:flex;gap:12px;align-items:center;padding:10px 20px;border-bottom:1px solid var(--border);background:var(--surface2);flex-wrap:wrap;flex:none}
.prise > .ic{width:22px;height:22px;color:var(--muted)}
.prise.libre{background:var(--primary-soft)}
.prise.moi{background:#f0fdf4}
.prise.autre{background:var(--warn-bg)}
.prise .grow{flex:1;min-width:200px}
.prise-qui{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.prise-actions{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.prise-choix select{min-height:32px;padding:4px 8px;border:1px solid var(--border2);border-radius:var(--rayon-bouton);background:var(--surface);max-width:220px}
.prise-collab{list-style:none;margin:6px 0 0;padding:0;display:flex;gap:6px;flex-wrap:wrap}
.prise-collab li{display:inline-flex;align-items:center;gap:5px;border:1px solid var(--border);border-radius:99px;padding:2px 4px 2px 3px;background:var(--surface);font-size:12.5px}
.btn-ic{border:0;background:none;cursor:pointer;padding:2px;display:inline-flex;border-radius:50%;color:var(--muted)}
.btn-ic:hover{background:var(--surface2);color:var(--danger)}
.btn-ic .ic{width:14px;height:14px}
.tag.ok-tag{background:var(--prio-bg);border-color:var(--prio-bd);color:var(--prio)}
.tag.bad-tag{background:var(--danger-bg);border-color:#fca5a5;color:var(--danger)}
.pastille{display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--danger);vertical-align:2px}
@media (max-width:640px){.prise{padding:10px 12px}.prise-choix select{min-height:44px}.btn-ic{padding:8px}}
/* Onglet Acheteur : échanges et vérification des domaines */
.echanges{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
.ech{border:1px solid var(--border);border-radius:var(--radius);padding:10px 12px;display:flex;flex-direction:column;gap:6px;background:var(--surface)}
.ech.env{border-left:3px solid var(--primary2)}
.ech.rec{border-left:3px solid var(--serie-3)}
.ech-tete{display:flex;gap:8px;align-items:flex-start}
.ech-ic{display:inline-flex;width:28px;height:28px;border-radius:50%;background:var(--surface2);align-items:center;justify-content:center;flex:none}
.ech-objet{font-weight:600;font-size:13.5px}
.ech-texte{white-space:pre-wrap;font-size:13px;overflow-wrap:anywhere;max-height:320px;overflow:auto;background:var(--surface2);border-radius:6px;padding:8px 10px;margin-top:4px}
.ech-res{display:flex;gap:6px;align-items:center;flex-wrap:wrap;color:var(--text)}
.ech-pj{gap:6px;flex-wrap:wrap}
.verif{display:flex;gap:10px;border-radius:var(--radius);padding:10px 12px;border:1px solid}
.verif > .ic{width:20px;height:20px;margin-top:1px}
.verif.warn{background:var(--warn-bg);border-color:#fed7aa;color:#7c2d12}
.verif.bad{background:var(--danger-bg);border-color:#fca5a5;color:#7f1d1d}
.verif .grow{flex:1;min-width:0}
.verif-q{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:8px}
.verif-q span{font-weight:600}
.sugg{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin-top:-4px}
.ach-pieces{border:1px solid var(--border);border-radius:var(--radius);padding:8px 12px;display:flex;flex-direction:column;gap:2px}
.ach-pieces legend{font-size:13px;font-weight:600;padding:0 4px}
.pj-ligne{display:flex;align-items:center;justify-content:space-between;gap:8px}
.pj-ligne .check{min-width:0;overflow-wrap:anywhere}
.pj-depot{display:flex;align-items:center;gap:8px;flex-wrap:wrap;border:1px dashed var(--border2);border-radius:var(--radius);padding:8px 10px;margin:4px 0;color:var(--muted)}
.ach-pieces.survol{border-color:var(--primary2);background:var(--primary-soft)}
.ach-pieces.survol .pj-depot{border-color:var(--primary2)}
.domaines li{align-items:center;flex-wrap:wrap}
.tag.ok{background:#f0fdf4;border-color:#bbf7d0;color:var(--ok);display:inline-flex;align-items:center;gap:4px}
.tag.ok .ic{width:13px;height:13px}
/* Dépôt de l'offre en ligne */
.sec.depot.oblig{border:1px solid #fed7aa;background:var(--warn-bg);border-radius:var(--radius);padding:12px 14px}
.depot-tete{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:10px}
.depot-tete h3{margin:0}
.depot-cta{display:flex;flex-direction:column;align-items:flex-start;gap:6px}
.btn.lg{font-size:15.5px;padding:12px 22px;min-height:48px;border-radius:calc(var(--rayon-bouton) + 2px)}
.btn.lg .ic{width:19px;height:19px}
.depot-raison{margin:8px 0 0}
.depot-compte{margin:8px 0 0}
.depot-pied{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-top:10px;padding-top:8px;border-top:1px dashed var(--border)}
.depot-lien-d{flex:1;min-width:220px;font-size:13px}
.depot-lien-d summary{cursor:pointer;color:var(--muted);width:max-content;max-width:100%}
.depot-lien{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:6px}
.depot-lien label{flex:1;min-width:200px}
.depot-lien input{padding:5px 8px;font-size:13px}
.depot-lien .form-err{flex-basis:100%}
.depot-bandeau{align-items:center;flex-wrap:wrap;margin:0}
.depot-bandeau .btn{flex:none}
a.btn{text-decoration:none}
/* Profil */
.profil-photo{display:flex;gap:14px;align-items:center}
.profil-ent{border:1px solid var(--border);border-radius:var(--radius);padding:10px 12px;display:grid;gap:10px}
.profil-ent legend{font-weight:600;padding:0 4px}
.metier-ajout{border-top:1px solid var(--border);padding-top:8px;display:grid;gap:4px}
.metier-champs{display:grid;grid-template-columns:minmax(140px,1fr) minmax(200px,2fr) auto;gap:8px;align-items:end}
.metier-champs label{display:flex;flex-direction:column;gap:4px;font-size:13px;font-weight:500}
@media (max-width:640px){.metier-champs{grid-template-columns:1fr}.metier-champs .btn{justify-self:start}}
/* Statistiques de l'équipe */
.stats-equipe .tabs{margin:0}
.eq-faits{margin:0 0 10px;padding-left:18px}
.eq-nom{display:inline-flex;gap:6px;align-items:center}
.eq-table th[scope=row]{text-align:left;font-weight:500;min-width:170px}
.barre-eq{display:flex;height:6px;border-radius:3px;overflow:hidden;background:var(--grille);margin-top:5px;max-width:220px}
.barre-eq .seg,.legende-eq .seg{display:block;height:100%}
.seg.g{background:#16a34a}.seg.p{background:#dc2626}.seg.a{background:#2563eb}.seg.n{background:#94a3b8}.seg.c{background:#cbd5e1}
.legende-eq{display:flex;gap:14px;flex-wrap:wrap;margin:10px 0 6px;color:var(--muted)}
.legende-eq span{display:inline-flex;gap:5px;align-items:center}
.legende-eq i.seg{width:12px;height:8px;border-radius:2px;display:inline-block}
.form-grid label.check{flex-direction:row;align-items:center;font-weight:400;color:var(--text)}
.profil-ent .as-metiers{flex-direction:row;flex-wrap:wrap;gap:6px 18px}
.profil-ent .check input,.ach-pieces .check input{width:18px;height:18px;min-height:0;flex:none}
.ech-tete{flex-wrap:wrap}
.ech-tete .grow{min-width:160px}
@media (pointer:coarse){.pj-depot > span.small{display:none}}
/* signatures des e-mails aux acheteurs */
.sig-balises{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.sig-balises .chip{cursor:pointer;font:inherit;font-size:12.5px;color:var(--text);padding:3px 10px}
.sig-balises .chip:hover{border-color:var(--primary);color:var(--primary)}
.sig-form textarea{font-family:inherit;line-height:1.45}
.sig-options{display:flex;flex-wrap:wrap;align-items:center;gap:4px 14px}
.sig-apercu{border:1px solid var(--border);border-radius:var(--radius,10px);background:var(--surface2);padding:10px 12px}
.sig-apercu-tete{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:8px}
.sig-apercu-tete select{max-width:60%;width:auto}
.sig-mail{background:var(--surface);border-radius:8px;padding:12px 14px;font-size:14px}
.sig-mail p{margin:0 0 8px}
.sig-rendu img{display:block;max-width:180px;height:auto;margin:0 0 6px}
.sig-texte{white-space:pre-wrap;overflow-wrap:anywhere;font-size:13px;color:var(--text)}
.sig-choix{display:grid;gap:6px}
.sig-choix label{max-width:340px}
.sig-envoi{border-left:3px solid var(--border);padding:4px 0 4px 10px}
.param-aide{margin:12px 0 4px}
.param-aide summary{cursor:pointer;font-weight:600;font-size:13.5px;padding:4px 0}
.param-aide[open] summary{margin-bottom:6px}
@media (pointer: coarse), (max-width: 900px){
  .sig-balises .chip{min-height:44px;padding:0 14px}
}
.claude-liens{display:flex;flex-wrap:wrap;gap:8px;margin:4px 0 8px}
/* prise en main : accueil, première configuration, visite guidée */
.accueil-bg{z-index:70}
.modal.accueil{width:min(580px,100%)}
.accueil-corps{padding:24px 24px 8px;display:flex;flex-direction:column;gap:12px}
.accueil-corps h2{font-size:20px;margin:0;line-height:1.25}
.accueil-corps p{margin:0}
.accueil-icone{width:44px;height:44px;border-radius:50%;background:var(--primary-soft);color:var(--primary);display:grid;place-items:center}
.accueil-icone svg{width:22px;height:22px}
.accueil-icone.ok{background:var(--prio-bg);color:var(--ok)}
.accueil-plan{margin:4px 0 0;padding:0;list-style:none;counter-reset:pas;display:flex;flex-direction:column;gap:8px}
.accueil-plan li{counter-increment:pas;display:grid;grid-template-columns:28px 1fr;column-gap:10px;align-items:start;border:1px solid var(--border);border-radius:var(--radius);padding:10px 12px}
.accueil-plan li::before{content:counter(pas);grid-row:span 2;width:24px;height:24px;border-radius:50%;background:var(--primary);color:#fff;font-weight:700;font-size:13px;display:grid;place-items:center}
.accueil-plan span{color:var(--muted);font-size:13.5px}
.modal.accueil header{gap:12px}
.accueil-pas{display:flex;gap:6px;align-items:center}
.accueil-pas i,.visite-points i{width:8px;height:8px;border-radius:50%;background:var(--border2);display:block}
.accueil-pas i.fait,.visite-points i.fait{background:var(--primary-soft);box-shadow:inset 0 0 0 1px var(--primary)}
.accueil-pas i.actif,.visite-points i.actif{background:var(--primary);width:18px;border-radius:99px}
.accueil-liste{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
.accueil-liste li{display:flex;align-items:center;gap:10px;border:1px solid var(--border);border-radius:var(--radius);padding:8px 10px;font-size:14px}
.accueil-liste li.ok{color:var(--muted)}
.accueil-etat{display:grid;place-items:center;width:22px;height:22px;flex:none}
.accueil-liste li.ok .accueil-etat{color:var(--ok)}
.accueil-liste li.afaire .accueil-etat{color:var(--warn)}
.accueil-etat svg{width:18px;height:18px}
.accueil-ent h3{font-size:14.5px;margin:4px 0 8px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.accueil-metiers{display:flex;flex-wrap:wrap;gap:6px 16px;border:1px solid var(--border);border-radius:var(--radius);padding:8px 12px}
.accueil-metiers legend{font-size:13px;color:var(--muted);padding:0 4px}
.accueil-touches{margin:0;padding-left:18px}
.accueil-actions{gap:8px;flex-wrap:wrap}
.accueil-reprise{display:inline-flex;gap:2px}
.accueil-reprise .btn{border-color:var(--primary);color:var(--primary)}
.accueil-repere{outline:3px solid var(--focus);outline-offset:4px;border-radius:var(--radius);transition:outline-color .3s}
.visite{position:fixed;inset:0;z-index:80}
.visite-voile{position:absolute;inset:0}
.visite-voile.plein{background:rgba(15,23,42,.55)}
.visite-halo{position:fixed;border-radius:10px;box-shadow:0 0 0 9999px rgba(15,23,42,.55);outline:3px solid #93b4ff;pointer-events:none;transition:left .25s ease,top .25s ease,width .25s ease,height .25s ease}
.visite-bulle{position:fixed;width:min(380px,calc(100vw - 16px));background:var(--surface);color:var(--text);border-radius:12px;box-shadow:0 18px 48px rgba(0,0,0,.3);padding:14px 18px 14px;display:flex;flex-direction:column;gap:8px}
.visite-bulle.centre{left:50%!important;top:50%!important;transform:translate(-50%,-50%)}
.visite-bulle.mobile{left:8px!important;right:8px;bottom:8px;top:auto!important;width:auto;transform:none;max-height:55vh;overflow:auto}
.visite-tete{display:flex;align-items:center;justify-content:space-between;gap:8px}
.visite-n{font-size:12.5px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}
.visite-bulle h2{font-size:17px;margin:0}
.visite-bulle p{margin:0;font-size:14px;line-height:1.5}
.visite-points{display:flex;gap:5px;flex-wrap:wrap}
.visite-bulle footer{display:flex;gap:8px;align-items:center;margin-top:4px}
@media (prefers-reduced-motion: reduce){.visite-halo{transition:none}}
.modal.accueil.suite{animation:none}
.accueil-faits{margin-top:8px}
.accueil-faits summary{cursor:pointer;font-size:13.5px;color:var(--muted);padding:6px 0;min-height:32px}
.accueil-liste li > .grow{flex:1 1 auto;min-width:0}
.accueil-liste li .btn{flex:none}
.modal.accueil footer .grow,.visite-bulle footer .grow,.modal.accueil header .grow{flex:1 1 auto}
@media (max-width: 760px){.modal.accueil footer .grow{display:none}}
.accueil-chapitres{display:flex;flex-wrap:wrap;gap:4px 6px;margin-top:6px;grid-column:2}
.accueil-chapitres .chip{color:var(--text);background:var(--surface2)}
.accueil-parcours{margin:0;font-size:14px}
.accueil-chap-liste{margin:8px 0 0;padding-left:22px;display:flex;flex-direction:column;gap:4px}
.accueil-chap-btns{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:10px}
.visite-chap{font-size:12.5px;font-weight:600;color:var(--primary)}
.visite-barre{position:relative;height:6px;border-radius:99px;background:var(--surface2);box-shadow:inset 0 0 0 1px var(--border);overflow:hidden}
.visite-barre i{position:absolute;left:0;top:0;bottom:0;background:var(--primary);border-radius:99px;transition:width .25s ease}
.visite-barre b{position:absolute;top:0;bottom:0;width:2px;margin-left:-1px;background:var(--surface)}
@media (prefers-reduced-motion: reduce){.visite-barre i{transition:none}}
