/* ═══════════════════════════════════════════════════════════════════
   donna — style.css  (cleané)
   ───────────────────────────────────────────────────────────────────
   CLEANUP appliqué (one-shot) :
   ─ Migration z-index 100+ → tokens (--z-sticky/--z-fixed/--z-overlay/
     --z-modal/--z-toast). Les anciennes valeurs sont en commentaire à côté
     pour git blame. Aucun changement de comportement (les calc() préservent
     l'ordre de stratification original).
   ─ !important conservés : ils gagnent souvent contre des règles plus
     spécifiques de shell-v2.css. Pas d'audit individuel possible sans test
     visuel — ne pas supprimer en bloc.
   ─ Archéo v3xx-v4xx commentaires : conservés tels quels. Voir CHANGELOG
     pour la liste à valider.
   ─══════════════════════════════════════════════════════════════════ */

:root{--bg:#0d0f14;--surfa
  /* Filter btn next to notif bell */
  .mobile-filter-btn { order: 10; margin-left: auto; }
  .header-actions { order: 11; margin-left: 0 !important; }
  #header-ctx-btns { order: 5; }
  #gs-wrap { order: 3; }
  .logo-area { order: 1; }
ce:#141720;--s2:#1c2030;--border:#252a3a;--text:#e8ecf5;--muted:#5c6480;--accent:#7c6af7;--chaud:#ff4d6d;--tiede:#f7c948;--froid:#4da6ff;--green:#3dffa0}html{background:#0d0f14}*{box-sizing:border-box;margin:0;padding:0}header::-webkit-scrollbar{display:none}body{font-family:'Inter',sans-serif;background:#0d0f14;color:var(--text);min-height:100vh;overflow-x:hidden}body::before{content:'';position:fixed;inset:0;background-image:linear-gradient(rgba(124,106,247,.03) 1px,transparent 1px),linear-gradient(90deg,rgba(124,106,247,.03) 1px,transparent 1px);background-size:40px 40px;pointer-events:none;z-index:0}header{position:fixed;top:0;left:0;right:0;z-index: var(--z-fixed) /* was 200 */;background:rgba(13,15,20,.88) !important;overflow:visible;padding:20px 62px 16px 24px;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:12px;flex-wrap:nowrap;overflow-x:auto;overflow-y:visible;scrollbar-width:none;background:linear-gradient(180deg,rgba(124,106,247,.06) 0%,transparent 100%)}.logo-area h1{font-family:'Plus Jakarta Sans',sans-serif;font-size:22px;font-weight:800;letter-spacing:-.5px;background:linear-gradient(135deg,#fff 0%,#7c6af7 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.logo-area p{font-size:10px;color:var(--muted);margin-top:2px;letter-spacing:2px;text-transform:uppercase}.pulse{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--green);animation:pulse 2s infinite;margin-right:5px;vertical-align:middle}@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(61,255,160,.5)}70%{box-shadow:0 0 0 7px rgba(61,255,160,0)}100%{box-shadow:0 0 0 0 rgba(61,255,160,0))}}.header-actions{display:flex;gap:6px;align-items:center;margin-left:auto;flex-shrink:0}.add-btn{display:flex;align-items:center;gap:6px;padding:9px 16px;background:var(--accent);border:none;border-radius:10px;color:#fff;font-family:'Inter',sans-serif;font-size:13px;font-weight:600;cursor:pointer;transition:background .15s,transform .15s;white-space:nowrap}.add-btn:hover{background:#6a5aed;transform:translateY(-1px)}.rappr-btn{display:flex;align-items:center;gap:6px;padding:9px 16px;background:linear-gradient(135deg,#ff4d6d,#f7c948);border:none;border-radius:10px;color:#0d0f14;font-family:'Inter',sans-serif;font-size:13px;font-weight:700;cursor:pointer;transition:opacity .15s,transform .15s;white-space:nowrap}.rappr-btn:hover{opacity:.9;transform:translateY(-1px)}.notif-btn{position:relative;background:var(--s2);border:1px solid var(--border);border-radius:10px;color:var(--text);width:38px;height:38px;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:17px;transition:border-color .2s;flex-shrink:0}.notif-btn:hover{border-color:var(--accent)}.notif-btn.has-alerts{border-color:var(--chaud);animation:bellShake .6s ease}@keyframes bellShake{0%,100%{transform:rotate(0)}20%{transform:rotate(-12deg)}40%{transform:rotate(12deg)}60%{transform:rotate(-8deg)}80%{transform:rotate(8deg)}}.notif-badge{position:absolute;top:-6px;right:-6px;background:var(--chaud);color:#fff;border-radius:99px;font-size:10px;font-weight:700;min-width:18px;height:18px;display:flex;align-items:center;justify-content:center;padding:0 4px;font-family:'Plus Jakarta Sans',sans-serif;border:2px solid var(--bg)}.mobile-filter-btn{display:none;align-items:center;gap:6px;padding:8px 14px;background:var(--s2);border:1px solid var(--border);border-radius:10px;color:var(--text);font-family:'Inter',sans-serif;font-size:13px;font-weight:500;cursor:pointer;white-space:nowrap}.main{position:relative;display:grid;grid-template-columns:280px 1fr;min-height:calc(100vh - 80px)}.sidebar-close-row{display:none;align-items:center;justify-content:space-between;padding:4px 0 16px;border-bottom:1px solid var(--border);margin-bottom:4px}.sidebar{border-right:1px solid var(--border);padding:20px;display:flex;flex-direction:column;gap:20px;background:var(--surface);overflow-y:auto;max-height:calc(100vh - 80px);position:sticky;top:0}.sidebar-section h3{font-family:'Plus Jakarta Sans',sans-serif;font-size:10px;letter-spacing:2px;text-transform:uppercase;color:var(--muted);margin-bottom:10px;padding-bottom:7px;border-bottom:1px solid var(--border)}.search-wrap{position:relative}.search-wrap input{width:100%;background:var(--s2);border:1px solid var(--border);border-radius:8px;color:var(--text);padding:9px 12px 9px 34px;font-family:'Inter',sans-serif;font-size:12px;outline:none;transition:border-color .2s}.search-wrap input:focus{border-color:var(--accent)}.search-wrap input::placeholder{color:var(--muted)}.search-icon{position:absolute;left:10px;top:50%;transform:translateY(-50%);color:var(--muted);font-size:13px}.statut-list{display:flex;flex-direction:column;gap:7px}.statut-item{display:flex;align-items:center;justify-content:space-between;padding:9px 12px;border-radius:9px;border:1px solid transparent;cursor:pointer;transition:all .2s;background:var(--s2)}.statut-item:hover{border-color:var(--border)}.statut-item.active{border-color:currentColor}.statut-item.inactive{opacity:.4}.statut-dot{width:8px;height:8px;border-radius:50%;margin-right:8px;flex-shrink:0}.statut-label{font-size:12px;font-weight:500;flex:1}.statut-count{font-family:'Plus Jakarta Sans',sans-serif;font-size:13px;font-weight:700}.chaud{color:var(--chaud)}.tiede{color:var(--tiede)}.froid{color:var(--froid)}.range-vals{display:flex;justify-content:space-between;font-size:11px;color:var(--accent);font-weight:600}.range-track{position:relative;height:6px;background:var(--border);border-radius:99px;margin:4px 0}.range-track input[type=range]{position:absolute;width:100%;height:100%;opacity:0;cursor:pointer;margin:0;top:0;left:0}.source-list{display:flex;flex-direction:column;gap:6px}.source-item{display:flex;align-items:center;gap:8px}.source-dot{width:7px;height:7px;border-radius:2px;flex-shrink:0}.source-name{font-size:11px;flex:1;color:var(--text)}.source-bar-mini{width:36px;height:3px;background:var(--border);border-radius:99px;overflow:hidden}.source-bar-mini-fill{height:100%;border-radius:99px}.source-cnt{font-size:11px;color:var(--muted)}.filter-pills{display:flex;flex-wrap:wrap;gap:5px}.pill{padding:4px 10px;border-radius:99px;border:1px solid var(--border);font-size:11px;cursor:pointer;transition:all .15s;background:transparent;color:var(--muted)}.pill:hover{color:var(--text);border-color:var(--muted)}.pill.active{background:var(--accent);border-color:var(--accent);color:#fff}.content{padding:20px 24px;display:flex;flex-direction:column;gap:16px;overflow:auto}.kpi-row{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.kpi-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:8px 10px;position:relative;overflow:hidden;transition:border-color .2s,transform .2s}.kpi-card:hover{border-color:var(--accent);transform:translateY(-2px)}.kpi-card::before{content:'';position:absolute;top:0;left:0;right:0;height:2px}.kpi-card.k1::before{background:linear-gradient(90deg,var(--chaud),transparent)}.kpi-card.k2::before{background:linear-gradient(90deg,var(--accent),transparent)}.kpi-lbl{font-size:10px;color:var(--muted);letter-spacing:1px;text-transform:uppercase;margin-bottom:6px}.kpi-val{font-family:'Plus Jakarta Sans',sans-serif;font-size:26px;font-weight:800;line-height:1}.kpi-icon{position:absolute;right:14px;top:14px;font-size:20px;opacity:.15}.ctrl-row{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px}.table-wrap{background:var(--surface);border:1px solid var(--border);border-radius:14px;overflow:hidden}table{width:100%;border-collapse:collapse}thead th{padding:9px 12px;text-align:left;font-size:10px;color:var(--muted);letter-spacing:1.2px;text-transform:uppercase;background:var(--s2);border-bottom:1px solid var(--border);cursor:pointer;user-select:none;white-space:nowrap}thead th:hover{color:var(--text)}tbody tr{border-bottom:1px solid rgba(37,42,58,.6);transition:background .1s;cursor:pointer}tbody tr:hover{background:var(--s2)}tbody tr:last-child{border-bottom:none}td{padding:10px 12px;font-size:12px;vertical-align:middle;max-width:180px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.badge{display:inline-flex;align-items:center;gap:4px;padding:3px 8px;border-radius:99px;font-size:10px;font-weight:600;white-space:nowrap}.badge-chaud{background:rgba(255,77,109,.15);color:var(--chaud);border:1px solid rgba(255,77,109,.3)}.badge-tiede{background:rgba(247,201,72,.15);color:var(--tiede);border:1px solid rgba(247,201,72,.3)}.badge-froid{background:rgba(77,166,255,.15);color:var(--froid);border:1px solid rgba(77,166,255,.3)}.badge-inconnu{background:rgba(92,100,128,.15);color:var(--muted);border:1px solid rgba(92,100,128,.3)}.fin-tag{padding:2px 6px;border-radius:4px;font-size:10px}.fin-verif{background:rgba(61,255,160,.1);color:var(--green);border:1px solid rgba(61,255,160,.2)}.fin-avert{background:rgba(247,201,72,.1);color:var(--tiede);border:1px solid rgba(247,201,72,.2)}.fin-other{background:rgba(124,106,247,.1);color:#a78bfa;border:1px solid rgba(124,106,247,.2)}.avatar{width:28px;height:28px;border-radius:7px;display:inline-flex;align-items:center;justify-content:center;font-family:'Plus Jakarta Sans',sans-serif;font-size:10px;font-weight:700;flex-shrink:0}.name-cell{display:flex;align-items:center;gap:9px}.name-main{font-size:12px;font-weight:500}.name-sub{font-size:10px;color:var(--muted);margin-top:1px}.budget-cell{font-family:'Plus Jakarta Sans',sans-serif;font-weight:600;font-size:12px}.la-cell{display:inline-flex;align-items:center;gap:5px;padding:3px 8px;border-radius:7px;border:1px solid transparent;cursor:pointer;transition:all .15s;position:relative}.la-cell:hover{border-color:var(--border);background:var(--s2)}.la-cell:hover .la-edit{opacity:1}.la-days{font-size:12px;font-weight:600}.la-date{font-size:10px;color:var(--muted)}.la-edit{font-size:10px;opacity:0;transition:opacity .15s}.la-input{position:absolute;opacity:0;pointer-events:none;width:1px;height:1px;top:0;left:0}.overlay{position:fixed;inset:0;background:rgba(0,0,0,.75);backdrop-filter:blur(4px);z-index: var(--z-overlay) /* was 10000 */;display:none;align-items:center;justify-content:center;padding:16px}.overlay.open{display:flex}@keyframes slideUp{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.modal{background:var(--surface);border:1px solid var(--border);border-radius:18px;width:560px;max-width:100%;max-height:90vh;overflow-y:auto;animation:slideUp .25s cubic-bezier(.4,0,.2,1)}.modal-head{padding:22px 22px 0;display:flex;align-items:flex-start;justify-content:space-between;gap:14px}.modal-av{width:48px;height:48px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-family:'Plus Jakarta Sans',sans-serif;font-size:17px;font-weight:700;flex-shrink:0}.modal-name{font-family:'Plus Jakarta Sans',sans-serif;font-size:18px;font-weight:800;line-height:1.1}.modal-meta{font-size:11px;color:var(--muted);margin-top:3px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}.close-btn{background:var(--s2);border:1px solid var(--border);border-radius:7px;color:var(--muted);width:30px;height:30px;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:15px;flex-shrink:0;transition:all .15s}.close-btn:hover{color:var(--text);background:var(--border)}.modal-body{padding:18px 22px 22px;display:flex;flex-direction:column;gap:14px}.edit-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.edit-field{display:flex;flex-direction:column;gap:5px;transition:border-color .2s}.edit-field.full{grid-column:1/-1}.ef-lbl{font-size:10px;color:var(--muted);letter-spacing:1px;text-transform:uppercase;font-weight:500}.ef-input,.ef-select,.ef-textarea{width:100%;background:var(--s2);border:1px solid var(--border);border-radius:8px;color:var(--text);font-family:'Inter',sans-serif;font-size:13px;outline:none;padding:9px 12px;transition:border-color .2s}.ef-input:focus,.ef-select:focus,.ef-textarea:focus{border-color:var(--accent)}.ef-input::placeholder,.ef-textarea::placeholder{color:var(--muted)}.ef-select{cursor:pointer;appearance:none}.ef-select option{background:var(--s2)}.ef-textarea{resize:vertical;min-height:60px;line-height:1.5}.modal-actions{display:flex;gap:10px;padding-top:4px}.mbtn{flex:1;padding:10px;border-radius:9px;border:1px solid var(--border);background:var(--s2);color:var(--text);font-family:'Inter',sans-serif;font-size:12px;font-weight:500;cursor:pointer;transition:all .15s;text-align:center}.mbtn:hover{background:var(--border)}.mbtn.primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}.mbtn.primary:hover{background:#6a5aed}.contact-row{display:flex;gap:8px;flex-wrap:wrap}.contact-link{flex:1;min-width:120px;padding:9px 12px;border-radius:9px;border:1px solid var(--border);background:var(--s2);color:var(--text);font-family:'Inter',sans-serif;font-size:12px;cursor:pointer;transition:all .15s;text-align:center;text-decoration:none;display:flex;align-items:center;justify-content:center;gap:5px}.contact-link:hover{background:var(--border)}.form-modal{background:var(--surface);border:1px solid var(--border);border-radius:18px;width:580px;max-width:100%;max-height:90vh;overflow-y:auto;animation:slideUp .25s cubic-bezier(.4,0,.2,1)}.fm-head{padding:22px 22px 0;display:flex;align-items:center;justify-content:space-between}.fm-title{font-family:'Plus Jakarta Sans',sans-serif;font-size:17px;font-weight:700}.fm-sub{font-size:11px;color:var(--muted);margin-top:2px}.fm-body{padding:18px 22px 22px;display:flex;flex-direction:column;gap:13px}.fm-section{font-size:10px;color:var(--accent);letter-spacing:1.5px;text-transform:uppercase;font-weight:600}.fm-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}.fm-row.three{grid-template-columns:1fr 1fr 1fr}.fm-row.full{grid-template-columns:1fr}.fm-group{display:flex;flex-direction:column;gap:5px}.fm-lbl{font-size:10px;color:var(--muted);letter-spacing:1px;text-transform:uppercase;font-weight:500}.fm-input,.fm-select,.fm-textarea{background:var(--s2);border:1px solid var(--border);border-radius:8px;color:var(--text);padding:9px 12px;font-family:'Inter',sans-serif;font-size:13px;outline:none;transition:border-color .2s;width:100%}.fm-input:focus,.fm-select:focus,.fm-textarea:focus{border-color:var(--accent)}.fm-input::placeholder,.fm-textarea::placeholder{color:var(--muted)}.fm-select{appearance:none;cursor:pointer}.fm-select option{background:var(--s2)}.fm-textarea{resize:vertical;min-height:65px}.divider{height:1px;background:var(--border)}.req{color:var(--chaud);margin-left:1px}#form-error{color:var(--chaud);font-size:11px;text-align:center;display:none;margin-top:-4px}#toast{position:fixed;bottom:32px;left:50%;transform:translateX(-50%);z-index: var(--z-toast) /* was 99999 */;background:var(--text);border:none;color:var(--bg);padding:14px 22px;border-radius:10px;font-size:13px;font-weight:600;box-shadow:0 12px 40px rgba(0,0,0,.25),0 0 0 1px rgba(255,255,255,.06);transition:opacity .25s,transform .25s;opacity:0;pointer-events:none;letter-spacing:-.1px;white-space:nowrap;max-width:90vw;top:auto !important;right:auto !important}
/* Tous les toasts globaux : strict centre absolu, override systèmes concurrents */
#toast-host,#states-toasts{position:fixed !important;bottom:32px !important;left:50% !important;top:auto !important;right:auto !important;transform:translateX(-50%) !important;flex-direction:column !important;align-items:center !important}::-webkit-scrollbar{width:4px;height:4px}::-webkit-scrollbar-thumb{background:var(--border);border-radius:99px}.empty{text-align:center;padding:48px;color:var(--muted)}.empty-icon{font-size:36px;opacity:.3;margin-bottom:10px}.rappr-modal{background:var(--surface);border:1px solid var(--border);border-radius:18px;width:760px;max-width:100%;max-height:92vh;overflow-y:auto;animation:slideUp .25s cubic-bezier(.4,0,.2,1)}.apt-input{background:var(--bg);border:1px solid var(--border);border-radius:8px;color:var(--text);padding:9px 11px;font-family:'Inter',sans-serif;font-size:13px;outline:none;transition:border-color .2s;width:100%}.apt-input:focus{border-color:#ff4d6d}.apt-input::placeholder{color:var(--muted)}.rappr-results{display:flex;flex-direction:column;gap:10px}.rappr-summary{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.rappr-count{font-family:'Plus Jakarta Sans',sans-serif;font-size:22px;font-weight:800}.rappr-count-lbl{font-size:12px;color:var(--muted)}.match-score-legend{display:flex;gap:8px;margin-left:auto;font-size:10px;color:var(--muted);align-items:center;flex-wrap:wrap}.legend-dot{width:8px;height:8px;border-radius:50%;display:inline-block}.match-card{background:var(--s2);border:1px solid var(--border);border-radius:12px;padding:14px 16px;display:flex;align-items:center;gap:14px;transition:border-color .2s,transform .15s;cursor:pointer}.match-card:hover{border-color:var(--accent);transform:translateX(3px)}.match-av{width:40px;height:40px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-family:'Plus Jakarta Sans',sans-serif;font-size:14px;font-weight:700;flex-shrink:0}.match-info{flex:1;min-width:0}.match-name{font-family:'Plus Jakarta Sans',sans-serif;font-size:14px;font-weight:700}.match-detail{font-size:11px;color:var(--muted);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.match-tags{display:flex;gap:6px;flex-wrap:wrap;margin-top:5px}.match-tag{padding:2px 7px;border-radius:4px;font-size:10px;font-weight:500}.match-tag.ok{background:rgba(61,255,160,.12);color:var(--green);border:1px solid rgba(61,255,160,.25)}.match-tag.warn{background:rgba(247,201,72,.1);color:var(--tiede);border:1px solid rgba(247,201,72,.2)}.match-right{display:flex;flex-direction:column;align-items:flex-end;gap:6px;flex-shrink:0}.score-bar-wrap{display:flex;align-items:center;gap:7px}.score-num{font-family:'Plus Jakarta Sans',sans-serif;font-size:16px;font-weight:800}.score-bar{width:60px;height:5px;background:var(--border);border-radius:99px;overflow:hidden}.score-fill{height:100%;border-radius:99px}.match-contact{display:flex;gap:6px}.mc-btn{padding:5px 10px;border-radius:7px;border:1px solid var(--border);background:transparent;color:var(--muted);font-size:11px;cursor:pointer;transition:all .15s;text-decoration:none;display:flex;align-items:center;gap:4px;white-space:nowrap}.mc-btn:hover{background:var(--border);color:var(--text)}.no-match{text-align:center;padding:32px;color:var(--muted)}.no-match-icon{font-size:32px;opacity:.3;margin-bottom:8px}.apt-recap{background:linear-gradient(135deg,rgba(255,77,109,.07),rgba(247,201,72,.07));border:1px solid rgba(255,77,109,.2);border-radius:10px;padding:12px 16px;display:flex;gap:16px;flex-wrap:wrap;font-size:12px}.apt-recap-item{display:flex;flex-direction:column;gap:2px}.apt-recap-val{font-family:'Plus Jakarta Sans',sans-serif;font-weight:700;font-size:14px}.apt-suggestion{padding:9px 12px;font-size:12px;cursor:pointer;border-bottom:1px solid var(--border);color:var(--text);transition:background .1s}.apt-suggestion:last-child{border-bottom:none}.apt-suggestion:hover{background:var(--border)}.apt-suggestion strong{color:var(--accent)}.arr-badge{display:inline-flex;align-items:center;gap:5px;padding:4px 10px;border-radius:6px;font-size:11px;font-weight:600}.arr-badge.neutral{background:rgba(124,106,247,.1);color:var(--accent);border:1px solid rgba(124,106,247,.2)}.history-section{display:flex;flex-direction:column;gap:10px;margin-top:4px}.history-header{display:flex;align-items:center;justify-content:space-between}.history-title{font-size:11px;color:var(--muted);letter-spacing:1.5px;text-transform:uppercase;font-weight:600}.history-clear{background:none;border:none;color:var(--muted);font-size:11px;cursor:pointer;padding:3px 8px;border-radius:6px;transition:all .15s;font-family:'Inter',sans-serif}.history-clear:hover{color:var(--chaud);background:rgba(255,77,109,.08)}.history-list{display:flex;flex-direction:column;gap:7px}.history-card{background:var(--s2);border:1px solid var(--border);border-radius:10px;padding:12px 14px;display:flex;align-items:center;gap:12px;cursor:pointer;transition:border-color .2s,transform .15s}.history-card:hover{border-color:var(--accent);transform:translateX(2px)}.history-left{flex:1;min-width:0}.history-params{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:5px}.history-tag{padding:2px 8px;border-radius:4px;font-size:11px;font-weight:500;background:rgba(124,106,247,.1);color:var(--accent);border:1px solid rgba(124,106,247,.2)}.history-addr{font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.history-right{display:flex;flex-direction:column;align-items:flex-end;gap:3px;flex-shrink:0}.history-date{font-size:10px;color:var(--muted)}.history-matches{font-family:'Plus Jakarta Sans',sans-serif;font-size:13px;font-weight:700;color:var(--green)}.history-replay{padding:4px 10px;border-radius:6px;border:1px solid var(--border);background:transparent;color:var(--muted);font-size:11px;cursor:pointer;transition:all .15s;font-family:'Inter',sans-serif;white-space:nowrap}.history-replay:hover{color:var(--text);border-color:var(--muted)}.history-empty{text-align:center;padding:20px;color:var(--muted);font-size:12px}.notif-panel{background:var(--surface);border:1px solid var(--border);border-radius:18px;width:480px;max-width:100%;max-height:85vh;overflow-y:auto;animation:slideUp .25s cubic-bezier(.4,0,.2,1)}.notif-head{padding:22px 22px 0;display:flex;align-items:flex-start;justify-content:space-between;gap:14px}.notif-title{font-family:'Plus Jakarta Sans',sans-serif;font-size:18px;font-weight:800}.notif-sub{font-size:11px;color:var(--muted);margin-top:3px}.notif-body{padding:16px 22px 22px;display:flex;flex-direction:column;gap:10px}.notif-card{background:var(--s2);border:1px solid var(--border);border-radius:10px;padding:12px 14px;display:flex;align-items:center;gap:12px;cursor:pointer;transition:border-color .15s,transform .15s}.notif-card:hover{border-color:var(--accent);transform:translateX(3px)}.notif-card.warn{border-left:3px solid var(--tiede)}.notif-card.info{border-left:3px solid var(--froid)}.notif-info{flex:1;min-width:0}.notif-empty{text-align:center;padding:40px 32px;color:var(--muted)}.notif-section-title{font-size:10px;color:var(--accent);letter-spacing:1.5px;text-transform:uppercase;font-weight:600;padding:8px 0 6px;border-bottom:1px solid var(--border);margin-top:4px}.notif-card{background:var(--s2);border:1px solid var(--border);border-radius:9px;padding:9px 12px;display:flex;align-items:center;gap:8px;transition:border-color .15s}.notif-card:hover{border-color:var(--accent)}.notif-card-dot{font-size:12px;flex-shrink:0}.notif-card-info{flex:1;min-width:0;display:flex;align-items:baseline;gap:6px;overflow:hidden}.notif-card-label{font-size:12px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex-shrink:1}.notif-card-sub{font-size:10px;color:var(--muted);white-space:nowrap;flex-shrink:0}.notif-card-actions{display:flex;gap:5px;flex-shrink:0}.notif-card-dismiss{background:transparent;border:none;color:var(--muted);font-size:13px;cursor:pointer;padding:2px 4px;border-radius:5px;flex-shrink:0;transition:color .15s;line-height:1}.notif-card-dismiss:hover{color:var(--chaud)}.notif-card-btn{padding:4px 9px;border-radius:6px;border:1px solid var(--border);background:transparent;color:var(--muted);font-family:'Inter',sans-serif;font-size:10px;font-weight:500;cursor:pointer;transition:all .15s;white-space:nowrap}.notif-card-btn:hover{background:var(--border);color:var(--text)}.notif-card-btn.primary{background:rgba(124,106,247,.15);border-color:rgba(124,106,247,.35);color:var(--accent);font-weight:600}.notif-card-btn.primary:hover{background:rgba(124,106,247,.25)}body.no-scroll{overflow:hidden;touch-action:none}body.no-scroll .sidebar{touch-action:pan-y;overflow-y:auto}.sheet-handle{display:none;width:36px;height:4px;background:var(--border);border-radius:99px;margin:10px auto 0;cursor:grab}@media(max-width:900px){.main{grid-template-columns:1fr}.sidebar{position:fixed;inset:0;width:100%;z-index: calc(var(--z-overlay) + 1) /* was 10001 */;transform:translateX(-100%);transition:transform .3s cubic-bezier(.4,0,.2,1);overflow-y:scroll;-webkit-overflow-scrolling:touch;padding-top:16px;overscroll-behavior:contain;background:var(--bg)}.sidebar.open{transform:translateX(0)}.sidebar-close-row{display:flex}.sidebar-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.5);z-index: var(--z-overlay) /* was 10000 */}.sidebar-overlay.open{display:block}.mobile-filter-btn{display:flex}.content{padding:14px}/* col-hide removed */.overlay{padding:0;align-items:flex-end}.modal,.form-modal,.rappr-modal{border-radius:20px 20px 0 0;width:100%;max-width:100%;max-height:92vh;animation:slideUpMobile .3s cubic-bezier(.4,0,.2,1)}@keyframes slideUpMobile{from{transform:translateY(100%)}to{transform:translateY(0)}}.edit-grid{grid-template-columns:1fr 1fr}.sheet-handle{display:block}.fm-row{grid-template-columns:1fr 1fr}.fm-row.three{grid-template-columns:1fr 1fr}.kpi-row{grid-template-columns:1fr 1fr;gap:10px}}@media(max-width:600px){header{padding:11px 106px 11px 14px;gap:6px;overflow-x:visible !important}.logo-area{flex-shrink:0}.logo-area h1{font-size:16px}.logo-area p{display:none}.mobile-filter-btn{padding:7px 10px;font-size:12px;flex-shrink:0;white-space:nowrap}.header-actions{gap:6px;flex-shrink:0}.notif-btn{width:34px;height:34px;font-size:15px;flex-shrink:0}.add-btn{padding:7px 12px;font-size:16px;font-weight:700}.rappr-btn{padding:7px 12px;font-size:12px}.rappr-btn-txt{display:none}.kpi-row{gap:8px}.kpi-card{padding:11px 13px}.kpi-val{font-size:20px}.kpi-lbl{font-size:9px}.content{padding:10px}table{font-size:11px}td,th{padding:8px 9px}/* col5-hide removed */.name-main{font-size:11px}.name-sub{font-size:9px}.avatar{width:24px;height:24px;font-size:9px;border-radius:6px}.edit-grid{grid-template-columns:1fr}.edit-field.full{grid-column:1}.fm-row,.fm-row.three{grid-template-columns:1fr}.modal-actions{flex-direction:column}.rappr-summary{flex-direction:column;gap:8px;align-items:flex-start}.match-score-legend{margin-left:0}.match-card{padding:11px 12px;gap:8px;flex-wrap:wrap}.history-card{flex-direction:column;align-items:flex-start;gap:8px}.history-right{flex-direction:row;align-items:center;gap:10px;width:100%}.history-date{flex:1}.la-date{display:none}.contact-row{flex-direction:column}.notif-panel{width:100%;border-radius:20px 20px 0 0;max-height:88vh;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-y:contain}#gs-wrap{display:none !important}#gs-wrap.show-on-dashboard{display:flex !important;flex:1 1 auto !important;max-width:220px !important;min-width:0 !important;margin-left:0 !important}#header-ctx-btns button{padding:0 10px !important;font-size:12px !important;height:36px !important;gap:4px !important}.import-biens-txt{display:none !important}#btn-import-biens{padding:0 10px !important}input[type="date"],.fm-input[type="date"],.ef-input[type="date"]{width:100% !important;min-width:0 !important;max-width:100% !important;box-sizing:border-box !important;-webkit-appearance:none !important;font-size:16px !important}}.ca-content{padding:20px 24px;display:flex;flex-direction:column;gap:16px}.ca-kpi-row{display:grid;grid-template-columns:repeat(5,1fr);gap:8px}.ca-filters{display:flex;align-items:center;gap:8px;flex-wrap:wrap;row-gap:8px}.ca-content .table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;position:relative}.mandat-progress{display:flex;align-items:center;gap:3px;margin-top:4px}.mp-step{flex:1;height:3px;border-radius:99px;background:var(--border);transition:background .2s;position:relative}.mp-step.done{background:var(--green)}.mp-step.current{background:var(--accent)}.mp-step.late{background:var(--chaud)}.mp-dot{width:7px;height:7px;border-radius:50%;background:var(--border);flex-shrink:0;transition:background .2s;cursor:default}.mp-dot.done{background:var(--green)}.mp-dot.current{background:var(--accent)}.mp-dot.late{background:var(--chaud)}.mp-tooltip{position:fixed;background:var(--s2);border:1px solid var(--border);border-radius:8px;padding:6px 10px;font-size:11px;color:var(--text);pointer-events:none;z-index: var(--z-toast) /* was 9999 */;opacity:0;transition:opacity .15s;white-space:nowrap;box-shadow:0 4px 12px rgba(0,0,0,.3)}.mp-tooltip.show{opacity:1}.mp-dot{cursor:default}.badge-aa{background:rgba(61,255,160,.15);color:var(--green);border:1px solid rgba(61,255,160,.3)}.badge-sc{background:rgba(124,106,247,.15);color:var(--accent);border:1px solid rgba(124,106,247,.3)}.badge-o{background:rgba(247,201,72,.15);color:var(--tiede);border:1px solid rgba(247,201,72,.3)}.badge-m{background:rgba(92,100,128,.15);color:var(--muted);border:1px solid rgba(92,100,128,.3)}@media(max-width:900px){.ca-kpi-row{grid-template-columns:1fr 1fr;gap:10px}.ca-content{padding:14px}.ca-filters{flex-wrap:wrap;gap:8px}.notif-panel{width:100%;border-radius:20px 20px 0 0;max-height:88vh;overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-y:contain}}@media(max-width:600px){.col-item{padding:8px 10px;gap:8px}.col-name{font-size:12px}.ca-content{padding:10px}.ca-kpi-row{grid-template-columns:1fr 1fr;gap:8px}.ca-kpi-row .kpi-card{padding:11px 12px}.ca-kpi-row .kpi-val{font-size:16px}.ca-kpi-row .kpi-lbl{font-size:9px}.ca-kpi-row .kpi-icon{font-size:14px}.ca-filters{gap:6px}.ca-filters .filter-pills{flex-wrap:wrap}}.col-item{display:flex;align-items:center;gap:10px;padding:10px 12px;background:var(--s2);border:1px solid var(--border);border-radius:9px;cursor:grab;transition:border-color .15s;user-select:none}.col-item:active{cursor:grabbing}.col-item.dragging{opacity:.4;border-color:var(--accent)}.col-item.drag-over{border-color:var(--accent);border-style:dashed}.col-item.hidden-col{opacity:.4}.col-name{flex:1;font-size:13px;font-weight:500}.col-toggle{width:32px;height:18px;border-radius:99px;border:none;cursor:pointer;transition:background .2s;flex-shrink:0;position:relative}.col-toggle.on{background:var(--accent)}.col-toggle.off{background:var(--border)}.col-toggle::after{content:'';position:absolute;top:2px;width:14px;height:14px;border-radius:50%;background:#fff;transition:left .2s}.col-toggle.on::after{left:16px}.col-toggle.off::after{left:2px}.col-arrow{background:var(--s2);border:1px solid var(--border);border-radius:5px;color:var(--muted);width:24px;height:24px;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:12px;transition:all .15s;padding:0}.col-arrow:hover:not([disabled]){color:var(--text);border-color:var(--accent)}.col-arrow[disabled]{opacity:.25;cursor:default}.col-reset{width:100%;padding:9px;background:transparent;border:1px solid var(--border);border-radius:8px;color:var(--muted);font-family:'Inter',sans-serif;font-size:12px;cursor:pointer;transition:all .15s;margin-top:4px}.col-reset:hover{color:var(--text);border-color:var(--muted)}#notif-tooltip{background:var(--surface);border:1px solid var(--border);box-shadow:0 8px 32px rgba(0,0,0,.5)}.notif-panel{touch-action:pan-y}
.idw{position:relative;display:inline-flex;align-items:center;cursor:pointer;min-height:18px;min-width:16px}
.idw:hover>span{text-decoration:underline dotted;opacity:.8}

.account-popup {
  display: none;
  position: fixed;
  width: 280px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 16px;
  box-shadow: 0 8px 32px rgba(0,0,0,.6);
  z-index: var(--z-toast) /* was 999999 — réduit à --z-toast */;
  overflow: hidden;
  animation: fadeInDown .15s ease;
}
.account-popup.open { display: block; }
@keyframes fadeInDown {
  from { opacity:0; transform:translateY(-6px); }
  to   { opacity:1; transform:translateY(0); }
}
.account-popup-header {
  padding: 20px;
  background: linear-gradient(135deg, var(--s2), var(--surface));
  border-bottom: 1px solid var(--border);
  display: flex;
  align-items: center;
  gap: 14px;
}

.account-stat {
  text-align: center;
  padding: 8px 6px;
  border-radius: 10px;
  background: var(--s2);
}

.account-btn.danger:hover { background: rgba(255,77,109,.1); color: var(--chaud); }

.user-badge-wrap { position: relative; z-index: var(--z-toast) /* was 9999 */; }

.relance-btn{background:transparent;border:1px solid var(--border);border-radius:5px;color:var(--muted);width:20px;height:20px;font-size:13px;cursor:pointer;display:none;align-items:center;justify-content:center;padding:0;transition:all .15s;flex-shrink:0;line-height:1}.relance-btn:hover{background:rgba(61,255,160,.1);color:var(--green);border-color:rgba(61,255,160,.4)}tbody tr:hover .relance-btn{display:flex}
.score-analyze-btn{background:rgba(124,106,247,.1);border:1px solid rgba(124,106,247,.3);color:var(--accent);border-radius:20px;padding:2px 10px;font-size:11px;cursor:pointer;font-weight:600;white-space:nowrap;transition:all .15s;font-family:'Inter',sans-serif}
.score-analyze-btn:hover{background:rgba(124,106,247,.2)}
.score-badge{display:inline-flex;align-items:center;justify-content:center;padding:2px 8px;border-radius:20px;font-size:11px;font-weight:700;cursor:pointer;font-family:'Plus Jakarta Sans',sans-serif;transition:all .15s}
.score-badge.hot{background:rgba(29,158,117,.15);color:#1D9E75;border:1px solid rgba(29,158,117,.3)}
.score-badge.mid{background:rgba(186,117,23,.15);color:#BA7517;border:1px solid rgba(186,117,23,.3)}
.score-badge.low{background:rgba(213,90,48,.15);color:#D85A30;border:1px solid rgba(213,90,48,.3)}
.score-badge.score-loading{background:var(--s2);color:var(--muted);border:1px solid var(--border)}
.score-loading{color:var(--muted);border-color:var(--border)}

.ai-panel{border:1px solid;border-radius:12px;padding:14px 16px;margin-bottom:12px;display:flex;flex-direction:column;gap:8px}
.ai-panel-header{display:flex;align-items:center;gap:8px}
.ai-panel-icon{color:var(--accent);font-size:14px}
.ai-panel-title{font-size:11px;color:var(--muted);letter-spacing:1px;text-transform:uppercase;font-weight:600;flex:1}
.ai-panel-score{font-family:'Plus Jakarta Sans',sans-serif;font-size:24px;font-weight:800;line-height:1}
.ai-panel-resume{font-size:13px;color:var(--text);font-style:italic}
.ai-panel-action{display:flex;align-items:flex-start;gap:6px;font-size:12px;background:rgba(0,0,0,.15);border-radius:8px;padding:8px 10px}
.ai-panel-action-icon{color:var(--accent);font-weight:700;flex-shrink:0}
.ai-refresh-btn{align-self:flex-end;background:transparent;border:1px solid var(--border);border-radius:6px;color:var(--muted);font-size:11px;padding:4px 10px;cursor:pointer;transition:all .15s}
.ai-refresh-btn:hover{color:var(--text);border-color:var(--muted)}
.ai-analyze-btn{width:100%;padding:12px;background:rgba(124,106,247,.1);border:1px dashed rgba(124,106,247,.4);border-radius:10px;color:var(--accent);font-size:13px;font-weight:600;cursor:pointer;margin-bottom:12px;transition:all .2s}
.ai-analyze-btn:hover{background:rgba(124,106,247,.2)}
.ai-panel-empty{margin-bottom:12px}

.ai-prompt-overlay{position:fixed;inset:0;z-index: calc(var(--z-toast) - 1) /* was 99998 */;display:flex;align-items:flex-end;justify-content:center;padding:24px;pointer-events:none}
.ai-prompt-card{background:var(--surface);border:1px solid rgba(124,106,247,.4);border-radius:18px;padding:20px 24px;width:100%;max-width:420px;box-shadow:0 16px 48px rgba(0,0,0,.5);pointer-events:all;animation:slideUp .25s cubic-bezier(.4,0,.2,1);display:flex;gap:16px;align-items:center}
.ai-prompt-icon{font-size:32px;flex-shrink:0}
.ai-prompt-body{flex:1;min-width:0}
.ai-prompt-title{font-family:'Plus Jakarta Sans',sans-serif;font-size:15px;font-weight:700;color:var(--text);margin-bottom:3px}
.ai-prompt-sub{font-size:12px;color:var(--muted)}
.ai-prompt-actions{display:flex;gap:8px;margin-top:12px}
.ai-prompt-yes{flex:1;padding:9px;background:var(--accent);border:none;border-radius:9px;color:#fff;font-family:'Inter',sans-serif;font-size:13px;font-weight:600;cursor:pointer;transition:background .15s}
.ai-prompt-yes:hover{background:#6a5aed}
.ai-prompt-no{flex:1;padding:9px;background:var(--s2);border:1px solid var(--border);border-radius:9px;color:var(--muted);font-family:'Inter',sans-serif;font-size:13px;cursor:pointer;transition:all .15s}
.ai-prompt-no:hover{color:var(--text);border-color:var(--muted)}

.ai-chat-panel{position:fixed;bottom:24px;right:24px;width:380px;max-height:560px;background:var(--surface);border:1px solid var(--border);border-radius:14px;box-shadow:0 24px 64px rgba(0,0,0,.5),0 0 0 1px rgba(255,255,255,.02) inset;z-index: calc(var(--z-toast) - 1) /* was 99998 */;display:none;flex-direction:column;overflow:hidden}
.ai-chat-panel.open{display:flex;animation:slideUp .22s cubic-bezier(.4,0,.2,1)}
.ai-chat-header{display:flex;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid var(--border);flex-shrink:0;background:linear-gradient(180deg,rgba(124,106,247,.06) 0%,transparent 100%)}
.ai-chat-avatar{width:30px;height:30px;border-radius:8px;background:linear-gradient(135deg,var(--accent),#a78bfa);display:flex;align-items:center;justify-content:center;flex-shrink:0;color:#fff}
.ai-chat-title{flex:1;display:flex;flex-direction:column;gap:1px;min-width:0}
.ai-chat-title-main{font-family:'Plus Jakarta Sans',sans-serif;font-weight:800;font-size:14px;color:var(--text);line-height:1.1}
.ai-chat-title-sub{font-size:10px;color:var(--muted);display:flex;align-items:center;gap:4px}
.ai-chat-title-sub .dot{width:6px;height:6px;border-radius:50%;background:var(--green);display:inline-block;animation:pulse 2s infinite}
.ai-chat-close{background:var(--s2);border:1px solid var(--border);border-radius:7px;color:var(--muted);width:28px;height:28px;display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0;transition:all .12s;flex-shrink:0}
.ai-chat-close:hover{color:var(--text);background:var(--s3,var(--border));border-color:var(--muted)}
.ai-chat-msgs{flex:1;overflow-y:auto;padding:14px 16px;display:flex;flex-direction:column;gap:10px;min-height:200px}
.ai-chat-msgs::-webkit-scrollbar{width:3px}
.ai-chat-msgs::-webkit-scrollbar-thumb{background:var(--border);border-radius:99px}
.ai-chat-footer{display:flex;gap:8px;padding:12px 14px;border-top:1px solid var(--border);flex-shrink:0;background:var(--s2)}
.ai-chat-input{flex:1;background:var(--surface);border:1px solid var(--border);border-radius:9px;color:var(--text);padding:9px 12px;font-family:'Inter',sans-serif;font-size:13px;outline:none;transition:border-color .2s}
.ai-chat-input:focus{border-color:var(--accent)}
.ai-chat-send{background:var(--accent);border:none;border-radius:9px;color:#fff;width:38px;height:38px;cursor:pointer;transition:background .15s,transform .12s;flex-shrink:0;display:flex;align-items:center;justify-content:center;padding:0}
.ai-chat-send:hover{background:#6a5aed;transform:translateY(-1px)}
@media(max-width:600px){
  .ai-chat-panel{bottom:0;right:0;left:0;width:auto;max-height:82vh;border-radius:16px 16px 0 0;border-bottom:none}
}
.chat-msg-user{align-self:flex-end;background:var(--accent);color:#fff;padding:9px 13px;border-radius:14px 14px 4px 14px;font-size:13px;max-width:85%;line-height:1.4}
.chat-msg-ai{align-self:flex-start;background:var(--s2);color:var(--text);padding:9px 13px;border-radius:4px 14px 14px 14px;font-size:13px;max-width:92%;line-height:1.5;border:1px solid var(--border)}
.ai-chat-footer{display:flex;gap:8px;padding:12px 14px;border-top:1px solid var(--border);flex-shrink:0}
.ai-chat-input{flex:1;background:var(--s2);border:1px solid var(--border);border-radius:10px;color:var(--text);padding:9px 12px;font-family:'Inter',sans-serif;font-size:13px;outline:none;transition:border-color .2s}
.ai-chat-input:focus{border-color:var(--accent)}
.ai-chat-send{background:var(--accent);border:none;border-radius:10px;color:#fff;width:38px;height:38px;font-size:18px;cursor:pointer;transition:background .15s;flex-shrink:0}
.ai-chat-send:hover{background:#6a5aed}

.qtag-wrap{display:flex;flex-wrap:wrap;align-items:center;gap:6px;padding:6px 8px;background:var(--s2);border:1px solid var(--border);border-radius:8px;min-height:36px;cursor:text;transition:border-color .2s}
.qtag-wrap:focus-within{border-color:var(--accent)}
.qtag{display:inline-flex;align-items:center;padding:3px 10px;border-radius:99px;background:rgba(124,106,247,.2);color:var(--accent);border:1px solid rgba(124,106,247,.4);font-size:11px;font-weight:600;cursor:pointer;white-space:nowrap;transition:background .15s;margin-right:4px;margin-bottom:2px}
.qtag:hover{background:rgba(124,106,247,.35)}
.qtag-sugg{position:absolute;top:calc(100% + 4px);left:0;right:0;background:var(--s2);border:1px solid var(--border);border-radius:8px;z-index: var(--z-fixed) /* was 200 */;overflow:hidden}
.qtag-sugg-item{padding:8px 12px;cursor:pointer;font-size:12px;color:var(--accent);font-weight:600;transition:background .1s}
.qtag-sugg-item:hover{background:var(--border)}

.notes-list{max-height:220px;overflow-y:auto}

.note-item{padding:10px 14px;border-top:1px solid var(--border)}
.note-item:first-child{border-top:none}

.note-date{font-size:11px;color:var(--muted);font-weight:500}

.note-text{font-size:13px;color:var(--text);line-height:1.5;white-space:pre-wrap}

.mbtn-archive{color:var(--muted);border-color:var(--border)}
.mbtn-archive:hover{color:var(--accent);border-color:var(--accent)}
.mbtn-archive.active{color:var(--green);border-color:var(--green)}

.import-msg-btn{background:rgba(124,106,247,.12);border:1px solid rgba(124,106,247,.3);color:var(--accent);border-radius:7px;padding:5px 12px;font-size:11px;font-weight:600;cursor:pointer;transition:all .15s;white-space:nowrap}
.import-msg-btn:hover{background:rgba(124,106,247,.25)}
.import-overlay{position:fixed;inset:0;background:rgba(0,0,0,.7);z-index: var(--z-modal) /* was 20000 */;display:flex;align-items:center;justify-content:center;backdrop-filter:blur(4px)}
.import-panel{background:var(--surface);border:1px solid var(--border);border-radius:18px;width:500px;max-width:95vw;max-height:85vh;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 20px 60px rgba(0,0,0,.5)}

.import-analyze-btn{background:var(--accent);border:none;border-radius:10px;color:#fff;padding:12px;font-size:14px;font-weight:700;cursor:pointer;transition:all .2s;font-family:'Plus Jakarta Sans',sans-serif}
.import-analyze-btn:hover{background:#6a5aed}
.import-analyze-btn:disabled{opacity:.6;cursor:default}

.import-fields{display:flex;flex-direction:column;gap:6px;background:var(--s2);border-radius:10px;padding:12px 14px;border:1px solid var(--border)}
.import-field{display:flex;align-items:baseline;gap:10px}
.import-field-lbl{font-size:11px;color:var(--muted);font-weight:600;min-width:80px;flex-shrink:0}
.import-field-val{font-size:13px;color:var(--text)}

.badge-archived{display:inline-flex;align-items:center;padding:2px 7px;border-radius:5px;background:rgba(160,160,160,.15);color:var(--muted);border:1px solid rgba(160,160,160,.25);font-size:9px;font-weight:700;letter-spacing:.5px;margin-left:6px;vertical-align:middle}
.custom-popup-overlay{position:fixed;inset:0;background:rgba(20,22,31,.45);z-index: var(--z-toast) /* was 99999 */;display:none;align-items:center;justify-content:center;backdrop-filter:blur(2px)}
.custom-popup-overlay.open{display:flex;animation:fadeIn .15s ease}
.custom-popup{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:22px 22px 18px;width:380px;max-width:92vw;display:flex;flex-direction:column;align-items:flex-start;gap:0;box-shadow:0 24px 60px rgba(20,22,31,.18);text-align:left}
.custom-popup .sheet-handle{display:none}
.custom-popup #popup-title{margin-bottom:8px !important;font-size:15px !important;font-weight:600 !important;letter-spacing:-.2px;color:var(--text);font-family:'Plus Jakarta Sans',sans-serif}
.custom-popup #popup-message{font-size:13px !important;color:var(--text-dim) !important;line-height:1.5 !important;margin-bottom:18px !important}
.custom-popup-overlay [style*="display:flex"][style*="gap:10px"]{justify-content:flex-end;width:100%;gap:8px !important}

.popup-title{font-family:'Plus Jakarta Sans',sans-serif;font-weight:600;font-size:15px;color:var(--text)}
.popup-message{font-size:13px;color:var(--text-dim);line-height:1.5;margin-bottom:4px}

.popup-btn{flex:0 0 auto !important;padding:9px 16px !important;border-radius:8px !important;font-size:13px !important;font-weight:500 !important;cursor:pointer;transition:all .12s;font-family:'Inter',sans-serif;border:1px solid var(--border) !important;white-space:nowrap}
.popup-btn-cancel{background:var(--s2) !important;color:var(--text-dim) !important}
.popup-btn-cancel:hover{background:var(--s3) !important;color:var(--text) !important}
.popup-btn-confirm{background:var(--text) !important;color:var(--bg) !important;border-color:var(--text) !important;font-weight:600 !important}
.popup-btn-confirm:hover{opacity:.85}
.popup-btn-confirm.danger{background:var(--chaud) !important;border-color:var(--chaud) !important;color:#fff !important}
.popup-btn-confirm.danger:hover{opacity:.85}

.sidenav{position:fixed;top:80px;left:0;bottom:0;width:56px;background:var(--surface);border-right:1px solid var(--border);display:flex;flex-direction:column;padding:10px 6px 10px;gap:2px;z-index: calc(var(--z-fixed) + 100) /* was 300 */;overflow:hidden;transition:width .22s cubic-bezier(.4,0,.2,1),box-shadow .22s}
.sidenav:hover{width:210px;box-shadow:4px 0 24px rgba(0,0,0,.35)}
.sidenav-logo{display:flex;justify-content:center;padding:2px 0 12px;border-bottom:1px solid var(--border);margin-bottom:8px;flex-shrink:0}
.sidenav-links{display:flex;flex-direction:column;gap:2px;flex:1}
.sn-bottom{padding-top:8px;border-top:1px solid var(--border)}
.sn-btn{display:flex;align-items:center;gap:10px;width:100%;height:38px;padding:0 10px;border-radius:9px;border:none;color:var(--muted);background:transparent;cursor:pointer;white-space:nowrap;overflow:hidden}
.sn-btn:hover{background:var(--s2);color:var(--text)}
.sn-btn.active{background:rgba(124,106,247,.15);color:var(--accent)}
.sn-icon{font-size:18px;flex-shrink:0;width:24px;text-align:center}
.sn-lbl{font-size:12px;font-weight:500;opacity:0;transform:translateX(-6px);transition:opacity .18s .06s,transform .18s .06s;pointer-events:none}
.sidenav:hover .sn-lbl{opacity:1;transform:translateX(0)}
body{padding-top:80px}
@media(max-width:700px){body{padding-top:56px}}

#page-vendeurs,#page-vend{margin-left:180px}
/* Mobile : on passe le header en sticky (au lieu de fixed) pour éviter les
   mismatchs de padding-top body vs hauteur header. Plus de gap en haut. */
@media(max-width:700px){
  body{padding-top:0 !important}
  header{position:sticky !important;top:0 !important;z-index: var(--z-fixed) /* was 200 */}
  .main{min-height:auto}
}
@media(max-width:700px){.sidenav{width:56px}.sn-lbl{display:none}
  #table-body .avatar{width:36px;height:36px;font-size:11px;border-radius:9px}}

@media(max-width:700px){

  .sidebar{z-index: calc(var(--z-modal) + 1) /* was 20001 */ !important;left:0 !important;background:var(--surface) !important;isolation:isolate;max-height:none !important}
  .sidebar-overlay{z-index: var(--z-modal) /* was 20000 */ !important;background:rgba(0,0,0,.7) !important}

  .notif-btn[title="Exporter les données"],
  .notif-btn[title="Importer des données"],
  label.notif-btn{display:none !important}
  .add-btn-txt,.rappr-btn-txt{display:none}
  .add-btn{padding:8px 12px}
  .rappr-btn{padding:8px 12px}

  #table-body .avatar{width:36px;height:36px;font-size:11px;border-radius:9px}
  thead{display:table-header-group}
  .table-wrap{overflow-x:hidden;padding:0}
  .table-wrap table{width:100%}

}

@media(max-width:400px){
  header{padding:8px 10px;gap:6px}
}

.vend-page{padding:20px 24px 48px;display:flex;flex-direction:column;gap:20px;min-height:calc(100vh - 80px)}
.vend-kpis-row{display:grid;grid-template-columns:repeat(6, 1fr);gap:10px;margin-bottom:10px}

@media (max-width: 1100px){.vend-kpis-row{grid-template-columns:repeat(3, 1fr)}}
@media (max-width: 640px){.vend-kpis-row{grid-template-columns:repeat(2, 1fr)}}
.vend-tabs-bar{display:flex;gap:6px;flex-wrap:wrap}
.vend-tab-btn{padding:7px 16px;border-radius:20px;border:1px solid var(--border);background:transparent;color:var(--muted);font-size:12px;font-weight:600;cursor:pointer;transition:all .15s;font-family:'Inter',sans-serif}
.vend-tab-btn:hover{background:var(--s2);color:var(--text)}
.vend-tab-btn.active{background:var(--accent);color:#fff;border-color:var(--accent)}
.vend-board-wrap{overflow-x:auto;padding-bottom:8px;flex:1 1 auto;min-height:0;display:flex;flex-direction:column}
.vend-board{display:flex;gap:10px;min-width:max-content;padding:4px 0;align-items:stretch;flex:1 1 auto;min-height:0}
.vk-col{width:188px;flex-shrink:0;display:flex;flex-direction:column;gap:6px;background:color-mix(in srgb,var(--s2) 45%,transparent);border:1px solid var(--border);border-radius:10px;padding:0 8px 16px;min-height:calc(100vh - 220px)}
.vk-col-hdr{padding:8px 10px;display:flex;align-items:center;justify-content:space-between;margin-bottom:2px}
.vk-col-label{font-size:10px;font-weight:700;letter-spacing:.5px}
.vk-col-count{font-family:'Plus Jakarta Sans',sans-serif;font-size:18px;font-weight:800;color:var(--text)}
.vk-card{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:10px 12px;cursor:pointer;transition:all .15s;display:flex;flex-direction:column;gap:4px}
.vk-card:hover{border-color:var(--accent);transform:translateY(-1px);box-shadow:0 4px 12px rgba(0,0,0,.2)}
.vk-card-name{font-size:13px;font-weight:600;color:var(--text)}
.vk-card-addr{font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.vk-card-price{font-size:12px;font-weight:700;color:var(--accent)}
.vk-card-days{font-size:10px;color:var(--muted)}

.vend-filters-bar{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.vend-sel{background:var(--s2);border:1px solid var(--border);border-radius:8px;color:var(--text);padding:7px 10px;font-size:12px;font-family:'Inter',sans-serif;cursor:pointer}
.vend-table-wrap{overflow-x:auto}
.vend-table{width:100%;border-collapse:collapse;font-size:13px}
.vend-table th{padding:8px 12px;text-align:left;font-size:10px;font-weight:700;letter-spacing:1px;text-transform:uppercase;color:var(--muted);border-bottom:1px solid var(--border);white-space:nowrap}
.vend-table td{padding:10px 12px;border-bottom:1px solid var(--border);vertical-align:middle}
.vend-table tr:hover td{background:var(--s2)}

.stage-badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:20px;font-size:11px;font-weight:600}
.vend-stats-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.vend-stats-card{background:var(--s2);border:1px solid var(--border);border-radius:12px;padding:16px}
.vend-stats-title{font-size:11px;font-weight:700;color:var(--muted);margin-bottom:10px;text-transform:uppercase;letter-spacing:.5px}
.fm-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}

#vt-estis{display:flex;flex-direction:column;gap:16px}
#vt-kanban{display:flex;flex-direction:column;gap:16px;min-height:calc(100vh - 180px);height:calc(100vh - 180px)}
#vt-stats{display:flex;flex-direction:column;gap:16px}
.vend-filters-bar{padding:4px 0}
.vend-kpis-row{margin-bottom:4px}

.vk-card.dragging{opacity:0.4;transform:scale(0.97);border-color:var(--accent)}
.vk-col.drag-over .vk-add{border-color:var(--accent);background:rgba(124,106,247,.1);color:var(--accent)}
.vk-col.drag-over{background:rgba(124,106,247,.04);border-radius:12px}

.vk-dropzone{border:1.5px dashed var(--border);border-radius:8px;height:44px;opacity:0.5;transition:all .2s;margin-top:2px}
.vk-col.drag-over .vk-dropzone{border-color:var(--accent);opacity:1;background:rgba(124,106,247,.06)}

.vend-instinct-badge{display:inline-flex;align-items:center;justify-content:center;padding:2px 7px;border-radius:20px;font-size:11px;font-weight:700;cursor:pointer;transition:all .15s}
.vend-instinct-badge.hot{background:rgba(29,158,117,.15);color:#1D9E75;border:1px solid rgba(29,158,117,.3)}
.vend-instinct-badge.mid{background:rgba(186,117,23,.15);color:#BA7517;border:1px solid rgba(186,117,23,.3)}
.vend-instinct-badge.low{background:rgba(213,90,48,.15);color:#D85A30;border:1px solid rgba(213,90,48,.3)}
.vend-instinct-badge.loading{background:var(--s2);color:var(--muted);border:1px solid var(--border)}
.vend-instinct-btn{background:rgba(124,106,247,.1);border:1px solid rgba(124,106,247,.3);color:var(--accent);border-radius:20px;padding:2px 8px;font-size:11px;font-weight:600;cursor:pointer;font-family:'Inter',sans-serif;transition:all .15s}
.vend-instinct-btn:hover{background:rgba(124,106,247,.2)}

.vk-card .vend-instinct-badge,
.vk-card .vend-instinct-btn {
  display:inline-block !important;
  width:auto !important;
  align-self:flex-start;
}

/* Import Excel */
.import-mapping-row{display:flex;align-items:center;gap:12px;padding:8px 0;border-bottom:1px solid var(--border)}
.import-col-name{flex:1;font-size:12px;font-weight:600;color:var(--text);background:var(--s2);padding:5px 10px;border-radius:6px}
.import-arrow{color:var(--muted);font-size:14px;flex-shrink:0}
.import-preview-table{width:100%;border-collapse:collapse}
.import-preview-table th{background:var(--s2);padding:4px 8px;text-align:left;font-size:10px;font-weight:700;color:var(--muted);white-space:nowrap}
.import-preview-table td{padding:4px 8px;font-size:11px;color:var(--muted);border-bottom:1px solid var(--border);max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#import-dropzone:hover{border-color:var(--accent);background:rgba(124,106,247,.05)}

/* Notes journal */
.note-item { display:flex; gap:10px; margin-bottom:12px; align-items:flex-start; }
#notif-overlay{z-index: var(--z-modal) /* was 9500 */}

#notif-tooltip{position:fixed;background:var(--s2);border:1px solid var(--border);border-radius:8px;padding:6px 10px;font-size:11px;color:var(--text);white-space:nowrap;pointer-events:none;z-index: calc(var(--z-toast) - 1) /* was 99998 */;font-family:'Inter',sans-serif;box-shadow:0 4px 12px rgba(0,0,0,.4);display:none}
.notif-dashboard{display:flex;gap:6px;flex-wrap:wrap;padding:10px 0 4px}
.notif-dash-pill{display:flex;align-items:center;gap:4px;padding:4px 10px;border-radius:99px;font-size:11px;border:1px solid var(--border);background:var(--s2)}
.notif-dash-pill b{font-family:'Plus Jakarta Sans',sans-serif;font-weight:700;font-size:13px}
.notif-dash-lbl{color:var(--muted)}
.notif-dash-pill.warn{border-color:rgba(247,201,72,.3);background:rgba(247,201,72,.07)}
.notif-dash-pill.info{border-color:rgba(77,166,255,.3);background:rgba(77,166,255,.07)}
.notif-dash-pill.vend{border-color:rgba(124,106,247,.3);background:rgba(124,106,247,.07)}
.notif-dash-pill.snooze{border-color:rgba(92,100,128,.3)}
.notif-ai-summary{display:flex;align-items:flex-start;gap:6px;padding:8px 12px;background:rgba(124,106,247,.07);border:1px solid rgba(124,106,247,.2);border-radius:9px;font-size:11px;color:var(--text);line-height:1.5;margin-bottom:2px}
.notif-ai-dot{color:var(--accent);font-size:12px;flex-shrink:0;margin-top:1px}
.notif-section-toggle{cursor:pointer;display:flex;align-items:center;user-select:none}
.notif-section-toggle:hover{color:var(--text)}

.choice-btn{display:flex;align-items:center;gap:14px;padding:14px 16px;background:var(--s2);border:1px solid var(--border);border-radius:12px;color:var(--text);font-family:'Inter',sans-serif;cursor:pointer;transition:all .15s;text-align:left;width:100%}.choice-btn:hover{border-color:var(--accent);background:rgba(124,106,247,.08);transform:translateX(3px)}
.db-mod-dragover{box-shadow:0 0 0 2px var(--accent);border-color:var(--accent)!important;opacity:.85}

.doc-section-title{font-family:'Plus Jakarta Sans',sans-serif;font-weight:700;font-size:13px;color:var(--accent);margin-top:16px;margin-bottom:6px;padding-bottom:4px;border-bottom:1px solid var(--border)}
.doc-section-title:first-child{margin-top:0}
.doc-bullet{color:var(--text);font-size:13px;line-height:1.6;padding-left:4px}
#doc-summary-content{color:var(--text);font-size:13px;line-height:1.7}

/* ═══ PAGE DOCUMENTATION ═══ */
.doc-section{margin-bottom:36px;padding-bottom:36px;border-bottom:1px solid var(--border)}
.doc-section:last-of-type{border-bottom:none}
.doc-section-title{font-family:'Plus Jakarta Sans',sans-serif;font-size:17px;font-weight:800;color:var(--text);margin-bottom:16px;display:flex;align-items:center;gap:8px}
.doc-section-title::before{content:'';display:inline-block;width:3px;height:18px;background:var(--accent);border-radius:99px;flex-shrink:0}

.doc-list{display:flex;flex-direction:column;gap:6px;padding-left:16px;list-style:disc}
.doc-list li{font-size:13px;color:var(--text);line-height:1.6}

@media(max-width:700px){#page-docs{margin-left:56px}}

/* ═══════════════════════════════════════════════════
   RESPONSIVE MOBILE — v1.0.9 FINAL CLEAN
   ═══════════════════════════════════════════════════ */

/* ── TAB BAR (définie ici, cachée desktop) ── */
.mobile-tabbar { display: none; }

@media (max-width: 700px) {

  /* ── SIDENAV → cachée ── */
  .sidenav { display: none !important; }

  /* ── PAGES → pleine largeur ── */

  /* ── HEADER ── */
  .logo-area h1 { display: none !important; }
  .logo-area p  { display: none !important; }
  .logo-area::before {
    content: ''; display: block;
    width: 28px; height: 28px;
    background: url('/donna_icon.svg') center/contain no-repeat;
    flex-shrink: 0;
  }
  header { padding: 8px 10px !important; gap: 6px !important; }
  
  .add-btn      { padding: 7px 10px !important; font-size: 15px !important; }
  .rappr-btn    { padding: 7px 10px !important; font-size: 12px !important; }
  .notif-btn    { width: 34px !important; height: 34px !important; font-size: 14px !important; }

  /* Recherche : margin-left:48px en inline → écrasé */
  #gs-wrap {
    margin-left: 4px !important;
    width: auto !important;
    flex: 1 1 auto !important;
    max-width: 200px !important;
    min-width: 0 !important;
  }
  #gs-input { font-size: 12px !important; padding: 6px 10px 6px 28px !important; }
  #gs-input::placeholder { font-size: 12px !important; }

  /* ── ACQUÉREURS — tableau responsive simple ── */
  /* Le .main passe en 1 colonne, sidebar cachée */
  #page-acq .main {
    grid-template-columns: 1fr !important;
  }
  #page-acq .content { padding: 10px !important; padding-bottom: 80px !important; }
  #page-acq .table-wrap { overflow-x: auto !important; -webkit-overflow-scrolling: touch !important; }
  /* Cacher : Source(6), Pièces(7), Surface(8), Financement(10), Quartier(11) */
  #page-acq table th:nth-child(6),  #page-acq table td:nth-child(6),
  #page-acq table th:nth-child(7),  #page-acq table td:nth-child(7),
  #page-acq table th:nth-child(8),  #page-acq table td:nth-child(8),
  #page-acq table th:nth-child(10), #page-acq table td:nth-child(10),
  #page-acq table th:nth-child(11), #page-acq table td:nth-child(11) {
    display: none !important;
  }
  /* Compacter les cellules restantes */
  #page-acq td, #page-acq th { padding: 8px 7px !important; font-size: 11px !important; }
  #page-acq .avatar { width: 24px !important; height: 24px !important; font-size: 9px !important; }
  #page-acq .budget-cell { font-size: 11px !important; }

  /* ── DASHBOARD ── */

  #db-kpis {
    display: flex !important; flex-wrap: nowrap !important; overflow-x: auto !important;
    -webkit-overflow-scrolling: touch !important; scroll-snap-type: x mandatory !important;
    gap: 10px !important; scrollbar-width: none !important; padding-bottom: 4px !important;
  }
  #db-kpis::-webkit-scrollbar { display: none !important; }
  #db-kpis > div { min-width: 155px !important; flex-shrink: 0 !important; scroll-snap-align: start !important; }
  #db-modules-grid > div { flex: 1 1 100% !important; min-width: 0 !important; }

  /* ── COMPTA ── */
  .ca-content { padding: 10px !important; padding-bottom: 80px !important; }
  .ca-filters .search-wrap { display: none !important; }
  .ca-filters { gap: 6px !important; flex-wrap: wrap !important; }
  .ca-kpi-row {
    display: flex !important; flex-wrap: nowrap !important; overflow-x: auto !important;
    -webkit-overflow-scrolling: touch !important; scroll-snap-type: x mandatory !important;
    gap: 10px !important; scrollbar-width: none !important; padding-bottom: 4px !important;
  }
  .ca-kpi-row::-webkit-scrollbar { display: none !important; }
  .ca-kpi-row > div { min-width: 145px !important; flex-shrink: 0 !important; scroll-snap-align: start !important; }
  #btn-toggle-chart,
  .ca-filters .notif-btn[onclick*="openColConfig"],
  .ca-filters .notif-btn[onclick*="openCaParams"] {
    font-size: 11px !important; padding: 0 8px !important;
    height: 32px !important; width: auto !important; white-space: nowrap !important;
  }
  #ca-count { display: none !important; }

  /* ── DOSSIERS ── */
  #page-vendeurs .ca-content { padding: 12px !important; gap: 12px !important; padding-bottom: 80px !important; }
  #page-vendeurs select { font-size: 12px !important; padding: 6px 8px !important; }
  .vend-kpis-row {
    display: flex !important; flex-wrap: nowrap !important; overflow-x: auto !important;
    -webkit-overflow-scrolling: touch !important; scroll-snap-type: x mandatory !important;
    gap: 10px !important; scrollbar-width: none !important;
  }
  .vend-kpis-row::-webkit-scrollbar { display: none !important; }
  .vend-kpis-row > div { min-width: 140px !important; flex-shrink: 0 !important; scroll-snap-align: start !important; }

  /* ── VENDEURS ── */
  #page-vend .ca-content { padding: 10px !important; padding-bottom: 80px !important; }

  /* ── KANBAN ── */
  
  .vk-col { min-width: 220px !important; max-width: 220px !important; flex-shrink: 0 !important; }

  /* ── BIENS grilles ── */
  #biens-grid-view { grid-template-columns: 1fr 1fr !important; gap: 8px !important; }
  .content { padding: 10px !important; padding-bottom: 80px !important; }

  /* ── MODALS — bottom sheet + padding minimal ── */
  .overlay { padding: 0 !important; align-items: flex-end !important; }
  .modal, .form-modal, .rappr-modal, .notif-panel {
    border-radius: 20px 20px 0 0 !important;
    width: 100% !important; max-width: 100% !important;
    max-height: 94vh !important;
    padding: 0 !important;
  }
  /* Padding interne réduit */
  .modal-head    { padding: 14px 14px 0 !important; }
  .modal-body    { padding: 12px 14px 14px !important; }
  .fm-head       { padding: 14px 14px 0 !important; }
  .fm-body       { padding: 12px 14px 80px !important; }
  
  
  .notif-head    { padding: 14px 14px 0 !important; }
  .notif-body    { padding: 10px 14px 14px !important; }
  .sheet-handle  { display: block !important; }

  /* ── FORMULAIRES 1 colonne ── */
  .fm-row, .fm-row.three { grid-template-columns: 1fr !important; }
  .edit-grid { grid-template-columns: 1fr !important; }
  .edit-field.full { grid-column: 1 !important; }
  .acq-view-grid { grid-template-columns: 1fr 1fr !important; }
  .acq-view-grid .edit-field.full { grid-column: 1 / -1 !important; }

  /* ── ANTI-ZOOM iOS ── */
  input[type="text"], input[type="email"], input[type="tel"],
  input[type="number"], input[type="date"], input[type="search"],
  input[type="password"], select, textarea {
    font-size: 16px !important;
  }

  /* ── TAB BAR ── */
  .mobile-tabbar {
    display: flex !important;
    position: fixed; bottom: 0; left: 0; right: 0; z-index: calc(var(--z-overlay) - 500) /* was 500 */;
    background: rgba(20,23,32,.96);
    backdrop-filter: blur(16px); -webkit-backdrop-filter: blur(16px);
    border-top: 1px solid var(--border);
    padding: 8px 4px calc(8px + env(safe-area-inset-bottom));
    justify-content: space-around; align-items: center;
  }
  .mobile-tabbar-btn {
    display: flex; flex-direction: column; align-items: center; gap: 3px;
    background: none; border: none; cursor: pointer;
    padding: 4px 8px; border-radius: 10px; color: var(--muted);
    transition: color .15s; min-width: 44px;
  }
  .mobile-tabbar-btn.active { color: var(--accent); }
  .tb-icon { font-size: 20px; line-height: 1; }
  .tb-lbl  { font-size: 9px; font-weight: 600; letter-spacing: .3px; white-space: nowrap; }

  /* ── BUG REPORTER ── */
  #bug-report-btn {
    bottom: calc(68px + env(safe-area-inset-bottom)) !important;
    right: 16px !important;
  }

  /* ── TOAST ── (centrage strict via règle générale, pas d'override mobile) */
}

/* ═══════════════════════════════════════════════════
   RESPONSIVE MOBILE — donna v1.0.9
   Bloc unique, propre, aucun patch successif
   ═══════════════════════════════════════════════════ */

/* Z-index modals */
#detail-overlay { z-index: calc(var(--z-overlay) + 1) /* was 10001 */ !important; }
#rappr-overlay  { z-index: var(--z-overlay) /* was 10000 */ !important; }
/* Fiche depuis rappr : detail au-dessus */
#detail-overlay.from-rappr { z-index: calc(var(--z-overlay) + 3) /* was 10003 */ !important; }
#notif-overlay  { z-index: calc(var(--z-overlay) + 2) /* was 10002 */ !important; }

.mobile-tabbar { display: none; }

@media (max-width: 700px) {

  /* ── Sidenav & pages ── */
  .sidenav { display: none !important; }

  /* ── Header ── */
  .logo-area h1, .logo-area p { display: none !important; }
  header { padding: 8px 10px !important; gap: 6px !important; }
  
  .add-btn  { padding: 7px 10px !important; font-size: 15px !important; }
  .rappr-btn { padding: 7px 10px !important; font-size: 12px !important; }
  .notif-btn { width: 34px !important; height: 34px !important; font-size: 14px !important; }
  #gs-wrap { margin-left: 4px !important; flex: 1 1 auto !important; max-width: 200px !important; }
  #gs-input { font-size: 16px !important; }

  /* ── Acquéreurs : tableau caché, div mobile injectée par JS ── */
  #page-acq .main { display: block !important; }
  #page-acq .ctrl-row { display: none !important; }
  #page-acq .content { padding: 8px !important; padding-bottom: 80px !important; }

  /* ── Dashboard ── */

  #db-kpis {
    display: flex !important; flex-wrap: nowrap !important; overflow-x: auto !important;
    scroll-snap-type: x mandatory !important; gap: 10px !important; scrollbar-width: none !important;
  }
  #db-kpis::-webkit-scrollbar { display: none !important; }
  #db-kpis > div { min-width: 155px !important; flex-shrink: 0 !important; scroll-snap-align: start !important; }

  /* ── Compta ── */
  .ca-content { padding: 10px !important; padding-bottom: 80px !important; }
  .ca-filters .search-wrap { display: none !important; }
  .ca-kpi-row {
    display: flex !important; flex-wrap: nowrap !important; overflow-x: auto !important;
    scroll-snap-type: x mandatory !important; gap: 10px !important; scrollbar-width: none !important;
  }
  .ca-kpi-row::-webkit-scrollbar { display: none !important; }
  .ca-kpi-row > div { min-width: 145px !important; flex-shrink: 0 !important; scroll-snap-align: start !important; }

  /* ── Dossiers ── */
  #page-vendeurs .ca-content { padding: 10px !important; gap: 10px !important; padding-bottom: 80px !important; }
  #page-vendeurs select { font-size: 12px !important; }

  /* ── Vendeurs ── */
  #page-vend .ca-content { padding: 10px !important; padding-bottom: 80px !important; }

  /* ── Kanban ── */
  
  .vk-col { min-width: 220px !important; max-width: 220px !important; flex-shrink: 0 !important; }

  /* ── Biens ── */
  #biens-grid-view { grid-template-columns: 1fr 1fr !important; gap: 8px !important; }
  #map-split-list { display: none !important; }
  #biens-map-view { grid-template-columns: 1fr !important; }
  .content { padding: 10px !important; padding-bottom: 80px !important; }

  /* ── Modals bottom sheet ── */
  .overlay { padding: 0 !important; align-items: flex-end !important; }
  .modal, .form-modal, .rappr-modal, .notif-panel {
    border-radius: 20px 20px 0 0 !important;
    width: 100% !important; max-width: 100% !important; max-height: 94vh !important;
  }
  .modal-head { padding: 14px 14px 0 !important; }
  .modal-body { padding: 12px 14px 14px !important; }
  .fm-head { padding: 14px 14px 0 !important; }
  .fm-body { padding: 12px 14px 80px !important; }
  .sheet-handle { display: block !important; }
  .fm-row, .fm-row.three { grid-template-columns: 1fr !important; }
  .edit-grid { grid-template-columns: 1fr !important; }
  .acq-view-grid { grid-template-columns: 1fr 1fr !important; }
  .acq-view-grid .edit-field.full { grid-column: 1 / -1 !important; }

  /* ── Anti-zoom iOS ── */
  input, textarea, select { font-size: 16px !important; }

  /* ── Tab bar ── */
  .mobile-tabbar {
    display: flex !important;
    position: fixed; bottom: 0; left: 0; right: 0; z-index: calc(var(--z-overlay) - 500) /* was 500 */;
    background: rgba(20,23,32,.96); backdrop-filter: blur(16px); -webkit-backdrop-filter: blur(16px);
    border-top: 1px solid var(--border);
    padding: 8px 4px calc(8px + env(safe-area-inset-bottom));
    justify-content: space-around; align-items: center;
  }
  .mobile-tabbar-btn {
    display: flex; flex-direction: column; align-items: center; gap: 3px;
    background: none; border: none; cursor: pointer; padding: 4px 8px;
    border-radius: 10px; color: var(--muted); transition: color .15s; min-width: 44px;
  }
  .mobile-tabbar-btn.active { color: var(--accent); }
  .tb-icon { font-size: 20px; line-height: 1; }
  .tb-lbl  { font-size: 9px; font-weight: 600; white-space: nowrap; }

  /* ── Bug reporter ── */
  #bug-report-btn { bottom: calc(68px + env(safe-area-inset-bottom)) !important; right: 16px !important; }
}

/* ── Tables mobile : scroll horizontal, toutes colonnes visibles ── */
@media (max-width: 700px) {
  #page-acq .table-wrap,
  #page-vend .table-wrap {
    overflow-x: auto !important;
    -webkit-overflow-scrolling: touch !important;
  }
  #page-acq .main { display: block !important; }
  #page-acq .ctrl-row { display: none !important; }
  #page-acq .content,
  #page-vend .content { padding: 8px !important; padding-bottom: 80px !important; }
  /* Toutes colonnes visibles — plus de hide */
  #page-acq td, #page-acq th,
  #page-vend td, #page-vend th { display: table-cell !important; font-size: 11px !important; padding: 8px 6px !important; }
  /* Compacter les colonnes moins importantes */
  #page-acq .acq-col-source,
  #page-acq .acq-col-pieces,
  #page-acq .acq-col-surface,
  #page-acq .acq-col-fin,
  #page-acq .acq-col-quartier { display: none !important; }
}

/* ── Vendeurs table : styles identiques acquéreurs ── */
.vend-table { width: 100%; border-collapse: collapse; }
.vend-table thead th { padding: 9px 12px; text-align: left; font-size: 10px; color: var(--muted); letter-spacing: 1.2px; text-transform: uppercase; background: var(--s2); border-bottom: 1px solid var(--border); cursor: pointer; user-select: none; white-space: nowrap; }
.vend-table thead th:hover { color: var(--text); }
.vend-table tbody tr { border-bottom: 1px solid rgba(37,42,58,.6); transition: background .1s; cursor: pointer; }
.vend-table tbody tr:hover { background: var(--s2); }
.vend-table tbody tr:last-child { border-bottom: none; }
.vend-table td { padding: 10px 12px; font-size: 12px; vertical-align: middle; max-width: 180px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
/* Count desktop-only */
@media (max-width: 700px) { .desktop-only { display: none !important; } }

/* ── Bug reports mobile ── */
@media (max-width: 700px) {
  #page-bugreports { margin-left: 0 !important; padding: 10px !important; padding-bottom: 80px !important; }
  #page-bugreports h2 { font-size: 16px !important; }
  #bug-reports-content [style*="display:flex;gap:6px"] { gap: 4px !important; }
}

/* ══════════════════════════════════════════
   THÈME ATTIO — CRM moderne, warm & dense
   ══════════════════════════════════════════ */
/* ── SVG Icons nav ── */
.sn-icon svg, .tb-icon svg {
  width: 18px; height: 18px;
  stroke: currentColor; fill: none;
  flex-shrink: 0; display: block;
}
.sn-icon { display: flex; align-items: center; justify-content: center; }
.tb-icon { display: flex; align-items: center; justify-content: center; height: 22px; }

/* ── Bug Reports mobile ── */
@media(max-width:700px){
  .br-meta-secondary { display:none !important; }
}

/* ── Fiche vendeur mobile ── */
@media(max-width:700px){
  /* Bloquer le scroll horizontal sur les modals */
  .overlay, .modal, .form-modal, #m-vend {
    overflow-x: hidden !important;
  }
  #m-vend .fm-body {
    overflow-x: hidden !important;
  }
  /* Dates en colonne sur mobile */
  #m-vend .fm-row,
  #m-vend .fm-row.three {
    grid-template-columns: 1fr !important;
  }
  /* Inputs date plus lisibles */
  #m-vend input[type="date"],
  .fm-input[type="date"] {
    font-size: 14px !important;
    padding: 10px 12px !important;
  }
}

/* ── Sticky table headers ── */
thead {
  position: sticky;
  top: 0;
  z-index: 10;
}
thead th {
  background: var(--s2) !important;
}

/* ── Sticky headers — le table-wrap gère le scroll vertical ── */
.table-wrap {
  overflow-y: auto !important;
  overflow-x: auto !important;
  max-height: calc(100vh - 220px);
}
.table-wrap thead th {
  position: sticky;
  top: 0;
  z-index: 10;
  background: var(--s2) !important;
  box-shadow: 0 1px 0 var(--border);
}
/* Compta a son propre wrap */
.ca-content .table-wrap {
  max-height: calc(100vh - 260px);
}
/* Sur mobile plus de place */
@media(max-width: 700px) {
  .table-wrap {
    max-height: calc(100vh - 180px);
  }
}

/* Table remplit exactement l'écran sans espace vide en bas */
.table-wrap { max-height: calc(100vh - 166px) !important; }
.ca-content .table-wrap { max-height: calc(100vh - 200px) !important; }
@media(max-width:700px){ .table-wrap { max-height: calc(100vh - 140px) !important; } }

/* overflow-x sur le wrap directement (div intermédiaire retiré) */
.table-wrap { overflow-x: auto !important; }

/* Mobile : scroll naturel, sticky désactivé */
@media(max-width: 900px) {
  .table-wrap {
    max-height: none !important;
    overflow-y: visible !important;
  }
  thead {
    position: relative !important;
    top: auto !important;
  }
}

/* Gap mobile : overflow:clip préserve border-radius sans bloquer sticky */
@media(max-width: 900px) {
  .table-wrap {
    overflow: clip !important;
    overflow-x: auto !important;
  }
}

/* Doc page mobile : nav cachée, contenu pleine largeur */
@media(max-width: 900px) {
  #page-docs > div {
    grid-template-columns: 1fr !important;
  }
  #page-docs > div > div:first-child {
    display: none !important;
  }
}

@media(max-width: 900px) {
  #page-docs {
    margin-left: 0 !important;
    padding: 0 !important;
  }
  #page-docs > div > div:last-child {
    padding: 16px !important;
  }
}

/* Analytics event list tooltip */
.an-event-row:hover { background: var(--s2) !important; }
.an-event-row:hover .an-event-desc { display: block !important; }

/* Analytics mobile */
@media(max-width: 700px) {
  #page-analytics > div,
  #page-analytics .ca-content {
    margin-left: 0 !important;
    padding: 10px !important;
  }
  /* Boutons pills en 2 lignes */
  #page-analytics .ca-filters,
  #page-analytics [style*="display:flex"][style*="align-items:center"] {
    flex-wrap: wrap !important;
    gap: 6px !important;
  }
  #an-window-pills, #an-source-pills {
    flex-wrap: wrap !important;
    margin-left: 0 !important;
    border-left: none !important;
    padding-left: 0 !important;
    width: 100% !important;
  }
  /* KPIs 2 colonnes bien larges */
  #an-kpis {
    grid-template-columns: 1fr 1fr !important;
  }
}

@media(max-width: 700px) {
  #page-analytics { margin-left: 0 !important; }
}

/* Analytics mobile — 2 groupes de 3 sur une ligne */
@media(max-width: 900px) {
  #an-window-pills, #an-source-pills {
    flex-wrap: nowrap !important;
    width: auto !important;
  }
  /* Conteneur des deux groupes sur une seule ligne */
  #an-window-pills { margin-left: 0 !important; }
  #an-source-pills {
    margin-left: auto !important;
    border-left: 1px solid var(--border) !important;
    padding-left: 12px !important;
  }
  /* La ligne entière des boutons */
  #an-window-pills ~ #an-source-pills,
  #an-window-pills {
    display: flex !important;
  }
  /* Wrapper flex row pour les deux groupes */
  .an-pills-row {
    display: flex !important;
    align-items: center !important;
    justify-content: space-between !important;
    width: 100% !important;
    flex-wrap: nowrap !important;
  }
}

/* Bandeau relances cloche */

.mobile-only-logo{display:none}@media(max-width:900px){.mobile-only-logo{display:block!important}}

/* ── Biens view toggle buttons ── */
.bvbtn {
  padding: 6px 13px;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: var(--s2);
  color: var(--muted);
  font-family: 'Inter', sans-serif;
  font-size: 12px;
  font-weight: 500;
  cursor: pointer;
  transition: all .15s;
}
.bvbtn:hover { color: var(--text); border-color: var(--accent); }
/* donna (dark) default — active = violet gradient */
.bvbtn.active {
  background: linear-gradient(135deg, #7c6af7 0%, #9d8df7 100%);
  border-color: transparent;
  color: #fff;
  font-weight: 600;
  box-shadow: 0 2px 10px rgba(124,106,247,.35);
}
/* Noir — active = blanc */
[data-theme="noir"] .bvbtn {
  background: #0a0a0a; border-color: #2a2a2a; color: #555; border-radius: 3px;
}
[data-theme="noir"] .bvbtn:hover { color: #ccc; border-color: #555; }
[data-theme="noir"] .bvbtn.active {
  background: #eeeeee; border-color: #eeeeee; color: #000;
  font-weight: 700; box-shadow: none; border-radius: 3px;
}
/* Light — active = noir */
[data-theme="warm"] .bvbtn {
  background: var(--surface); border-color: var(--border); color: var(--muted); border-radius: 3px;
}
[data-theme="warm"] .bvbtn:hover { color: var(--text); border-color: #999; }
[data-theme="warm"] .bvbtn.active {
  background: var(--text); border-color: var(--text); color: #fff;
  font-weight: 700; box-shadow: none; border-radius: 3px;
}

/* ── SVG alignment fix — tous thèmes ── */
#header-ctx-btns button svg,
.bvbtn svg,
.add-btn svg,
.rappr-btn svg,
.notif-btn svg,
.mobile-filter-btn svg,
.mbtn svg,
.contact-link svg,
.mc-btn svg { display: inline-block; vertical-align: middle; flex-shrink: 0; }

/* Dashboard modules — hauteur fixe uniforme + scroll interne */
#db-modules-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;align-items:start}
#db-modules-grid.cols-3{grid-template-columns:repeat(3,1fr)}
#db-modules-grid>div{height:480px;overflow:hidden;display:flex;flex-direction:column}
#db-modules-grid>div.db-collapsed{height:auto!important}
#db-modules-grid>div>*:first-child{flex-shrink:0}
#db-modules-grid>div>*:not(:first-child){flex:1;overflow-y:auto;min-height:0}
@media(max-width:900px){#db-modules-grid{grid-template-columns:1fr!important}#db-modules-grid>div{height:auto;overflow:visible}#db-modules-grid>div>*:not(:first-child){overflow:visible}}

/* Analytics — pas de padding-top supplémentaire (body a déjà padding-top:80px) */
#page-analytics { padding-top: 0 }
@media(max-width: 700px) {
  #an-doc-col { display: none !important }
}

/* Push-admin — 1 colonne sur mobile (override inline style) */
@media(max-width: 900px) {
  #push-admin-grid { grid-template-columns: 1fr !important }
  #page-push-admin { padding: 10px 12px 80px !important; margin-left: 0 !important }
}

/* ═══════════════════════════════════════════════════════
   FIXES SESSION — ajouts propres
   ═══════════════════════════════════════════════════════ */

/* 1. Sticky colonne VENTE dans tableau compta
      .table-wrap a overflow:hidden qui bloque sticky
      On override uniquement pour le tableau compta          */
#page-mandats .table-wrap {
  overflow: clip !important;
  overflow-x: auto !important;
}
#ca-thead tr th:first-child {
  position: sticky !important;
  left: 0 !important;
  z-index: 4 !important;
  background: var(--s2) !important;
}
#ca-table-body tr td:first-child {
  position: sticky !important;
  left: 0 !important;
  z-index: 2 !important;
  background: var(--surface) !important;
}
#ca-table-body tr:hover td:first-child {
  background: var(--s2) !important;
}

/* Analytics mobile: override padding inline col droite */

/* 4. Cloche notif — remettre exactement le style original sans override       */
/* notif-btn est défini dans le CSS de base : border-radius:10px, 38x38px
   On s'assure qu'aucun override ne le change                                  */
#notif-fixed-wrap {
  top: 12px !important;
  right: 14px !important;
  padding: 0 !important;
  background: none !important;
  border: none !important;
  border-radius: 0 !important;
  box-shadow: none !important;
}

/* 5. Badges kanban type mandat — thème-aware */
.vk-badge-exclu  { background:#5a4af0; color:#fff; border:1px solid #7c6af7; }
.vk-badge-simple { background:rgba(77,166,255,.25); color:#6db8ff; border:1px solid rgba(77,166,255,.5); }
.vk-badge-deleg  { background:rgba(136,135,128,.2); color:#aaa; border:1px solid rgba(136,135,128,.4); }
body.theme-light .vk-badge-exclu, body.theme-warm .vk-badge-exclu   { background:#5a4af0; color:#fff; border-color:#4a3bdc; }
body.theme-light .vk-badge-simple, body.theme-warm .vk-badge-simple { background:#1a6fc7; color:#fff; border-color:#1558a0; }
body.theme-light .vk-badge-deleg, body.theme-warm .vk-badge-deleg   { background:#666; color:#fff; border-color:#444; }

/* 6. E/S badge vert foncé dans kanban */
/* inline dans vendeurs-fiche.js */

/* 7. Kanban desktop pleine largeur */
#page-vend, #page-vendeurs { max-width: 100% !important; }
.vend-board { min-width: 100%; }

/* 8. Kanban mobile même padding que compta */
@media(max-width:900px) {
  .vend-page { padding: 12px 12px 80px !important; gap: 12px !important; }
}
@media(max-width:600px) {
  .vend-page { padding: 8px 6px 80px !important; gap: 8px !important; }
}

/* 10. Toggle 2/3 colonnes masqué sur mobile */
@media(max-width:700px) {
  .db-cols-toggle { display: none !important; }
}

/* 11. overflow bien modal mobile */
@media(max-width:700px) {
  #m-bien-inner, #m-bien-inner > * { overflow-x: hidden !important; max-width: 100% !important; }
  #m-bien-inner input, #m-bien-inner select, #m-bien-inner textarea {
    max-width: 100% !important; box-sizing: border-box !important;
  }
}

/* ── Analytics mobile: override padding inline col droite ── */
@media(max-width:700px) {
  #page-analytics > div > div:last-child {
    padding: 10px !important;
    padding-bottom: 80px !important;
  }
}

@media(max-width:900px){
  #m-bien { padding:0 !important; align-items:flex-end !important; }
  .m-bien-inner-el { width:100% !important; max-width:100% !important; border-radius:20px 20px 0 0 !important; max-height:92vh !important; }
}

body.sidebar-open .mobile-tabbar { display: none !important; }

@keyframes spinSync{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}

@media(max-width:700px){#bug-report-btn{bottom:80px !important;left:16px !important;right:auto !important;}}

/* Sticky colonne VENTE compta */
.ca-content .table-wrap { overflow-x: auto !important; position: relative; }
.ca-content .table-wrap table { border-collapse: separate; border-spacing: 0; }
.ca-content .table-wrap thead th { position: relative; z-index: 1; background: var(--s2); }
.ca-content .table-wrap thead th:first-child { position: sticky; left: 0; z-index: 3; background: var(--s2); }
.ca-content .table-wrap tbody td:first-child { position: sticky; left: 0; z-index: 2; background: var(--surface); }
.ca-content .table-wrap tbody tr:hover td:first-child { background: var(--s2); }

@media(min-width:701px){#btn-mobile-search{display:none !important}}

/* Fiches lecture seule — 2 colonnes sur mobile */
@media(max-width:600px){#vend-fiche-modal .edit-grid{grid-template-columns:1fr 1fr !important}#vend-fiche-modal .edit-field.full{grid-column:1/-1 !important}}

/* ============================================
   Agenda (Phase 1 MVP)
   ============================================ */
.agenda-top{position:sticky;top:80px;z-index: var(--z-sticky) /* was 100 */;background:var(--bg)}
/* [v939] box-shadow:0 2px 0 var(--border) RETIRÉ — Anthony : c'était le trait gris visible sous la toolbar */
.agenda-header{display:flex;align-items:center;gap:16px;padding:14px 24px;border-bottom:1px solid var(--border);flex-wrap:wrap;background:var(--bg);font-family:'Inter',sans-serif}
.agenda-nav-group{display:flex;align-items:center;gap:6px}
.agenda-nav-btn{background:var(--s2);border:1px solid var(--border);border-radius:8px;color:var(--text);padding:7px 12px;font-family:'Inter',sans-serif;font-size:13px;font-weight:500;cursor:pointer;transition:background .12s,border-color .12s;min-width:36px;outline:none}
.agenda-nav-btn:hover{background:var(--surface);border-color:var(--accent)}
.agenda-nav-btn:focus-visible{border-color:var(--accent);box-shadow:0 0 0 2px rgba(124,106,247,.25)}
.agenda-today-btn{font-weight:600}
.agenda-title{font-family:'Plus Jakarta Sans',sans-serif;font-size:22px;font-weight:800;letter-spacing:-0.5px;color:var(--text);flex:1;min-width:180px;line-height:1.1;text-transform:capitalize}
.agenda-right-group{display:flex;align-items:center;gap:10px;margin-left:auto}
.agenda-view-switch{display:inline-flex;background:var(--s2);border:1px solid var(--border);border-radius:8px;padding:2px;gap:2px}
.agenda-view-switch button{background:transparent;border:none;color:var(--muted);padding:6px 14px;border-radius:6px;font-family:'Inter',sans-serif;font-size:12px;font-weight:600;cursor:pointer;transition:background .12s,color .12s;outline:none}
.agenda-view-switch button.active{background:var(--surface);color:var(--text)}
.agenda-view-switch button:hover:not(.active){color:var(--text)}
.agenda-view-switch button:focus-visible{box-shadow:0 0 0 2px rgba(124,106,247,.35) inset}
.agenda-add-btn{background:var(--accent);border:none;border-radius:8px;color:#fff;padding:8px 14px;font-family:'Inter',sans-serif;font-size:13px;font-weight:600;cursor:pointer;transition:filter .12s;white-space:nowrap;outline:none}

.agenda-settings-btn{background:var(--s2);border:1px solid var(--border);border-radius:8px;color:var(--muted);width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:color .12s,border-color .12s;flex-shrink:0;padding:0;outline:none}
.agenda-settings-btn:hover{color:var(--text);border-color:var(--accent)}
.agenda-settings-btn:focus-visible{box-shadow:0 0 0 3px rgba(124,106,247,.3)}
.agenda-add-btn:hover{filter:brightness(1.1)}
.agenda-add-btn:focus-visible{box-shadow:0 0 0 3px rgba(124,106,247,.35)}

.agenda-month-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:1px;background:var(--border);padding:1px;margin:12px 24px 24px;font-family:'Inter',sans-serif}
.agenda-day-header{background:var(--bg);color:var(--muted);font-family:'Inter',sans-serif;font-size:10px;font-weight:700;letter-spacing:1.2px;text-transform:uppercase;text-align:center;padding:9px 0;position:sticky;top:calc(80px + var(--agenda-top-h, 108px));z-index:3}
.agenda-day-cell{background:var(--surface);min-height:100px;padding:6px 8px;cursor:pointer;transition:background .12s;display:flex;flex-direction:column;gap:4px;position:relative}
.agenda-day-cell:hover{background:var(--s2)}
.agenda-day-cell.outside-month{opacity:.38}
.agenda-day-cell.today{background:var(--surface)}
.agenda-day-cell.today::before{content:'';position:absolute;top:0;left:0;right:0;height:2px;background:var(--text);pointer-events:none;z-index:1}
.agenda-day-cell.today:hover{background:var(--s2)}
.agenda-day-cell.today .agenda-day-number{background:var(--text);color:var(--bg);width:22px;height:22px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-weight:700;font-family:'Inter',sans-serif;font-size:11px}
.agenda-day-number{font-family:'Inter',sans-serif;font-size:12px;font-weight:600;color:var(--text);align-self:flex-start}
.agenda-day-events{display:flex;flex-direction:column;gap:2px;overflow:hidden}
.agenda-event-pill{display:flex;align-items:center;gap:4px;padding:2px 6px;border-radius:4px;font-family:'Inter',sans-serif;font-size:11px;font-weight:500;cursor:pointer;border:1px solid transparent;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.agenda-event-pill:hover{filter:brightness(1.15)}
.agenda-event-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0}
.agenda-event-time{font-family:'Inter',sans-serif;font-weight:600;flex-shrink:0}
.agenda-event-titre{font-family:'Inter',sans-serif;overflow:hidden;text-overflow:ellipsis;min-width:0}
.agenda-event-more{font-family:'Inter',sans-serif;font-size:10px;color:var(--muted);padding:0 4px;font-weight:600}

/* Toggles responsive : texte court/long des boutons */

/* ═════════════════════════════════════════════════
   AGENDA MOBILE — layout refait (v1.2.5)
   ═════════════════════════════════════════════════ */
@media(max-width:700px){
  #page-agenda{overflow-x:hidden;max-width:100vw;padding-top:0}
  .agenda-top{max-width:100vw;overflow-x:hidden;top:0;box-shadow:none;border-bottom:1px solid var(--border)}

  /* ── Header : compact 1 ligne sur mobile ── */
  .agenda-header{padding:6px 8px;gap:6px;row-gap:4px;flex-wrap:wrap;align-items:center}
  .agenda-title{font-size:13px;flex:1 1 auto;text-align:left;letter-spacing:-0.2px;margin:0;line-height:1.3;font-weight:700;padding:0 4px;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;order:0}
  .agenda-nav-group{gap:2px;flex-shrink:0;order:0}
  .agenda-nav-btn{padding:4px 7px;font-size:11.5px;min-width:26px;border-radius:6px}
  .agenda-today-btn{padding:4px 8px;font-size:11px}
  
  
  .agenda-right-group{margin-left:0;width:auto;gap:4px;flex-shrink:0;min-width:0;order:1;flex:0 0 auto;justify-content:flex-end;flex-wrap:wrap}
  .agenda-view-switch{padding:1px;flex-shrink:1;min-width:0}
  .agenda-view-switch button{padding:3px 5px;font-size:10px;font-weight:600}
  .agenda-view-switch button[data-view="3days"]{padding:3px 5px}
  /* Mobile : on cache l'ancien bouton du header agenda — il est remplacé par #btn-add-agenda
     dans le header global (cohérence avec acq/vend/mandats/biens) */
  .agenda-add-btn{display:none !important}
  .agenda-settings-btn{width:28px;height:28px;flex-shrink:0}
  .agenda-settings-btn svg{width:13px;height:13px}

  /* ── Filter bar : compacte, 1 ligne si possible ── */
  .agenda-filter-bar{padding:5px 8px;gap:4px;row-gap:4px;flex-wrap:wrap}
  .agenda-filter-group{gap:4px}
  .agenda-filter-label{display:none}
  .agenda-filter-pills{gap:4px;flex-wrap:wrap}
  .agenda-filter-pill{padding:2px 7px;font-size:9.5px;gap:3px}
  .agenda-filter-dot{width:5px;height:5px}
  .agenda-filter-consultant-wrap{margin-left:0;width:100%}
  .agenda-filter-select{width:100%;padding:3px 24px 3px 8px;font-size:11px}
  /* Boutons Vue / Filtres / Consultant mobile : padding plus serré */
  .agenda-filter-mobile-btn{padding:5px 9px;gap:4px;font-size:11px}
  .agenda-filter-mobile-btn svg{width:11px;height:11px}
  /* Pill d'alerte events supprimés Google : padding plus serré aussi */
  .gcal-deletion-pill{padding:5px 9px !important;font-size:10.5px !important}
  /* Sur mobile : cacher les pills inline, montrer le bouton "Filtres"
     !important nécessaire pour battre .agenda-filter-group{display:flex} déclaré après */
  .agenda-filter-types-desktop{display:none !important}
  .agenda-filter-mobile-only{display:inline-flex !important}
  /* Cacher le <select> desktop consultant : remplacé par le bouton mobile */
  .agenda-filter-consultant-desktop{display:none !important}

  /* ── Vue MOIS : prend toute la hauteur dispo (style Google Calendar) ── */
  .agenda-month-grid{
    margin:0;
    grid-template-columns:repeat(7,minmax(0,1fr));
    grid-template-rows:auto repeat(6, minmax(0, 1fr));
    height:calc(100vh - 56px - 130px - 62px); /* header - agenda-top(header+filters) - tab-bar */
    min-height:360px;
    gap:1px;padding:1px
  }
  .agenda-day-cell{min-width:0;min-height:0;padding:3px;overflow:hidden}
  .agenda-day-events{min-width:0;overflow:hidden}
  .agenda-day-header{font-size:9px;padding:4px 0;letter-spacing:.6px;min-width:0}
  .agenda-day-number{font-size:11px}
  .agenda-day-cell.today .agenda-day-number{width:19px;height:19px;font-size:11px}
  .agenda-event-pill{font-size:9.5px;padding:1px 3px;gap:3px;min-width:0}
  .agenda-event-dot{width:5px;height:5px}
  .agenda-event-time{display:none}
  .agenda-event-titre{min-width:0}

  /* ── Vue LISTE : padding minimal + scroll RESET ── */
  .agenda-list-wrap{margin:4px 6px 80px;max-height:none;overflow:visible;padding-right:0}
  .agenda-list-section{margin-bottom:6px}
  .agenda-list-date{font-size:9px;padding:3px 0;margin-bottom:3px}
  .agenda-list-events{gap:3px}
  .agenda-list-item{gap:6px;padding:7px 10px}

  /* ── Vue SEMAINE / 3 JOURS : wrap scrollable verticalement uniquement ──
     PAS de scroll horizontal en mobile : la semaine entière (7 jours) tient sur l'écran,
     comme Google Calendar. La navigation entre semaines se fait par swipe gesture. */
  .agenda-week-wrap{max-height:calc(100vh - 170px);overflow-y:auto;overflow-x:hidden;margin:0;-webkit-overflow-scrolling:touch}
  /* Vue semaine : 7 jours sur l'écran (col d'heures réduite à 32px pour gagner de la place)
     !important nécessaire pour battre la règle desktop déclarée plus loin (1296+) */
  .agenda-week-grid{min-width:0 !important;width:100% !important;grid-template-columns:32px repeat(7,minmax(0,1fr)) !important}
  /* Vue 3j : 3 jours qui occupent la largeur (col d'heures un peu plus large pour lisibilité) */
  .agenda-week-wrap[data-ag-view="3days"] .agenda-week-grid{min-width:0 !important;width:100% !important;grid-template-columns:44px repeat(3,minmax(0,1fr)) !important}
  /* Vue Jour : 1 seule colonne qui prend toute la largeur, col d'heures normale */
  .agenda-week-wrap[data-ag-view="day"] .agenda-week-grid{min-width:0 !important;width:100% !important;grid-template-columns:50px 1fr !important}
  .agenda-week-day-num{font-size:14px}
  .agenda-week-day-name{font-size:9px;letter-spacing:.8px}
  .agenda-week-event{font-size:10px;padding:3px 5px}
  /* Header sticky : opaque pour cacher le contenu qui passe dessous */
  .agenda-week-day-header{padding:6px 2px;background:var(--bg)}
  .agenda-week-allday-label{font-size:8px;padding:5px}
  .agenda-week-hour-label{font-size:9px;padding-right:3px}
  .agenda-week-wrap[data-ag-view="3days"] .agenda-week-day-num{font-size:14px}
  .agenda-week-wrap[data-ag-view="3days"] .agenda-week-day-name{font-size:9.5px}
  .agenda-week-wrap[data-ag-view="3days"] .agenda-week-hour-label{font-size:9.5px;padding-right:5px}
  .agenda-week-wrap[data-ag-view="3days"] .agenda-week-allday-label{font-size:8.5px;padding:6px 4px;letter-spacing:.3px}
  .agenda-week-wrap[data-ag-view="3days"] .agenda-week-event{font-size:10.5px;padding:3px 5px}
  .agenda-week-wrap[data-ag-view="3days"] .agenda-week-event-time{font-size:9.5px}

  /* Mobile : on cache complètement les sélecteurs de vue du header global,
     remplacés par le bouton "Vue" dans la filter bar (cohérent avec Filtres / Consultant) */
  .agenda-view-switch{display:none !important}
  
}
/* Select compact mobile — reprend le style du filter consultant */

/* ── Dark theme : renforcer les lignes de grille (invisibles sur fond noir) ── */

[data-theme="noir"] .agenda-week-grid{background:rgba(255,255,255,.18)}

[data-theme="noir"] .agenda-week-hour-line{border-top-color:rgba(255,255,255,.06)}

[data-theme="noir"] .agenda-month-grid{background:rgba(255,255,255,.18)}

/* Agenda : bouton [+] création dossier (R1) */
#m-ag-dossier-create-btn:hover{filter:brightness(1.1)}
#m-ag-dossier-create-btn:focus-visible{box-shadow:0 0 0 3px rgba(124,106,247,.35);outline:none}
[data-theme="warm"] #m-ag-dossier-create-btn{background:var(--text) !important;border-radius:3px !important;font-weight:700 !important}
[data-theme="warm"] #m-ag-dossier-create-btn:hover{background:var(--text-dim) !important;filter:none !important}
[data-theme="noir"] #m-ag-dossier-create-btn{background:#fff !important;color:#000 !important;border-radius:4px !important}
[data-theme="noir"] #m-ag-dossier-create-btn:hover{background:#e5e5e5 !important;filter:none !important}

/* ============================================
   Agenda · Vue semaine
   ============================================ */
/* [v940] Anthony : margin 12px 24px 24px supprimée pour que la grille prenne
   la même largeur que le toolbar (au lieu d'être indentée). Le wrap parent
   .shellv2-main gère déjà son padding 24px global. */
.agenda-week-wrap{margin:0;overflow:auto;max-height:calc(100vh - 220px);position:relative;font-family:'Inter',sans-serif}
.agenda-week-grid{display:grid;grid-template-columns:60px repeat(7, minmax(120px, 1fr));gap:1px;background:var(--border);padding:1px;min-width:800px}
/* Vue Jour desktop : 1 colonne très large, col d'heures normale */
.agenda-week-wrap[data-ag-view="day"] .agenda-week-grid{grid-template-columns:60px 1fr;min-width:0}
.agenda-week-corner{background:var(--bg);min-height:56px;position:sticky;left:0;top:0;z-index:6}
.agenda-week-day-header{background:var(--bg);padding:9px 8px;text-align:center;color:var(--muted);font-family:'Inter',sans-serif;position:sticky;top:0;z-index:4}
.agenda-week-day-header.today{color:var(--text)}
.agenda-week-day-name{font-family:'Inter',sans-serif;font-size:10px;letter-spacing:1.2px;text-transform:uppercase;font-weight:700}
.agenda-week-day-num{font-size:19px;font-weight:800;font-family:'Plus Jakarta Sans',sans-serif;letter-spacing:-.3px;margin-top:4px;line-height:1;color:var(--text)}
.agenda-week-day-header.today .agenda-week-day-num{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;background:var(--text);color:var(--bg);margin-top:3px;font-size:12px;font-weight:700}
.agenda-week-allday-label{background:var(--bg);padding:8px;color:var(--muted);font-family:'Inter',sans-serif;font-size:10px;letter-spacing:.5px;text-transform:uppercase;text-align:right;font-weight:600;display:flex;align-items:center;justify-content:flex-end;position:sticky;left:0;z-index:3}
.agenda-week-allday-col{background:var(--surface);min-height:34px;padding:3px;cursor:pointer;transition:background .12s}
.agenda-week-allday-col:hover{background:var(--s2)}
.agenda-week-time-col{background:var(--bg);position:sticky;left:0;z-index:2;display:flex;flex-direction:column}
.agenda-week-hour-label{padding-right:7px;font-size:10px;color:var(--muted);text-align:right;padding-top:2px;font-family:'Inter',sans-serif;font-weight:500;border-top:1px solid var(--border);border-top-color:rgba(128,128,140,.2)}
.agenda-week-hour-label:first-child{border-top:none}
.agenda-week-day-col{background:var(--surface);position:relative;cursor:pointer;transition:background .12s}
.agenda-week-day-col:hover{background:var(--s2)}
.agenda-week-day-col.today{background:var(--surface)}
.agenda-week-day-col.today:hover{background:var(--s2)}
.agenda-week-day-header.today{box-shadow:inset 0 -3px 0 var(--text)}
.agenda-week-hour-line{position:absolute;left:0;right:0;border-top:1px solid rgba(128,128,140,.1);pointer-events:none}
.agenda-week-hour-line:first-child{border-top:none}
/* [v932] Anthony : ligne now en violet accent (au lieu de rouge --chaud) pour
   ne pas confondre avec les events Compromis. */
.agenda-week-now-line{position:absolute;left:0;right:0;height:2px;background:var(--accent);z-index:3;pointer-events:none;box-shadow:0 0 8px color-mix(in srgb, var(--accent) 40%, transparent)}
.agenda-week-now-line::before{content:'';position:absolute;left:-5px;top:-4px;width:10px;height:10px;background:var(--accent);border-radius:50%}
.agenda-week-event{position:absolute;left:3px;right:3px;border:1px solid;border-radius:6px;padding:4px 7px;font-family:'Inter',sans-serif;font-size:11px;cursor:pointer;overflow:hidden;transition:filter .12s,transform .12s;z-index:2}
.agenda-week-event:hover{filter:brightness(1.15);transform:translateX(-1px);z-index:3}
.agenda-week-event-time{font-family:'Inter',sans-serif;font-size:10px;font-weight:700;opacity:.88;letter-spacing:.2px}
.agenda-week-event-title{font-family:'Inter',sans-serif;font-weight:600;margin-top:2px;line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* Softer grid lines — moins "Excel" */
.agenda-week-grid{background:rgba(128,128,140,.08)}

/* Mobile : week view (override des règles précédentes — déjà gérées plus haut, on garde juste les marges/sizes) */
@media(max-width:700px){
  .agenda-week-wrap{margin:6px 4px;max-height:calc(100vh - 190px)}
  /* min-width:700px supprimé : maintenant la semaine entière tient sur l'écran (cf. règles plus haut) */
  .agenda-week-day-num{font-size:14px}
  .agenda-week-event{font-size:10px;padding:3px 5px}
  /* Vue 3-jours : tient dans le viewport sans scroll horizontal */
  .agenda-week-wrap[data-ag-view="3days"]{margin:4px 4px}
  .agenda-week-wrap[data-ag-view="3days"] .agenda-week-grid{min-width:0 !important;width:100%}
  .agenda-week-wrap[data-ag-view="3days"] .agenda-week-day-num{font-size:14px}
  .agenda-week-wrap[data-ag-view="3days"] .agenda-week-day-name{font-size:9.5px}
  .agenda-week-wrap[data-ag-view="3days"] .agenda-week-hour-label{font-size:9.5px;padding-right:5px}
  .agenda-week-wrap[data-ag-view="3days"] .agenda-week-allday-label{font-size:8.5px;padding:6px 4px;letter-spacing:.3px}
  .agenda-week-wrap[data-ag-view="3days"] .agenda-week-event{font-size:10.5px;padding:3px 5px}
  .agenda-week-wrap[data-ag-view="3days"] .agenda-week-event-time{font-size:9.5px}
}

/* Bouton "3 jours" visible seulement en mobile (≤ 700px) */

@media(max-width:700px){
  
  /* Sur mobile, les 4 boutons doivent tenir dans le switch → padding plus serré */
  .agenda-view-switch button{padding:6px 9px;font-size:11px}
}

/* ============================================
   Agenda · Vue liste chronologique
   ============================================ */
.agenda-list-wrap{margin:10px 24px 24px;overflow-y:auto;max-height:calc(100vh - 200px);padding-right:4px;font-family:'Inter',sans-serif}
.agenda-list-section{margin-bottom:10px}
.agenda-list-section.past{opacity:.55}
.agenda-list-date{font-family:'Inter',sans-serif;font-size:9.5px;font-weight:700;letter-spacing:1.2px;text-transform:uppercase;color:var(--muted);padding:3px 0 4px;border-bottom:1px solid var(--border);margin-bottom:4px}
.agenda-list-section.today .agenda-list-date{color:var(--accent);font-weight:800}
.agenda-list-section.tomorrow .agenda-list-date{color:var(--text)}
.agenda-list-events{display:flex;flex-direction:column;gap:3px}
.agenda-list-item{display:flex;align-items:center;gap:10px;padding:6px 10px;background:var(--surface);border:1px solid var(--border);border-left:3px solid;border-radius:6px;cursor:pointer;transition:transform .12s,border-color .12s,background .12s}
.agenda-list-item:hover{transform:translateX(2px);background:var(--s2)}
.agenda-list-item-time{min-width:82px;font-family:'Inter',sans-serif;font-size:10.5px;font-weight:700;letter-spacing:.2px;flex-shrink:0;padding-top:0}
.agenda-list-item-body{flex:1;min-width:0}
.agenda-list-item-title{font-family:'Inter',sans-serif;font-size:12px;font-weight:600;color:var(--text);line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.agenda-list-item-notes{font-family:'Inter',sans-serif;font-size:10.5px;color:var(--muted);margin-top:1px;line-height:1.35;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.agenda-list-item-type-badge{padding:1px 7px;border-radius:99px;font-family:'Inter',sans-serif;font-size:8.5px;font-weight:700;letter-spacing:.4px;text-transform:uppercase;border:1px solid;flex-shrink:0;align-self:center}

.agenda-list-empty{padding:80px 24px;text-align:center;color:var(--muted)}
.agenda-list-empty-icon{font-size:40px;opacity:.4;margin-bottom:12px}
.agenda-list-empty-title{font-family:'Plus Jakarta Sans',sans-serif;font-size:17px;font-weight:700;color:var(--text);margin-bottom:6px}
.agenda-list-empty-sub{font-family:'Inter',sans-serif;font-size:13px;max-width:320px;margin:0 auto;line-height:1.5}

/* ============================================
   Agenda · View popup (lecture seule)
   ============================================ */
.ag-view-row{display:flex;align-items:center;gap:10px;font-family:'Inter',sans-serif;font-size:13px;color:var(--text);line-height:1.4;flex-wrap:wrap}
.ag-view-row .ag-view-icon{flex-shrink:0;width:28px;height:28px;border-radius:7px;background:var(--s2);color:var(--muted);display:inline-flex;align-items:center;justify-content:center}
.ag-view-row strong{font-weight:700;color:var(--text)}
.ag-view-notes{background:var(--s2);border-radius:10px;padding:12px 14px;margin-top:4px}
.ag-view-notes-label{font-family:'Inter',sans-serif;font-size:10px;font-weight:700;letter-spacing:1px;text-transform:uppercase;color:var(--muted);margin-bottom:6px}
.ag-view-notes-content{font-family:'Inter',sans-serif;font-size:13px;color:var(--text);line-height:1.55;white-space:pre-wrap;word-break:break-word}

/* Mobile : liste pleine largeur, time en dessus, padding minimal */
@media(max-width:600px){
  .agenda-list-wrap{margin:4px 6px 80px;max-height:none;overflow:visible;padding-right:0}
  .agenda-list-section{margin-bottom:6px}
  .agenda-list-date{font-size:9px;padding:2px 0 3px;margin-bottom:3px}
  .agenda-list-events{gap:2px}
  .agenda-list-item{flex-wrap:wrap;gap:6px;padding:7px 10px}
  .agenda-list-item-time{min-width:0;width:100%;order:-1;font-size:10.5px;letter-spacing:.1px}
  .agenda-list-item-title{white-space:normal;font-size:12.5px}
  .agenda-list-item-type-badge{order:2;font-size:8.5px;padding:1px 6px;letter-spacing:.3px}
}

/* ============================================
   Agenda · Filter bar (types + consultant)
   ============================================ */
/* [v932] Anthony : header trop chargé. Refonte = compactage des pills Types
   pour libérer du visuel. Padding réduit (12px→8px), pills compactes
   (font 11→10.5px, padding 4/10→3/8), gaps resserrés (16→10px / 6→5px). */
/* [v939] Anthony : filtres en dropdown menu (pas sidebar). La rangée inline
   .agenda-filter-bar est complètement cachée (le JS la met display:none). */
.agenda-filter-bar{
  display: none !important;
}

/* Dropdown menu type popover, ancré sous le bouton Filtres */
.ag-dd-menu{
  position: fixed;
  min-width: 240px; max-width: 90vw;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 10px;
  padding: 8px 0;
  z-index: var(--z-overlay, 10000);
  box-shadow: 0 8px 32px color-mix(in srgb, var(--text) 14%, transparent),
              0 2px 6px color-mix(in srgb, var(--text) 8%, transparent);
  font-family: 'Inter', sans-serif;
  animation: agDdFadeIn .14s ease;
}
@keyframes agDdFadeIn{
  from { opacity: 0; transform: translateY(-4px); }
  to   { opacity: 1; transform: translateY(0); }
}
.ag-dd-section{
  font-family: 'Inter', sans-serif;
  font-size: 10px; font-weight: 700;
  letter-spacing: 1px; text-transform: uppercase;
  color: var(--muted);
  padding: 6px 14px 4px;
}
.ag-dd-item{
  display: flex; align-items: center; gap: 10px;
  padding: 8px 14px;
  cursor: pointer;
  transition: background .12s;
  user-select: none;
}
.ag-dd-item:hover{ background: var(--s2); }
.ag-dd-item input[type="checkbox"]{
  width: 16px; height: 16px;
  accent-color: var(--accent);
  cursor: pointer;
  margin: 0;
  flex-shrink: 0;
}
.ag-dd-dot{
  width: 8px; height: 8px;
  border-radius: 50%;
  flex-shrink: 0;
}
.ag-dd-label{
  font-size: 13px;
  color: var(--text);
  flex: 1;
}
.ag-dd-divider{
  height: 1px;
  background: var(--border);
  margin: 6px 0;
}
.agenda-filter-bar.agenda-filter-sidebar-open{
  transform: translateX(0);
}
/* [v939] Backdrop + close-btn de la sidebar v938 retirés (plus utilisés). */

/* Override legacy : retirer l'ancien comportement collapsed (max-height) */
.agenda-filter-bar.agenda-filter-bar-collapsed{
  /* No-op — backward compat. Le sidebar est géré par .agenda-filter-sidebar-open */
  max-height: none;
  padding: 80px 24px 24px;
  opacity: 1;
  border-bottom: 0;
}

/* Groups internes : stack vertical au lieu de flex inline */
.agenda-filter-bar .agenda-filter-group{
  flex-direction: column; align-items: stretch;
  gap: 8px;
}
.agenda-filter-bar .agenda-filter-pills{
  flex-direction: column; gap: 6px;
}
.agenda-filter-bar .agenda-filter-pill{
  justify-content: flex-start;
  font-size: 12px;
  padding: 6px 12px;
}
/* Badge sur le bouton Filtres : indique "N/7" types actifs */
.agenda-filter-badge{
  position:absolute;top:-3px;right:-3px;
  min-width:16px;height:16px;padding:0 4px;
  background:var(--accent);color:#fff;
  font-size:9px;font-weight:700;line-height:16px;
  border-radius:8px;letter-spacing:0;
  font-family:var(--bp-mono,'JetBrains Mono',monospace);
  border:2px solid var(--bg);
  box-sizing:content-box;
}
/* Le bouton Filtres a position:relative pour ancrer le badge */
.agenda-settings-btn[onclick*="_agToggleFilterBar"]{position:relative}
.agenda-filter-group{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.agenda-filter-label{font-family:'Inter',sans-serif;font-size:10px;font-weight:700;letter-spacing:1px;text-transform:uppercase;color:var(--muted)}
.agenda-filter-pills{display:flex;flex-wrap:wrap;gap:5px}
.agenda-filter-pill{display:inline-flex;align-items:center;gap:5px;padding:3px 8px;border-radius:99px;border:1px solid;font-family:'Inter',sans-serif;font-size:10.5px;font-weight:600;letter-spacing:.2px;cursor:pointer;transition:transform .1s,opacity .12s;user-select:none}
.agenda-filter-pill:hover{transform:translateY(-1px)}
.agenda-filter-pill:not(.active){opacity:.55}
.agenda-filter-pill:not(.active):hover{opacity:.8}
.agenda-filter-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}
.agenda-filter-consultant-wrap{margin-left:auto}
.agenda-filter-select{background:var(--s2);border:1px solid var(--border);border-radius:8px;color:var(--text);padding:6px 28px 6px 10px;font-family:'Inter',sans-serif;font-size:12px;font-weight:500;cursor:pointer;outline:none;appearance:none;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='%235c6480' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'><polyline points='6 9 12 15 18 9'/></svg>");background-repeat:no-repeat;background-position:right 8px center;transition:border-color .12s}
.agenda-filter-select:hover,.agenda-filter-select:focus-visible{border-color:var(--accent)}

/* Bouton mobile "Filtres" — caché sur desktop */
.agenda-filter-mobile-only{display:none}
.agenda-filter-mobile-btn{position:relative;display:inline-flex;align-items:center;gap:6px;padding:6px 12px;background:var(--s2);border:1px solid var(--border);border-radius:8px;color:var(--text);font-family:'Inter',sans-serif;font-size:12px;font-weight:600;cursor:pointer;transition:border-color .12s,background .12s;outline:none}
.agenda-filter-mobile-btn:hover{border-color:var(--accent);background:var(--surface)}
.agenda-filter-mobile-badge{display:inline-flex;align-items:center;justify-content:center;min-width:16px;height:16px;padding:0 4px;background:var(--accent);color:#fff;border-radius:99px;font-size:10px;font-weight:700;line-height:1;margin-left:2px}

/* Rows dans la popup filtres mobile */
.ag-mobile-filter-row{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:8px;background:var(--s2);border:1px solid var(--border);cursor:pointer;transition:background .12s}
.ag-mobile-filter-row:hover{background:var(--surface)}
.ag-mobile-filter-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}

@media(max-width:700px){
  .agenda-filter-bar{padding:10px 12px;gap:10px}
  .agenda-filter-label{font-size:10px}
  .agenda-filter-pill{font-size:10px;padding:3px 8px}
  .agenda-filter-consultant-wrap{margin-left:0;width:100%}
  .agenda-filter-select{width:100%}
}

/* ============================================
   Agenda · Drag & Drop + Resize (v1.2.0)
   ============================================ */
/* Event pills → cursor grab */
.agenda-event-pill,
.agenda-week-event{cursor:grab;user-select:none;-webkit-user-select:none;touch-action:manipulation}
.agenda-event-pill:active,
.agenda-week-event:active{cursor:grabbing}

/* Ghost suivant le curseur */
.agenda-drag-ghost{font-family:'Inter',sans-serif;user-select:none}
.agenda-drag-ghost .agenda-week-resize-handle{display:none}

/* Drop target feedback */
.agenda-day-cell.agenda-drop-target{box-shadow:inset 0 0 0 2px var(--accent);background:rgba(124,106,247,.08) !important}
.agenda-week-day-col.agenda-drop-target,
.agenda-week-allday-col.agenda-drop-target{box-shadow:inset 0 0 0 2px var(--accent);background:rgba(124,106,247,.05) !important}

/* Resize handle (vue semaine) */
.agenda-week-event{position:absolute}
.agenda-week-resize-handle{position:absolute;bottom:0;left:0;right:0;height:7px;cursor:ns-resize;opacity:0;background:linear-gradient(to bottom,transparent,rgba(0,0,0,.12));border-bottom-left-radius:5px;border-bottom-right-radius:5px;transition:opacity .12s;touch-action:none}
.agenda-week-event:hover .agenda-week-resize-handle{opacity:1}
.agenda-week-resize-handle::after{content:'';position:absolute;left:50%;bottom:2px;transform:translateX(-50%);width:22px;height:2px;background:currentColor;opacity:.5;border-radius:1px}

/* Touch : handle un peu plus grand pour être attrapable au doigt */
@media(hover:none){
  .agenda-week-resize-handle{opacity:.55;height:10px}
}

/* ============================================
   Agenda · Participants (v1.2.1)
   ============================================ */
/* Chips dans le form create/edit */
.ag-participant-chip{display:inline-flex;align-items:center;gap:6px;padding:4px 6px 4px 10px;border-radius:99px;background:var(--s2);border:1px solid var(--border);font-family:'Inter',sans-serif;font-size:12px;font-weight:500;color:var(--text);max-width:240px}
.ag-participant-status-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;box-shadow:0 0 0 2px var(--s2)}
.ag-participant-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.ag-participant-remove{background:none;border:none;color:var(--muted);cursor:pointer;font-size:13px;padding:2px 4px;line-height:1;border-radius:4px;flex-shrink:0}
.ag-participant-remove:hover{background:var(--bg);color:var(--chaud)}

/* Suggestions (reuse dossier-suggestions styles defined elsewhere) */
#m-ag-participants-suggestions{position:absolute;top:calc(100% + 4px);left:0;right:0;background:var(--surface);border:1px solid var(--border);border-radius:8px;box-shadow:0 8px 24px rgba(0,0,0,.15);max-height:240px;overflow-y:auto;z-index:10}
#m-ag-participants-suggestions .dossier-suggestion{padding:8px 12px;cursor:pointer;border-bottom:1px solid var(--border);transition:background .1s}
#m-ag-participants-suggestions .dossier-suggestion:hover{background:var(--s2)}
#m-ag-participants-suggestions .dossier-suggestion:last-child{border-bottom:none}
#m-ag-participants-suggestions .dossier-suggestion-empty{padding:12px;text-align:center;color:var(--muted);font-family:'Inter',sans-serif;font-size:12px}

/* Liste dans view popup */
.ag-view-participants{margin-top:4px}
.ag-view-participant{display:flex;align-items:center;gap:10px;padding:6px 0;font-family:'Inter',sans-serif;font-size:12.5px}
.ag-view-participant-name{flex:1;color:var(--text);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ag-view-participant-status{font-size:10.5px;font-weight:700;letter-spacing:.3px;text-transform:uppercase;flex-shrink:0}

/* Prompt Accept/Decline dans view popup */
.ag-view-response-prompt{margin-top:10px;padding:12px;background:rgba(124,106,247,.08);border:1px dashed var(--accent);border-radius:10px}

/* Badges 👥N sur event pills */
.ag-pill-participants{display:inline-flex;align-items:center;gap:2px;font-family:'Inter',sans-serif;font-size:9.5px;font-weight:700;letter-spacing:.2px;opacity:.85;flex-shrink:0;margin-left:4px}
.ag-pill-participants-month{font-size:9px;opacity:.75}
.ag-pill-participants-week{margin-left:auto;font-size:9.5px;opacity:.9}
.ag-pill-participants-allday{font-size:9px;opacity:.75}
.ag-pill-participants-list{margin-left:8px;font-size:10px;color:var(--muted);opacity:1;font-weight:600}

/* ============================================
   Agenda · Invités externes (magic link) v1.2.3
   ============================================ */
.ag-extern-chip{background:rgba(124,106,247,.08);border-color:rgba(124,106,247,.25)}
.ag-extern-icon{color:var(--accent);font-size:12px;flex-shrink:0}

/* Badge ✉N sur pills */
.ag-pill-externs{display:inline-flex;align-items:center;gap:2px;font-family:'Inter',sans-serif;font-size:9.5px;font-weight:700;letter-spacing:.2px;opacity:.85;flex-shrink:0;margin-left:4px}
.ag-pill-externs-month{font-size:9px;opacity:.75}
.ag-pill-externs-week{font-size:9.5px;opacity:.9}
.ag-pill-externs-allday{font-size:9px;opacity:.75}
.ag-pill-externs-list{margin-left:6px;font-size:10px;color:var(--accent);opacity:1;font-weight:600}

/* ============================================
   Agenda · Skeleton loading (v1.2.4)
   ============================================ */
.agenda-skeleton-pulse{
  background:linear-gradient(90deg,var(--s2) 0%,var(--border) 50%,var(--s2) 100%);
  background-size:200% 100%;
  animation:agSkeletonShimmer 1.4s ease-in-out infinite;
  display:inline-block;vertical-align:middle
}
@keyframes agSkeletonShimmer{
  0%   { background-position: 200% 0 }
  100% { background-position: -200% 0 }
}

/* ── Accordéon "Événements passés" en vue Liste ───────────────── */
.agenda-list-past-accordion{margin-bottom:14px;border:1px solid var(--border);border-radius:6px;background:var(--s2);overflow:hidden}
.agenda-list-past-summary{display:flex;align-items:center;gap:10px;padding:10px 14px;cursor:pointer;font-family:'Inter',sans-serif;font-size:12.5px;font-weight:700;color:var(--muted);letter-spacing:.3px;list-style:none;user-select:none;transition:background .12s}
.agenda-list-past-summary:hover{background:var(--surface)}
.agenda-list-past-summary::-webkit-details-marker{display:none}
.agenda-list-past-summary::marker{display:none;content:""}
.ag-past-chevron{transition:transform .2s ease;flex-shrink:0;color:var(--muted)}
details[open] .ag-past-chevron{transform:rotate(90deg)}
.ag-past-count{margin-left:auto;background:var(--border);color:var(--text);font-size:10.5px;font-weight:700;padding:2px 8px;border-radius:4px;min-width:22px;text-align:center}
.agenda-list-past-body{padding:10px 14px 14px;border-top:1px solid var(--border)}
.agenda-list-past-body .agenda-list-section{margin-bottom:8px}
.agenda-list-past-body .agenda-list-section:last-child{margin-bottom:0}

/* ── Recherche événements agenda (popup partout, desktop + mobile) ── */
/* Modal recherche : input en header plutôt que titre */
.agenda-search-mobile-modal .modal-head{padding:16px 16px 0;gap:8px;align-items:center}
.agenda-search-mobile-modal .modal-body{padding:12px 16px 16px}

/* ── Tooltip hover event agenda (style Google Calendar) ──────── */
.agenda-event-tooltip{position:fixed;z-index: var(--z-toast) /* was 9999 */;display:none;background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:10px 12px;box-shadow:0 8px 24px rgba(0,0,0,.35);max-width:300px;font-family:'Inter',sans-serif;pointer-events:none;animation:agTipFade .12s ease-out}
@keyframes agTipFade{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}
.agenda-event-tooltip .ag-tip-time{font-size:10.5px;font-weight:700;color:var(--accent);letter-spacing:.3px;margin-bottom:4px}
.agenda-event-tooltip .ag-tip-title{font-size:13px;font-weight:600;color:var(--text);line-height:1.3}
.agenda-event-tooltip .ag-tip-notes{font-size:11px;color:var(--muted);margin-top:6px;line-height:1.4;max-height:60px;overflow:hidden}

/* Events courts sans heure affichée : title bien centré vertical */
.agenda-week-event.no-time{display:flex;align-items:center;padding-top:2px;padding-bottom:2px}
.agenda-week-event.no-time .agenda-week-event-title{margin-top:0}
.agenda-week-event-inline-badges{display:none}  /* badges masqués si no-time, restent dans le tooltip */

/* Note : ancien scroll-snap CSS supprimé. La navigation entre semaines/jours
   se fait désormais par swipe gesture animé, pas par scroll horizontal natif. */

/* ── Vue mois : events multi-jours étalés sur plusieurs cellules ── */
/* Continuation à gauche : pas de bord arrondi à gauche, pas de marge gauche */
.agenda-event-pill.multi-cont-left{
  border-top-left-radius:0;
  border-bottom-left-radius:0;
  border-left:none;
  margin-left:-1px;     /* mange le gap pour donner l'illusion d'une barre continue */
  padding-left:6px;
}
/* Continuation à droite : symétrique */
.agenda-event-pill.multi-cont-right{
  border-top-right-radius:0;
  border-bottom-right-radius:0;
  border-right:none;
  margin-right:-1px;
  padding-right:6px;
}
/* Continuation au milieu : pill plus discrète, sans titre visible (espace réservé pour alignement) */
.agenda-event-pill.multi-no-title{
  opacity:.55;
}
.agenda-event-pill.multi-no-title .agenda-event-titre{
  visibility:hidden;
}
/* Petit indicateur "→" sur les continuations sans titre pour rappeler la suite */
.agenda-event-pill.multi-cont-left.multi-no-title::before{
  content:"";
  position:absolute;
  left:2px;top:50%;
  transform:translateY(-50%);
  width:0;height:0;
  border-top:3px solid transparent;
  border-bottom:3px solid transparent;
  border-right:4px solid currentColor;
  opacity:.7;
}
.agenda-event-pill.multi-cont-right.multi-no-title::after{
  content:"";
  position:absolute;
  right:2px;top:50%;
  transform:translateY(-50%);
  width:0;height:0;
  border-top:3px solid transparent;
  border-bottom:3px solid transparent;
  border-left:4px solid currentColor;
  opacity:.7;
}
.agenda-event-pill.agenda-event-multiday{
  position:relative;
}

/* ══════════════════════════════════════════════════════════════════════
   CALENDRIER — REFONTE MARGOT (par C Design)
   Nouvelles classes : .cal, .cal-top, .cal-nav, .cal-title, .view-toggle,
                       .cal-filters, .f-chip, .select-pill, .icon-btn, .add-btn,
                       .mois-wrap, .mois-main, .cal-grid, .cal-head, .cal-day,
                       .dnum, .evt, .more, .rib-row, .rib,
                       .side, .sp-head, .sp-date, .sp-counts, .sp-count,
                       .sp-section, .sp-evt, .spt, .spb, .spn, .spa, .sp-tags, .sp-tag,
                       .week-wrap, .week-head, .wh-gut, .wh-day,
                       .allday-row, .allday-gut, .allday-cells, .ad-cell, .ad-rib,
                       .week-body, .hour-col, .hour, .day-col, .hline, .tevt, .nowline,
                       .list, .list-day, .list-dh, .list-evts, .le, .le-time, .le-bar, .le-main, .le-n, .le-sub, .le-type
   
   Tokens utilisés : --cal-text-dim, --cal-s3, --cal-border-hi, --cal-accent-hi,
                     --cal-accent-dim, --cal-mauve, --cal-shadow-sm/lg, --cal-radius-sm/lg
   ══════════════════════════════════════════════════════════════════════ */

/* ── Calendrier : coquille .cal ─────────────────────────────────────────
   [v935] Anthony : virer le cadre tout autour (border + radius + shadow).
   Plus aéré, look pro type Immo Facile / Google Cal : le calendar prend toute
   la largeur, juste la séparation visuelle entre toolbar et grille via le
   border-bottom de .cal-top. */

/* ── Top bar : titre, nav, view toggle, actions ──
   [v937] Anthony : style "carte" — fond blanc + coins arrondis + ombre légère,
   séparé visuellement de la grille (vs avant : 1 bloc unique). */

/* ── View toggle (Mois / Semaine / 3 jours / Jour / Liste) ── */

/* ── Action icons + Ajouter ── */

/* Bouton Ajouter — règle d'or Margot : background=text, color=bg, JAMAIS l'accent en plein */

/* ── Filtres ── */

/* ══════════════════════════════════════════════════════════════════════
   VUE MOIS (Margot)
   ══════════════════════════════════════════════════════════════════════ */

/* Events dans la cellule mois */

/* Ribbons multi-jours en vue mois */

/* ── Side panel (vue mois desktop, 340px à droite) ── */

/* ══════════════════════════════════════════════════════════════════════
   VUES SEMAINE / 3J / JOUR (timeline Margot)
   --cols est défini sur .week-wrap (7, 3 ou 1)
   ══════════════════════════════════════════════════════════════════════ */

/* Header sticky avec abréviations jours + numéros */

/* Rangée all-day dédiée (entre header et timeline) */

/* [v932] Icône lock pour les events gcal read-only (impossible de éditer
   directement depuis donna). Visuel discret en muted. */

/* Timeline body */

/* Event dans la timeline (.tevt) */
/* [v932] Anthony : couleurs Margot 2.0 — light + noir, pastilles douces, pas
   de gradient. Avant : bg 13% / hover 22% trop saturés et cognent visuellement.
   Après : bg 8% / hover 14% + border 3px pour mieux distinguer les types
   (la barre de gauche fait la signature visuelle). Transition douce hover. */

/* Ligne "now" : trait rouge horizontal sur la colonne aujourd'hui */

/* ══════════════════════════════════════════════════════════════════════
   VUE LISTE Margot
   ══════════════════════════════════════════════════════════════════════ */

/* ══════════════════════════════════════════════════════════════════════
   MOBILE — adaptations Margot (≤768px)
   ══════════════════════════════════════════════════════════════════════ */
@media (max-width: 768px){
  /* Vue MOIS mobile : grille compacte + dots only + side panel devient bottom sheet */
  #page-agenda .mois-wrap{
    display: flex; flex-direction: column;
    min-height: 0;
  }
  #page-agenda .mois-main{border-right: none}
  #page-agenda .cal-day{min-height: 54px; padding: 4px 4px 3px}
  #page-agenda .cal-head{padding: 7px 4px; font-size: 9px; letter-spacing: .6px}
  #page-agenda .cal-day .dnum,
  #page-agenda .cal-day .agenda-day-number{font-size: 11px; padding: 0 0 2px}
  #page-agenda .cal-day.today .dnum,
  #page-agenda .cal-day.today .agenda-day-number{
    width: 18px; height: 18px; font-size: 10px;
  }
  /* Mois mobile : events deviennent des dots colorés inline */
  #page-agenda .cal-day .evt,
  #page-agenda .cal-day .agenda-event-pill{
    font-size: 0; line-height: 0; padding: 0; gap: 0; height: 6px;
    display: inline-flex; vertical-align: top;
  }
  #page-agenda .cal-day .evt .t,
  #page-agenda .cal-day .evt .n,
  #page-agenda .cal-day .agenda-event-pill .agenda-event-time,
  #page-agenda .cal-day .agenda-event-pill .agenda-event-titre{display: none}
  #page-agenda .cal-day .evt .dot,
  #page-agenda .cal-day .agenda-event-pill .agenda-event-dot{
    width: 5px; height: 5px; margin: 0 1px 1px 0; display: inline-block;
  }
  #page-agenda .cal-day .more,
  #page-agenda .cal-day .agenda-event-more{display: none}
  #page-agenda .rib-row{height: 8px; margin: -1px -4px 1px}
  #page-agenda .rib{
    height: 6px; font-size: 0; padding: 0; border-left-width: 2px;
  }
  /* Side panel devient bottom sheet sous la grille */
  #page-agenda .side{
    border-top: 1px solid var(--border);
    padding: 14px 16px;
    background: var(--surface);
    max-height: 280px;
  }
  #page-agenda .sp-date .d{font-size: 30px}
  #page-agenda .sp-date .m{font-size: 12px}

  /* Vue SEMAINE mobile */
  #page-agenda .week-head,
  #page-agenda .allday-row,
  #page-agenda .week-body{
    grid-template-columns: 42px repeat(var(--cols, 7), minmax(60px, 1fr));
  }
  #page-agenda .wh-day{padding: 8px 6px}
  #page-agenda .wh-day .d{font-size: 9px; letter-spacing: .6px}
  #page-agenda .wh-day .n{font-size: 15px}
  #page-agenda .wh-day.today .n{
    width: 24px; height: 24px; font-size: 13px;
  }
  #page-agenda .hour{font-size: 9px; padding: 2px 4px 0}
  #page-agenda .allday-gut{font-size: 8px; padding: 4px}
  #page-agenda .ad-rib{font-size: 9px; padding: 0 6px; height: 16px}
  #page-agenda .tevt{padding: 3px 4px 3px 6px}
  #page-agenda .tevt .tt{font-size: 9px}
  #page-agenda .tevt .tn{font-size: 10px}
  #page-agenda .tevt .ts{font-size: 9px}

  /* Vue JOUR mobile : pleine largeur, lecture max */
  #page-agenda .week-wrap[data-ag-view="day"] .week-head,
  #page-agenda .week-wrap[data-ag-view="day"] .allday-row,
  #page-agenda .week-wrap[data-ag-view="day"] .week-body{
    grid-template-columns: 48px 1fr;
  }
  #page-agenda .week-wrap[data-ag-view="day"] .wh-day{padding: 10px 14px}
  #page-agenda .week-wrap[data-ag-view="day"] .wh-day .n{font-size: 18px}
  #page-agenda .week-wrap[data-ag-view="day"] .wh-day.today .n{
    width: 26px; height: 26px; font-size: 14px;
  }
  #page-agenda .week-wrap[data-ag-view="day"] .tevt{padding: 6px 8px}
  #page-agenda .week-wrap[data-ag-view="day"] .tevt .tt{font-size: 10px}
  #page-agenda .week-wrap[data-ag-view="day"] .tevt .tn{font-size: 12px}
  #page-agenda .week-wrap[data-ag-view="day"] .tevt .ts{font-size: 10px}

  /* Vue LISTE mobile : pleine largeur, header inline */
  #page-agenda .list{padding: 6px 12px 20px}
  #page-agenda .list-day{
    grid-template-columns: 1fr; gap: 6px;
    padding: 14px 0;
  }
  #page-agenda .list-dh{
    position: static;
    display: flex; align-items: baseline; gap: 10px;
    padding-bottom: 4px;
  }
  #page-agenda .list-dh .dh-num{font-size: 24px}
  #page-agenda .list-dh .dh-dow{margin-top: 0}
  #page-agenda .list-dh .dh-rel{
    margin-top: 0; margin-left: auto; font-size: 10px;
  }
  #page-agenda .le{
    grid-template-columns: 64px 3px 1fr auto;
    gap: 10px; padding: 8px 6px;
  }
  #page-agenda .le .le-time{font-size: 12px}
  #page-agenda .le .le-time .end{font-size: 10px}
  #page-agenda .le .le-n{font-size: 12px}
  #page-agenda .le .le-sub{font-size: 10px}
  #page-agenda .le .le-type{font-size: 9px; padding: 1px 6px}

  /* Top bar mobile : compact + view-toggle plein largeur dessous */
  #page-agenda .cal-top{
    padding: 10px 12px;
    flex-wrap: wrap;
    gap: 8px;
  }
  #page-agenda .cal-top-l{
    flex: 1; min-width: 0; gap: 6px;
    flex-wrap: nowrap;
  }
  #page-agenda .cal-top-l .cal-title{
    margin-left: 6px; font-size: 15px;
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
    min-width: 0; flex: 1;
  }
  #page-agenda .cal-top-l .cal-title .year{display: none}
  #page-agenda .cal-top-r{flex-shrink: 0; gap: 6px}
  /* Sur mobile, le view-toggle passe sous le top bar */
  #page-agenda .cal-top-r .view-toggle{
    flex-basis: 100%; order: 99;
    overflow-x: auto; scrollbar-width: none;
    margin-top: 6px;
  }
  #page-agenda .cal-top-r .view-toggle::-webkit-scrollbar{display: none}
  #page-agenda .cal-top-r .view-toggle button{
    flex: 1; padding: 7px 8px; font-size: 12px; white-space: nowrap;
  }
  #page-agenda .cal-top-r .icon-btn{display: none}
  #page-agenda .add-btn{padding: 0 12px; height: 32px; font-size: 12px}
  #page-agenda .cal-nav .today{display: none}
  #page-agenda .cal-nav button{width: 32px; height: 32px; font-size: 16px}

  /* Filtres mobile : scroll horizontal */
  #page-agenda .cal-filters{
    padding: 8px 14px; gap: 8px;
    overflow-x: auto; scrollbar-width: none;
    flex-wrap: nowrap;
  }
  #page-agenda .cal-filters::-webkit-scrollbar{display: none}
  #page-agenda .cal-filters-l{flex-wrap: nowrap}
  #page-agenda .f-label{display: none}
  #page-agenda .select-pill{flex-shrink: 0}
}

/* ══════════════════════════════════════════════════════════════════════
   FIXES POST-MARGOT — Override CSS legacy qui pète le rendu Margot
   ══════════════════════════════════════════════════════════════════════ */

/* ── Vue Semaine : .agenda-week-event a un border:1px solid legacy qui prend
   currentColor par défaut → on force le visuel Margot complet ── */

/* ── Sticky header semaine : il faut que le parent .week-wrap ait une hauteur 
   contenue ET overflow:auto pour que sticky fonctionne ── */

/* ── Vue Mois : la grille mois ne doit pas être étirée. Limiter min-height ── */

/* Sur les cellules, retirer le contraignant min-height: 120px en cas d'écran limité */

/* ── Indicateurs ▶ multi-jours : ne les afficher QUE si vraiment multi-jours
   (mes pseudos ::before/::after étaient trop larges) ── */

/* ── Filter pills : retirer les anciens style inline qui peuvent fighter avec Margot.
   Sur Margot, on veut que les chips actives soient surface+border-hi+shadow ── */

/* ── Vue mois mobile : restreindre l'application du media query ──
   Le @media (max-width:768px) global s'appliquait sur les grands écrans avec barre 
   latérale large. On limite vraiment à mobile : ≤700px (cohérent avec le reste de donna). */
@media (min-width: 701px){
  /* Cancel mobile rules pour grands écrans : forcer affichage texte des events mois */
  #page-agenda .cal-day .evt,
  #page-agenda .cal-day .agenda-event-pill{
    font-size: 11px !important;
    line-height: 1.25 !important;
    padding: 1px 0 !important;
    gap: 5px !important;
    height: auto !important;
    display: flex !important;
  }
  #page-agenda .cal-day .evt .t,
  #page-agenda .cal-day .evt .n,
  #page-agenda .cal-day .agenda-event-pill .agenda-event-time,
  #page-agenda .cal-day .agenda-event-pill .agenda-event-titre{
    display: inline !important;
  }
}

/* ══════════════════════════════════════════════════════════════════════
   FIX MOBILE BLANK PAGE — week-wrap sans hauteur dans .cal mobile
   ══════════════════════════════════════════════════════════════════════ */
@media (max-width: 700px){
  /* Le .cal wrapper ne doit pas contraindre la hauteur sur mobile.
     Sur desktop il prend la fenêtre. Sur mobile il déborde naturellement. */
  #page-agenda .cal{
    overflow: visible;
    border-radius: 0;
    border: none;
    box-shadow: none;
  }
  /* week-wrap mobile : pas de overflow:auto qui cause un collapse à 0px
     dans un parent flex sans hauteur. Hauteur naturelle. */
  #page-agenda .agenda-week-wrap.week-wrap{
    overflow: visible;
    height: auto;
    max-height: none;
  }
  /* .week-body : grid de 56px+1fr, doit aussi garder sa hauteur naturelle */
  #page-agenda .agenda-week-grid.week-body{
    overflow: visible;
    height: auto;
  }
  /* Les sticky headers doivent rester sticky relativement au scroll de la page,
     pas du wrapper. Le top:0 doit rester. */
  #page-agenda .week-head{
    position: sticky;
    top: 0;
    z-index: 12;
  }
  #page-agenda .allday-row{
    position: sticky;
    top: 50px;
    z-index: 11;
  }
  /* Vue mois mobile : la grille doit aussi flow naturellement */
  #page-agenda .mois-wrap{
    overflow: visible;
    min-height: auto;
    height: auto;
  }
  #page-agenda .mois-main{
    overflow: visible;
    min-width: 0;
  }
}

/* ══════════════════════════════════════════════════════════════════════
   FIX STICKY HEADERS — Margot vs ancien sticky donna
   L'ancien .agenda-top est sticky à top:80px (sous le header app principal).
   Le nouveau .week-head Margot était à top:0 → se cachait derrière.
   Solution : sticky à top:188px (80px + 108px hauteur agenda-top).
   ══════════════════════════════════════════════════════════════════════ */

/* Desktop (>700px) : .week-head sticky sous .agenda-top */
@media (min-width: 701px){
  #page-agenda .week-head{
    position: sticky;
    top: calc(80px + var(--agenda-top-h, 108px));
    z-index: 3;
    background: var(--bg);
  }
  #page-agenda .allday-row{
    position: sticky;
    top: calc(80px + var(--agenda-top-h, 108px) + 50px);
    z-index: 2;
  }
  /* Vue liste : sticky des en-têtes de jour */
  #page-agenda .list-dh{
    top: calc(80px + var(--agenda-top-h, 108px) + 14px);
  }
}

/* Mobile : pas de sticky agenda-top (top:0), donc .week-head sticky à top:0 simple */
@media (max-width: 700px){
  #page-agenda .week-head{
    position: sticky;
    top: 0;
    z-index: 3;
    background: var(--bg);
  }
  #page-agenda .allday-row{
    position: sticky;
    top: 50px;
    z-index: 2;
  }
}

/* ══════════════════════════════════════════════════════════════════════
   FIX SCROLL & STICKY — modèle hybrid donna+Margot
   Le scroll est INTERNE au .agenda-week-wrap (pas la page entière).
   Donc mon .week-head sticky doit être à top:0 (relatif au wrap), pas à 188px.
   Aussi : compactifier la vue mois pour qu'elle tienne en 100vh sans scroll.
   ══════════════════════════════════════════════════════════════════════ */

/* Annule mes mauvaises règles top:188px (faites quand je croyais que le scroll
   était sur la page entière) */
@media (min-width: 701px){
  #page-agenda .week-head{
    position: sticky;
    top: 0 !important;
    z-index: 12;
    background: var(--bg);
  }
  #page-agenda .allday-row{
    position: sticky;
    /* Sticky juste sous le .week-head : la hauteur du week-head est ~50px */
    top: 50px !important;
    z-index: 11;
    background: var(--s2);
  }
  #page-agenda .list-dh{
    /* Pour la vue liste qui n'est pas dans un wrap scrollable particulier,
       on garde la sticky relative à la page (sous l'agenda-top) */
    top: calc(80px + var(--agenda-top-h, 108px) + 14px);
  }
}

/* ── Vue mois desktop : le .mois-wrap doit tenir en 100vh sans scroll page ──
   Hauteur = viewport - header app (80px) - agenda-top (~108px) - marge.
   La grille mois fitte dans cette hauteur (cellules un peu plus compactes).
   Le side panel à droite scrolle indépendamment si trop d'events. */
@media (min-width: 701px){
  #page-agenda .mois-wrap{
    height: calc(100vh - 80px - var(--agenda-top-h, 108px) - 24px);
    min-height: 540px;       /* fallback si calc trop petit */
    overflow: hidden;        /* pas de scroll interne au mois-wrap */
  }
  #page-agenda .mois-main{
    overflow: hidden;        /* la grille s'adapte à la hauteur, pas de scroll */
    display: flex;
    flex-direction: column;
  }
  #page-agenda .mois-main .cal-grid{
    /* La grille prend toute la hauteur restante (header LUN MAR... ne compte pas) */
    flex: 1;
    grid-auto-rows: 1fr;     /* chaque ligne prend 1/6e de la hauteur dispo */
  }
  #page-agenda .cal-day{
    min-height: 0;           /* override de min-height:120px qui empêche le shrink */
    overflow: hidden;        /* clip events qui débordent */
  }
  /* Side panel : scroll indépendant si trop d'events */
  #page-agenda .side{
    overflow-y: auto;
    height: 100%;
    max-height: 100%;
  }
}

/* ── Override règles legacy .agenda-week-grid qui pétaient l'alignement Margot ── */

/* Le hour-col (heures) ne doit pas avoir de fond legacy */

/* Day-col Margot : pas de marge ni gap, juste la border-right droite */

/* Le legacy .agenda-week-day-header est sticky top:0 z-index:4. Mon .week-head
   est sticky top:0 z-index:12. Bien. Mais attention : les enfants .wh-day ne 
   doivent pas hériter sticky du legacy s'ils sont dans .week-head. */

/* L'ancien .agenda-week-day-name & .agenda-week-day-num avaient leurs propres
   styles. Les versions Margot sont dans .wh-day .d et .wh-day .n (gardées
   ensemble dans le span). Pas de conflit attendu — laisse le visuel Margot. */

/* La hauteur du .week-head Margot doit être contenue (~50px) pour que sticky 
   du allday-row puisse être à top:50px */

/* ══════════════════════════════════════════════════════════════════════
   FIX MOBILE v139 — bottom sheet side panel + restore content visibility
   ══════════════════════════════════════════════════════════════════════ */
@media (max-width: 700px){
  /* Restore .cal sans overflow:hidden */
  #page-agenda .cal{
    overflow: visible !important;
    border: none;
    border-radius: 0;
    box-shadow: none;
  }
  /* Restore .week-wrap mobile : pas de max-height legacy qui clip à 0 */
  #page-agenda .agenda-week-wrap.week-wrap{
    overflow: visible !important;
    max-height: none !important;
    height: auto !important;
  }
  /* Restore .week-body mobile : la grille doit être visible, min-width adaptée */
  #page-agenda .agenda-week-grid.week-body{
    min-width: 0 !important;
    overflow: visible !important;
  }

  /* ── Vue mois mobile : side panel devient BOTTOM SHEET fixed bottom ── */
  /* Le .mois-wrap ne contraint plus la hauteur, la grille prend toute la place */
  #page-agenda .mois-wrap{
    display: block !important;
    height: auto !important;
    min-height: 0 !important;
    overflow: visible !important;
  }
  #page-agenda .mois-main{
    display: block !important;
    overflow: visible !important;
    border-right: none !important;
  }
  /* Le side panel devient un bottom sheet flottant */
  #page-agenda .side{
    position: fixed !important;
    left: 0; right: 0; bottom: 0;
    z-index: var(--z-fixed) /* was 200 */;
    background: var(--surface);
    border-top: 1px solid var(--border);
    box-shadow: 0 -8px 32px rgba(0,0,0,.18);
    max-height: 50vh;
    overflow-y: auto;
    padding: 16px 14px;
    border-radius: 18px 18px 0 0;
    /* Animation slide-up doucement à l'apparition */
    animation: ag-side-slide-up .25s cubic-bezier(.2,.8,.2,1);
    /* Si masqué via class .side-collapsed, le rétracte (TODO future) */
  }
  /* Petite handle visuelle en haut du sheet pour signifier draggable */
  #page-agenda .side::before{
    content: '';
    display: block;
    width: 36px; height: 4px; border-radius: 2px;
    background: var(--border);
    margin: -4px auto 12px;
  }
  @keyframes ag-side-slide-up{
    from { transform: translateY(100%); }
    to   { transform: translateY(0); }
  }
}

/* ══════════════════════════════════════════════════════════════════════
   FIX v141 — vue semaine sticky overlap + mobile filtres + bottom sheet hauteur
   ══════════════════════════════════════════════════════════════════════ */

/* ── 1) Vue semaine : .allday-row visible mais SOUS le .week-head (pas chevauche) ──
   La hauteur réelle du .week-head varie. On la force à 56px exact (matches le wh-day padding 10px+18px+10px+2px). 
   Et l'allday-row sticky à 56px (pas 50px). */
@media (min-width: 701px){
  #page-agenda .week-head{
    min-height: 56px;
    height: 56px;
  }
  #page-agenda .allday-row{
    top: 56px !important;
  }
  /* La séparation visuelle est faite par border-bottom du week-head */
  #page-agenda .week-head{
    border-bottom: 1px solid var(--border);
  }
}

/* ── 2) Mobile : restore l'affichage compact des filtres comme avant ──
   Cache les chips types desktop, montre les boutons "Vue / Filtres / Consultant" */
@media (max-width: 700px){
  /* Cache les chips éclatés */
  #page-agenda .cal-filters .agenda-filter-types-desktop,
  #page-agenda .cal-filters .agenda-filter-consultant-desktop,
  #page-agenda .cal-filters .f-label{
    display: none !important;
  }
  /* Montre les boutons compacts mobile */
  #page-agenda .cal-filters .agenda-filter-mobile-only{
    display: inline-flex !important;
  }
  /* La filter bar mobile reste compacte */
  #page-agenda .cal-filters{
    padding: 6px 10px !important;
    gap: 6px !important;
  }
}

/* ── 3) Bottom sheet : monte plus haut + safe-area pour barre nav iOS ── */
@media (max-width: 700px){
  #page-agenda .side{
    /* Plus de hauteur (60vh au lieu de 50vh) */
    max-height: 65vh !important;
    /* Padding bottom = espace pour la barre nav iOS + tab bar donna */
    padding-bottom: calc(70px + env(safe-area-inset-bottom, 0px)) !important;
    /* Bottom collé à 0 mais le contenu padding-bottom évite la nav bar */
    bottom: 0 !important;
  }
}

/* ══════════════════════════════════════════════════════════════════════
   VUE MOIS — Refonte propre (unique bloc, remplace tous les fixes empilés)
   
   Objectif : vue mois desktop = aucun scroll possible, tout tient dans
   le viewport, seul le side panel droite scrolle si trop d'events.
   
   Stratégie : 
   - Container .mois-wrap contraint en hauteur via flexbox depuis le host
   - Grille en flex:1 avec grid-template-rows: auto repeat(6, 1fr)  
   - Neutralise margin / sticky / min-height legacy qui cassaient le layout
   ══════════════════════════════════════════════════════════════════════ */

/* ─── DESKTOP (>700px) ─── */
@media (min-width: 701px){
  /* 1. Neutralise la margin legacy de .agenda-month-grid qui poussait la
        grille vers le bas et créait une zone blanche */
  #page-agenda .cal-grid.agenda-month-grid{
    margin: 0 !important;
    padding: 0 !important;
    grid-template-rows: auto repeat(6, 1fr);
    min-height: 0;
    overflow: hidden;
  }

  /* 2. Neutralise le sticky top:188px sur les headers jour (LUN MAR...)
        qui décalait la grille hors du container quand overflow:hidden parent */
  #page-agenda .mois-main .cal-head,
  #page-agenda .mois-main .agenda-day-header{
    position: static !important;
    top: auto !important;
    /* Style Margot propre */
    background: var(--bg);
    padding: 10px 8px;
    font-size: 11px;
    font-weight: 600;
    letter-spacing: 1px;
    color: var(--muted);
    text-transform: uppercase;
    text-align: left;
  }

  /* 3. Neutralise min-height:100px des cellules qui forçait un débordement */
  #page-agenda .cal-day.agenda-day-cell{
    min-height: 0 !important;
    overflow: hidden;
  }

  /* 4. Container .mois-wrap : grid 2 colonnes avec hauteur viewport */
  #page-agenda .mois-wrap{
    display: grid;
    grid-template-columns: 1fr 340px;
    /* Hauteur = viewport - header app principal (80px) - agenda-top réel
       On utilise vh direct avec fallback 600px min */
    height: calc(100vh - 80px - 140px);
    min-height: 500px;
    overflow: hidden;
  }

  /* 5. Colonne gauche = flex column pour que la grille prenne toute la hauteur */
  #page-agenda .mois-main{
    display: flex;
    flex-direction: column;
    overflow: hidden;
    min-height: 0;
    min-width: 0;
    border-right: 1px solid var(--border);
  }

  /* 6. Grille prend tout l'espace vertical restant */
  #page-agenda .mois-main .cal-grid{
    flex: 1 1 auto;
    display: grid;
  }

  /* 7. Side panel : scroll vertical si trop d'events */
  #page-agenda .mois-wrap > .side{
    overflow-y: auto;
    overflow-x: hidden;
    min-height: 0;
    height: 100%;
  }
}

/* ─── MOBILE (≤700px) ─── */
@media (max-width: 700px){
  /* Grille simple en haut, panel qui suit directement dans le flux */
  #page-agenda .mois-wrap{
    display: block;
    height: auto;
    min-height: 0;
    overflow: visible;
  }
  #page-agenda .mois-main{
    display: block;
    overflow: visible;
    border-right: none;
  }
  #page-agenda .cal-grid.agenda-month-grid{
    margin: 0 !important;
    padding: 0 !important;
    /* Mobile : 6 rows de taille fixe pour une grille compacte */
    grid-template-rows: auto repeat(6, minmax(54px, auto));
    overflow: visible;
  }
  #page-agenda .mois-main .cal-head,
  #page-agenda .mois-main .agenda-day-header{
    position: static !important;
    top: auto !important;
    padding: 7px 4px;
    font-size: 9px;
    letter-spacing: .6px;
    color: var(--muted);
    background: var(--bg);
    text-transform: uppercase;
  }

  /* Panel mobile : BOTTOM SHEET flottant qui monte depuis le bas */
  #page-agenda .side{
    position: fixed;
    left: 0; right: 0; bottom: 0;
    z-index: var(--z-fixed) /* was 200 */;
    max-height: 65vh;
    background: var(--surface);
    border-top: 1px solid var(--border);
    box-shadow: 0 -8px 32px rgba(0,0,0,.18);
    border-radius: 16px 16px 0 0;
    padding: 18px 16px 40px;
    overflow-y: auto;
    /* Slide-up animation à l'ouverture */
    animation: ag-side-slideup .25s cubic-bezier(.2,.8,.2,1);
  }
  @keyframes ag-side-slideup{
    from { transform: translateY(100%); }
    to   { transform: translateY(0); }
  }
  /* Handle visuelle en haut du sheet (trait gris arrondi) */
  #page-agenda .side::before{
    content: '';
    display: block;
    width: 36px;
    height: 4px;
    border-radius: 2px;
    background: var(--border);
    margin: -4px auto 14px;
  }
  /* Panel caché quand sheet-closed */
  #page-agenda .side.sheet-closed{
    display: none !important;
  }
  /* Animation slide-down à la fermeture */
  #page-agenda .side.sheet-closing{
    animation: ag-side-slidedown .22s ease forwards;
  }
  @keyframes ag-side-slidedown{
    from { transform: translateY(0);    opacity: 1; }
    to   { transform: translateY(100%); opacity: 0; }
  }

  /* Backdrop semi-transparent derrière le sheet */
  #page-agenda .ag-month-sheet-backdrop{
    display: block;
    position: fixed;
    inset: 0;
    background: rgba(0,0,0,.4);
    z-index: calc(var(--z-fixed) - 1) /* was 199 */;
    animation: ag-backdrop-in .2s ease;
  }
  #page-agenda .ag-month-sheet-backdrop.sheet-closing{
    animation: ag-backdrop-out .22s ease forwards;
  }
  @keyframes ag-backdrop-in{
    from { opacity: 0; } to { opacity: 1; }
  }
  @keyframes ag-backdrop-out{
    from { opacity: 1; } to { opacity: 0; }
  }

  /* Bouton X : visible en haut à droite du panel */
  #page-agenda .side .sp-close{
    display: flex;
    position: absolute;
    top: 14px;
    right: 14px;
    width: 34px;
    height: 34px;
    align-items: center;
    justify-content: center;
    background: var(--s2);
    color: var(--muted);
    border: 1px solid var(--border);
    border-radius: 50%;
    font-size: 16px;
    cursor: pointer;
    padding: 0;
    font-family: inherit;
    z-index: 5;
  }
  #page-agenda .side .sp-close:hover{
    background: var(--cal-s3, var(--s2));
    color: var(--text);
  }
  #page-agenda .side .sp-close:active{
    transform: scale(.94);
  }
  /* Padding top du sp-head pour éviter que le titre touche le X */
  #page-agenda .side .sp-head .sp-date{
    padding-right: 48px;
  }

  /* Grille mois mobile : events en dots uniquement, cellules compactes */
  #page-agenda .cal-day{
    min-height: 54px;
    padding: 4px;
  }
}

/* Desktop : bouton close caché (pas nécessaire, panel toujours visible) */
@media (min-width: 701px){
  #page-agenda .side .sp-close{ display: none; }
}

/* ══════════════════════════════════════════════════════════════════════
   MOBILE — Compacter top bar + filtres sur 1 ligne chacun (gain place)
   ══════════════════════════════════════════════════════════════════════ */
@media (max-width: 700px){
  /* Top bar mobile : nav + titre + bouton Ajouter sur 1 ligne serrée */
  #page-agenda .cal-top,
  #page-agenda .agenda-header{
    padding: 8px 10px !important;
    gap: 8px !important;
    flex-wrap: nowrap !important;
  }
  #page-agenda .cal-top-l,
  #page-agenda .agenda-nav-group{
    gap: 6px !important;
    flex: 0 1 auto;
    min-width: 0;
  }
  /* Titre Avril : plus petit, pas de wrap, elipsis si trop long */
  #page-agenda .cal-title,
  #page-agenda .agenda-title{
    font-size: 16px !important;
    margin-left: 8px !important;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
  }

  /* Filter bar mobile : tous les boutons sur 1 ligne + scroll horizontal si besoin */
  #page-agenda .cal-filters,
  #page-agenda .agenda-filter-bar{
    padding: 6px 10px !important;
    gap: 6px !important;
    flex-wrap: nowrap !important;
    overflow-x: auto;
    overflow-y: hidden;
    scrollbar-width: none;
    -webkit-overflow-scrolling: touch;
  }
  #page-agenda .cal-filters::-webkit-scrollbar,
  #page-agenda .agenda-filter-bar::-webkit-scrollbar{display: none}

  /* Chaque bouton mobile (Mois/Filtres/Consultant) : plus compact, pas de shrink */
  #page-agenda .agenda-filter-mobile-btn{
    flex-shrink: 0;
    padding: 6px 10px !important;
    font-size: 11.5px !important;
    gap: 5px !important;
  }
  #page-agenda .agenda-filter-mobile-btn svg{
    width: 12px; height: 12px;
  }

  /* Agenda-top mobile : réduire encore le padding vertical pour gagner de la place */
  .agenda-top{
    padding: 0 !important;
  }
}

/* Mobile : les boutons Mois/Filtres/Consultant restent sur leur propre ligne
   (après le .cal-top) mais cette ligne est collée au .cal-top sans séparation.
   Le .cal-filters n'a plus de border-bottom ni de padding extra. */
@media (max-width: 700px){
  /* Réduit encore filter bar mobile : padding micro, plus de séparation visuelle
     forte entre top bar et filter bar = sensation 1-ligne unifiée */
  #page-agenda .cal-filters{
    padding: 4px 10px 8px !important;
    border-bottom: 1px solid var(--border);
  }
  /* Top bar : plus de border-bottom si filter bar juste en-dessous */
  #page-agenda .cal-top{
    border-bottom: none !important;
    padding-bottom: 4px !important;
  }
  /* Cal-filters prend moins de place visuelle */
  #page-agenda .cal-filters .f-label{
    display: none; /* Label "Types" masqué en mobile (redondant) */
  }
}

/* ══════════════════════════════════════════════════════════════════════
   MOBILE — Top bar 1 ligne : masquer icon-btns + migrer boutons mobile
   ══════════════════════════════════════════════════════════════════════ */
@media (max-width: 700px){
  /* Masque les 3 icon-btns desktop (search, sync Google, settings) — pas prioritaires mobile */
  #page-agenda .cal-icon-btn-desktop-only{
    display: none !important;
  }

  /* Le cal-top-r accueille nav + titre + boutons migrés + Ajouter sur 1 ligne */
  #page-agenda .cal-top-r{
    flex-wrap: nowrap !important;
    gap: 6px !important;
    overflow: hidden;
    min-width: 0;
  }

  /* Boutons migrés prennent peu de place, scroll horizontal si overflow */
  #page-agenda .cal-top-r .ag-mobbtn-migrated{
    flex-shrink: 0;
  }

  /* Filter bar mobile : masquée si elle n'a plus que du contenu desktop (types pills) */
  /* On garde la filter-bar si elle a le bandeau gcal-deletion-pill (alertes suppr google) */
  #page-agenda .cal-filters:not(:has(.gcal-deletion-pill)){
    display: none !important;
  }
  /* Fallback pour navigateurs sans :has() : laisse la filter bar visible mais très compacte
     (rare car Safari 15.4+ supporte :has, donc OK pour nous) */

  /* Ajustement .cal-top-l : on shrink le titre pour faire de la place */
  #page-agenda .cal-top-l{
    flex: 0 1 auto !important;
    min-width: 0;
  }
  #page-agenda .cal-title{
    max-width: 80px;   /* titre "Avril" tient dans 80px */
    overflow: hidden;
    text-overflow: ellipsis;
  }

  /* Le + Ajouter reste à droite, bien visible */
  #page-agenda .add-btn{
    flex-shrink: 0 !important;
  }

  /* Cal-top globale : padding vertical réduit encore */
  #page-agenda .cal-top{
    padding: 8px 10px !important;
    border-bottom: 1px solid var(--border);
  }
}

/* ══════════════════════════════════════════════════════════════════════
   FIX v151 — Alignement gutter week-head + allday-row + body sur mobile
   Bug : body a gutter 32px (legacy mobile !important), mais week-head et
   allday-row restent à 56px → décalage de 24px entre header et body.
   Solution : harmonise tout à 32px sur mobile (7 jours), 44px (3j), 50px (jour)
   ══════════════════════════════════════════════════════════════════════ */
@media (max-width: 700px){
  /* Vue semaine (7 cols) */
  #page-agenda .agenda-week-wrap:not([data-ag-view="3days"]):not([data-ag-view="day"]) .week-head,
  #page-agenda .agenda-week-wrap:not([data-ag-view="3days"]):not([data-ag-view="day"]) .allday-row{
    grid-template-columns: 32px repeat(var(--cols, 7), 1fr) !important;
  }
  /* Vue 3 jours */
  #page-agenda .agenda-week-wrap[data-ag-view="3days"] .week-head,
  #page-agenda .agenda-week-wrap[data-ag-view="3days"] .allday-row{
    grid-template-columns: 44px repeat(var(--cols, 3), 1fr) !important;
  }
  /* Vue jour */
  #page-agenda .agenda-week-wrap[data-ag-view="day"] .week-head,
  #page-agenda .agenda-week-wrap[data-ag-view="day"] .allday-row{
    grid-template-columns: 50px 1fr !important;
  }

  /* Hour col mobile : aligner width sur la nouvelle gutter aussi */
  #page-agenda .agenda-week-wrap:not([data-ag-view="3days"]):not([data-ag-view="day"]) .hour-col{
    /* déjà via grid-template-columns 32px */
  }
}

/* ═══════════════════════════════════════════════════════════════════════════
   MARGOT BATCH 1 — COMPOSANTS TRANSVERSES
   Boutons primaires/secondaires/ghost · Inputs · Gradients → flat
   S'applique aux thèmes Light (warm) + Noir. Dark reste intact (pas de selector).
   ═══════════════════════════════════════════════════════════════════════════ */

/* ──────────────────────────────────────────────────────────────────────────
   BOUTONS PRIMAIRES — Margot
   Règle d'or : background:var(--text) · color:var(--bg) · pas de gradient
   Micro-détail donna : underline accent 1px sous le texte au hover
   ────────────────────────────────────────────────────────────────────────── */

[data-theme="warm"] .add-btn,
[data-theme="noir"] .add-btn {
  background: var(--text) !important;
  color: var(--bg) !important;
  border: 1px solid var(--text) !important;
  border-radius: var(--radius, 4px) !important;
  font-weight: 600 !important;
  padding: 9px 14px !important;
  font-size: 13px !important;
  box-shadow: none !important;
  transition: background .15s, transform .1s, box-shadow .15s !important;
  position: relative;
  overflow: hidden;
}
[data-theme="warm"] .add-btn::after,
[data-theme="noir"] .add-btn::after {
  content: '';
  position: absolute;
  left: 14px; right: 14px; bottom: 5px;
  height: 1px;
  background: var(--accent);
  transform: scaleX(0);
  transition: transform .18s cubic-bezier(.2,.8,.2,1);
  transform-origin: left center;
  pointer-events: none;
}
[data-theme="warm"] .add-btn:hover,
[data-theme="noir"] .add-btn:hover {
  background: var(--text-dim) !important;
  transform: none !important;
  filter: none !important;
}
[data-theme="warm"] .add-btn:hover::after,
[data-theme="noir"] .add-btn:hover::after {
  transform: scaleX(1);
}

/* .mbtn.primary : même pattern */
[data-theme="warm"] .mbtn.primary,
[data-theme="noir"] .mbtn.primary {
  background: var(--text) !important;
  color: var(--bg) !important;
  border: 1px solid var(--text) !important;
  border-radius: var(--radius, 4px) !important;
  font-weight: 600 !important;
  box-shadow: none !important;
}
[data-theme="warm"] .mbtn.primary:hover,
[data-theme="noir"] .mbtn.primary:hover {
  background: var(--text-dim) !important;
  color: var(--bg) !important;
}

/* .rappr-btn : primaire mais avec une identité légèrement distincte
   (fond text, accent violet subtile en border) */
[data-theme="warm"] .rappr-btn,
[data-theme="noir"] .rappr-btn {
  background: var(--text) !important;
  color: var(--bg) !important;
  border: 1px solid var(--text) !important;
  border-radius: var(--radius, 4px) !important;
  font-weight: 600 !important;
  padding: 9px 14px !important;
  font-size: 13px !important;
  box-shadow: none !important;
  transition: background .15s !important;
}
[data-theme="warm"] .rappr-btn:hover,
[data-theme="noir"] .rappr-btn:hover {
  background: var(--text-dim) !important;
  opacity: 1 !important;
  transform: none !important;
  filter: none !important;
}

/* ──────────────────────────────────────────────────────────────────────────
   BOUTONS SECONDAIRES — .mbtn (default), .notif-btn, .contact-link
   ────────────────────────────────────────────────────────────────────────── */

[data-theme="warm"] .mbtn:not(.primary),
[data-theme="noir"] .mbtn:not(.primary) {
  background: var(--s2) !important;
  color: var(--text) !important;
  border: 1px solid var(--border) !important;
  border-radius: var(--radius, 4px) !important;
  box-shadow: none !important;
}
[data-theme="warm"] .mbtn:not(.primary):hover,
[data-theme="noir"] .mbtn:not(.primary):hover {
  background: var(--s3, var(--s2)) !important;
  border-color: var(--border-hi, var(--border)) !important;
}

[data-theme="warm"] .notif-btn,
[data-theme="noir"] .notif-btn {
  background: var(--s2) !important;
  border: 1px solid var(--border) !important;
  border-radius: var(--radius, 4px) !important;
  color: var(--muted) !important;
  box-shadow: none !important;
  transition: color .15s, background .15s, border-color .15s !important;
}
[data-theme="warm"] .notif-btn:hover,
[data-theme="noir"] .notif-btn:hover {
  background: var(--s3, var(--s2)) !important;
  color: var(--text) !important;
  border-color: var(--border-hi, var(--border)) !important;
}

[data-theme="warm"] .contact-link,
[data-theme="noir"] .contact-link {
  background: var(--s2) !important;
  color: var(--text) !important;
  border: 1px solid var(--border) !important;
  border-radius: var(--radius, 4px) !important;
}
[data-theme="warm"] .contact-link:hover,
[data-theme="noir"] .contact-link:hover {
  background: var(--s3, var(--s2)) !important;
  border-color: var(--border-hi, var(--border)) !important;
}

/* ──────────────────────────────────────────────────────────────────────────
   INPUTS / SELECTS / TEXTAREAS — padding clean, focus accent subtile
   ────────────────────────────────────────────────────────────────────────── */

[data-theme="warm"] .fm-input,
[data-theme="warm"] .fm-select,
[data-theme="warm"] .fm-textarea,
[data-theme="warm"] .ef-input,
[data-theme="warm"] .ef-select,
[data-theme="warm"] .ef-textarea,
[data-theme="warm"] .apt-input,
[data-theme="warm"] .search-wrap input,
[data-theme="noir"] .fm-input,
[data-theme="noir"] .fm-select,
[data-theme="noir"] .fm-textarea,
[data-theme="noir"] .ef-input,
[data-theme="noir"] .ef-select,
[data-theme="noir"] .ef-textarea,
[data-theme="noir"] .apt-input,
[data-theme="noir"] .search-wrap input {
  background: var(--surface) !important;
  border: 1px solid var(--border) !important;
  border-radius: var(--radius, 4px) !important;
  color: var(--text) !important;
  box-shadow: none !important;
  transition: border-color .15s, box-shadow .15s !important;
}
[data-theme="warm"] .fm-input:focus,
[data-theme="warm"] .fm-select:focus,
[data-theme="warm"] .fm-textarea:focus,
[data-theme="warm"] .ef-input:focus,
[data-theme="warm"] .ef-select:focus,
[data-theme="warm"] .ef-textarea:focus,
[data-theme="warm"] .apt-input:focus,
[data-theme="warm"] .search-wrap input:focus,
[data-theme="noir"] .fm-input:focus,
[data-theme="noir"] .fm-select:focus,
[data-theme="noir"] .fm-textarea:focus,
[data-theme="noir"] .ef-input:focus,
[data-theme="noir"] .ef-select:focus,
[data-theme="noir"] .ef-textarea:focus,
[data-theme="noir"] .apt-input:focus,
[data-theme="noir"] .search-wrap input:focus {
  border-color: var(--accent) !important;
  box-shadow: 0 0 0 3px var(--accent-dim) !important;
  outline: none !important;
}

/* ──────────────────────────────────────────────────────────────────────────
   GRADIENTS SAUVAGES → FLAT
   Cible : wordmark "donna", body::before (grille violette subtile),
   .range-fill, .kpi-card::before (lignes violettes haut de card)
   On les neutralise en warm + noir (dark garde son style)
   ────────────────────────────────────────────────────────────────────────── */

/* Wordmark donna : gradient violet-blanc → couleur unie (text Margot)
   avec un petit dot accent pour garder l'identité */
[data-theme="warm"] .logo-area h1,
[data-theme="noir"] .logo-area h1 {
  background: none !important;
  -webkit-text-fill-color: var(--text) !important;
  color: var(--text) !important;
  -webkit-background-clip: initial !important;
  background-clip: initial !important;
}

/* Body::before : grille violette subtile → neutre */
[data-theme="warm"] body::before,
[data-theme="noir"] body::before {
  background-image: none !important;
}

/* Range fill (sliders budget) : gradient → accent uni */

/* KPI cards : petite ligne violette en haut → accent propre (pas gradient) */
[data-theme="warm"] .kpi-card::before,
[data-theme="noir"] .kpi-card::before {
  background: var(--accent) !important;
  height: 1px !important;
  opacity: .4;
}
[data-theme="warm"] .kpi-card.k1::before,
[data-theme="noir"] .kpi-card.k1::before {
  background: var(--chaud) !important;
}
[data-theme="warm"] .kpi-card.k2::before,
[data-theme="noir"] .kpi-card.k2::before {
  background: var(--accent) !important;
}

/* ──────────────────────────────────────────────────────────────────────────
   ACCENT VIOLET HARDCODÉ → tokens
   rgba(124,106,247,...) = ancien accent dark #7c6af7
   On remplace par var(--accent-dim) ou color-mix() propre en warm + noir
   ────────────────────────────────────────────────────────────────────────── */

/* .score-analyze-btn + .score-all-btn + .ai-analyze-btn + .qtag
   ces boutons/tags "Analyse" sont accent subtile */
[data-theme="warm"] .score-analyze-btn,
[data-theme="noir"] .score-analyze-btn,
[data-theme="warm"] .score-all-btn,
[data-theme="noir"] .score-all-btn,
[data-theme="warm"] .ai-analyze-btn,
[data-theme="noir"] .ai-analyze-btn,
[data-theme="warm"] .qtag,
[data-theme="noir"] .qtag,
[data-theme="warm"] .history-tag,
[data-theme="noir"] .history-tag,
[data-theme="warm"] .arr-badge.neutral,
[data-theme="noir"] .arr-badge.neutral {
  background: var(--accent-dim) !important;
  border: 1px solid color-mix(in srgb, var(--accent) 25%, transparent) !important;
  color: var(--accent) !important;
  border-radius: var(--radius, 4px) !important;
  box-shadow: none !important;
}
[data-theme="warm"] .score-analyze-btn:hover,
[data-theme="noir"] .score-analyze-btn:hover,
[data-theme="warm"] .score-all-btn:hover,
[data-theme="noir"] .score-all-btn:hover,
[data-theme="warm"] .ai-analyze-btn:hover,
[data-theme="noir"] .ai-analyze-btn:hover,
[data-theme="warm"] .qtag:hover,
[data-theme="noir"] .qtag:hover {
  background: color-mix(in srgb, var(--accent) 18%, transparent) !important;
  border-color: color-mix(in srgb, var(--accent) 40%, transparent) !important;
}

/* .notif-card-btn.primary : bouton primaire dans les notif cards */
[data-theme="warm"] .notif-card-btn.primary,
[data-theme="noir"] .notif-card-btn.primary {
  background: var(--accent-dim) !important;
  border: 1px solid color-mix(in srgb, var(--accent) 30%, transparent) !important;
  color: var(--accent) !important;
}
[data-theme="warm"] .notif-card-btn.primary:hover,
[data-theme="noir"] .notif-card-btn.primary:hover {
  background: color-mix(in srgb, var(--accent) 18%, transparent) !important;
}

/* ──────────────────────────────────────────────────────────────────────────
   SCROLLBARS — discrètes
   ────────────────────────────────────────────────────────────────────────── */

[data-theme="warm"] ::-webkit-scrollbar-thumb,
[data-theme="noir"] ::-webkit-scrollbar-thumb {
  background: var(--border) !important;
  border-radius: var(--radius, 4px) !important;
}
[data-theme="warm"] ::-webkit-scrollbar-thumb:hover,
[data-theme="noir"] ::-webkit-scrollbar-thumb:hover {
  background: var(--border-hi, var(--muted)) !important;
}

/* ══════════════════════════════════════════════════════════════════════════
   FIN BATCH 1
   ══════════════════════════════════════════════════════════════════════════ */

/* ═══════════════════════════════════════════════════════════════════════════
   MARGOT BATCH 2 — MODALS + CARDS
   Objectif : shadows sobres (pas de violet), radius Margot, border fine
   ═══════════════════════════════════════════════════════════════════════════ */

/* ──────────────────────────────────────────────────────────────────────────
   OVERLAYS (fond derrière modals)
   ────────────────────────────────────────────────────────────────────────── */
[data-theme="warm"] .overlay {
  background: rgba(20,22,31,.5) !important;
  backdrop-filter: blur(4px);
}
[data-theme="noir"] .overlay {
  background: rgba(0,0,0,.7) !important;
  backdrop-filter: blur(4px);
}

/* ──────────────────────────────────────────────────────────────────────────
   MODALS génériques (.modal, .form-modal, .rappr-modal, .notif-panel)
   ────────────────────────────────────────────────────────────────────────── */

[data-theme="warm"] .modal,
[data-theme="warm"] .form-modal,
[data-theme="warm"] .rappr-modal,
[data-theme="warm"] .notif-panel,
[data-theme="noir"] .modal,
[data-theme="noir"] .form-modal,
[data-theme="noir"] .rappr-modal,
[data-theme="noir"] .notif-panel {
  background: var(--surface) !important;
  border: 1px solid var(--border) !important;
  border-radius: var(--radius-lg, 8px) !important;
  box-shadow: var(--shadow-lg, 0 20px 48px rgba(20,22,31,.12)) !important;
}

/* Close button (.close-btn) dans modals */
[data-theme="warm"] .close-btn,
[data-theme="noir"] .close-btn {
  background: var(--s2) !important;
  border: 1px solid var(--border) !important;
  border-radius: var(--radius, 4px) !important;
  color: var(--muted) !important;
  box-shadow: none !important;
}
[data-theme="warm"] .close-btn:hover,
[data-theme="noir"] .close-btn:hover {
  background: var(--s3, var(--s2)) !important;
  color: var(--text) !important;
  border-color: var(--border-hi, var(--border)) !important;
}

/* Modal avatar (initiales colorées) - garde sa couleur mais radius Margot */
[data-theme="warm"] .modal-av,
[data-theme="noir"] .modal-av {
  border-radius: var(--radius, 4px) !important;
}

/* ──────────────────────────────────────────────────────────────────────────
   POPUPS (.custom-popup, .account-popup, .ai-prompt-card)
   ────────────────────────────────────────────────────────────────────────── */

[data-theme="warm"] .custom-popup,
[data-theme="warm"] .account-popup,
[data-theme="noir"] .custom-popup,
[data-theme="noir"] .account-popup {
  background: var(--surface) !important;
  border: 1px solid var(--border) !important;
  border-radius: var(--radius-lg, 8px) !important;
  box-shadow: var(--shadow-lg, 0 20px 48px rgba(20,22,31,.12)) !important;
}

/* Header du popup account */
[data-theme="warm"] .account-popup-header,
[data-theme="noir"] .account-popup-header {
  background: var(--s2) !important;
  border-bottom: 1px solid var(--border) !important;
}

/* ──────────────────────────────────────────────────────────────────────────
   CARDS — KPI, match, history, notif, apt-form, apt-recap
   ────────────────────────────────────────────────────────────────────────── */

/* KPI cards (dashboard) */
[data-theme="warm"] .kpi-card,
[data-theme="noir"] .kpi-card {
  background: var(--surface) !important;
  border: 1px solid var(--border) !important;
  border-radius: var(--radius-lg, 8px) !important;
  box-shadow: none !important;
  transition: border-color .2s, transform .2s !important;
}
[data-theme="warm"] .kpi-card:hover,
[data-theme="noir"] .kpi-card:hover {
  border-color: var(--border-hi, var(--border)) !important;
  transform: translateY(-1px) !important;
}

/* Match cards (résultats rapprochement) */
[data-theme="warm"] .match-card,
[data-theme="noir"] .match-card {
  background: var(--surface) !important;
  border: 1px solid var(--border) !important;
  border-radius: var(--radius-lg, 8px) !important;
  box-shadow: none !important;
  transition: border-color .2s, transform .15s !important;
}
[data-theme="warm"] .match-card:hover,
[data-theme="noir"] .match-card:hover {
  border-color: var(--accent) !important;
  background: var(--s2) !important;
  transform: translateX(2px) !important;
}

/* History cards (historique rapprochements) */
[data-theme="warm"] .history-card,
[data-theme="noir"] .history-card {
  background: var(--surface) !important;
  border: 1px solid var(--border) !important;
  border-radius: var(--radius, 4px) !important;
  box-shadow: none !important;
}
[data-theme="warm"] .history-card:hover,
[data-theme="noir"] .history-card:hover {
  border-color: var(--border-hi, var(--border)) !important;
  background: var(--s2) !important;
  transform: translateX(1px) !important;
}

/* Notif cards (panneau notifications) */
[data-theme="warm"] .notif-card,
[data-theme="noir"] .notif-card {
  background: var(--surface) !important;
  border: 1px solid var(--border) !important;
  border-radius: var(--radius, 4px) !important;
  box-shadow: none !important;
}
[data-theme="warm"] .notif-card:hover,
[data-theme="noir"] .notif-card:hover {
  border-color: var(--border-hi, var(--border)) !important;
  background: var(--s2) !important;
}
/* Accent left-border sur variants warn/info */
[data-theme="warm"] .notif-card.warn,
[data-theme="noir"] .notif-card.warn {
  border-left: 3px solid var(--tiede) !important;
}
[data-theme="warm"] .notif-card.info,
[data-theme="noir"] .notif-card.info {
  border-left: 3px solid var(--froid) !important;
}

/* Notif card avatar (init colorée) */

/* Apt form (formulaire rapprochement par adresse) */

/* Apt recap (résumé après recherche) */
[data-theme="warm"] .apt-recap,
[data-theme="noir"] .apt-recap {
  background: var(--s2) !important;
  border: 1px solid var(--border) !important;
  border-radius: var(--radius, 4px) !important;
  box-shadow: none !important;
}

/* Apt input (inputs dans formulaire rapprochement) — réutilise les règles batch 1 */
/* Les .apt-input sont déjà traités dans batch 1 */

/* Apt search button : bouton principal "Rechercher" du rapprochement */

/* ──────────────────────────────────────────────────────────────────────────
   TABLE WRAP — refonte container de table
   ────────────────────────────────────────────────────────────────────────── */
[data-theme="warm"] .table-wrap,
[data-theme="noir"] .table-wrap {
  background: var(--surface) !important;
  border: 1px solid var(--border) !important;
  border-radius: var(--radius-lg, 8px) !important;
  box-shadow: none !important;
  overflow: hidden;
}

/* ──────────────────────────────────────────────────────────────────────────
   TOASTS — sobre, accent green subtil
   ────────────────────────────────────────────────────────────────────────── */
[data-theme="warm"] #toast,
[data-theme="noir"] #toast {
  background: var(--surface) !important;
  border: 1px solid var(--green) !important;
  color: var(--green) !important;
  border-radius: var(--radius, 4px) !important;
  box-shadow: var(--shadow, 0 4px 14px rgba(20,22,31,.07)) !important;
}

/* ──────────────────────────────────────────────────────────────────────────
   MODAL ACTION BUTTONS (dans actions-row de modals)
   .mbtn secondaire / primaire déjà traités en batch 1, mais on assure
   les patterns flex-layout ici
   ────────────────────────────────────────────────────────────────────────── */

/* Modal close button inside notif panel */
[data-theme="warm"] .notif-card-dismiss,
[data-theme="noir"] .notif-card-dismiss {
  color: var(--muted) !important;
}
[data-theme="warm"] .notif-card-dismiss:hover,
[data-theme="noir"] .notif-card-dismiss:hover {
  color: var(--chaud) !important;
}

/* Notif card secondary buttons */
[data-theme="warm"] .notif-card-btn:not(.primary),
[data-theme="noir"] .notif-card-btn:not(.primary) {
  background: transparent !important;
  border: 1px solid var(--border) !important;
  color: var(--muted) !important;
  border-radius: var(--radius-sm, 3px) !important;
}
[data-theme="warm"] .notif-card-btn:not(.primary):hover,
[data-theme="noir"] .notif-card-btn:not(.primary):hover {
  background: var(--s2) !important;
  color: var(--text) !important;
  border-color: var(--border-hi, var(--border)) !important;
}

/* Match-card action buttons (.mc-btn) */
[data-theme="warm"] .mc-btn,
[data-theme="noir"] .mc-btn {
  background: transparent !important;
  border: 1px solid var(--border) !important;
  color: var(--muted) !important;
  border-radius: var(--radius-sm, 3px) !important;
}
[data-theme="warm"] .mc-btn:hover,
[data-theme="noir"] .mc-btn:hover {
  background: var(--s2) !important;
  color: var(--text) !important;
  border-color: var(--border-hi, var(--border)) !important;
}

/* History card replay button */
[data-theme="warm"] .history-replay,
[data-theme="noir"] .history-replay {
  background: transparent !important;
  border: 1px solid var(--border) !important;
  color: var(--muted) !important;
  border-radius: var(--radius-sm, 3px) !important;
}
[data-theme="warm"] .history-replay:hover,
[data-theme="noir"] .history-replay:hover {
  background: var(--s2) !important;
  color: var(--text) !important;
  border-color: var(--border-hi, var(--border)) !important;
}

/* History clear (bouton effacer historique) */
[data-theme="warm"] .history-clear,
[data-theme="noir"] .history-clear {
  background: transparent !important;
  color: var(--muted) !important;
  border-radius: var(--radius-sm, 3px) !important;
}
[data-theme="warm"] .history-clear:hover,
[data-theme="noir"] .history-clear:hover {
  background: color-mix(in srgb, var(--chaud) 10%, transparent) !important;
  color: var(--chaud) !important;
}

/* ══════════════════════════════════════════════════════════════════════════
   FIN BATCH 2
   ══════════════════════════════════════════════════════════════════════════ */

/* ═══════════════════════════════════════════════════════════════════════════
   MARGOT BATCH 3 — PILLS + BADGES + TABLES
   Pattern badges : color-mix(color 15%, transparent) fond + 30% border
   ═══════════════════════════════════════════════════════════════════════════ */

/* ──────────────────────────────────────────────────────────────────────────
   PILLS (filtres années/statuts Compta + Biens)
   ────────────────────────────────────────────────────────────────────────── */

[data-theme="warm"] .pill,
[data-theme="noir"] .pill {
  background: transparent !important;
  border: 1px solid var(--border) !important;
  color: var(--muted) !important;
  border-radius: var(--radius-sm, 3px) !important;
  box-shadow: none !important;
  transition: all .15s !important;
}
[data-theme="warm"] .pill:hover,
[data-theme="noir"] .pill:hover {
  background: var(--s2) !important;
  color: var(--text) !important;
  border-color: var(--border-hi, var(--border)) !important;
}
[data-theme="warm"] .pill.active,
[data-theme="noir"] .pill.active {
  background: var(--text) !important;
  border-color: var(--text) !important;
  color: var(--bg) !important;
  font-weight: 600 !important;
}

/* ──────────────────────────────────────────────────────────────────────────
   STATUT ITEMS (sidebar filtres acquéreurs/vendeurs : Chaud/Tiède/Froid)
   ────────────────────────────────────────────────────────────────────────── */

[data-theme="warm"] .statut-item,
[data-theme="noir"] .statut-item {
  background: transparent !important;
  border: 1px solid transparent !important;
  border-radius: var(--radius, 4px) !important;
  transition: all .15s !important;
}
[data-theme="warm"] .statut-item:hover,
[data-theme="noir"] .statut-item:hover {
  background: var(--s2) !important;
  border-color: var(--border) !important;
}
[data-theme="warm"] .statut-item.active,
[data-theme="noir"] .statut-item.active {
  background: var(--s2) !important;
  border-color: currentColor !important;
}
[data-theme="warm"] .statut-item.inactive,
[data-theme="noir"] .statut-item.inactive {
  opacity: .4 !important;
}

/* Section labels (fm-section, notif-section-title) : accent subtil */
[data-theme="warm"] .fm-section,
[data-theme="noir"] .fm-section,
[data-theme="warm"] .notif-section-title,
[data-theme="noir"] .notif-section-title {
  color: var(--accent) !important;
}

/* ──────────────────────────────────────────────────────────────────────────
   BADGES TEMPÉRATURE (.badge-chaud/tiede/froid/inconnu)
   Pattern Margot : color-mix 15% fond + 30% border + var(--color) texte
   ────────────────────────────────────────────────────────────────────────── */

[data-theme="warm"] .badge,
[data-theme="noir"] .badge {
  border-radius: var(--radius-sm, 3px) !important;
  box-shadow: none !important;
  font-weight: 600 !important;
}

[data-theme="warm"] .badge-chaud,
[data-theme="noir"] .badge-chaud {
  background: color-mix(in srgb, var(--chaud) 15%, transparent) !important;
  border: 1px solid color-mix(in srgb, var(--chaud) 30%, transparent) !important;
  color: var(--chaud) !important;
}
[data-theme="warm"] .badge-tiede,
[data-theme="noir"] .badge-tiede {
  background: color-mix(in srgb, var(--tiede) 15%, transparent) !important;
  border: 1px solid color-mix(in srgb, var(--tiede) 30%, transparent) !important;
  color: var(--tiede) !important;
}
[data-theme="warm"] .badge-froid,
[data-theme="noir"] .badge-froid {
  background: color-mix(in srgb, var(--froid) 15%, transparent) !important;
  border: 1px solid color-mix(in srgb, var(--froid) 30%, transparent) !important;
  color: var(--froid) !important;
}
[data-theme="warm"] .badge-inconnu,
[data-theme="noir"] .badge-inconnu {
  background: color-mix(in srgb, var(--muted) 15%, transparent) !important;
  border: 1px solid color-mix(in srgb, var(--muted) 30%, transparent) !important;
  color: var(--muted) !important;
}

/* ──────────────────────────────────────────────────────────────────────────
   BADGES STATUT COMPTA (.badge-aa/sc/o/m)
   ────────────────────────────────────────────────────────────────────────── */

[data-theme="warm"] .badge-aa,
[data-theme="noir"] .badge-aa {
  background: color-mix(in srgb, var(--green) 15%, transparent) !important;
  border: 1px solid color-mix(in srgb, var(--green) 30%, transparent) !important;
  color: var(--green) !important;
}
[data-theme="warm"] .badge-sc,
[data-theme="noir"] .badge-sc {
  background: color-mix(in srgb, var(--accent) 15%, transparent) !important;
  border: 1px solid color-mix(in srgb, var(--accent) 30%, transparent) !important;
  color: var(--accent) !important;
}
[data-theme="warm"] .badge-o,
[data-theme="noir"] .badge-o {
  background: color-mix(in srgb, var(--tiede) 15%, transparent) !important;
  border: 1px solid color-mix(in srgb, var(--tiede) 30%, transparent) !important;
  color: var(--tiede) !important;
}
[data-theme="warm"] .badge-m,
[data-theme="noir"] .badge-m {
  background: color-mix(in srgb, var(--muted) 15%, transparent) !important;
  border: 1px solid color-mix(in srgb, var(--muted) 30%, transparent) !important;
  color: var(--muted) !important;
}

/* ──────────────────────────────────────────────────────────────────────────
   FIN TAGS (finance vérifiée / à vérifier / autre)
   ────────────────────────────────────────────────────────────────────────── */

[data-theme="warm"] .fin-tag,
[data-theme="noir"] .fin-tag {
  border-radius: var(--radius-sm, 3px) !important;
  box-shadow: none !important;
}
[data-theme="warm"] .fin-verif,
[data-theme="noir"] .fin-verif {
  background: color-mix(in srgb, var(--green) 12%, transparent) !important;
  border: 1px solid color-mix(in srgb, var(--green) 25%, transparent) !important;
  color: var(--green) !important;
}
[data-theme="warm"] .fin-avert,
[data-theme="noir"] .fin-avert {
  background: color-mix(in srgb, var(--tiede) 12%, transparent) !important;
  border: 1px solid color-mix(in srgb, var(--tiede) 25%, transparent) !important;
  color: var(--tiede) !important;
}
[data-theme="warm"] .fin-other,
[data-theme="noir"] .fin-other {
  background: var(--accent-dim) !important;
  border: 1px solid color-mix(in srgb, var(--accent) 25%, transparent) !important;
  color: var(--accent) !important;
}

/* ──────────────────────────────────────────────────────────────────────────
   MATCH TAGS (tags dans résultats rapprochement : critère OK / attention)
   ────────────────────────────────────────────────────────────────────────── */

[data-theme="warm"] .match-tag,
[data-theme="noir"] .match-tag {
  border-radius: var(--radius-sm, 3px) !important;
  box-shadow: none !important;
  font-weight: 500 !important;
}
[data-theme="warm"] .match-tag.ok,
[data-theme="noir"] .match-tag.ok {
  background: color-mix(in srgb, var(--green) 12%, transparent) !important;
  border: 1px solid color-mix(in srgb, var(--green) 25%, transparent) !important;
  color: var(--green) !important;
}
[data-theme="warm"] .match-tag.warn,
[data-theme="noir"] .match-tag.warn {
  background: color-mix(in srgb, var(--tiede) 12%, transparent) !important;
  border: 1px solid color-mix(in srgb, var(--tiede) 25%, transparent) !important;
  color: var(--tiede) !important;
}

/* ──────────────────────────────────────────────────────────────────────────
   TABLES — thead/tbody/td en tokens propres
   ────────────────────────────────────────────────────────────────────────── */

[data-theme="warm"] thead th,
[data-theme="noir"] thead th {
  background: var(--s2) !important;
  color: var(--muted) !important;
  border-bottom: 1px solid var(--border) !important;
  font-size: 11px !important;
  font-weight: 600 !important;
  text-transform: uppercase !important;
  letter-spacing: .6px !important;
}
[data-theme="warm"] thead th:hover,
[data-theme="noir"] thead th:hover {
  color: var(--text) !important;
  background: var(--s3, var(--s2)) !important;
}

[data-theme="warm"] tbody tr,
[data-theme="noir"] tbody tr {
  border-bottom: 1px solid var(--border) !important;
  transition: background .12s !important;
}
[data-theme="warm"] tbody tr:last-child,
[data-theme="noir"] tbody tr:last-child {
  border-bottom: none !important;
}
[data-theme="warm"] tbody tr:hover,
[data-theme="noir"] tbody tr:hover {
  background: var(--s2) !important;
}

[data-theme="warm"] td,
[data-theme="noir"] td {
  color: var(--text) !important;
  font-size: 13px !important;
}

/* ──────────────────────────────────────────────────────────────────────────
   AVATARS (initiales) dans les tables et cards
   ────────────────────────────────────────────────────────────────────────── */

[data-theme="warm"] .avatar,
[data-theme="noir"] .avatar,
[data-theme="warm"] .match-av,
[data-theme="noir"] .match-av {
  border-radius: var(--radius, 4px) !important;
}

/* ──────────────────────────────────────────────────────────────────────────
   COMPTA (.ca-* styles spécifiques compta)
   ────────────────────────────────────────────────────────────────────────── */

[data-theme="warm"] .ca-filters .pill,
[data-theme="noir"] .ca-filters .pill {
  /* Déjà couvert par .pill au-dessus */
}

/* Mandat progress (pipeline dans fiche compta) - couleurs cohérentes */
[data-theme="warm"] .mp-step,
[data-theme="warm"] .mp-dot,
[data-theme="noir"] .mp-step,
[data-theme="noir"] .mp-dot {
  background: var(--border) !important;
}
[data-theme="warm"] .mp-step.done,
[data-theme="warm"] .mp-dot.done,
[data-theme="noir"] .mp-step.done,
[data-theme="noir"] .mp-dot.done {
  background: var(--green) !important;
}
[data-theme="warm"] .mp-step.current,
[data-theme="warm"] .mp-dot.current,
[data-theme="noir"] .mp-step.current,
[data-theme="noir"] .mp-dot.current {
  background: var(--accent) !important;
}
[data-theme="warm"] .mp-step.late,
[data-theme="warm"] .mp-dot.late,
[data-theme="noir"] .mp-step.late,
[data-theme="noir"] .mp-dot.late {
  background: var(--chaud) !important;
}

/* Mandat tooltip */
[data-theme="warm"] .mp-tooltip,
[data-theme="noir"] .mp-tooltip {
  background: var(--text) !important;
  color: var(--bg) !important;
  border: 1px solid var(--text) !important;
  border-radius: var(--radius-sm, 3px) !important;
  box-shadow: var(--shadow, 0 4px 14px rgba(20,22,31,.12)) !important;
}

/* ──────────────────────────────────────────────────────────────────────────
   COL CONFIG (modale configuration colonnes compta)
   ────────────────────────────────────────────────────────────────────────── */

[data-theme="warm"] .col-item,
[data-theme="noir"] .col-item {
  background: var(--s2) !important;
  border: 1px solid var(--border) !important;
  border-radius: var(--radius, 4px) !important;
}
[data-theme="warm"] .col-item.dragging,
[data-theme="noir"] .col-item.dragging {
  border-color: var(--accent) !important;
  opacity: .5;
}
[data-theme="warm"] .col-item.drag-over,
[data-theme="noir"] .col-item.drag-over {
  border-color: var(--accent) !important;
  border-style: dashed !important;
}

/* Toggles on/off dans col config */
[data-theme="warm"] .col-toggle.on,
[data-theme="noir"] .col-toggle.on {
  background: var(--accent) !important;
}
[data-theme="warm"] .col-toggle.off,
[data-theme="noir"] .col-toggle.off {
  background: var(--border) !important;
}

/* Col arrows (réordonner colonnes) */
[data-theme="warm"] .col-arrow,
[data-theme="noir"] .col-arrow {
  background: var(--surface) !important;
  border: 1px solid var(--border) !important;
  color: var(--muted) !important;
  border-radius: var(--radius-sm, 3px) !important;
}
[data-theme="warm"] .col-arrow:hover:not([disabled]),
[data-theme="noir"] .col-arrow:hover:not([disabled]) {
  background: var(--s2) !important;
  color: var(--text) !important;
  border-color: var(--border-hi, var(--border)) !important;
}

/* Col reset button */
[data-theme="warm"] .col-reset,
[data-theme="noir"] .col-reset {
  background: transparent !important;
  border: 1px solid var(--border) !important;
  color: var(--muted) !important;
  border-radius: var(--radius, 4px) !important;
}
[data-theme="warm"] .col-reset:hover,
[data-theme="noir"] .col-reset:hover {
  background: var(--s2) !important;
  color: var(--text) !important;
  border-color: var(--border-hi, var(--border)) !important;
}

/* ──────────────────────────────────────────────────────────────────────────
   SOURCE BAR MINI (barre de progression source dans sidebar)
   ────────────────────────────────────────────────────────────────────────── */

[data-theme="warm"] .source-bar-mini,
[data-theme="noir"] .source-bar-mini {
  background: var(--border) !important;
}

/* Range track (slider budget sidebar) */
[data-theme="warm"] .range-track,
[data-theme="noir"] .range-track {
  background: var(--border) !important;
}
[data-theme="warm"] .range-vals,
[data-theme="noir"] .range-vals {
  color: var(--accent) !important;
}

/* ══════════════════════════════════════════════════════════════════════════
   FIN BATCH 3
   ══════════════════════════════════════════════════════════════════════════ */

/* ═══════════════════════════════════════════════════════════════════════════
   MARGOT BATCH 4 — SIGNATURES DONNA (final)
   Encart IA · Kanban · Sidenav actif · Wordmark · Header finitions
   Objectif : garder l'ADN donna tout en respectant Margot (sobriété, pas de gradient saturé)
   ═══════════════════════════════════════════════════════════════════════════ */

/* ──────────────────────────────────────────────────────────────────────────
   ENCART ANALYSE IA — .ai-prompt-card + .ai-analyze-btn
   Sobre mais SPÉCIAL : fond surface, border gauche 3px accent,
   le ✦ reste, le violet reste comme accent signature (pas en gradient)
   ────────────────────────────────────────────────────────────────────────── */

[data-theme="warm"] .ai-prompt-card,
[data-theme="noir"] .ai-prompt-card {
  background: var(--surface) !important;
  border: 1px solid var(--border) !important;
  border-left: 3px solid var(--accent) !important;
  border-radius: var(--radius-lg, 8px) !important;
  box-shadow: var(--shadow, 0 4px 14px rgba(20,22,31,.07)) !important;
  padding: 18px 22px !important;
}

/* Le bouton "Analyser" reste violet subtil (pattern tag Margot), 
   plus dashed border (identité originale) */
[data-theme="warm"] .ai-analyze-btn,
[data-theme="noir"] .ai-analyze-btn {
  background: var(--accent-dim) !important;
  border: 1px dashed color-mix(in srgb, var(--accent) 40%, transparent) !important;
  border-radius: var(--radius, 4px) !important;
  color: var(--accent) !important;
  font-weight: 600 !important;
  box-shadow: none !important;
  transition: all .15s !important;
}
[data-theme="warm"] .ai-analyze-btn:hover,
[data-theme="noir"] .ai-analyze-btn:hover {
  background: color-mix(in srgb, var(--accent) 18%, transparent) !important;
  border-style: solid !important;
  border-color: var(--accent) !important;
}

/* ──────────────────────────────────────────────────────────────────────────
   KANBAN PIPELINE (vendeurs) — tone-down
   Colonnes : header accent-dim sobre, cards fond surface pur
   ────────────────────────────────────────────────────────────────────────── */

/* Classes kanban génériques (selon donna) */

/* Header de colonne kanban */

/* Card kanban (sur fond de colonne) */

/* Card en drag (état actif) */
[data-theme="warm"] .kanban-card.dragging,
[data-theme="warm"] .kb-card.dragging,
[data-theme="warm"] .esti-card.dragging,
[data-theme="noir"] .kanban-card.dragging,
[data-theme="noir"] .kb-card.dragging,
[data-theme="noir"] .esti-card.dragging {
  border-color: var(--accent) !important;
  opacity: .7;
}

/* Drop zone active */
[data-theme="warm"] .kanban-col.drop-target,
[data-theme="warm"] .kb-col.drop-target,
[data-theme="warm"] .esti-col.drop-target,
[data-theme="noir"] .kanban-col.drop-target,
[data-theme="noir"] .kb-col.drop-target,
[data-theme="noir"] .esti-col.drop-target {
  border-color: var(--accent) !important;
  background: var(--accent-dim) !important;
}

/* Pipeline steps (si kanban utilise aussi les mp-step) — déjà couverts batch 3 */

/* ──────────────────────────────────────────────────────────────────────────
   SIDENAV ACTIF — démarquage SPÉCIAL
   L'état actif doit être visible même en un clin d'œil
   Left-border accent 3px + fond accent-dim + font weight 700
   ────────────────────────────────────────────────────────────────────────── */

[data-theme="warm"] .sn-btn,
[data-theme="noir"] .sn-btn {
  border-radius: var(--radius, 4px) !important;
  position: relative;
  transition: background .15s, color .15s !important;
}
[data-theme="warm"] .sn-btn:hover,
[data-theme="noir"] .sn-btn:hover {
  background: var(--s3, var(--s2)) !important;
  color: var(--text) !important;
}

/* État actif — démarquage fort */
[data-theme="warm"] .sn-btn.active,
[data-theme="noir"] .sn-btn.active {
  background: var(--accent-dim) !important;
  color: var(--accent) !important;
  font-weight: 700 !important;
}
/* Barre accent à gauche du bouton actif (indicator) */
[data-theme="warm"] .sn-btn.active::before,
[data-theme="noir"] .sn-btn.active::before {
  content: '';
  position: absolute;
  left: -4px;
  top: 4px;
  bottom: 4px;
  width: 3px;
  background: var(--accent);
  border-radius: 2px;
  pointer-events: none;
}

/* L'icône SVG dans le bouton actif hérite aussi de color accent */
[data-theme="warm"] .sn-btn.active .sn-icon svg,
[data-theme="noir"] .sn-btn.active .sn-icon svg {
  stroke: var(--accent) !important;
}

/* ──────────────────────────────────────────────────────────────────────────
   WORDMARK "donna" — touche signature subtile
   Déjà neutralisé en batch 1 (couleur unie). On ajoute un micro-détail :
   un petit dot accent après le mot pour garder l'identité
   ────────────────────────────────────────────────────────────────────────── */

[data-theme="warm"] .logo-area h1::after,
[data-theme="noir"] .logo-area h1::after {
  content: '';
  display: inline-block;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--accent);
  margin-left: 3px;
  vertical-align: baseline;
  transform: translateY(-2px);
}

/* ──────────────────────────────────────────────────────────────────────────
   HEADER FINITIONS — plus de gradient résiduel
   ────────────────────────────────────────────────────────────────────────── */

[data-theme="warm"] header,
[data-theme="noir"] header {
  background-image: none !important;
}

/* ──────────────────────────────────────────────────────────────────────────
   RAPPR TITLE (titre "Rapprochement acquéreurs" dans la modal)
   Actuellement gradient red-yellow → accent uni
   ────────────────────────────────────────────────────────────────────────── */

/* Apt-search-btn était déjà fait batch 2, on retire son gradient historique */

/* Score fill (barre de score dans match cards) : était gradient → accent uni */
[data-theme="warm"] .score-fill,
[data-theme="noir"] .score-fill {
  background: var(--accent) !important;
}

/* ──────────────────────────────────────────────────────────────────────────
   APT RECAP — gradient rouge-jaune → flat sobre
   ────────────────────────────────────────────────────────────────────────── */

[data-theme="warm"] .apt-recap,
[data-theme="noir"] .apt-recap {
  background: var(--s2) !important;
  border: 1px solid var(--border) !important;
  background-image: none !important;
}

/* ──────────────────────────────────────────────────────────────────────────
   NOTIF BADGE (pastille sur cloche) — garde couleur chaud mais radius Margot
   ────────────────────────────────────────────────────────────────────────── */

[data-theme="warm"] .notif-badge,
[data-theme="noir"] .notif-badge {
  background: var(--chaud) !important;
  color: #fff !important;
  border: 2px solid var(--bg) !important;
  font-weight: 700 !important;
}

/* ──────────────────────────────────────────────────────────────────────────
   PULSE DOT (vert anim sur bandeau header "live")
   Garde sa couleur + animation, mais shadow neutralisée
   ────────────────────────────────────────────────────────────────────────── */

[data-theme="warm"] .pulse,
[data-theme="noir"] .pulse {
  background: var(--green) !important;
}

/* ══════════════════════════════════════════════════════════════════════════
   FIN BATCH 4 — PHASE 2 TERMINÉE
   Tous les composants partagés sont Margot-compliant (Light + Noir)
   Dark préservé en backup
   ══════════════════════════════════════════════════════════════════════════ */

/* ═══════════════════════════════════════════════════════════════════════════
   DASHBOARD V2 — MARGOT DIRECTION 3 (donna v2.0 phase 3 — v160)
   Scope : #db-v2-root + .dbv2-* + #db-version-toggle
   Mock Margot 1:1 : Hello + KPI sparklines + Agenda + Tâches + Activité + Dossiers + Modules
   ═══════════════════════════════════════════════════════════════════════════ */

/* ═══════════════════════════════════════════
   Container root
   ═══════════════════════════════════════════ */

/* ═══════════════════════════════════════════
   HELLO block
   ═══════════════════════════════════════════ */

/* ═══════════════════════════════════════════
   KPI 4 cards avec sparklines
   ═══════════════════════════════════════════ */

/* ═══════════════════════════════════════════
   Row layout (legacy - replaced by dbv2-modules-grid in v352)
   ═══════════════════════════════════════════ */

/* v354b — Scroll interne du tableau biens (approche directe avec max-height) */
#page-biens #biens-content{
  height: 100%;
  max-height: 100%;
  display: flex;
  flex-direction: column;
  min-height: 0;
}
#page-biens #biens-table-view{
  max-height: calc(100vh - 220px);
  overflow: auto !important;
}
#page-biens #biens-grid-view{
  max-height: calc(100vh - 220px);
  overflow-y: auto;
}
/* Shell-v2 : header absent → plus d'espace dispo */
body.shell-v2-on #page-biens #biens-table-view,
body.shell-v2-on #page-biens #biens-grid-view{
  max-height: calc(100vh - 180px);
}
@media (max-width: 900px){
  #page-biens #biens-content,
  body.shell-v2-on #page-biens{
    height: auto;
    max-height: none;
    overflow: visible;
  }
  #page-biens #biens-table-view,
  #page-biens #biens-grid-view{
    max-height: none;
    overflow: visible !important;
  }
}

/* v356 — Fallback global pour les vignettes biens (photo zone visible même sans shell-v2) */
.biens-vign-card{
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 12px;
  overflow: hidden;
  cursor: pointer;
  display: flex;
  flex-direction: column;
}
.biens-vign-photo{
  position: relative;
  aspect-ratio: 4 / 3;
  min-height: 160px;
  background: var(--s2);
  overflow: hidden;
  flex-shrink: 0;
}

.biens-vign-img{
  width: 100%; height: 100%; object-fit: cover;
}
/* ═══════════════════════════════════════════
   Modules grid (v352) — CSS columns masonry : les modules se collent
   verticalement sans espace vide (contrairement à grid-rows qui aligne).
   [v1009] Règles [data-cols=N] : pilotées par _dbv2ApplyColumns()
   (set data-cols sur #db-v2-root). Avant v1009 le bouton cycle posait
   l'attribut mais aucune règle CSS ne l'utilisait → cycle visuellement
   inopérant. Anthony : "le bouton des colonnes ne fonctionne pas".
   ═══════════════════════════════════════════ */

/* ═══════════════════════════════════════════
   Card générique
   ═══════════════════════════════════════════ */

/* ═══ Centre de notifications (v350) ═══ */

/* ═══════════════════════════════════════════
   Empty states
   ═══════════════════════════════════════════ */

/* ═══════════════════════════════════════════
   Agenda du jour
   ═══════════════════════════════════════════ */

/* ═══════════════════════════════════════════
   Tâches
   ═══════════════════════════════════════════ */

/* ═══════════════════════════════════════════
   Activité récente
   ═══════════════════════════════════════════ */

/* ═══════════════════════════════════════════
   Dossiers en cours
   ═══════════════════════════════════════════ */

/* ═══════════════════════════════════════════
   Modules donna conservés (Taux + Biens + Alertes)
   ═══════════════════════════════════════════ */

/* Dans une card Margot (refondu v352) : padding interne cohérent */

/* Scrollbar discrète sur les mods */

/* ═══════════════════════════════════════════
   Responsive
   ═══════════════════════════════════════════ */
/* ═══════════════════════════════════════════════════════════════════════════
   DASHBOARD V2 — MOBILE VIEW (card noire "Prochain RDV")
   Scope : #db-v2-root .dbv2-mobile-hero
   Visible uniquement en mobile (max-width: 900px)
   ═══════════════════════════════════════════════════════════════════════════ */

/* ══════════ Cacher mobile-only elements par défaut (desktop) ══════════ */

/* ══════════ Mode mobile (<= 900px) ══════════ */
@media (max-width: 900px){

  /* Afficher la card noire prochain RDV */

  /* Padding bottom pour que le contenu ne soit pas caché par la tab bar donna existante (#mobile-tabbar) */

  /* Cacher les boutons actions desktop en mobile (Filtres/Nouveau/RDV rapide) */
  

  /* Hello compact en mobile */
  
  
   /* summary remplacée par la card noire */

  /* En mobile on peut cacher la row "Dossiers en cours" pour pas surcharger */
  /* (déjà visible dans la tab bar → bouton Dossiers) */
  /* Commenté : on garde les dossiers visibles si pas encombrant */
  }

/* ══════════ CARD NOIRE "PROCHAIN RDV" (signature Margot) ══════════ */

/* En theme noir, on peut avoir une très légère variation pour garder la distinction */

@keyframes dbv2HeroDot{
  0%, 100%{opacity: 1; box-shadow: 0 0 0 0 rgba(139,123,255,0.6)}
  50%{opacity: 0.85; box-shadow: 0 0 0 6px rgba(139,123,255,0)}
}

/* ══════════ Note : la tab bar mobile v2 a été retirée au profit de #mobile-tabbar donna existante (plus cohérent avec l'app globale). ══════════ */

/* ══════════ Ajustements mobile pour les sections existantes ══════════ */
@media (max-width: 900px){
  /* Card noire : marge bottom pour séparer des KPI */

}

/* ═══════════════════════════════════════════════════════════════════════════
   CLIENT PAGE — Fiche client pleine page (donna v2.0 phase 3)
   Scope : #page-client + .cp-*
   ⚠️ Design MVP en attente de validation Margot. Structure prête pour swap.
   ═══════════════════════════════════════════════════════════════════════════ */

#page-client{
  background: var(--bg);
  min-height: calc(100vh - 80px);
  position: relative;
  z-index: 1;
  /* margin-left:56px est géré inline sur le container, pour laisser la place à la sidebar donna */
}
#page-client > #client-page-root{
  font-family: 'Inter', sans-serif;
  padding: 0 24px 40px;
  max-width: 1400px;
  margin: 0 auto;
}

/* ── Breadcrumb + header ── */
.cp-header{
  padding: 24px 0 20px;
}
.cp-topbar{
  display: flex;
  align-items: center;
  gap: 14px;
  margin-bottom: 14px;
}
.cp-back-btn{
  background: var(--surface);
  border: 1px solid var(--border);
  color: var(--text-dim, var(--muted));
  padding: 6px 11px 6px 9px;
  border-radius: 7px;
  font-size: 12px;
  font-weight: 500;
  cursor: pointer;
  font-family: inherit;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  transition: all .12s;
  flex-shrink: 0;
}
.cp-back-btn:hover{
  background: var(--s2);
  color: var(--text);
  border-color: var(--border-hi, var(--border));
  transform: translateX(-2px);
}
.cp-back-btn svg{flex-shrink: 0}

.cp-breadcrumb{
  font-size: 12px;
  color: var(--muted);
  display: flex; align-items: center; gap: 6px;
  flex: 1;
  min-width: 0;
}
.cp-breadcrumb a{
  color: var(--muted);
  cursor: pointer;
  text-decoration: none;
  transition: color .12s;
}
.cp-breadcrumb a:hover{color: var(--text)}
.cp-breadcrumb .sep{color: var(--border-hi, var(--border))}
.cp-breadcrumb .current{color: var(--text); font-weight: 500}

.cp-header-row{
  display: flex; align-items: flex-start; justify-content: space-between;
  gap: 16px; flex-wrap: wrap;
}

.cp-identity{
  display: flex; align-items: center; gap: 16px;
  min-width: 0;
}
.cp-avatar{
  width: 52px; height: 52px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  color: #fff;
  font-family: 'Plus Jakarta Sans', sans-serif;
  font-size: 18px; font-weight: 700;
  flex-shrink: 0;
}
.cp-ident-txt{min-width: 0}
.cp-ident-txt h1{
  font-family: 'Plus Jakarta Sans', sans-serif;
  font-size: 26px; font-weight: 800;
  letter-spacing: -.4px;
  color: var(--text);
  line-height: 1.15;
  margin: 0;
  display: flex; align-items: center; gap: 10px;
  flex-wrap: wrap;
}
.cp-status-pill{
  font-size: 11px; font-weight: 600;
  padding: 4px 10px;
  border-radius: 99px;
  display: inline-flex; align-items: center; gap: 5px;
  font-family: 'Inter', sans-serif;
  letter-spacing: 0;
}
.cp-status-pill .dot{
  width: 6px; height: 6px; border-radius: 50%;
  background: currentColor;
}
.cp-status-pill.chaud{background: color-mix(in srgb, var(--chaud) 15%, transparent); color: var(--chaud)}
.cp-status-pill.tiede{background: color-mix(in srgb, var(--tiede) 15%, transparent); color: var(--tiede)}
.cp-status-pill.froid{background: color-mix(in srgb, var(--froid) 15%, transparent); color: var(--froid)}

.cp-ident-sub{
  font-size: 13px; color: var(--muted);
  margin-top: 6px;
  display: flex; flex-wrap: wrap; gap: 6px;
}
.cp-ident-sub .sep{color: var(--border-hi, var(--border)); margin: 0 4px}

.cp-actions{display: flex; gap: 6px; flex-wrap: wrap; align-items: center}
.cp-btn{
  background: var(--surface);
  border: 1px solid var(--border);
  color: var(--text);
  padding: 8px 14px;
  font-size: 12px; font-weight: 600;
  border-radius: var(--radius, 4px);
  cursor: pointer;
  font-family: 'Inter', sans-serif;
  transition: all .12s;
  display: inline-flex; align-items: center; gap: 6px;
}
.cp-btn:hover{
  background: var(--s2);
  border-color: var(--border-hi, var(--border));
}
.cp-btn.primary{
  background: var(--text);
  color: var(--bg);
  border-color: var(--text);
}
.cp-btn.primary:hover{opacity: .88}
.cp-btn.icon{
  padding: 8px 10px;
  min-width: 36px;
  justify-content: center;
}

/* ── Main grid 2fr / 1fr ── */
.cp-main{
  display: grid;
  grid-template-columns: minmax(0, 2fr) minmax(280px, 1fr);
  gap: 18px;
  align-items: start;
}
.cp-left, .cp-right{
  display: flex; flex-direction: column; gap: 14px;
  min-width: 0;
}

/* ── Cards génériques ── */
.cp-card{
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg, 8px);
  overflow: hidden;
}
.cp-card-head{
  padding: 14px 18px;
  border-bottom: 1px solid var(--border);
  display: flex; align-items: center; justify-content: space-between;
  gap: 10px;
}
.cp-card-title{
  font-family: 'Plus Jakarta Sans', sans-serif;
  font-size: 13px; font-weight: 700;
  color: var(--text);
}
.cp-card-link{
  font-size: 12px; color: var(--accent);
  cursor: pointer;
  font-weight: 500;
}
.cp-card-link:hover{text-decoration: underline}
.cp-card-body{padding: 18px}

/* ── Patrimoine / budget card ── */
.cp-patrimoine .cp-card-body{padding: 24px 22px}
.cp-patri-val{
  font-family: 'Plus Jakarta Sans', sans-serif;
  font-size: 34px; font-weight: 800;
  letter-spacing: -.6px;
  color: var(--text);
  line-height: 1;
  font-variant-numeric: tabular-nums;
}
.cp-patri-sub{
  font-size: 13px; color: var(--muted);
  margin-top: 8px;
}
.cp-patri-sub b{color: var(--text); font-weight: 600}
.cp-empty-inline{
  color: var(--muted);
  font-size: 13px;
}
.cp-empty-inline a{
  color: var(--accent);
  cursor: pointer;
  text-decoration: none;
  font-weight: 500;
}
.cp-empty-inline a:hover{text-decoration: underline}

/* ── Tabs ── */
.cp-tabs{
  display: flex; align-items: center;
  border-bottom: 1px solid var(--border);
  padding: 0 18px;
  gap: 2px;
  overflow-x: auto;
  scrollbar-width: none;
}
.cp-tabs::-webkit-scrollbar{display: none}
.cp-tabs button{
  background: none;
  border: none;
  color: var(--muted);
  padding: 12px 14px;
  font-size: 13px; font-weight: 500;
  cursor: pointer;
  font-family: inherit;
  border-bottom: 2px solid transparent;
  margin-bottom: -1px;
  transition: all .12s;
  display: inline-flex; align-items: center; gap: 6px;
  white-space: nowrap;
}
.cp-tabs button:hover{color: var(--text)}
.cp-tabs button[data-active="true"]{
  color: var(--text);
  font-weight: 600;
  border-bottom-color: var(--accent);
}
.cp-tabs button .ct{
  background: var(--s2);
  color: var(--text-dim);
  font-size: 10px;
  padding: 1px 6px;
  border-radius: 99px;
  font-weight: 600;
}
.cp-tabs button[data-active="true"] .ct{
  background: var(--accent-dim);
  color: var(--accent);
}
.cp-tabs-body{padding: 18px}

/* ── Table dossiers ── */
.cp-table{
  width: 100%;
  border-collapse: collapse;
  font-size: 13px;
}
.cp-table thead th{
  text-align: left;
  padding: 10px 12px;
  color: var(--muted);
  font-weight: 600;
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: .4px;
  border-bottom: 1px solid var(--border);
}
.cp-table thead th.num{text-align: right}
.cp-table tbody tr{
  cursor: pointer;
  transition: background .1s;
}
.cp-table tbody tr:hover{background: var(--s2)}
.cp-table tbody td{
  padding: 12px;
  color: var(--text);
  border-bottom: 1px solid var(--border);
}
.cp-table tbody tr:last-child td{border-bottom: none}
.cp-table td.strong{font-weight: 600}
.cp-table td.num{text-align: right; font-variant-numeric: tabular-nums}

.cp-dossier-status{
  display: inline-flex; align-items: center;
  padding: 3px 8px;
  border-radius: 99px;
  font-size: 11px; font-weight: 600;
  background: var(--accent-dim);
  color: var(--accent);
}
.cp-dossier-status.aa{background: color-mix(in srgb, var(--green) 15%, transparent); color: var(--green)}
.cp-dossier-status.sc{background: color-mix(in srgb, var(--froid) 15%, transparent); color: var(--froid)}
.cp-dossier-status.o{background: color-mix(in srgb, var(--tiede) 15%, transparent); color: var(--tiede)}

/* ── Activity list ── */
.cp-activity-list{display: flex; flex-direction: column; gap: 12px}
.cp-activity-item{
  display: flex; align-items: flex-start; gap: 12px;
  padding: 10px 0;
  border-bottom: 1px solid var(--border);
}
.cp-activity-item:last-child{border-bottom: none}
.cp-activity-dot{
  width: 8px; height: 8px; border-radius: 50%;
  margin-top: 6px;
  flex-shrink: 0;
}
.cp-activity-txt{flex: 1}
.cp-activity-txt b{font-weight: 600; color: var(--text)}
.cp-activity-txt .when{
  font-size: 11px; color: var(--muted);
  margin-top: 2px;
}

/* ── Notes list ── */
.cp-notes-list{display: flex; flex-direction: column; gap: 12px}
.cp-note-item{
  padding: 12px 14px;
  background: var(--s2);
  border-radius: var(--radius, 4px);
  border-left: 3px solid var(--accent);
}
.cp-note-date{
  font-size: 11px; color: var(--muted);
  font-weight: 500;
  margin-bottom: 4px;
}
.cp-note-txt{
  font-size: 13px; color: var(--text);
  line-height: 1.5;
}

/* ── Info rows (sidebar right) ── */
.cp-info{display: flex; flex-direction: column; gap: 10px; padding: 18px}
.cp-info-row{
  display: flex; justify-content: space-between; align-items: baseline;
  gap: 12px;
  font-size: 13px;
}
.cp-info-row .k{
  color: var(--muted);
  flex-shrink: 0;
}
.cp-info-row .v{
  color: var(--text);
  text-align: right;
  font-weight: 500;
}
.cp-info-row .v.lnk{color: var(--accent); text-decoration: none}
.cp-info-row .v.lnk:hover{text-decoration: underline}

/* ── Prochains RDV ── */
.cp-rdv-item{
  display: grid;
  grid-template-columns: 48px 1fr;
  gap: 12px;
  padding: 12px 0;
  border-bottom: 1px solid var(--border);
  cursor: pointer;
  transition: background .1s;
  margin: 0 -18px;
  padding: 12px 18px;
}
.cp-rdv-item:last-child{border-bottom: none}
.cp-rdv-item:hover{background: var(--s2)}
.cp-rdv-date{
  background: var(--s2);
  border: 1px solid var(--border);
  border-radius: var(--radius, 4px);
  padding: 4px 0;
  text-align: center;
  font-family: 'Plus Jakarta Sans', sans-serif;
}
.cp-rdv-date .m{
  font-size: 9px;
  color: var(--muted);
  font-weight: 600;
  letter-spacing: .3px;
  margin-bottom: -2px;
}
.cp-rdv-date .d{
  font-size: 18px;
  font-weight: 800;
  color: var(--text);
  line-height: 1.1;
}
.cp-rdv-info .ttl{
  font-size: 13px; font-weight: 600;
  color: var(--text);
}
.cp-rdv-info .meta{
  font-size: 11px; color: var(--muted);
  margin-top: 2px;
}

/* ── Activité compact (right sidebar) ── */
.cp-activity-compact{display: flex; flex-direction: column}
.cp-act-row{
  display: grid;
  grid-template-columns: 8px 1fr;
  gap: 10px;
  align-items: flex-start;
  padding: 10px 0;
  border-bottom: 1px solid var(--border);
}
.cp-act-row:last-child{border-bottom: none}
.cp-act-row .dot{
  width: 8px; height: 8px; border-radius: 50%;
  margin-top: 6px;
}
.cp-act-row .txt b{color: var(--text); font-weight: 600}
.cp-act-row .txt .when{
  font-size: 10.5px; color: var(--muted);
  margin-top: 2px;
}

/* ── Empty state pleine page ── */
.cp-empty{
  padding: 80px 20px;
  text-align: center;
  display: flex; flex-direction: column; align-items: center; gap: 14px;
}
.cp-empty-icon{font-size: 48px; opacity: .5}
.cp-empty-title{
  font-family: 'Plus Jakarta Sans', sans-serif;
  font-size: 18px; font-weight: 700;
  color: var(--text);
}
.cp-empty-sub{
  font-size: 14px; color: var(--muted);
  max-width: 400px;
}

/* ═══════════════════════════════════════════
   Responsive
   ═══════════════════════════════════════════ */
@media (max-width: 900px){
  #page-client > #client-page-root{padding: 0 0 80px}
  .cp-main{grid-template-columns: 1fr}
  .cp-header-row{flex-direction: column; align-items: stretch}
  .cp-actions{justify-content: stretch}
  .cp-actions .cp-btn:not(.icon){flex: 1; justify-content: center}
  .cp-ident-txt h1{font-size: 22px}
  .cp-patri-val{font-size: 28px}
  .cp-table{font-size: 12px}
  .cp-table thead th{padding: 8px 10px}
  .cp-table tbody td{padding: 10px}
}

@media (max-width: 600px){
  .cp-tabs button{padding: 10px 10px; font-size: 12px}
  /* Sur tout petit écran, certaines colonnes de la table sont moins critiques */
  .cp-table thead th:nth-child(2),
  .cp-table tbody td:nth-child(2){display: none}
}

/* v391 — Dashboard mobile : bouton recherche aligné avec autres pages (topbar) */

.dbv2-mobile-toolbar{display:none}
@media(max-width:900px){
  .dbv2-mobile-toolbar{
    display:flex !important;
    position:absolute;
    top:14px;right:16px;
    z-index:5;
    gap:5px;
  }
  .dbv2-mobile-search-btn{
    width:30px;height:30px;padding:0;
    display:grid;place-items:center;
    background:var(--s2);border:1px solid var(--border);border-radius:6px;
    color:var(--text);cursor:pointer;
    transition:border-color .15s;
  }
  .dbv2-mobile-search-btn:hover{border-color:var(--text) !important}
}

/* v388 — Recherche globale Margot 2.0 */
#gs-input:focus{
  border-color: var(--text) !important;
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--accent) 14%, transparent);
}
.gs-item{
  display:flex;align-items:center;gap:10px;
  padding:10px 14px;cursor:pointer;
  border-bottom:1px solid var(--border);
  transition:background .12s;
}
.gs-item:last-child{border-bottom:none}
.gs-item:hover,.gs-item[data-active="1"]{background:var(--s2)}

/* v391 — Modules dashboard fusionnés "À faire" et "Activité" */
.dbv2-todo-body,
.dbv2-feed-body{
  display:flex;flex-direction:column;
  max-height:460px !important;
  overflow-y:auto !important;
  overflow-x:hidden !important;
  -webkit-overflow-scrolling:touch !important;
  scroll-behavior:smooth !important;
  overscroll-behavior-y:contain !important;
}
/* Scrollbar fine Margot 2.0 */
.dbv2-todo-body::-webkit-scrollbar,
.dbv2-feed-body::-webkit-scrollbar{
  width:6px;
}
.dbv2-todo-body::-webkit-scrollbar-track,
.dbv2-feed-body::-webkit-scrollbar-track{
  background:transparent;
}
.dbv2-todo-body::-webkit-scrollbar-thumb,
.dbv2-feed-body::-webkit-scrollbar-thumb{
  background:transparent;border-radius:99px;transition:background .2s;
}
.dbv2-todo-body:hover::-webkit-scrollbar-thumb,
.dbv2-feed-body:hover::-webkit-scrollbar-thumb{
  background:var(--border);
}
.dbv2-todo-body::-webkit-scrollbar-thumb:hover,
.dbv2-feed-body::-webkit-scrollbar-thumb:hover{
  background:var(--muted);
}
.dbv2-todo-body[data-tab="all"] .dbv2-todo-alerts[data-group="alerts"]:not(:empty){
  border-top:1px solid var(--border);
  margin-top:6px;padding-top:10px;
}
.dbv2-feed-body[data-tab="all"] .dbv2-feed-activity[data-group="activity"]:not(:empty){
  border-top:1px solid var(--border);
  margin-top:6px;padding-top:10px;
}
.dbv2-todo-tasks:empty,
.dbv2-todo-alerts:empty,
.dbv2-feed-notifs:empty,
.dbv2-feed-activity:empty{
  display:none;
}

/* v392 — Alertes donna Margot 2.0 */
.dbv2-alert-row{
  display:flex;align-items:center;gap:10px;
  padding:10px 14px;
  border-bottom:1px solid var(--border);
  cursor:pointer;
  transition:background .12s;
}
.dbv2-alert-row:last-child{border-bottom:none}
.dbv2-alert-row:hover{background:var(--s2)}
.dbv2-alert-icon{
  width:28px;height:28px;flex-shrink:0;
  display:grid;place-items:center;
  background:var(--s2);border:1px solid var(--border);
  border-radius:4px;color:var(--muted);
}
.dbv2-alert-icon[data-urgency="critical"]{
  background:rgba(255,77,109,.12);border-color:rgba(255,77,109,.3);color:var(--chaud);
}
.dbv2-alert-icon[data-urgency="warn"]{
  background:rgba(247,201,72,.1);border-color:rgba(247,201,72,.28);color:#BA7517;
}

body[data-theme="noir"] .dbv2-alert-icon[data-urgency="warn"]{
  color:var(--tiede);
}
.dbv2-alert-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.dbv2-alert-label{
  font-size:13px;font-weight:500;color:var(--text);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.dbv2-alert-sub{
  font-size:11px;color:var(--muted);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.dbv2-alert-chev{
  flex-shrink:0;color:var(--muted);opacity:.6;
  transition:transform .15s,opacity .15s;
}
.dbv2-alert-row:hover .dbv2-alert-chev{
  transform:translateX(2px);opacity:1;color:var(--text);
}

/* v394 — Bouton réglages dashboard (à côté de Planifier) */

/* v394 — Modal réglages modules (Margot 2.0) */
.dbv2-settings-overlay{
  position:fixed;inset:0;z-index: var(--z-overlay) /* was 10000 */;
  background:rgba(20,22,31,.55);backdrop-filter:blur(4px);
  display:flex;align-items:center;justify-content:center;
  padding:16px;opacity:0;transition:opacity .18s ease;
}
.dbv2-settings-overlay.open{opacity:1}
.dbv2-settings-modal{
  background:var(--surface);
  border:1px solid var(--border);
  border-radius:8px;
  width:460px;max-width:100%;max-height:88vh;
  display:flex;flex-direction:column;
  box-shadow:0 24px 60px rgba(0,0,0,.25);
  overflow:hidden;
  transform:translateY(10px);transition:transform .18s ease;
}
.dbv2-settings-overlay.open .dbv2-settings-modal{transform:translateY(0)}
.dbv2-set-head{
  padding:20px 22px 14px;
  display:flex;align-items:flex-start;justify-content:space-between;gap:14px;
  border-bottom:1px solid var(--border);
}
.dbv2-set-title{
  font-family:'Plus Jakarta Sans',sans-serif;
  font-size:16px;font-weight:700;letter-spacing:-.015em;
  margin:0 0 3px;color:var(--text);
}
.dbv2-set-sub{
  font-size:12px;color:var(--muted);margin:0;
}
.dbv2-set-close{
  width:30px;height:30px;padding:0;
  background:transparent;border:1px solid var(--border);border-radius:4px;
  color:var(--muted);cursor:pointer;
  display:grid;place-items:center;
  transition:all .12s;
}
.dbv2-set-close:hover{color:var(--text);border-color:var(--text);background:var(--s2)}
.dbv2-set-body{
  padding:8px 16px;flex:1;overflow-y:auto;
}
.dbv2-set-row{
  display:flex;align-items:center;gap:14px;
  padding:12px 6px;
  border-bottom:1px solid var(--border);
}
.dbv2-set-row:last-child{border-bottom:none}
.dbv2-set-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.dbv2-set-label{font-size:13px;font-weight:600;color:var(--text)}
.dbv2-set-desc{font-size:11.5px;color:var(--muted)}
.dbv2-set-toggle{
  flex-shrink:0;width:38px;height:22px;padding:0;
  border:none;border-radius:99px;cursor:pointer;
  position:relative;transition:background .18s;
}
.dbv2-set-toggle.on{background:var(--accent)}
.dbv2-set-toggle.off{background:var(--border)}
.dbv2-set-toggle .knob{
  position:absolute;top:3px;
  width:16px;height:16px;border-radius:50%;
  background:#fff;transition:left .18s;
  box-shadow:0 1px 3px rgba(0,0,0,.15);
}
.dbv2-set-toggle.on .knob{left:19px}
.dbv2-set-toggle.off .knob{left:3px}
.dbv2-set-footer{
  padding:14px 22px;
  display:flex;gap:8px;
  border-top:1px solid var(--border);
  background:var(--bg);
}
.dbv2-set-reset{
  flex:0 0 auto;padding:9px 14px;
  background:transparent;border:1px solid var(--border);
  border-radius:4px;
  color:var(--text-dim);font-size:12.5px;font-weight:500;
  cursor:pointer;transition:all .12s;font-family:inherit;
}
.dbv2-set-reset:hover{border-color:var(--text);color:var(--text);background:var(--s2)}
.dbv2-set-done{
  flex:1;padding:9px 16px;
  background:var(--text);color:var(--surface);border:0;
  border-radius:4px;font-size:13px;font-weight:600;
  cursor:pointer;transition:background .12s;font-family:inherit;
}
.dbv2-set-done:hover{background:var(--accent);color:#fff}

@media(max-width:500px){
  .dbv2-settings-modal{width:100%}
  .dbv2-set-head{padding:16px 18px 12px}
  .dbv2-set-body{padding:6px 12px}
}

/* v395 — Tâches cochées : barré + opacity, persist journalière */
.dbv2-task.done{
  opacity:.55;
}
.dbv2-task.done .ttl{
  text-decoration:line-through;
  color:var(--muted);
}
.dbv2-task.done .meta{
  text-decoration:line-through;
}

/* ═══════════════════════════════════════════════
   v397 — Biens vignettes Margot 2.0
   Aligné avec le design pass de Margot : glyph building
   épuré, badges N° + statut en overlay, prix display
   ═══════════════════════════════════════════════ */
.biens-vign-card{
  display:flex;flex-direction:column;
  background:var(--surface);
  border:1px solid var(--border);
  border-radius:6px;
  overflow:hidden;
  cursor:pointer;
  transition:border-color .15s, box-shadow .15s;
}
.biens-vign-card:hover{
  border-color:color-mix(in srgb, var(--accent) 35%, var(--border));
  box-shadow:0 4px 14px rgba(20,22,31,.04);
}
.biens-vign-photo{
  position:relative;
  aspect-ratio:16/10;
  background:color-mix(in srgb, var(--s2) 55%, var(--surface));
  border-bottom:1px solid var(--border);
  display:grid;place-items:center;
  overflow:hidden;
}
/* Glyph building épuré au centre (fil de fer) */
.biens-vign-glyph{
  width:52px;height:52px;
  color:color-mix(in srgb, var(--muted) 55%, transparent);
  opacity:.6;
}
.biens-vign-glyph svg{width:100%;height:100%}
/* Badge mandat top-left */
.biens-vign-mand-tag{
  position:absolute;top:10px;left:10px;
  font-family:'JetBrains Mono',ui-monospace,monospace;
  font-size:10px;font-weight:500;letter-spacing:.3px;
  padding:3px 7px;
  background:rgba(255,255,255,.72);
  backdrop-filter:blur(6px);
  border:1px solid rgba(20,22,31,.08);
  border-radius:3px;
  color:var(--text);
}

body[data-theme="noir"] .biens-vign-mand-tag{
  background:rgba(20,22,31,.65);
  border-color:rgba(255,255,255,.1);
  color:var(--text);
}
/* Badge statut top-right avec dot */
.biens-vign-status{
  position:absolute;top:10px;right:10px;
  display:inline-flex;align-items:center;gap:5px;
  padding:3px 9px 3px 8px;
  font-size:10.5px;font-weight:600;letter-spacing:.1px;
  border-radius:99px;
  background:rgba(255,255,255,.82);
  backdrop-filter:blur(6px);
  border:1px solid rgba(20,22,31,.08);
  color:var(--text);
}

body[data-theme="noir"] .biens-vign-status{
  background:rgba(20,22,31,.72);
  border-color:rgba(255,255,255,.1);
  color:var(--text);
}
.biens-vign-status .dot{
  width:6px;height:6px;border-radius:50%;
  background:var(--muted);
}
.biens-vign-status.en-cours .dot{background:var(--accent)}
.biens-vign-status.vendu .dot{background:var(--green)}
.biens-vign-status.suspendu{opacity:.85}
/* Body : adresse + cp + specs + DPE */
.biens-vign-body{
  padding:12px 14px 6px;
  display:flex;flex-direction:column;gap:4px;
}
.biens-vign-addr{
  font-size:13.5px;font-weight:600;color:var(--text);
  line-height:1.3;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;
  overflow:hidden;
}
.biens-vign-cp{
  font-size:11.5px;color:var(--muted);
  font-variant-numeric:tabular-nums;
}
.biens-vign-specs{
  display:flex;align-items:center;gap:6px;
  margin-top:4px;
  font-size:11.5px;color:var(--text-dim);
  flex-wrap:wrap;
}
.biens-vign-specs .sep{color:var(--muted);opacity:.5}
.biens-vign-specs .dpe-badge{
  display:inline-flex;align-items:center;justify-content:center;
  width:20px;height:18px;
  border-radius:3px;
  font-size:10px;font-weight:700;
  margin-left:4px;
}
/* Footer : prix en display + bouton rapprochement */
.biens-vign-foot{
  display:flex;align-items:center;justify-content:space-between;
  gap:8px;padding:10px 14px 12px;
  border-top:1px solid color-mix(in srgb, var(--border) 60%, transparent);
  margin-top:auto;
}
.biens-vign-price{
  font-family:'Plus Jakarta Sans',sans-serif;
  font-size:17px;font-weight:700;
  letter-spacing:-.5px;
  color:var(--text);
  font-variant-numeric:tabular-nums;
  line-height:1;
}

/* Mobile */
@media(max-width:600px){
  .biens-vign-body{padding:10px 12px 4px}
  .biens-vign-foot{padding:8px 12px 10px}
  .biens-vign-price{font-size:15px}
  .biens-vign-addr{font-size:12.5px}
  .biens-vign-glyph{width:42px;height:42px}
}

/* ═══════════════════════════════════════════════
   v397 — Biens rail donna IA (bandeau signaux)
   ═══════════════════════════════════════════════ */
.biens-rail-donna{
  display:flex;align-items:center;gap:14px;
  margin-bottom:16px;
  padding:12px 16px 12px 14px;
  background:var(--surface);
  border:1px solid var(--border);
  border-radius:8px;
}
.biens-rail-donna-id{
  display:flex;align-items:center;gap:10px;flex-shrink:0;
  padding-right:14px;
  border-right:1px solid var(--border);
}
.biens-rail-donna-id .brain,
.biens-rail-donna-id .brain-img{
  width:32px;height:32px;
  border-radius:6px;
  flex-shrink:0;
}
.biens-rail-donna-id .brain{
  background:var(--text);color:var(--surface);
  font-family:'Plus Jakarta Sans',sans-serif;
  font-weight:700;font-size:14px;
  display:grid;place-items:center;
}
.biens-rail-donna-id .brain-img{
  object-fit:contain;
  display:block;
}
.biens-rail-donna-id .lbl{display:flex;flex-direction:column;gap:1px}
.biens-rail-donna-id .lbl strong{
  font-size:12.5px;font-weight:600;color:var(--text);
  white-space:nowrap;
}
.biens-rail-donna-id .lbl .sub{
  font-size:10.5px;color:var(--muted);
  white-space:nowrap;
}
.biens-rail-donna-cards{
  display:flex;gap:8px;flex:1;min-width:0;
  overflow-x:auto;
  scrollbar-width:none;
}
.biens-rail-donna-cards::-webkit-scrollbar{display:none}
.biens-rail-donna-cards .drc{
  display:inline-flex;align-items:center;gap:8px;
  padding:6px 10px;
  background:var(--s2);
  border:1px solid var(--border);
  border-radius:6px;
  font-size:11.5px;
  color:var(--text-dim);
  cursor:pointer;
  transition:border-color .12s;
  white-space:nowrap;flex-shrink:0;
}
.biens-rail-donna-cards .drc:hover{border-color:var(--text)}
.biens-rail-donna-cards .drc-tag{
  font-family:'JetBrains Mono',ui-monospace,monospace;
  font-size:9.5px;font-weight:600;letter-spacing:.4px;
  text-transform:uppercase;
  padding:2px 6px;border-radius:3px;
  flex-shrink:0;
}
.biens-rail-donna-cards .drc.hot .drc-tag{
  background:rgba(255,77,109,.15);color:var(--chaud);border:1px solid rgba(255,77,109,.25);
}
.biens-rail-donna-cards .drc.match .drc-tag{
  background:rgba(124,106,247,.12);color:var(--accent);border:1px solid rgba(124,106,247,.3);
}
.biens-rail-donna-cards .drc.sous .drc-tag{
  background:rgba(247,201,72,.12);color:#BA7517;border:1px solid rgba(247,201,72,.3);
}

body[data-theme="noir"] .biens-rail-donna-cards .drc.sous .drc-tag{color:var(--tiede)}
.biens-rail-donna-cards .drc-copy{color:var(--text-dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:360px}
.biens-rail-donna-cards .drc-copy b{color:var(--text);font-weight:600}
.biens-rail-donna-more{
  padding:5px 10px;
  background:transparent;border:1px dashed var(--border);border-radius:6px;
  color:var(--muted);font-size:11px;font-weight:500;
  cursor:pointer;flex-shrink:0;
  transition:all .12s;
}
.biens-rail-donna-more:hover{border-color:var(--text);color:var(--text);border-style:solid}
@media(max-width:900px){
  /* v406 — Mobile : logo uniquement, on cache tout le bloc texte d'identité */
  .biens-rail-donna{padding:10px 12px 10px 10px;gap:10px}
  .biens-rail-donna-id{padding-right:10px}
  .biens-rail-donna-id .lbl{display:none}
  .biens-rail-donna-cards .drc-copy{max-width:220px}
  .biens-rail-donna-more{display:none}
}

/* ═══════════════════════════════════════════════
   v398 — Biens : Signal donna (tableau + vignette overlay)
   ═══════════════════════════════════════════════ */
/* Table : cellule Signal */
.t-donna{
  display:inline-flex;align-items:center;gap:5px;
  padding:3px 9px;
  font-family:'JetBrains Mono',ui-monospace,monospace;
  font-size:10px;font-weight:600;letter-spacing:.3px;
  text-transform:uppercase;
  border-radius:4px;
  white-space:nowrap;
}
.t-donna.hot{
  color:var(--chaud);background:rgba(255,77,109,.12);
  border:1px solid rgba(255,77,109,.28);
}
.t-donna.match{
  color:var(--accent);background:rgba(124,106,247,.12);
  border:1px solid rgba(124,106,247,.3);
}
.t-donna.sous{
  color:#BA7517;background:rgba(247,201,72,.14);
  border:1px solid rgba(247,201,72,.3);
}

body[data-theme="noir"] .t-donna.sous{color:var(--tiede)}
.t-donna-empty{color:var(--muted);opacity:.5;font-size:12px}

/* Vignette : signal overlay bas */
.biens-vign-signal{
  position:absolute;left:10px;bottom:10px;
  display:inline-flex;align-items:center;gap:5px;
  padding:3px 8px;
  font-family:'JetBrains Mono',ui-monospace,monospace;
  font-size:9.5px;font-weight:600;letter-spacing:.3px;
  text-transform:uppercase;
  border-radius:3px;
  background:rgba(255,255,255,.85);
  backdrop-filter:blur(6px);
  border:1px solid rgba(20,22,31,.08);
}

body[data-theme="noir"] .biens-vign-signal{
  background:rgba(20,22,31,.72);
  border-color:rgba(255,255,255,.1);
}
.biens-vign-signal .dot{width:5px;height:5px;border-radius:50%}
.biens-vign-signal.hot{color:var(--chaud)}
.biens-vign-signal.hot .dot{background:var(--chaud)}
.biens-vign-signal.match{color:var(--accent)}
.biens-vign-signal.match .dot{background:var(--accent)}
.biens-vign-signal.sous{color:#BA7517}
.biens-vign-signal.sous .dot{background:#BA7517}

body[data-theme="noir"] .biens-vign-signal.sous{color:var(--tiede)}

body[data-theme="noir"] .biens-vign-signal.sous .dot{background:var(--tiede)}

/* ═══════════════════════════════════════════════
   v398 — Empty state biens : chips filtres supprimables
   ═══════════════════════════════════════════════ */
.biens-empty-v2{
  padding:40px 20px;
  display:flex;flex-direction:column;align-items:center;gap:14px;
}
.biens-empty-v2 .empty-illo{
  width:48px;height:48px;
  color:var(--muted);opacity:.35;
}
.biens-empty-v2 h4{
  font-family:'Plus Jakarta Sans',sans-serif;
  font-size:16px;font-weight:700;
  letter-spacing:-.015em;
  color:var(--text);
  margin:0;
}
.biens-empty-v2 p{
  font-size:12.5px;color:var(--muted);
  max-width:380px;text-align:center;
  margin:0;
}
.biens-empty-chips{
  display:inline-flex;flex-wrap:wrap;gap:6px;
  align-items:center;justify-content:center;
  padding:10px 12px;
  background:var(--s2);
  border:1px solid var(--border);
  border-radius:6px;
  max-width:520px;
}
.biens-empty-chip{
  display:inline-flex;align-items:center;gap:4px;
  padding:4px 4px 4px 10px;
  background:var(--surface);
  border:1px solid var(--border);
  border-radius:99px;
  font-size:11.5px;font-weight:500;
  color:var(--text-dim);
}
.biens-empty-chip .x{
  width:18px;height:18px;padding:0;
  display:grid;place-items:center;
  background:transparent;border:0;
  color:var(--muted);
  font-size:13px;font-weight:500;
  border-radius:50%;cursor:pointer;line-height:1;
  transition:all .12s;
}
.biens-empty-chip .x:hover{
  background:rgba(255,77,109,.15);color:var(--chaud);
}
.biens-empty-clear-all{
  margin-left:4px;padding:4px 10px;
  background:transparent;border:1px dashed var(--muted);
  border-radius:99px;
  font-size:11px;font-weight:500;
  color:var(--muted);cursor:pointer;
  transition:all .12s;
  font-family:inherit;
}
.biens-empty-clear-all:hover{
  color:var(--text);border-color:var(--text);border-style:solid;
}

/* ═══════════════════════════════════════════════
   v398 — Mapbox biens : pins + popup + légende Margot 2.0
   ═══════════════════════════════════════════════ */
/* Pin : bubble prix + tip triangulaire */
.donna-mappin{
  display:flex;flex-direction:column;align-items:center;
  cursor:pointer;
  transition:transform .15s;
  /* Reset marker default styles */
  padding:0;margin:0;border:none;background:transparent;
}
.donna-mappin:hover{transform:scale(1.08)}
.donna-mappin .pin-bubble{
  padding:4px 9px;
  background:var(--text);color:var(--bg);
  font-family:'Plus Jakarta Sans',sans-serif;
  font-size:11px;font-weight:700;
  border-radius:99px;
  letter-spacing:-.2px;
  font-variant-numeric:tabular-nums;
  box-shadow:0 2px 8px rgba(0,0,0,.28);
  white-space:nowrap;
  line-height:1.3;
}
.donna-mappin.en-cours .pin-bubble{background:var(--accent);color:#fff}
.donna-mappin.vendu .pin-bubble{background:var(--green);color:#fff}
.donna-mappin.suspendu .pin-bubble{background:var(--muted);color:#fff}
.donna-mappin .pin-tip{
  width:0;height:0;
  border-left:5px solid transparent;
  border-right:5px solid transparent;
  border-top:6px solid currentColor;
  color:var(--accent);
  margin-top:-1px;
}
.donna-mappin.vendu .pin-tip{color:var(--green)}
.donna-mappin.suspendu .pin-tip{color:var(--muted)}
.donna-mappin[data-active="true"] .pin-bubble{
  background:var(--text);color:var(--bg);
  transform:scale(1.12);
  box-shadow:0 6px 18px rgba(0,0,0,.45);
}
.donna-mappin[data-active="true"] .pin-tip{color:var(--text)}

/* Légende bottom-left */
.donna-map-legend{
  position:absolute;bottom:14px;left:14px;
  display:flex;gap:14px;
  padding:7px 12px;
  background:color-mix(in srgb, var(--surface) 92%, transparent);
  backdrop-filter:blur(10px);
  -webkit-backdrop-filter:blur(10px);
  border:1px solid var(--border);
  border-radius:6px;
  font-family:'JetBrains Mono',ui-monospace,monospace;
  font-size:10px;font-weight:500;letter-spacing:.4px;
  text-transform:uppercase;color:var(--text-dim);
  z-index:4;
  pointer-events:none;
}
.donna-map-legend span{display:inline-flex;align-items:center;gap:5px}
.donna-map-legend .d{width:8px;height:8px;border-radius:50%;flex-shrink:0}
.donna-map-legend .d.en-cours{background:var(--accent)}
.donna-map-legend .d.vendu{background:var(--green)}
.donna-map-legend .d.suspendu{background:var(--muted)}

/* Popup Margot 2.0 */
.mapboxgl-popup-content.donna-mapbox-popup,
.mapboxgl-popup.donna-mapbox-popup .mapboxgl-popup-content{
  padding:0 !important;
  background:var(--surface) !important;
  border:1px solid var(--border) !important;
  border-radius:8px !important;
  box-shadow:0 10px 30px rgba(0,0,0,.18) !important;
  overflow:hidden !important;
  min-width:260px !important;
  max-width:300px !important;
}
.mapboxgl-popup.donna-mapbox-popup .mapboxgl-popup-tip{
  border-top-color:var(--surface) !important;
  border-bottom-color:var(--surface) !important;
}
.mapboxgl-popup-close-button{
  color:var(--muted) !important;
  font-size:18px !important;
  padding:4px 8px !important;
  line-height:1 !important;
}
.donna-map-popup{
  font-family:'Inter',sans-serif;
  padding:14px 14px 12px;
  display:flex;flex-direction:column;gap:6px;
  color:var(--text);
}
.dmp-head{
  display:flex;align-items:center;justify-content:space-between;gap:8px;
  margin-bottom:2px;
}
.dmp-mand{
  font-family:'JetBrains Mono',ui-monospace,monospace;
  font-size:10px;font-weight:500;letter-spacing:.4px;
  color:var(--muted);
}
.dmp-status{
  display:inline-flex;align-items:center;gap:5px;
  padding:2px 8px;
  font-size:10px;font-weight:600;
  border-radius:99px;
  background:var(--s2);border:1px solid var(--border);
  color:var(--text);
}
.dmp-status .dot{width:6px;height:6px;border-radius:50%;background:var(--muted)}
.dmp-status.en-cours .dot{background:var(--accent)}
.dmp-status.vendu .dot{background:var(--green)}
.dmp-addr{
  font-family:'Plus Jakarta Sans',sans-serif;
  font-size:14px;font-weight:700;
  letter-spacing:-.015em;line-height:1.3;
  color:var(--text);
}
.dmp-cp{
  font-size:11.5px;color:var(--muted);
  font-variant-numeric:tabular-nums;
}
.dmp-specs{
  display:flex;align-items:center;gap:6px;
  margin-top:4px;
  font-size:11.5px;color:var(--text-dim);
  flex-wrap:wrap;
}
.dmp-specs .sep{color:var(--muted);opacity:.5}
.dmp-dpe{
  display:inline-flex;align-items:center;justify-content:center;
  width:20px;height:18px;border-radius:3px;
  font-size:10px;font-weight:700;
  margin-left:4px;
}
.dmp-foot{
  display:flex;align-items:center;justify-content:space-between;gap:8px;
  padding-top:8px;margin-top:4px;
  border-top:1px solid var(--border);
}
.dmp-price{
  font-family:'Plus Jakarta Sans',sans-serif;
  font-size:16px;font-weight:700;
  letter-spacing:-.4px;
  color:var(--text);
  font-variant-numeric:tabular-nums;
}
.dmp-signal{
  display:inline-flex;align-items:center;gap:5px;
  padding:3px 8px;border-radius:3px;
  font-family:'JetBrains Mono',ui-monospace,monospace;
  font-size:9.5px;font-weight:600;letter-spacing:.3px;
  text-transform:uppercase;
}
.dmp-signal .dot{width:5px;height:5px;border-radius:50%}
.dmp-signal.hot{color:var(--chaud);background:rgba(255,77,109,.12);border:1px solid rgba(255,77,109,.25)}
.dmp-signal.hot .dot{background:var(--chaud)}
.dmp-signal.match{color:var(--accent);background:rgba(124,106,247,.12);border:1px solid rgba(124,106,247,.3)}
.dmp-signal.match .dot{background:var(--accent)}
.dmp-signal.sous{color:#BA7517;background:rgba(247,201,72,.14);border:1px solid rgba(247,201,72,.3)}
.dmp-signal.sous .dot{background:#BA7517}

body[data-theme="noir"] .dmp-signal.sous{color:var(--tiede)}

body[data-theme="noir"] .dmp-signal.sous .dot{background:var(--tiede)}
.dmp-cta{
  margin-top:8px;padding:8px 12px;
  background:var(--text);color:var(--surface);
  border:0;border-radius:4px;
  font-family:'Inter',sans-serif;
  font-size:12.5px;font-weight:600;
  cursor:pointer;
  transition:background .12s;
}
.dmp-cta:hover{background:var(--accent);color:#fff}

/* ═══════════════════════════════════════════════
   v400 — Skeleton shimmer pour chargement photos biens
   ═══════════════════════════════════════════════ */
.biens-vign-photo.biens-vign-skeleton{
  position:relative;
  overflow:hidden;
}
.biens-vign-photo.biens-vign-skeleton::before{
  content:'';
  position:absolute;inset:0;
  background:linear-gradient(
    90deg,
    transparent 0%,
    color-mix(in srgb, var(--text) 4%, transparent) 50%,
    transparent 100%
  );
  background-size:200% 100%;
  background-repeat:no-repeat;
  animation:biens-skeleton-shimmer 1.4s ease-in-out infinite;
  z-index:1;
  pointer-events:none;
}
/* Le glyph dessous reste visible mais un peu estompé pendant le load */
.biens-vign-photo.biens-vign-skeleton .biens-vign-glyph{
  opacity:.3;
  transition:opacity .2s;
}
/* Badges restent visibles au-dessus du shimmer */
.biens-vign-photo.biens-vign-skeleton .biens-vign-mand-tag,
.biens-vign-photo.biens-vign-skeleton .biens-vign-status,
.biens-vign-photo.biens-vign-skeleton .biens-vign-signal{
  z-index:2;
}
@keyframes biens-skeleton-shimmer{
  0%   { background-position:-100% 0; }
  100% { background-position:200% 0; }
}
/* Mode sombre : shimmer légèrement plus visible */

body[data-theme="noir"] .biens-vign-photo.biens-vign-skeleton::before{
  background:linear-gradient(
    90deg,
    transparent 0%,
    rgba(255,255,255,.05) 50%,
    transparent 100%
  );
  background-size:200% 100%;
  background-repeat:no-repeat;
}
/* Respect prefers-reduced-motion */
@media (prefers-reduced-motion: reduce){
  .biens-vign-photo.biens-vign-skeleton::before{
    animation:none;
    background:color-mix(in srgb, var(--text) 3%, transparent);
  }
}

/* v400 — Panneau liste carte : grid responsive 1 colonne, scroll fluide */
#map-split-list{
  display:flex;
  flex-direction:column;
  gap:0;
  padding:6px 0;
  align-content:start;
}
#map-split-list::-webkit-scrollbar{width:6px}
#map-split-list::-webkit-scrollbar-track{background:transparent}
#map-split-list::-webkit-scrollbar-thumb{background:var(--border);border-radius:99px}
#map-split-list::-webkit-scrollbar-thumb:hover{background:var(--muted)}
/* v406 — Cards map compactes et ergonomiques */
#map-split-list .biens-vign-card{
  margin:4px 8px !important;
  border-radius:6px;
  flex-shrink:0;
}
#map-split-list .biens-vign-photo{
  aspect-ratio:21/9;  /* plus plat → photo plus basse, plus d'infos visibles */
  max-height:110px;
  flex-shrink:0;
}
#map-split-list .biens-vign-glyph{
  width:36px;height:36px;
}
#map-split-list .biens-vign-mand-tag{
  font-size:9.5px;
  padding:2px 6px;
  top:6px;left:6px;
}
#map-split-list .biens-vign-status{
  font-size:9.5px;
  padding:2px 7px 2px 6px;
  top:6px;right:6px;
}
#map-split-list .biens-vign-signal{
  font-size:9px;
  padding:2px 6px;
  left:6px;bottom:6px;
}
#map-split-list .biens-vign-body{
  padding:8px 11px 4px;
  gap:2px;
}
#map-split-list .biens-vign-addr{
  font-size:12.5px;
  line-height:1.25;
  -webkit-line-clamp:1;
}
#map-split-list .biens-vign-cp{
  font-size:11px;
}
#map-split-list .biens-vign-specs{
  font-size:10.5px;
  margin-top:2px;
  gap:5px;
}
#map-split-list .biens-vign-specs .dpe-badge{
  width:17px;height:15px;
  font-size:9px;
}
#map-split-list .biens-vign-foot{
  padding:6px 11px 8px;
}
#map-split-list .biens-vign-price{
  font-size:14px;
}

/* Highlighted card (hover sur pin carte) */
.biens-vign-card.is-highlighted{
  border-color:var(--accent) !important;
  box-shadow:0 0 0 2px color-mix(in srgb, var(--accent) 20%, transparent);
}

/* ═══════════════════════════════════════════════
   v408 — donna Cluster Modal (rail clients)
   ═══════════════════════════════════════════════ */
.donna-cluster-overlay{
  position:fixed;inset:0;
  background:rgba(12,14,22,.45);
  backdrop-filter:blur(4px);
  -webkit-backdrop-filter:blur(4px);
  display:grid;place-items:center;
  z-index: calc(var(--z-modal) - 10) /* was 10050 */;
  animation:dcmFade .18s ease-out;
  padding:20px;
}
@keyframes dcmFade{from{opacity:0}to{opacity:1}}
.donna-cluster-dialog{
  background:var(--surface);
  border:1px solid var(--border);
  border-radius:10px;
  width:100%;max-width:640px;
  max-height:85vh;
  display:flex;flex-direction:column;
  box-shadow:0 24px 60px rgba(0,0,0,.25);
  animation:dcmSlide .22s cubic-bezier(.4,0,.2,1);
}
@keyframes dcmSlide{
  from{transform:translateY(12px) scale(.98);opacity:0}
  to{transform:translateY(0) scale(1);opacity:1}
}
.dcm-head{
  display:flex;align-items:center;justify-content:space-between;
  padding:16px 20px;
  border-bottom:1px solid var(--border);
  flex-shrink:0;
}
.dcm-head-l{display:flex;align-items:center;gap:12px}
.dcm-logo{
  width:32px;height:32px;border-radius:6px;
  display:block;object-fit:contain;
  flex-shrink:0;
}
.dcm-title{
  font-family:'Plus Jakarta Sans',sans-serif;
  font-size:15.5px;font-weight:700;
  letter-spacing:-.015em;
  color:var(--text);
  line-height:1.2;
}
.dcm-subtitle{
  font-size:11.5px;color:var(--muted);
  margin-top:2px;
  font-family:'JetBrains Mono',ui-monospace,monospace;
  letter-spacing:.3px;
}
.dcm-close{
  width:30px;height:30px;padding:0;
  background:transparent;border:1px solid var(--border);
  border-radius:6px;
  color:var(--muted);font-size:18px;cursor:pointer;
  display:grid;place-items:center;line-height:1;
  transition:all .12s;
}
.dcm-close:hover{color:var(--text);border-color:var(--text)}

.dcm-body{
  flex:1;overflow-y:auto;
  padding:16px 20px 20px;
}
.dcm-body::-webkit-scrollbar{width:6px}
.dcm-body::-webkit-scrollbar-track{background:transparent}
.dcm-body::-webkit-scrollbar-thumb{background:var(--border);border-radius:99px}

.dcm-section + .dcm-section{margin-top:20px}
.dcm-section-head{
  display:flex;align-items:center;justify-content:space-between;
  margin-bottom:8px;
  padding-bottom:6px;
  border-bottom:1px dashed var(--border);
}
.dcm-section-badge{
  display:inline-flex;align-items:center;
  padding:3px 10px;
  font-family:'JetBrains Mono',ui-monospace,monospace;
  font-size:10.5px;font-weight:600;letter-spacing:.3px;
  text-transform:uppercase;
  border-radius:4px;
}
.dcm-section-badge.hot{
  color:var(--chaud);background:rgba(255,77,109,.12);
  border:1px solid rgba(255,77,109,.28);
}
.dcm-section-badge.match{
  color:var(--accent);background:rgba(124,106,247,.12);
  border:1px solid rgba(124,106,247,.3);
}
.dcm-section-badge.sous{
  color:#BA7517;background:rgba(247,201,72,.14);
  border:1px solid rgba(247,201,72,.3);
}

body[data-theme="noir"] .dcm-section-badge.sous{color:var(--tiede)}
.dcm-section-count{
  font-size:11.5px;color:var(--muted);
  font-variant-numeric:tabular-nums;
}

.dcm-section-body{
  display:flex;flex-direction:column;gap:6px;
}
.dcm-item{
  display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:10px 12px;
  background:var(--s2);
  border:1px solid var(--border);
  border-radius:6px;
  cursor:pointer;
  transition:all .12s;
}
.dcm-item:hover{
  border-color:var(--accent);
  background:color-mix(in srgb, var(--accent) 5%, var(--surface));
  transform:translateX(2px);
}
.dcm-item-main{flex:1;min-width:0}
.dcm-item-title{
  font-size:13.5px;font-weight:600;
  color:var(--text);
  line-height:1.3;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.dcm-item-sub{
  font-size:11.5px;color:var(--text-dim);
  margin-top:2px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.dcm-item-btn{
  flex-shrink:0;
  padding:5px 11px;
  background:transparent;
  border:1px solid var(--border);
  border-radius:4px;
  font-family:'Inter',sans-serif;
  font-size:11.5px;font-weight:500;
  color:var(--text-dim);
  cursor:pointer;
  transition:all .12s;
}
.dcm-item:hover .dcm-item-btn{
  border-color:var(--accent);color:var(--accent);
}

/* Mobile */
@media(max-width:600px){
  .donna-cluster-overlay{padding:0;align-items:flex-end}
  .donna-cluster-dialog{
    max-width:100%;max-height:92vh;
    border-radius:16px 16px 0 0;
    border-bottom:0;
  }
  .dcm-head{padding:14px 16px}
  .dcm-body{padding:12px 16px 20px}
  .dcm-item-btn{display:none}
  .dcm-item-title{font-size:13px}
}

/* ═══════════════════════════════════════════════════════════════════
   v2.1.x — Section Invitations en attente (dashboard-v2)
   ─────────────────────────────────────────────────────────────────── */

/* [#63] Module biens dashboard — responsive 3/2/1 colonnes */
.db-biens-grid { grid-template-columns: repeat(3, minmax(0, 1fr)) !important; }
@media (max-width: 900px) {
  .db-biens-grid { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }
}
@media (max-width: 540px) {
  .db-biens-grid { grid-template-columns: 1fr !important; }
}

/* ════════════════════════════════════════════════════════════════════
   [v855] Modules dashboard Margot — 4 modules + KPI variante C
   - .km-hero (KPI Hero CA YTD massif + grid 2x2)
   - .bp-card.bp-pipe (Pipeline funnel 6 étapes)
   - .bp-card.bp-heat (HeatMatch territoire 20x10)
   - .bp-card.bp-today (Today timeline)
   Scopés sous #db-v2-root pour ne pas leak sur d'autres pages.
   ════════════════════════════════════════════════════════════════════ */

/* ─── Tokens additionnels Margot (alignés sur ceux de donna) ─── */

/* ═══ KPI Hero variante C ═══ */

/* [v880] Mode noir : Margot 2.0 utilise --text:#f2f3f7 (blanc anti-fatigue
   bleuté) pour adoucir la lecture sur les pages. Mais pour le hero massif
   inversé qui doit "claquer" comme block phare sur fond #000, on force
   le blanc pur #fff pour un contraste maximal. Le sub-text inversé en
   var(--surface) = #0a0a0c reste cohérent. */

@keyframes dbv2KmLive{
  0%{ box-shadow: 0 0 0 0 color-mix(in srgb, var(--green) 60%, transparent); }
  100%{ box-shadow: 0 0 0 8px transparent; }
}

/* Grid 2×2 KPI secondaires */

/* Mobile : KPI hero stack vertical */
/* ═══ bp-card commun (Pipeline / HeatMatch / Today) ═══ */

/* ═══ Pipeline funnel ═══ */

/* ═══ HeatMatch — Mini-carte Paris [v865] ═══ */
/* Conteneur de la carte : ratio approx Paris (largeur:hauteur ≈ 5:4) */

/* Chaque arrondissement : carré de ~14% de la largeur, position absolute,
   centré sur ses coordonnées x/y en %. Affiche le numéro + count. */

/* Niveaux de chaleur (par count relatif au max) */

/* ─── [v866] Tooltip Margot custom au survol des arrondissements ───
   Apparition instantanée (50ms), positionné au-dessus du carré par défaut,
   en dessous pour les arrs en haut de carte (.bp-arr-tip-bottom) afin
   d'éviter le débordement vers le haut. */

/* Variante par défaut : tooltip au-dessus du carré, triangle pointer dessous */

/* Variante bottom : tooltip en dessous du carré, triangle pointer dessus */

/* Activation au hover (et focus pour l'accessibilité clavier) */

/* Bloc d'explications sous la carte */

/* Footer : légende + résumé top arrondissements */

/* ═══ Today timeline ═══ */

/* ─── Mobile : compact ─── */
/* [v856] HeatMatch empty state — pas de données géo */

/* ════════════════════════════════════════════════════════════════════
   [v857] Cohérence typo eyebrow Margot sur tous les modules existants +
   styles section invitations dans bp-today + fix HeatMatch zones.
   ════════════════════════════════════════════════════════════════════ */

/* (1) Tous les .dbv2-card-title (sauf bp-card qui ont déjà bp-eyebrow) :
   appliquer la même typo mono uppercase letter-spaced que les modules Margot.
   Le titre actuel est en font-display gras 14-16px → on le conserve mais on
   ajoute un bp-eyebrow style avant pour cohérence visuelle. Ici on aligne
   simplement la baseline en convertissant les titres existants en eyebrow. */

/* Badge à côté du titre (ex: "3 RDV") : align */

/* Sub-title (date) plus discret */

/* (2) Section invitations dans bp-today */

/* (3) Footer bp-today : Prochain créneau + 2 boutons */

/* (4) [v865] Ancien CSS .bp-heat-zone retiré (concept zones flottantes
   abandonné au profit de la mini-carte Paris géographique). */

/* ════════════════════════════════════════════════════════════════════
   [v863] Toggle Conso/Agence + bouton Paramétrer dans le KPI Hero CA YTD.
   Le hero a fond noir (var(--text)) — les éléments doivent contraster
   sur fond sombre.
   ════════════════════════════════════════════════════════════════════ */

/* Toggle Consultant / Agence */

/* Bouton ⚙ Paramétrer */

/* Ligne en dessous : label + chiffres (ce qui était dans .top avant) */

/* Mobile : tasser le toggle pour rester lisible */
/* ════════════════════════════════════════════════════════════════════
   [v867] Vue tableau HeatMatch + popup drill-down par CP
   - Toggle Carte/Tableau réutilise le pattern .bp-tabs existant
   - Tableau Margot : eyebrow mono uppercase pour th, hover row, num tabular
   - Popup drill-down : pattern Margot 2.0 (surface, border, no accent violet)
   ════════════════════════════════════════════════════════════════════ */

/* ─── Vue tableau ─── */

/* ─── Popup drill-down ─── */

.dbv2-heat-dd-modal{
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 10px;
  width: 480px;
  max-width: 95vw;
  max-height: 80vh;
  display: flex;
  flex-direction: column;
  box-shadow: 0 12px 40px rgba(0,0,0,.18);
  overflow: hidden;
}
.dbv2-heat-dd-head{
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  padding: 18px 20px 4px;
}
.dbv2-heat-dd-title{ flex: 1; min-width: 0; }
.dbv2-heat-dd-title .cp{
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: 1px;
  text-transform: uppercase;
  color: var(--text-dim);
  line-height: 1;
  margin-bottom: 4px;
}
.dbv2-heat-dd-title .name{
  font-family: 'Plus Jakarta Sans', -apple-system, sans-serif;
  font-size: 16px;
  font-weight: 700;
  letter-spacing: -0.3px;
  color: var(--text);
  line-height: 1.2;
}
.dbv2-heat-dd-close{
  background: transparent;
  border: 1px solid var(--border);
  border-radius: 6px;
  color: var(--muted);
  width: 28px;
  height: 28px;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 0;
  flex-shrink: 0;
  transition: all .12s;
}
.dbv2-heat-dd-close:hover{
  background: var(--s2);
  color: var(--text);
}
.dbv2-heat-dd-sub{
  padding: 2px 20px 12px;
  font-size: 11.5px;
  color: var(--muted);
  border-bottom: 1px solid var(--border);
}
.dbv2-heat-dd-body{
  flex: 1;
  overflow-y: auto;
  padding: 4px 0;
}
.dbv2-heat-dd-section{
  padding: 12px 20px 4px;
}
.dbv2-heat-dd-section + .dbv2-heat-dd-section{
  border-top: 1px solid var(--border);
  margin-top: 4px;
  padding-top: 14px;
}
.dbv2-heat-dd-section-hdr{
  font-family: 'JetBrains Mono', ui-monospace, monospace;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 1px;
  text-transform: uppercase;
  color: var(--text-dim);
  display: flex;
  align-items: center;
  gap: 6px;
  margin-bottom: 8px;
}
.dbv2-heat-dd-item{
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 9px 10px;
  border-radius: 6px;
  cursor: pointer;
  transition: background .1s;
}
.dbv2-heat-dd-item:hover{
  background: var(--s2);
}
.dbv2-heat-dd-item-main{ flex: 1; min-width: 0; }
.dbv2-heat-dd-item .ttl{
  font-size: 13px;
  font-weight: 500;
  color: var(--text);
  line-height: 1.3;
  display: flex;
  align-items: center;
  gap: 6px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.dbv2-heat-dd-item .ttl .dot{
  width: 6px;
  height: 6px;
  border-radius: 50%;
  flex-shrink: 0;
}
.dbv2-heat-dd-item .ttl .dot.chaud{ background: var(--chaud); }
.dbv2-heat-dd-item .ttl .dot.tiede{ background: var(--tiede); }
.dbv2-heat-dd-item .ttl .dot.froid{ background: var(--froid); }
.dbv2-heat-dd-item .meta{
  font-size: 11px;
  color: var(--muted);
  margin-top: 2px;
}
.dbv2-heat-dd-arr{
  flex-shrink: 0;
  color: var(--muted);
  transition: transform .12s, color .12s;
}
.dbv2-heat-dd-item:hover .dbv2-heat-dd-arr{
  color: var(--accent);
  transform: translateX(2px);
}
.dbv2-heat-dd-more{
  font-size: 11px;
  color: var(--muted);
  font-style: italic;
  padding: 6px 10px 4px;
}
.dbv2-heat-dd-empty{
  padding: 28px 20px;
  text-align: center;
  font-size: 12.5px;
  color: var(--muted);
}

/* Mobile : popup full-width avec marges modérées */
@media (max-width: 600px){
  .dbv2-heat-dd-modal{
    width: 92vw;
    max-height: 86vh;
  }

  /* Cacher la colonne % en mobile pour tasser */

}

/* ════════════════════════════════════════════════════════════════════
   [v876] Module Brief matin · donna — Design Margot
   Markup et tokens portés depuis le handoff Margot (donna__8_).
   Préfixe .bf- (brief) pour éviter conflits avec autres modules .bp-*.
   Tous les sélecteurs scopés sous #db-v2-root + .dbv2-card class garde
   pour cohérence avec le système de modules dashboard.
   ════════════════════════════════════════════════════════════════════ */

/* ─── Head : avatar pulse + label + meta ─── */

@keyframes bf-led{ 0%, 100% { opacity: 1; } 50% { opacity: .35; } }

/* ─── Body : lede + signature ─── */
/* [v880] Padding réduit pour compactage */

/* ─── Actions / Bullets numérotés ─── */
/* [v880] Plus tendu : margin-top 18→12, gap 6→4, padding 13→9 */

/* ─── Footer : info gauche + boutons droite ─── */
/* [v880] Compact : padding 12→10 */

/* ─── Empty state ─── */

/* ─── Mobile ─── */
/* ════════════════════════════════════════════════════════════════════
   [v887] Brief module fignolages : popup picker multi-targets +
   toast undo planAll + tick vert sur bullets déjà planifiés
   ════════════════════════════════════════════════════════════════════ */

/* ─── Tick vert sur bullets déjà planifiés ─── */

/* ─── Popup picker (multi-targets) ─── */
.bf-picker-overlay{
  position: fixed;
  inset: 0;
  z-index: 9999;
  background: color-mix(in srgb, #000 50%, transparent);
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 16px;
  opacity: 0;
  transition: opacity .14s ease;
}
.bf-picker-overlay.open{ opacity: 1; }

.bf-picker-modal{
  background: var(--surface, #fff);
  color: var(--text, #14161f);
  border: 1px solid var(--border, #cdd2dc);
  border-radius: 10px;
  width: 100%;
  max-width: 380px;
  box-shadow: 0 20px 60px color-mix(in srgb, #000 30%, transparent);
  overflow: hidden;
  transform: translateY(8px) scale(.98);
  transition: transform .18s ease;
}
.bf-picker-overlay.open .bf-picker-modal{
  transform: translateY(0) scale(1);
}

.bf-picker-head{
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 13px 18px;
  border-bottom: 1px solid var(--border, #cdd2dc);
}
.bf-picker-title{
  font-family: 'Plus Jakarta Sans', -apple-system, sans-serif;
  font-size: 14px;
  font-weight: 700;
  color: var(--text);
  letter-spacing: -0.2px;
}
.bf-picker-close{
  background: transparent;
  border: none;
  color: var(--muted);
  font-size: 22px;
  line-height: 1;
  width: 24px; height: 24px;
  cursor: pointer;
  padding: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 4px;
  transition: background .12s, color .12s;
}
.bf-picker-close:hover{
  background: var(--s2);
  color: var(--text);
}

.bf-picker-body{
  display: flex;
  flex-direction: column;
  gap: 4px;
  padding: 8px;
  max-height: 60vh;
  overflow-y: auto;
}
.bf-picker-item{
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 11px 13px;
  background: transparent;
  border: 1px solid transparent;
  border-radius: 6px;
  cursor: pointer;
  text-align: left;
  width: 100%;
  font: inherit;
  color: inherit;
  transition: background .12s, border-color .12s;
}
.bf-picker-item:hover{
  background: var(--s2);
  border-color: var(--border);
}
.bf-picker-item-info{
  flex: 1;
  min-width: 0;
}
.bf-picker-item-name{
  font-family: 'Plus Jakarta Sans', -apple-system, sans-serif;
  font-size: 13.5px;
  font-weight: 600;
  color: var(--text);
  letter-spacing: -0.1px;
}
.bf-picker-item-meta{
  font-family: var(--bp-mono, 'JetBrains Mono', monospace);
  font-size: 9.5px;
  font-weight: 600;
  letter-spacing: 0.6px;
  text-transform: uppercase;
  color: var(--muted);
  margin-top: 2px;
}
.bf-picker-arr{
  color: var(--muted);
  flex-shrink: 0;
  transition: transform .12s, color .12s;
}
.bf-picker-item:hover .bf-picker-arr{
  color: var(--accent);
  transform: translateX(2px);
}

/* ─── Toast undo planAll ─── */
.bf-undo-toast{
  position: fixed;
  bottom: 24px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 10000;
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 11px 14px 11px 16px;
  background: var(--text, #14161f);
  color: var(--surface, #fff);
  border-radius: 8px;
  box-shadow: 0 10px 40px color-mix(in srgb, #000 35%, transparent);
  font-family: 'Inter', -apple-system, sans-serif;
  font-size: 13px;
  font-weight: 500;
  max-width: calc(100vw - 32px);
  animation: bfUndoSlideIn .22s ease both;
}
@keyframes bfUndoSlideIn {
  from { opacity: 0; transform: translateX(-50%) translateY(8px); }
  to   { opacity: 1; transform: translateX(-50%) translateY(0); }
}
.bf-undo-msg{
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.bf-undo-btn{
  background: transparent;
  border: 1px solid color-mix(in srgb, var(--surface) 30%, transparent);
  color: var(--surface);
  padding: 5px 11px;
  border-radius: 5px;
  font: inherit;
  font-size: 12px;
  font-weight: 600;
  cursor: pointer;
  transition: background .12s, border-color .12s;
}
.bf-undo-btn:hover{
  background: color-mix(in srgb, var(--surface) 12%, transparent);
  border-color: color-mix(in srgb, var(--surface) 50%, transparent);
}
.bf-undo-timer{
  font-family: var(--bp-mono, 'JetBrains Mono', monospace);
  font-size: 11px;
  font-weight: 700;
  color: color-mix(in srgb, var(--surface) 65%, transparent);
  width: 16px;
  text-align: center;
  font-variant-numeric: tabular-nums;
}

/* Mobile : toast plus tendu */
@media (max-width: 600px){
  .bf-undo-toast{ bottom: 16px; padding: 10px 12px; font-size: 12.5px; }
  .bf-picker-modal{ max-width: calc(100vw - 32px); }
}

/* ═════════════════════════════════════════════════════════════════════
   [v937] Anthony : lignes du quadrillage agenda plus discrètes.
   Sur les vues semaine/jour : borders entre jours + entre heures plus claires.
   ═════════════════════════════════════════════════════════════════════ */

/* Couleur plus claire pour le quadrillage (60% plus clair que --border) */

/* Borders verticales entre jours (semaine, jour, 3 jours) */

/* Borders horizontales entre heures */

/* hline est background, pas border-top → on a déjà couvert au-dessus */

/* Borders du gutter (colonne des heures) */

/* Vue mois : borders entre jours */

/* ═════════════════════════════════════════════════════════════════════
   [v937] Anthony : agenda full-screen avec scroll interne uniquement.
   Désactive le scroll vertical global de .shellv2-main quand la page agenda
   est active. La grille .week-wrap / .cal-grid gère son propre scroll.
   ═════════════════════════════════════════════════════════════════════ */
body.page-agenda-active .shellv2-main{
  overflow: hidden !important;
  padding-bottom: 0 !important;
}

/* Le toolbar reste fixe en haut */

/* La grille semaine/jour/mois scroll en interne */

/* ═════════════════════════════════════════════════════════════════════
   [v937] Anthony : suppression Plus Jakarta Sans dans le scope agenda.
   Police standard du CRM = 'Inter', sans-serif partout sur la page agenda.
   ═════════════════════════════════════════════════════════════════════ */

/* ═══════════════════════════════════════════════════════════════════════
   [v942] AGENDA · Vue Liste — refonte Google Cal style (Margot v14)
   ────────────────────────────────────────────────────────────────────────
   Anthony : "tu reprends ce zip de margot et tu appliques UNIQUEMENT le
   nouveau style pour la vue liste, sans casser ce qu'on a fait jusqu'à
   maintenant, c'est purement UI" (donna__14_.zip / handoff-calendar-v4).
   
   Caractéristiques :
   - Date à gauche : grand chiffre + jour abrégé MAJ
   - Aujourd'hui : cercle violet (accent) autour du numéro
   - Events : lignes plates Google Cal (pastille ronde + heure + titre — lieu)
   - Plus de card, plus de border, plus de badge type rectangulaire
   - Markup donna déjà compatible (.list-day, .list-dh, .le, .dh-num, .dh-dow)
   - .le-bar et .le-type masqués via display:none (remplacés par pastille ::before)
   ═══════════════════════════════════════════════════════════════════════ */

/* Wrapper liste — padding latéral cohérent shellv2-main */

/* Jour : grid date à gauche (180px) + events à droite (1fr) */

/* Date header (.list-dh) — chiffre grand + jour court tabulaire */

/* Aujourd'hui : cercle violet (accent) autour du chiffre */

/* Events container */

/* Event ligne Google Cal style — grid 10px (pastille) + 130px (heure) + 1fr (nom+lieu)
   Override total du style legacy .le. Le markup donna rend toujours .le-bar et .le-type
   mais on les masque (display:none) — remplacés par pastille via ::before. */

/* Cache .le-bar et .le-type — remplacés par pastille ronde ::before */

/* Pastille colorée ronde (10x10px) — utilise var(--c) du style inline */

/* Heure : "11:00 à 12:00" inline, tabulaire */

/* Main : titre + lieu en baseline alignés sur une ligne, "— " séparateur */

/* Now line (optionnel — injectable via <div class="now-line"> entre events) */

/* Mobile : date passe au-dessus des events (stack) */
@media (max-width: 768px){
  #page-agenda .list-day{
    grid-template-columns: 1fr !important;
    gap: 8px;
  }
  #page-agenda .list-dh{
    padding-left: 4px;
  }
  #page-agenda .le{
    grid-template-columns: 12px 100px 1fr !important;
    gap: 8px !important;
  }
  #page-agenda .agenda-list-wrap.list{
    padding: 0 14px 14px;
  }
}

/* ═══════════════════════════════════════════════════════════════════════
   [v945] AGENDA · Vue Liste — 3 fixes Anthony
   ────────────────────────────────────────────────────────────────────────
   (1) Date du jour qui descend avec le scroll → désactive position:sticky
       du .list-dh (style.css ligne 2337 imposait sticky top:14px).
   (2) Cercle today = OVALE → vrai rond parfait 32×32, couleur noire/blanche
       (var(--text)) au lieu de violet (var(--accent)).
   (3) Fond Liste = même blanc que les autres vues (var(--surface)).
   ═══════════════════════════════════════════════════════════════════════ */

/* (1) FIX SCROLL : retire le position:sticky qui faisait coller la date */

/* (2) FIX OVAL : vrai rond noir/blanc selon thème. Override mon ::before v942 */

/* (3) FOND BLANC : le wrap liste sur fond blanc comme les cellules des autres vues */

/* ═══════════════════════════════════════════════════════════════════════
   [v946] AGENDA · 2 fixes Anthony
   ────────────────────────────────────────────────────────────────────────
   (1) Vue Semaine : badge today "11" rond 28×28px qui débordait de la
       cellule .wh-day et chevauchait les ribbons all-day en dessous.
       → Réduit le cercle à 24px + padding-bottom wh-day 22→30 + top du
         ribbon 8→12.
   (2) Vue Mois : la grille était hidden si trop haute → on autorise le
       scroll interne pour voir le bas du mois (et les angles du cadre).
   ═══════════════════════════════════════════════════════════════════════ */

/* (1) Badge today Vue Semaine — réduit + descendu */

/* (2) Vue Mois desktop : scroll interne autorisé */
@media (min-width: 701px){
  #page-agenda .mois-wrap{
    overflow-y: auto !important;
    overflow-x: hidden !important;
  }
  #page-agenda .mois-main{
    overflow-y: auto !important;
    overflow-x: hidden !important;
    min-height: 0;
  }
  /* Garde la hauteur calc mais autorise dépassement scrollable */
  #page-agenda .mois-main .cal-grid{
    min-height: 100%;
  }
  /* Side panel reste scrollable indépendamment */
  #page-agenda .mois-wrap .side{
    overflow-y: auto;
    max-height: 100%;
  }
}

/* ═══════════════════════════════════════════════════════════════════════
   [v947] AGENDA · 3 fixes Anthony
   ────────────────────────────────────────────────────────────────────────
   (1) Vue Semaine : .week-head était FORCÉ à height:56px exact (ligne 2913),
       le cercle "11" + padding-bottom débordaient sur la zone gris all-day.
       → Force la .week-head à 76px (assez pour cercle + padding).
       → Allday-row top recalé à 76 (au lieu de 56).
   (2) Cadre calendrier : gagne ~20px en bas pour ne plus cropper (mois et
       semaine). Marge bottom du calc 24 → 4px.
   (3) Vue Liste cercle today "11" : trop serré → chiffre réduit + rond plus
       grand + fond plein (noir/blanc selon thème) avec contraste.
   ═══════════════════════════════════════════════════════════════════════ */

/* (1) Vue Semaine : agrandir .week-head pour absorber le cercle + padding */
@media (min-width: 701px){
  #page-agenda .week-head{
    min-height: 76px !important;
    height: 76px !important;
  }
  #page-agenda .allday-row{
    top: 76px !important;
  }
}

/* (2) Cadre +20px : marge bottom du calc retirée */
@media (min-width: 701px){
  #page-agenda .mois-wrap{
    /* Avant : calc(100vh - 80px - 108px - 24px). On gagne 20px en bas. */
    height: calc(100vh - 80px - var(--agenda-top-h, 108px) - 4px) !important;
  }
  #page-agenda .agenda-week-wrap{
    /* Idem pour la vue semaine si elle a une max-height contraignante */
    max-height: calc(100vh - 80px - var(--agenda-top-h, 108px) - 4px) !important;
  }
}

/* (3) Vue Liste — cercle today plus large + fond noir/blanc plein */

/* ═══════════════════════════════════════════════════════════════════════
   [v948] AGENDA · 3 fixes Anthony
   ────────────────────────────────────────────────────────────────────────
   (1) Zone grise allday-row trop épaisse → la réduire à la hauteur des
       ribbons + 1-2px de marge top/bottom (au lieu de 34px de hauteur).
   (2) Calendrier : encore du gap en bas → réduire --agenda-top-h à 80px
       (la toolbar est désormais compacte/transparente, plus besoin de
       réserver 108px).
   (3) Vue Mois : largeur < toolbar à cause du side-panel 340px à droite.
       → Masquer le side-panel (grille mois plein largeur).
   ═══════════════════════════════════════════════════════════════════════ */

/* (1) Zone grise allday-row compacte : juste 18px ribbon + 2x2px margin */

/* (2) Calendrier plus haut : --agenda-top-h passe de 108 → 80
   Mes modifs v937+ ont rendu la toolbar compacte (transparent, pas de carte),
   donc 108px de réserve n'est plus justifié. Gain ~28px de hauteur. */
:root{
  --agenda-top-h: 80px;
}

/* (3) Vue Mois pleine largeur : masque le side-panel "11 Lundi 11 mai 2026"
   pour que la grille mois prenne 100% comme la toolbar.
   [v975] NEUTRALISÉ : ces règles legacy (v950 époque "grille pleine largeur")
   battaient le nouveau layout v972/v973 qui utilise grid 1fr 360px dynamique.
   Avec ces règles :
   - grid-template-columns:1fr → mon inline `1fr 360px` était overridé (en
     pratique inline !important devrait gagner mais selon contexte non).
   - display:none sur .side empêchait le panel de s'afficher du tout, et mon
     JS dans _agOnMonthDayClick le forçait en display:flex → conflit visuel.
   Le nouveau comportement v972+ : panel = cellule grid normale, géré par
   _agRenderMonthView (grid-template-columns dynamique). */

