.t-client{font-size:10px;color:var(--g400);margin-top:1px}
.t-projet-tag{display:inline-block;font-size:9px;font-weight:600;color:var(--projt);background:var(--projp);padding:2px 7px;border-radius:8px;margin-left:4px}
.t-tag{font-size:9px;font-weight:700;padding:2px 8px;border-radius:10px;white-space:nowrap;flex-shrink:0;letter-spacing:.2px}
.t-tag.livraison{background:var(--deadp);color:var(--deadt)}
.t-tag.relance{background:#fef3c7;color:#b45309}
.t-tag.contenu{background:#faf5ff;color:#7e22ce}
.t-tag.rdv{background:var(--rdvp);color:var(--rdvt)}
.t-tag.perso{background:var(--g100);color:var(--g600)}*{box-sizing:border-box;margin:0;padding:0}
:root{
  --ac:#00c2a9;--ac2:#00a891;--acp:#e8faf8;
  --bk:#111;--wh:#fff;
  --g50:#f7f7f5;--g100:#f0f0ed;--g200:#e2e2de;--g300:#cdcdc7;--g400:#9a9a92;--g500:#6e6e66;--g600:#4a4a44;
  --rad:14px;--sb:220px;
  --rdv:#3de4e8;--rdvp:#e6fbfc;--rdvt:#0e7490;
  --dead:#f59e0b;--deadp:#fff8e6;--deadt:#92400e;
  --proj:#a855f7;--projp:#f3e8ff;--projt:#7e22ce;
  --amber:#f59e0b;

  /* ── PALETTE UNIFIÉE PAR TYPE DE PROJET ──
     Utilisée partout : Kanban (bordure + tags), Timeline (barres), badges, etc. */
  --t-web:#3b82f6;        --t-web-l:#dbeafe;        --t-web-d:#1e40af;
  --t-graphisme:#a855f7;  --t-graphisme-l:#f3e8ff;  --t-graphisme-d:#6b21a8;
  --t-marketing:#f97316;  --t-marketing-l:#ffedd5;  --t-marketing-d:#9a3412;
  --t-ads:#eab308;        --t-ads-l:#fef9c3;        --t-ads-d:#854d0e;
  --t-rs:#ec4899;         --t-rs-l:#fce7f3;         --t-rs-d:#9d174d;
  --t-infolettre:#10b981; --t-infolettre-l:#d1fae5; --t-infolettre-d:#065f46;
  --t-seo:#0ea5e9;        --t-seo-l:#e0f2fe;        --t-seo-d:#0369a1;
  --t-maintenance:#64748b;--t-maintenance-l:#f1f5f9;--t-maintenance-d:#334155;
  --t-default:#00c2a9;    --t-default-l:#e8faf8;    --t-default-d:#007a6b;
}

/* ── MODE CLAIR : amélioration lisibilité ─────── */
[data-theme="light"]{
  --g400:#5e5e58;
  --g300:#b8b8b2;
}
[data-theme="light"] .t-lbl{color:#4a4a44}
[data-theme="light"] .t-sub{color:#5e5e58}
[data-theme="light"] .t-client{color:#5e5e58}
[data-theme="light"] .dp-client{color:#5e5e58}
[data-theme="light"] .dp-prog-pct{color:#4a4a44}
[data-theme="light"] .dp-days.ok{color:#4a4a44}
[data-theme="light"] .dc-client{color:#5e5e58}
[data-theme="light"] .ds-client{color:#5e5e58}
[data-theme="light"] .task-group-count{color:#5e5e58}
[data-theme="light"] .proj-th{color:#4a4a44}
[data-theme="light"] .pubs-client-count{color:#5e5e58}
[data-theme="light"] .sync-st{color:#5e5e58}
[data-theme="light"] .tb-conn-state{color:#5e5e58}
[data-theme="light"] .kb-filter-lbl-sel{color:#4a4a44}
[data-theme="light"] .kpi-sub{color:#5e5e58}
[data-theme="light"] .kpi-label{color:#4a4a44}
[data-theme="light"] .t-date{color:#5e5e58}
html,body{height:100%;font-family:'Poppins',sans-serif;background:var(--g50);color:var(--bk)}
.app{display:grid;grid-template-columns:var(--sb) 1fr;height:100vh;overflow:hidden}
.sb{background:#111;display:flex;flex-direction:column;height:100vh}
.sb-logo{padding:22px 18px 16px;border-bottom:1px solid #1e1e1e;display:flex;align-items:center;gap:10px}
.sb-ico{width:34px;height:34px;background:var(--ac);border-radius:9px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.sb-ico svg{width:18px;height:18px}
.sb-name{font-size:15px;font-weight:700;color:#fff;letter-spacing:-.2px}
.sb-crm{font-size:9px;color:#555;font-weight:600;letter-spacing:.5px;text-transform:uppercase}
.sb-nav{flex:1;padding:14px 10px;overflow-y:auto}
.sb-sec{font-size:9px;font-weight:700;color:#333;text-transform:uppercase;letter-spacing:.9px;padding:10px 10px 5px}
.sb-it{display:flex;align-items:center;gap:10px;padding:8px 12px;border-radius:8px;cursor:pointer;margin-bottom:1px;transition:all .15s;border-left:3px solid transparent}
.sb-it:hover{background:#1c1c1c}
.sb-it:hover .sbl{color:#ccc}
.sb-it:hover svg{color:#888}
.sb-it.on{background:#163532;border-left-color:var(--ac)}
.sb-it.on .sbl{color:var(--ac)}
.sb-it.on svg{color:var(--ac)}
.sb-it svg{width:15px;height:15px;color:#555;flex-shrink:0}
.sbl{font-size:12px;font-weight:500;color:#666}
.sb-badge{margin-left:auto;font-size:10px;font-weight:700;padding:1px 7px;border-radius:20px}
.sb-badge.teal{background:#1a3330;color:var(--ac)}
.sb-badge.red{background:#2d1515;color:#f87171}
.sb-badge.amber{background:#2d2010;color:#fbbf24}
.sb-foot{padding:12px 10px;border-top:1px solid #1e1e1e}
.sb-user{display:flex;align-items:center;gap:9px;padding:5px 8px;border-radius:8px}
.sb-av{width:30px;height:30px;background:var(--ac);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;color:#fff;flex-shrink:0}
.sb-un{font-size:11px;font-weight:600;color:#aaa;line-height:1.2}
.sb-ue{font-size:9px;color:#555}
.main{display:flex;flex-direction:column;height:100vh;overflow:hidden}
.topbar{background:var(--wh);border-bottom:1.5px solid var(--g200);padding:13px 24px;display:flex;align-items:center;gap:10px;flex-shrink:0;flex-wrap:wrap}
.page-h{font-size:20px;font-weight:800;color:var(--bk);letter-spacing:-.4px;flex:1}
.today-badge{background:var(--acp);color:var(--ac2);font-size:11px;font-weight:700;padding:5px 12px;border-radius:20px;white-space:nowrap}
.sync-st{font-size:10px;font-weight:600;color:var(--g400);display:flex;align-items:center;gap:5px;white-space:nowrap}
.sync-dot{width:7px;height:7px;border-radius:50%;background:var(--g300);flex-shrink:0}
.sync-dot.ok{background:#16a34a}
.sync-dot.loading{background:#f59e0b;animation:pulse 1s ease-in-out infinite}
.sync-dot.err{background:#e24b4a}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.3}}
.btn-gcal{background:transparent;color:var(--g500);font-size:11px;font-weight:600;padding:7px 4px;border-radius:9px;border:none;font-family:'Poppins',sans-serif;cursor:pointer;display:flex;align-items:center;gap:6px;white-space:nowrap}
.gcal-dot{width:7px;height:7px;border-radius:50%;background:var(--g300);flex-shrink:0}
.gcal-dot.connected{background:#16a34a}
.btn-tb{font-size:12px;font-weight:700;padding:9px 16px;border-radius:10px;border:none;font-family:'Poppins',sans-serif;cursor:pointer;display:flex;align-items:center;gap:6px;white-space:nowrap;transition:all .15s}
.btn-tb-teal{background:var(--ac);color:#fff}
.btn-tb-teal:hover{background:var(--ac2)}
.btn-tb-dark{background:var(--bk);color:#fff}
.btn-tb-dark:hover{background:#222}
.btn-tb-light{background:var(--wh);color:var(--bk);border:1.5px solid var(--g200)}
.btn-tb-light:hover{border-color:var(--g400)}
.btn-add{background:var(--ac);color:#fff;font-size:11px;font-weight:700;padding:8px 14px;border-radius:9px;border:none;font-family:'Poppins',sans-serif;cursor:pointer;display:flex;align-items:center;gap:5px;white-space:nowrap}
.btn-add:hover{background:var(--ac2);color:#fff}
.btn-add svg{width:13px;height:13px}
.btn-sync-week,.btn-today{background:var(--g100);color:var(--g600);font-size:11px;font-weight:600;padding:7px 12px;border-radius:9px;border:1.5px solid var(--g200);font-family:'Poppins',sans-serif;cursor:pointer;display:flex;align-items:center;gap:5px;white-space:nowrap}
.btn-sync-week:hover,.btn-today:hover{border-color:var(--ac);color:var(--ac)}
.content{flex:1;overflow-y:auto;padding:20px 24px}
.view{display:none}.view.on{display:block}
.kpi-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;margin-bottom:18px}
@media(max-width:1280px){.kpi-grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:780px){.kpi-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:520px){.kpi-grid{grid-template-columns:1fr}}
/* Feuille de temps : garde 4 colonnes */
#temps-kpi{grid-template-columns:repeat(4,1fr)}
@media(max-width:1100px){#temps-kpi{grid-template-columns:repeat(2,1fr)}}
.t-card{background:var(--wh);border:1.5px solid var(--g200);border-radius:var(--rad);padding:16px 18px;min-height:100px;display:flex;flex-direction:column}
.t-lbl{font-size:9px;font-weight:700;color:var(--g400);text-transform:uppercase;letter-spacing:.7px;margin-bottom:8px}
.t-val{font-size:30px;font-weight:800;letter-spacing:-1.5px;line-height:1}
.t-val.teal{color:var(--ac)}
.t-val.red{color:#e24b4a}
.t-val.amber{color:var(--amber)}
.t-val.purple{color:var(--proj)}
.t-sub{font-size:11px;color:var(--g400);margin-top:5px;line-height:1.4;flex:1}
.main-grid{display:grid;grid-template-columns:1fr 320px;gap:16px}
.panel{background:var(--wh);border:1.5px solid var(--g200);border-radius:var(--rad);overflow:hidden}
.ph{padding:13px 18px;border-bottom:1.5px solid var(--g100);display:flex;align-items:center;justify-content:space-between}
.ph-title{font-size:13px;font-weight:700;color:var(--bk)}
.ph-badge{font-size:10px;font-weight:700;padding:3px 9px;border-radius:20px}
.ph-badge.teal{background:var(--acp);color:#007a6b}
.ph-badge.purple{background:var(--rdvp);color:var(--rdvt)}
.task-input-wrap{padding:10px 14px;border-bottom:1px solid var(--g100);background:var(--g50);display:flex;gap:7px;flex-wrap:wrap}
.task-input-wrap input{flex:1;min-width:160px;border:1.5px solid var(--g200);border-radius:8px;padding:7px 11px;font-size:12px;font-family:'Poppins',sans-serif;outline:none;color:var(--bk);background:var(--wh)}
.task-input-wrap input:focus{border-color:var(--ac)}
.task-input-wrap select{border:1.5px solid var(--g200);border-radius:8px;padding:7px 8px;font-size:11px;font-family:'Poppins',sans-serif;outline:none;color:var(--g600);background:var(--wh);cursor:pointer}
.btn-save{background:var(--ac);color:#fff;border:none;border-radius:8px;padding:7px 13px;font-size:11px;font-weight:700;font-family:'Poppins',sans-serif;cursor:pointer;white-space:nowrap}
.btn-save:hover{background:var(--ac2)}
/* ── TASK SECTION LABELS ─────────────────────── */
.task-sec-lbl{display:flex;align-items:center;gap:8px;padding:14px 18px 8px;font-size:10px;font-weight:700;color:var(--g500);text-transform:uppercase;letter-spacing:.7px}
.task-sec-lbl.red{color:#e24b4a}
.task-sec-lbl .task-sec-count{background:#e24b4a;color:#fff;font-size:9px;font-weight:700;padding:1px 7px;border-radius:10px;margin-left:auto}
.task-sec-lbl.today .task-sec-count{background:var(--ac);color:#fff}
.task-sec-lbl.done .task-sec-count{background:var(--g300);color:#fff}

/* ── TASK GROUP CLIENT ───────────────────────── */
.task-group-client{border-top:1px solid var(--g100);background:var(--g50)}
.task-group-client:first-of-type{border-top:none}
.task-group-name{padding:9px 16px;font-size:11px;font-weight:700;color:var(--bk);background:var(--g50);display:flex;align-items:center;gap:9px;cursor:pointer;user-select:none;transition:background .12s}
.task-group-name:hover{background:var(--g100)}
.task-group-avatar{width:26px;height:26px;border-radius:7px;background:#1e3a5f;color:#60a5fa;font-size:9px;font-weight:800;display:flex;align-items:center;justify-content:center;flex-shrink:0;letter-spacing:.5px;text-transform:uppercase;border:1px solid #2a4a7f}
.task-group-chevron{transition:transform .15s ease;color:var(--g400);flex-shrink:0;margin-left:auto}
.task-group-client.collapsed .task-group-chevron{transform:rotate(-90deg)}
.task-group-count{font-size:10px;font-weight:700;color:var(--g600);background:var(--wh);padding:2px 8px;border-radius:10px;border:1px solid var(--g200)}
.task-group-content{background:var(--wh)}
.task-group-projet{padding:5px 18px 3px 48px;font-size:9px;font-weight:700;color:var(--projt);background:var(--wh);text-transform:uppercase;letter-spacing:.5px;display:flex;align-items:center;gap:5px;opacity:.8}
.task-group-projet::before{content:'';display:inline-block;width:5px;height:5px;border-radius:50%;background:var(--projt);flex-shrink:0}
.task-group-content .task-item{background:var(--wh);padding-left:16px;border-left:3px solid transparent}
.task-group-content .task-item:hover{background:var(--acp);border-left-color:var(--ac)}

/* ── TASK CONTROLS ───────────────────────────── */
.task-controls{display:flex;gap:6px;margin-left:auto}
.task-ctrl-btn{font-size:10px;font-weight:600;padding:4px 10px;border-radius:6px;background:transparent;border:1px solid var(--g200);cursor:pointer;color:var(--g500);font-family:'Poppins',sans-serif}
.task-ctrl-btn:hover{border-color:var(--ac);color:var(--ac)}

/* ── TASK ITEM ───────────────────────────────── */
.task-item{display:flex;align-items:center;gap:10px;padding:9px 16px;border-bottom:1px solid var(--g50);transition:background .12s,border-left-color .12s;border-left:3px solid transparent;position:relative}
.task-item:last-child{border-bottom:none}
.task-item:hover{background:var(--g50);border-left-color:var(--g300)}
.task-item.done .t-text{text-decoration:line-through;color:var(--g400)}
.task-item.done{opacity:.7}
.task-item.urgent{border-left-color:#f87171!important}
.task-check{width:18px;height:18px;border-radius:5px;border:2px solid var(--g300);flex-shrink:0;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s;background:var(--wh)}
.task-check:hover{border-color:var(--ac);background:var(--acp)}
.task-check.done{background:var(--ac);border-color:var(--ac)}
.task-check.done svg{display:block}
.task-check svg{display:none;width:10px;height:10px}
.t-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px;cursor:pointer}
.t-text{font-size:12px;font-weight:500;color:var(--bk);line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0}
.t-meta{display:flex;align-items:center;gap:6px;flex-wrap:nowrap;overflow:hidden}
.t-meta-item{display:inline-flex;align-items:center;gap:3px;white-space:nowrap;font-size:10px;color:var(--g400);font-weight:500}
.t-meta-item svg{width:11px;height:11px;color:var(--g400);flex-shrink:0}
.t-meta-item.client{color:var(--g500);font-weight:600}
.t-meta-item.projet{color:var(--projt);background:var(--projp);padding:2px 7px;border-radius:8px;font-weight:600}
.t-meta-item.projet svg{color:var(--projt)}
.t-meta-item.date{color:var(--g500)}
.t-meta-item.date.urgent{color:#e24b4a;font-weight:700}

.cal-nav{display:flex;align-items:center;justify-content:space-between;padding:13px 16px;border-bottom:1.5px solid var(--g100)}
.cal-month{font-size:13px;font-weight:700;color:var(--bk);text-transform:capitalize}
.cal-arrow{background:var(--g100);border:none;border-radius:7px;width:26px;height:26px;cursor:pointer;font-size:15px;color:var(--g600);display:flex;align-items:center;justify-content:center}
.cal-arrow:hover{background:var(--g200)}
.cal-inner{padding:8px 12px 10px}
.cal-days-row{display:grid;grid-template-columns:repeat(7,1fr);margin-bottom:4px}
.cal-day-lbl{text-align:center;font-size:9px;font-weight:700;color:var(--g400);padding:3px 0;text-transform:uppercase}
.cal-cells{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}
.cal-cell{min-height:32px;border-radius:7px;padding:3px;cursor:pointer;transition:background .12s}
.cal-cell:hover{background:var(--g100)}
.cal-cell.today{background:var(--ac)}
.cal-cell.today .cal-num{color:#fff;font-weight:700}
.cal-cell.other .cal-num{color:var(--g300)}
.cal-num{font-size:11px;font-weight:500;color:var(--bk);text-align:center;line-height:1.2}
.cal-dots{display:flex;gap:2px;justify-content:center;margin-top:2px;flex-wrap:wrap}
.cal-dot{width:5px;height:5px;border-radius:50%;flex-shrink:0}
.cal-legend{display:flex;gap:12px;padding:4px 12px 10px;flex-wrap:wrap}
.leg{display:flex;align-items:center;gap:4px;font-size:9px;font-weight:600;color:var(--g500)}
.leg-dot{width:7px;height:7px;border-radius:50%}
.day-detail{padding:12px 16px}
.dd-title{font-size:10px;font-weight:700;color:var(--g400);text-transform:uppercase;letter-spacing:.5px;margin-bottom:8px}
.dd-evt{display:flex;align-items:flex-start;gap:8px;padding:5px 0;border-bottom:1px solid var(--g50)}
.dd-evt:last-child{border-bottom:none}
.dd-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;margin-top:3px}
.dd-text{font-size:11px;font-weight:500;color:var(--bk);flex:1;line-height:1.3}
.dd-time{font-size:10px;color:var(--g400);white-space:nowrap}
.proj-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.proj-card{background:var(--wh);border:1.5px solid var(--g200);border-radius:var(--rad);padding:16px;cursor:pointer;transition:all .15s}
.proj-card:hover{border-color:var(--ac);transform:translateY(-1px);box-shadow:0 4px 16px rgba(0,194,169,.1)}
.proj-top{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;margin-bottom:6px}
.proj-name{font-size:13px;font-weight:700;color:var(--bk);line-height:1.3}
.proj-st{font-size:9px;font-weight:700;padding:3px 8px;border-radius:20px;white-space:nowrap;flex-shrink:0}
.st-cours{background:var(--acp);color:#007a6b}
.st-attente{background:#fff8e6;color:#92400e}
.st-revision{background:var(--rdvp);color:var(--rdvt)}
.st-complete{background:var(--g100);color:var(--g500)}
.proj-client{font-size:11px;color:var(--g400);margin-bottom:12px}
.proj-prog-lbl{display:flex;justify-content:space-between;font-size:10px;color:var(--g500);margin-bottom:4px}
.proj-track{height:5px;background:var(--g100);border-radius:3px;overflow:hidden;margin-bottom:12px}
.proj-fill{height:100%;background:var(--ac);border-radius:3px}
.proj-footer{display:flex;align-items:center;justify-content:space-between}
.proj-dl{font-size:10px;font-weight:600;color:var(--g500)}
.proj-dl.urgent{color:#e24b4a}
.proj-budget{font-size:10px;color:var(--g400)}
.list-header{display:grid;gap:8px;padding:8px 16px;background:var(--g50);border-bottom:1.5px solid var(--g100);font-size:9px;font-weight:700;color:var(--g400);text-transform:uppercase;letter-spacing:.5px}
.cl-row{display:grid;gap:8px;align-items:center;padding:10px 16px;border-bottom:1px solid var(--g50);transition:background .12s;cursor:pointer}
.cl-row:last-child{border-bottom:none}
.cl-row:hover{background:var(--acp)}
.cl-name-wrap{display:flex;align-items:center;gap:9px}
.cl-av{width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:9px;font-weight:700;flex-shrink:0}
.cl-n{font-size:12px;font-weight:600;color:var(--bk)}
.cl-s{font-size:10px;color:var(--g400)}
.cl-date{font-size:11px;color:var(--g400)}
.open-btn{font-size:10px;font-weight:700;color:var(--ac);background:var(--acp);border:none;padding:4px 9px;border-radius:6px;cursor:pointer;font-family:'Poppins',sans-serif;display:inline-flex;align-items:center;gap:3px;text-decoration:none}
.open-btn:hover{background:var(--ac);color:#fff}
.filter-bar{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.fbtn{font-size:11px;font-weight:600;padding:5px 10px;border-radius:7px;background:var(--wh);border:1.5px solid var(--g200);cursor:pointer;color:var(--g600);font-family:'Poppins',sans-serif}
.fbtn:hover{border-color:var(--ac);color:var(--ac)}
.fbtn.on{background:var(--acp);border-color:var(--ac);color:var(--ac2)}
.fcount{font-size:11px;color:var(--g400)}
.temps-wrap{overflow-x:auto}
.temps-table{width:100%;border-collapse:collapse;min-width:900px}
.temps-th{padding:9px 10px;font-size:9px;font-weight:700;color:var(--g400);text-transform:uppercase;letter-spacing:.5px;border-bottom:2px solid var(--g200);background:var(--g50);white-space:nowrap;text-align:center}
.temps-th.left{text-align:left}
.temps-td{padding:9px 10px;font-size:11px;border-bottom:1px solid var(--g50);vertical-align:middle;text-align:center}
.temps-td.left{text-align:left}
.temps-td.dur{font-weight:700;color:var(--bk)}
.temps-tr:hover .temps-td{background:var(--acp)}
.subtotal-row td{background:var(--g50);font-weight:700;font-size:11px;border-top:1px solid var(--g200);border-bottom:2px solid var(--g200)}
.total-row td{background:var(--g100);font-weight:800;font-size:12px;border-top:2px solid var(--g300)}
.sep-row td{height:4px;background:var(--g200);padding:0}
.cat-btn{font-size:9px;font-weight:700;padding:3px 9px;border-radius:10px;cursor:pointer;border:none;font-family:'Poppins',sans-serif}
.cat-btn.rdv{background:var(--rdvp);color:var(--rdvt)}
.cat-btn.projet{background:var(--projp);color:var(--projt)}
.cat-btn.perso{background:var(--g100);color:var(--g500)}
.week-nav{display:flex;align-items:center;gap:8px}
.week-nav-btn{background:var(--g100);border:none;border-radius:8px;width:32px;height:32px;cursor:pointer;font-size:16px;color:var(--g600);display:flex;align-items:center;justify-content:center}
.week-nav-btn:hover{background:var(--g200)}
.week-lbl{font-size:14px;font-weight:700;color:var(--bk);min-width:240px;text-align:center}
.export-btn{background:var(--ac);color:#fff;font-size:11px;font-weight:700;padding:8px 14px;border-radius:9px;border:none;font-family:'Poppins',sans-serif;cursor:pointer;display:flex;align-items:center;gap:5px}
.export-btn:hover{background:var(--ac2)}
.status-pill{font-size:10px;font-weight:700;padding:3px 9px;border-radius:20px;white-space:nowrap}
.status-envoyee{background:#fff8e6;color:#92400e}
.status-negociation{background:var(--rdvp);color:var(--rdvt)}
.status-acceptee{background:var(--acp);color:#007a6b}
.status-refusee{background:#fee2e2;color:#991b1b}
.modal-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:1000;align-items:center;justify-content:center}
.modal-overlay.open{display:flex}
.modal{background:var(--wh);border-radius:20px;padding:28px;width:560px;max-width:calc(100vw - 40px);max-height:90vh;overflow-y:auto;box-shadow:0 24px 80px rgba(0,0,0,.2)}
.modal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}
.modal-title{font-size:16px;font-weight:800;color:var(--bk)}
.modal-close{background:var(--g100);border:none;border-radius:8px;width:30px;height:30px;cursor:pointer;font-size:16px;display:flex;align-items:center;justify-content:center;color:var(--g600)}
.modal-close:hover{background:var(--g200)}
.modal-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:20px}
.form-group{display:flex;flex-direction:column;gap:5px}
.form-group label{font-size:10px;font-weight:700;color:var(--g400);text-transform:uppercase;letter-spacing:.5px}
.form-group input,.form-group select,.form-group textarea{border:1.5px solid var(--g200);border-radius:8px;padding:8px 11px;font-size:12px;font-family:'Poppins',sans-serif;outline:none;color:var(--bk);background:var(--wh);width:100%}
.form-group input:focus,.form-group select:focus,.form-group textarea:focus{border-color:var(--ac)}
.form-group textarea{resize:vertical}
.modal-actions{display:flex;gap:8px}
/* Searchable select (recherche dans liste de clients) */
.searchable-select{position:relative;width:100%}
.ss-input{width:100%;padding:8px 11px;border:1.5px solid var(--g200);border-radius:8px;font-size:12px;font-family:'Poppins',sans-serif;outline:none;color:var(--bk);background:var(--wh)}
.ss-input:focus{border-color:var(--ac)}
.ss-input.ss-has-value{background:var(--acp);border-color:var(--ac);font-weight:600}
.ss-dropdown{position:absolute;top:calc(100% + 4px);left:0;right:0;background:var(--wh);border:1.5px solid var(--g200);border-radius:8px;max-height:240px;overflow-y:auto;z-index:1100;box-shadow:0 8px 24px rgba(0,0,0,.12)}
.ss-item{padding:8px 12px;font-size:12px;cursor:pointer;border-bottom:1px solid var(--g50);color:var(--bk)}
.ss-item:last-child{border-bottom:none}
.ss-item:hover,.ss-item.ss-active{background:var(--acp);color:var(--ac2)}
.ss-item.ss-clear{font-style:italic;color:var(--g400);font-size:11px}
.ss-empty{padding:12px;font-size:11px;color:var(--g400);text-align:center}
.ss-match{background:#fff3a8;font-weight:700;padding:0 1px;border-radius:2px}
.btn-craft{background:var(--bk);color:#fff;font-size:12px;font-weight:700;padding:10px 16px;border-radius:10px;cursor:pointer;border:none;font-family:'Poppins',sans-serif}
.btn-craft:hover{background:#222;color:#fff}
.btn-outline{background:var(--wh);color:var(--bk);font-size:12px;font-weight:700;padding:10px 16px;border-radius:10px;cursor:pointer;border:1.5px solid var(--g200);font-family:'Poppins',sans-serif}
.btn-outline:hover{border-color:var(--g400)}
/* === MODAL ÉDITION TÂCHE === */
.te-quick{flex:1;background:var(--g100);border:none;border-radius:8px;padding:8px 0;font-size:11px;font-weight:600;color:var(--g600);font-family:'Poppins',sans-serif;cursor:pointer;transition:all .15s}
.te-quick:hover{background:var(--ac);color:#fff}
.te-tag{font-size:10px;font-weight:700;padding:5px 12px;border-radius:20px;cursor:pointer;border:none;font-family:'Poppins',sans-serif;transition:all .15s;opacity:.5}
.te-tag:hover{opacity:.85}
.te-tag.on{opacity:1;transform:scale(1.05)}
.te-tag.livraison{background:var(--deadp);color:var(--deadt)}
.te-tag.relance{background:#fef3c7;color:#92400e}
.te-tag.contenu{background:#faf5ff;color:#7e22ce}
.te-tag.rdv{background:var(--rdvp);color:var(--rdvt)}
.te-tag.perso{background:var(--g100);color:var(--g600)}
#te-text-input:focus,#te-client-input:focus,#te-projet-input:focus,#te-date:focus,#te-notes:focus{border-color:var(--ac)}
.btn-craft.btn-teal{background:var(--ac);color:#fff}
.btn-craft.btn-teal:hover{background:var(--ac2);color:#fff}

/* === KANBAN PROJETS === */
.kb-filters{background:var(--wh);border:1.5px solid var(--g200);border-radius:var(--rad);padding:10px 14px;margin-bottom:14px;display:flex;flex-direction:column;gap:8px}
.kb-filter-row{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.kb-filter-lbl{font-size:9px;font-weight:700;color:var(--g400);text-transform:uppercase;letter-spacing:.6px;margin-right:8px;min-width:42px}
.kb-fbtn{font-size:11px;font-weight:600;padding:5px 12px;border-radius:7px;background:var(--wh);border:1.5px solid var(--g200);cursor:pointer;color:var(--g600);font-family:'Poppins',sans-serif;white-space:nowrap;transition:all .15s}
.kb-fbtn:hover{border-color:var(--ac);color:var(--ac)}
.kb-fbtn.on{background:var(--acp);border-color:var(--ac);color:var(--ac2)}
/* Filtres en dropdown */
.kb-filters-bar{background:var(--wh);border:1.5px solid var(--g200);border-radius:var(--rad);padding:12px 16px;margin-bottom:14px;display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.kb-filter-group{display:flex;align-items:center;gap:8px}
.kb-filter-lbl-sel{font-size:10px;font-weight:700;color:var(--g400);text-transform:uppercase;letter-spacing:.5px}
.kb-select{font-size:12px;font-weight:600;padding:7px 28px 7px 12px;border-radius:8px;background:var(--wh);border:1.5px solid var(--g200);cursor:pointer;color:var(--bk);font-family:'Poppins',sans-serif;outline:none;min-width:200px;transition:border-color .12s;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8' fill='none' stroke='%236e6e66' stroke-width='1.8' stroke-linecap='round'><path d='M2 2.5l4 4 4-4'/></svg>");background-repeat:no-repeat;background-position:right 10px center;background-size:10px}
.kb-select:hover{border-color:var(--ac)}
.kb-select:focus{border-color:var(--ac);box-shadow:0 0 0 3px var(--acp)}
.kb-filter-reset{font-size:11px;font-weight:600;padding:7px 12px;border-radius:8px;background:transparent;border:1.5px solid var(--g200);cursor:pointer;color:var(--g500);font-family:'Poppins',sans-serif;transition:all .12s}
.kb-filter-reset:hover{border-color:var(--ac);color:var(--ac);background:var(--acp)}
.kb-filter-count{margin-left:auto;font-size:11px;font-weight:600;color:var(--g500);background:var(--g100);padding:5px 12px;border-radius:20px}

/* Mode sélection multiple */
.kb-select-toggle{font-size:11px;font-weight:600;padding:7px 12px;border-radius:8px;background:transparent;border:1.5px solid var(--g200);cursor:pointer;color:var(--g500);font-family:'Poppins',sans-serif;transition:all .12s}
.kb-select-toggle:hover{border-color:var(--ac);color:var(--ac)}
.kb-select-toggle.on{background:var(--ac);color:#fff;border-color:var(--ac)}
.kb-bulk-bar{background:var(--bk);color:#fff;border-radius:var(--rad);padding:10px 14px;margin-bottom:14px;display:flex;align-items:center;gap:10px;flex-wrap:wrap;animation:slideDown .2s ease-out}
@keyframes slideDown{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}
.kb-bulk-info{font-size:12px;font-weight:600;color:#fff;margin-right:8px}
.kb-bulk-info strong{color:var(--ac);font-size:14px}
.kb-bulk-btn{font-size:11px;font-weight:600;padding:6px 12px;border-radius:7px;background:rgba(255,255,255,.1);border:1.5px solid rgba(255,255,255,.15);cursor:pointer;color:#fff;font-family:'Poppins',sans-serif;transition:all .12s}
.kb-bulk-btn:hover{background:rgba(255,255,255,.18);border-color:rgba(255,255,255,.3)}
.kb-bulk-btn.danger{background:#dc2626;border-color:#dc2626}
.kb-bulk-btn.danger:hover{background:#b91c1c;border-color:#b91c1c}
.kb-bulk-close{margin-left:auto;font-size:18px;font-weight:600;padding:4px 10px;border-radius:7px;background:transparent;border:none;cursor:pointer;color:rgba(255,255,255,.6);font-family:'Poppins',sans-serif}
.kb-bulk-close:hover{color:#fff;background:rgba(255,255,255,.1)}

/* Cartes en mode sélection */
.kb-card.kb-selected{outline:2.5px solid var(--ac);outline-offset:1px;background:var(--acp)}
.kb-checkbox{position:absolute;top:8px;right:8px;width:20px;height:20px;border:2px solid var(--g300);border-radius:5px;background:var(--wh);display:flex;align-items:center;justify-content:center;transition:all .12s;z-index:2}
.kb-checkbox.on{background:var(--ac);border-color:var(--ac)}
.kb-checkbox svg{width:11px;height:11px;display:block}
.kb-interne-tag{position:absolute;top:8px;right:8px;font-size:11px;color:#f59e0b;background:#fff8e6;padding:1px 6px;border-radius:6px;font-weight:700;z-index:1}
.kb-card.kb-interne .kb-checkbox+.kb-interne-tag,
.kb-card .kb-checkbox+.kb-interne-tag{right:34px}
.kb-card.kb-interne{border-left-style:dashed}
.kb-wrap{overflow-x:auto;padding-bottom:10px}
.kb-board{display:grid;grid-auto-flow:column;grid-auto-columns:260px;gap:12px;min-height:calc(100vh - 280px)}
.kb-col{background:var(--g100);border-radius:var(--rad);padding:10px;display:flex;flex-direction:column;min-height:200px;border:1.5px solid transparent;transition:border-color .15s}
.kb-col.drag-over{border-color:var(--ac)}
.kb-col-head{display:flex;align-items:center;justify-content:space-between;padding:6px 8px 12px;flex-shrink:0}
.kb-col-title{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:700;color:var(--bk)}
.kb-col-dot{width:9px;height:9px;border-radius:50%;flex-shrink:0}
.kb-col-count{font-size:11px;font-weight:700;color:var(--g500);background:transparent;padding:0}
.kb-list{flex:1;display:flex;flex-direction:column;gap:8px;min-height:50px}
.kb-card{background:var(--wh);border-radius:10px;padding:14px;cursor:grab;border-left:4px solid var(--g300);box-shadow:0 1px 3px rgba(0,0,0,.06);transition:box-shadow .15s, transform .15s;position:relative;user-select:none;-webkit-user-select:none;touch-action:none}
.kb-card:hover{box-shadow:0 6px 16px rgba(0,0,0,.1);transform:translateY(-1px)}
.kb-card:active{cursor:grabbing}
.kb-card.dragging{opacity:.35;cursor:grabbing}
.kb-ghost{transition:none !important}
.kb-col.drag-over{background:var(--acp);outline:2px dashed var(--ac);outline-offset:-4px}
.kb-card-title{font-size:13px;font-weight:700;color:var(--bk);line-height:1.35;margin-bottom:10px}
.kb-card-tags{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}
.kb-card-tag{font-size:9px;font-weight:700;padding:3px 9px;border-radius:10px}
.kb-card-tag.client{background:var(--g100);color:var(--g600)}
.kb-card-tag.type-web{background:var(--t-web-l);color:var(--t-web-d)}
.kb-card-tag.type-graphisme{background:var(--t-graphisme-l);color:var(--t-graphisme-d)}
.kb-card-tag.type-marketing{background:var(--t-marketing-l);color:var(--t-marketing-d)}
.kb-card-tag.type-ads{background:var(--t-ads-l);color:var(--t-ads-d)}
.kb-card-tag.type-rs{background:var(--t-rs-l);color:var(--t-rs-d)}
.kb-card-tag.type-infolettre{background:var(--t-infolettre-l);color:var(--t-infolettre-d)}
.kb-card-tag.type-seo{background:var(--t-seo-l);color:var(--t-seo-d)}
.kb-card-tag.type-maintenance{background:var(--t-maintenance-l);color:var(--t-maintenance-d)}
.kb-card-tag.type-default{background:var(--t-default-l);color:var(--t-default-d)}
.kb-card-note{font-size:11px;color:var(--g500);margin-bottom:10px;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.kb-card-foot{display:flex;align-items:center;justify-content:space-between;padding-top:10px;border-top:1px solid var(--g100)}
.kb-card-deadline{font-size:10px;font-weight:700;padding:3px 9px;border-radius:7px;background:var(--g100);color:var(--g600)}
.kb-card-deadline.urgent{background:var(--deadp);color:var(--deadt)}
.kb-card-deadline.late{background:#fee2e2;color:#991b1b}
.kb-card-deadline.demain{background:var(--deadp);color:var(--deadt)}
.kb-card-tasks{font-size:10px;color:var(--g400);font-weight:600}
.kb-col-add{background:transparent;border:1.5px dashed var(--g300);border-radius:8px;padding:10px;text-align:center;cursor:pointer;color:var(--g400);font-size:11px;font-weight:600;font-family:'Poppins',sans-serif;display:flex;align-items:center;justify-content:center;gap:5px;margin-top:8px;transition:all .15s}
.kb-col-add:hover{border-color:var(--ac);color:var(--ac);background:var(--acp)}
/* Couleurs colonnes (fond + dot uniquement, la bordure de la carte = type de projet) */
.kb-col[data-col="Nouveau"]{background:#faf5ff}
.kb-col[data-col="Nouveau"] .kb-col-dot{background:#a855f7}
.kb-col[data-col="En attente"]{background:#fff8e6}
.kb-col[data-col="En attente"] .kb-col-dot{background:var(--dead)}
.kb-col[data-col="En cours"]{background:var(--acp)}
.kb-col[data-col="En cours"] .kb-col-dot{background:var(--ac)}
.kb-col[data-col="En révision"]{background:#fee2e2}
.kb-col[data-col="En révision"] .kb-col-dot{background:#dc2626}
.kb-col[data-col="Prog"]{background:#f3e8ff}
.kb-col[data-col="Prog"] .kb-col-dot{background:#9333ea}
.kb-col[data-col="Print"]{background:var(--rdvp)}
.kb-col[data-col="Print"] .kb-col-dot{background:var(--rdv)}
.kb-col[data-col="Terminé"]{background:#dcfce7}
.kb-col[data-col="Terminé"] .kb-col-dot{background:#16a34a}
.kb-col[data-col="Facturé"]{background:var(--g100)}
.kb-col[data-col="Facturé"] .kb-col-dot{background:var(--g500)}

/* Bordure gauche de la carte = type de projet (palette unifiée) */
.kb-card.t-web{border-left-color:var(--t-web)}
.kb-card.t-graphisme{border-left-color:var(--t-graphisme)}
.kb-card.t-marketing{border-left-color:var(--t-marketing)}
.kb-card.t-ads{border-left-color:var(--t-ads)}
.kb-card.t-rs{border-left-color:var(--t-rs)}
.kb-card.t-infolettre{border-left-color:var(--t-infolettre)}
.kb-card.t-seo{border-left-color:var(--t-seo)}
.kb-card.t-maintenance{border-left-color:var(--t-maintenance)}
.kb-card.t-default{border-left-color:var(--t-default)}

/* === TIMELINE GANTT === */
.tl-toolbar{background:var(--wh);border:1.5px solid var(--g200);border-radius:var(--rad);padding:10px 14px;margin-bottom:14px;display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.tl-zoom-group{display:flex;background:var(--g100);border-radius:8px;padding:3px;gap:2px}
.tl-zoom-btn{font-size:11px;font-weight:600;padding:6px 14px;border-radius:6px;background:transparent;border:none;cursor:pointer;color:var(--g500);font-family:'Poppins',sans-serif;transition:all .15s}
.tl-zoom-btn:hover{color:var(--bk)}
.tl-zoom-btn.on{background:var(--ac);color:#fff;box-shadow:0 1px 3px rgba(0,194,169,.3)}
.tl-nav-group{display:flex;gap:6px;align-items:center}
.tl-nav-btn{background:var(--g100);border:none;border-radius:8px;width:32px;height:32px;cursor:pointer;font-size:16px;color:var(--g600);display:flex;align-items:center;justify-content:center;transition:all .15s}
.tl-nav-btn:hover{background:var(--g200)}
.tl-today-btn{background:var(--g100);color:var(--g600);font-size:11px;font-weight:700;padding:8px 14px;border-radius:8px;border:none;cursor:pointer;font-family:'Poppins',sans-serif}
.tl-today-btn:hover{background:var(--g200)}
.tl-legend{display:flex;gap:16px;margin-left:auto;flex-wrap:wrap}
.tl-leg{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--g600);font-weight:600}
.tl-leg-dot{width:10px;height:10px;border-radius:2px}
.tl-grid{display:grid;position:relative}
.tl-head{display:contents}
.tl-head-cell{padding:12px 14px;font-size:10px;font-weight:700;color:var(--g400);text-transform:uppercase;letter-spacing:.6px;background:var(--g50);border-bottom:1.5px solid var(--g200);position:sticky;top:0;z-index:5}
.tl-head-month{padding:14px 16px;font-size:13px;font-weight:700;color:var(--bk);background:var(--g50);border-bottom:1.5px solid var(--g200);text-transform:capitalize;border-left:1px solid var(--g200);position:sticky;top:0;z-index:4}
.tl-section{display:contents}
.tl-section-lbl{padding:9px 14px;font-size:9px;font-weight:700;color:var(--g500);text-transform:uppercase;letter-spacing:.7px;background:var(--g100);border-bottom:1px solid var(--g200);grid-column:1/-1}
.tl-row{display:contents}
.tl-row-label{padding:14px;background:var(--wh);border-bottom:1px solid var(--g100);min-width:240px}
.tl-row-name{font-size:13px;font-weight:700;color:var(--bk);line-height:1.3}
.tl-row-sub{font-size:10px;color:var(--g400);margin-top:3px;font-weight:500}
.tl-track{position:relative;background:var(--wh);border-bottom:1px solid var(--g100);border-left:1px solid var(--g200);height:60px;grid-column:2/-1}
.tl-month-line{position:absolute;top:0;bottom:0;width:1px;background:var(--g100);pointer-events:none}
.tl-today-line{position:absolute;top:-30px;bottom:0;width:2px;background:var(--ac);z-index:3;pointer-events:none}
.tl-today-line::before{content:'';position:absolute;top:0;left:50%;transform:translateX(-50%);width:10px;height:10px;background:var(--ac);border-radius:50%}
.tl-today-line::after{content:'';position:absolute;top:5px;left:50%;transform:translateX(-50%);width:4px;height:4px;background:var(--wh);border-radius:50%}
.tl-bar{position:absolute;top:50%;transform:translateY(-50%);height:26px;border-radius:6px;display:flex;align-items:center;padding:0 10px;font-size:10px;font-weight:700;color:#fff;white-space:nowrap;overflow:hidden;cursor:pointer;box-shadow:0 1px 3px rgba(0,0,0,.15);transition:all .15s}
.tl-bar:hover{transform:translateY(-50%) scale(1.02);z-index:10;box-shadow:0 4px 10px rgba(0,0,0,.2)}
.tl-bar.web{background:var(--t-web);color:#fff}
.tl-bar.graphisme{background:var(--t-graphisme);color:#fff}
.tl-bar.marketing{background:var(--t-marketing);color:#fff}
.tl-bar.ads{background:var(--t-ads);color:#fff}
.tl-bar.rs{background:var(--t-rs);color:#fff}
.tl-bar.infolettre{background:var(--t-infolettre);color:#fff}
.tl-bar.seo{background:var(--t-seo);color:#fff}
.tl-bar.maintenance{background:var(--t-maintenance);color:#fff}
.tl-bar.default{background:var(--t-default);color:#fff}
.tl-bar-extension{position:absolute;top:50%;transform:translateY(-50%);height:26px;border-radius:6px;opacity:.4;transition:opacity .15s}
.tl-bar-extension:hover{opacity:.65}
.tl-row-label:hover{background:var(--acp)}
.tl-bar-extension.web{background:var(--t-web)}
.tl-bar-extension.graphisme{background:var(--t-graphisme)}
.tl-bar-extension.marketing{background:var(--t-marketing)}
.tl-bar-extension.ads{background:var(--t-ads)}
.tl-bar-extension.rs{background:var(--t-rs)}
.tl-bar-extension.infolettre{background:var(--t-infolettre)}
.tl-bar-extension.seo{background:var(--t-seo)}
.tl-bar-extension.maintenance{background:var(--t-maintenance)}
.tl-bar-extension.default{background:var(--t-default)}
.tl-prog-marker{position:absolute;top:50%;transform:translate(-50%,-50%);background:#ec4899;color:#fff;font-size:10px;font-weight:700;padding:3px 8px;border-radius:6px;display:flex;align-items:center;gap:4px;box-shadow:0 2px 6px rgba(236,72,153,.4);z-index:2;white-space:nowrap}
.tl-prog-marker::after{content:'';position:absolute;left:-4px;top:50%;transform:translateY(-50%) rotate(45deg);width:8px;height:8px;background:#ec4899}

/* === FEUILLE DE TEMPS — toolbar semaine/mois === */
.ft-toolbar-top{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:16px;background:var(--wh);border:1.5px solid var(--g200);border-radius:var(--rad);padding:10px 14px}
.ft-period-toggle{display:flex;background:var(--g100);border-radius:8px;padding:3px;gap:2px}
.ft-period-btn{font-size:11px;font-weight:600;padding:6px 14px;border-radius:6px;background:transparent;border:none;cursor:pointer;color:var(--g500);font-family:'Poppins',sans-serif;transition:all .15s}
.ft-period-btn:hover{color:var(--bk)}
.ft-period-btn.on{background:var(--ac);color:#fff;box-shadow:0 1px 3px rgba(0,194,169,.3)}
.ft-nav{display:flex;align-items:center;gap:8px;flex:1;min-width:240px}
.ft-actions{display:flex;gap:8px;margin-left:auto}

/* === FEUILLE DE TEMPS — tableau hebdomadaire === */
.ft-table{width:100%;border-collapse:collapse;background:var(--wh);min-width:1100px}
.ft-th{padding:12px 10px;font-size:9px;font-weight:700;color:var(--g500);text-transform:uppercase;letter-spacing:.5px;border-bottom:2px solid var(--g200);background:var(--g50);text-align:center;white-space:nowrap}
.ft-th.left{text-align:left}
.ft-th.today{color:var(--ac);background:var(--acp)}
.ft-tr{border-bottom:1px solid var(--g100);transition:background .12s}
.ft-tr:hover{background:var(--g50)}
.ft-td{padding:12px 10px;vertical-align:middle;font-size:11px;text-align:center;color:var(--g600)}
.ft-td.left{text-align:left}
.ft-td.dur{font-weight:600;color:var(--bk);font-size:12px;text-align:center}
.ft-td-client{font-weight:700;color:var(--bk);font-size:12px;border-right:1.5px solid var(--g100);background:var(--g50);text-align:center;text-transform:uppercase;letter-spacing:.4px;width:120px}
.ft-evt-title{font-size:12px;font-weight:600;color:var(--bk);line-height:1.3}
.ft-evt-time{font-size:10px;color:var(--g400);margin-top:3px;font-weight:500}
.ft-cat-btn{font-size:10px;font-weight:700;padding:4px 12px;border-radius:6px;cursor:pointer;border:none;font-family:'Poppins',sans-serif;transition:all .15s}
.ft-cat-btn.projet{background:var(--acp);color:var(--ac2)}
.ft-cat-btn.suivi{background:#ffe4e6;color:#9f1239}
.ft-cat-btn.rdv{background:var(--rdvp);color:var(--rdvt)}
.ft-cat-btn.perso{background:var(--g100);color:var(--g500)}
.ft-cat-btn:hover{transform:scale(1.05);opacity:.9}
.ft-subtotal td{background:var(--wh);border-top:1.5px solid var(--g200);border-bottom:1px solid var(--g200);padding:10px 10px}
.ft-grand-total td{background:var(--g100);border-top:2px solid var(--g300);padding:14px 10px;font-size:13px}

/* === AGENDA SEMAINE === */
.ag-toolbar{background:var(--wh);border:1.5px solid var(--g200);border-radius:var(--rad);padding:10px 14px;margin-bottom:14px;display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.ag-nav{display:flex;align-items:center;gap:8px;flex:1;min-width:240px}
.ag-week-lbl{font-size:13px;font-weight:700;color:var(--bk);min-width:200px;text-align:center}
.ag-legend{display:flex;gap:14px;flex-wrap:wrap}
.ag-leg{display:flex;align-items:center;gap:5px;font-size:10px;font-weight:600;color:var(--g500)}
.ag-leg-dot{width:8px;height:8px;border-radius:50%}
.ag-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:10px;min-height:600px}
.ag-day{background:var(--wh);border:1.5px solid var(--g200);border-radius:var(--rad);overflow:hidden;display:flex;flex-direction:column;min-height:600px}
.ag-day.today{border-color:var(--ac);box-shadow:0 0 0 2px var(--acp)}
.ag-day.weekend{background:var(--g50)}
.ag-day-head{padding:10px 12px;border-bottom:1.5px solid var(--g100);text-align:center}
.ag-day.today .ag-day-head{background:var(--acp)}
.ag-day-name{font-size:10px;font-weight:700;color:var(--g400);text-transform:uppercase;letter-spacing:.5px}
.ag-day.today .ag-day-name{color:var(--ac)}
.ag-day-num{font-size:22px;font-weight:800;color:var(--bk);line-height:1.1;margin-top:2px}
.ag-day.today .ag-day-num{color:var(--ac)}
.ag-day-month{font-size:9px;font-weight:600;color:var(--g400);text-transform:uppercase;margin-top:1px}
.ag-day-body{flex:1;padding:8px;overflow-y:auto;display:flex;flex-direction:column;gap:6px}
.ag-item{padding:7px 9px;border-radius:7px;font-size:11px;cursor:pointer;border-left:3px solid;line-height:1.3;transition:transform .12s,box-shadow .12s}
.ag-item:hover{transform:translateX(2px);box-shadow:0 2px 8px rgba(0,0,0,.08)}
.ag-item.rdv{background:var(--rdvp);border-left-color:var(--rdv);color:var(--rdvt)}
.ag-item.projet{background:var(--projp);border-left-color:var(--proj);color:var(--projt)}
.ag-item.tache{background:var(--acp);border-left-color:var(--ac);color:var(--ac2)}
.ag-item.tache.done{opacity:.5;text-decoration:line-through}
.ag-item.deadline{background:#fee2e2;border-left-color:#dc2626;color:#991b1b}
.ag-item-time{font-size:9px;font-weight:700;opacity:.75;margin-bottom:2px}
.ag-item-title{font-weight:600;overflow-wrap:break-word}
.ag-item-sub{font-size:9px;opacity:.75;margin-top:2px}
.ag-day-empty{font-size:10px;color:var(--g300);text-align:center;padding:14px 4px;font-style:italic}

/* Cloche rappels topbar */
.bell-btn{position:relative;background:var(--wh);border:1.5px solid var(--g200);border-radius:9px;width:34px;height:34px;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--g500);transition:all .15s}
.bell-btn:hover{border-color:var(--ac);color:var(--ac)}
.bell-btn.has-alerts{border-color:#dc2626;color:#dc2626;animation:bellRing 2s ease-in-out infinite}
@keyframes bellRing{0%,90%,100%{transform:rotate(0)}93%{transform:rotate(-8deg)}96%{transform:rotate(8deg)}}
.bell-count{position:absolute;top:-4px;right:-4px;background:#dc2626;color:#fff;font-size:9px;font-weight:800;padding:1px 5px;border-radius:10px;min-width:16px;text-align:center;line-height:1.4;border:1.5px solid var(--wh)}

/* Bouton mini "+" dans labels de form */
.form-group label{display:flex;align-items:center;justify-content:space-between;gap:6px}
.btn-mini-add{font-size:9px;font-weight:700;padding:2px 8px;border-radius:5px;background:var(--ac);color:#fff;border:none;cursor:pointer;font-family:'Poppins',sans-serif;text-transform:none;letter-spacing:0;line-height:1.4}
.btn-mini-add:hover{background:var(--ac2)}

/* === MODAL DÉTECTION DOUBLONS === */
.dupes-list{max-height:480px;overflow-y:auto;display:flex;flex-direction:column;gap:14px}
.dupe-pair{background:var(--g50);border:1.5px solid var(--g200);border-radius:10px;padding:12px}
.dupe-reason{font-size:10px;font-weight:700;color:var(--ac2);text-transform:uppercase;letter-spacing:.5px;margin-bottom:10px;padding:4px 10px;background:var(--acp);border-radius:6px;display:inline-block}
.dupe-grid{display:grid;grid-template-columns:1fr auto 1fr;gap:10px;align-items:stretch}
.dupe-side{background:var(--wh);border:2px solid var(--g200);border-radius:8px;padding:10px;cursor:pointer;display:flex;align-items:flex-start;gap:0;transition:all .12s}
.dupe-side:hover{border-color:var(--ac)}
.dupe-side.selected,.dupe-side input[type="radio"]:checked + .dupe-side-body,.dupe-side:has(input:checked){border-color:var(--ac);background:var(--acp)}
.dupe-side input[type="radio"]{accent-color:var(--ac);margin-top:6px;cursor:pointer;flex-shrink:0}
.dupe-side-body{flex:1;min-width:0}
.dupe-side-head{display:flex;align-items:center;gap:8px;margin-bottom:6px}
.dupe-side-name{font-size:13px;font-weight:700;color:var(--bk);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dupe-recommend{font-size:9px;font-weight:700;color:#fff;background:var(--ac);padding:2px 7px;border-radius:5px;white-space:nowrap}
.dupe-side-stats{display:flex;flex-direction:column;gap:3px;font-size:11px;color:var(--g500)}
.dupe-side-stats span{font-weight:500}
.dupe-arrow{display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;color:var(--g400);text-transform:uppercase;letter-spacing:.4px;padding:0 4px}
.dupe-skip{display:flex;align-items:center;gap:6px;margin-top:10px;font-size:11px;color:var(--g500);cursor:pointer}
.dupe-skip input{accent-color:var(--g400);cursor:pointer}
@media(max-width:680px){.dupe-grid{grid-template-columns:1fr}.dupe-arrow{transform:rotate(90deg);padding:4px 0}}

/* === PAGE CLIENT DÉTAILLÉE === */
.cd-back{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:600;color:var(--g500);cursor:pointer;padding:6px 12px;border-radius:6px;margin-bottom:14px;transition:all .12s;background:var(--wh);border:1.5px solid var(--g200)}
.cd-back:hover{color:var(--ac);border-color:var(--ac);background:var(--acp)}

.cd-header{background:var(--wh);border:1.5px solid var(--g200);border-radius:var(--rad);padding:20px 24px;margin-bottom:14px;display:flex;align-items:flex-start;gap:18px;flex-wrap:wrap}
.cd-avatar{width:64px;height:64px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:22px;font-weight:800;flex-shrink:0}
.cd-header-info{flex:1;min-width:240px}
.cd-name{font-size:22px;font-weight:800;color:var(--bk);margin-bottom:6px;line-height:1.1}
.cd-meta{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:10px;font-size:11px;color:var(--g500);font-weight:600}
.cd-contact{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.cd-contact-item,.cd-contact-link{font-size:11px;font-weight:500;color:var(--g600);background:var(--g50);padding:5px 12px;border-radius:6px;text-decoration:none;border:1px solid var(--g200);transition:all .12s}
.cd-contact-link:hover{background:var(--acp);color:var(--ac2);border-color:var(--ac)}
.cd-actions{display:flex;flex-direction:column;gap:6px;align-items:stretch;min-width:160px}
.cd-action-btn{font-size:11px;font-weight:700;padding:8px 14px;border-radius:7px;background:var(--g100);color:var(--bk);border:1.5px solid var(--g200);cursor:pointer;font-family:'Poppins',sans-serif;text-decoration:none;text-align:center;transition:all .12s;white-space:nowrap}
.cd-action-btn:hover{border-color:var(--ac);background:var(--acp);color:var(--ac2)}
.cd-action-btn.primary{background:var(--ac);color:#fff;border-color:var(--ac)}
.cd-action-btn.primary:hover{background:var(--ac2);color:#fff;border-color:var(--ac2)}
.cd-action-btn.ghost{background:transparent;border-color:var(--g200);color:var(--g500)}

.cd-kpi-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:14px}
.cd-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
@media(max-width:900px){.cd-kpi-grid{grid-template-columns:repeat(2,1fr)}.cd-grid{grid-template-columns:1fr}}

.cd-section{background:var(--wh);border:1.5px solid var(--g200);border-radius:var(--rad);overflow:hidden}
.cd-section-head{padding:12px 16px;background:var(--g50);border-bottom:1.5px solid var(--g200);display:flex;justify-content:space-between;align-items:center;gap:10px}
.cd-section-title{font-size:12px;font-weight:700;color:var(--bk)}
.cd-section-action{font-size:10px;font-weight:700;color:var(--ac);text-decoration:none;padding:4px 10px;border-radius:6px;background:var(--acp);transition:all .12s;white-space:nowrap}
.cd-section-action:hover{background:var(--ac);color:#fff}
.cd-empty{padding:24px;text-align:center;font-size:12px;color:var(--g400)}

.cd-item{padding:11px 14px;border-bottom:1px solid var(--g100);cursor:pointer;transition:background .12s;display:flex;flex-direction:column;gap:5px}
.cd-item:last-child{border-bottom:none}
.cd-item:hover{background:var(--acp)}
.cd-item.done{opacity:.55}
.cd-item-row{display:flex;justify-content:space-between;align-items:center;gap:10px}
.cd-item-name{font-size:12px;font-weight:700;color:var(--bk);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cd-item-name.done{text-decoration:line-through;color:var(--g400)}
.cd-item-prog{display:flex;align-items:center;gap:8px;flex:1;min-width:0;font-size:10px;font-weight:700;color:var(--g500)}
.cd-item-prog-track{flex:1;height:5px;background:var(--g200);border-radius:3px;overflow:hidden;max-width:120px}
.cd-item-prog-fill{height:100%;background:var(--ac);border-radius:3px}
.cd-task-check{width:14px;height:14px;border-radius:4px;border:1.8px solid var(--g300);flex-shrink:0;background:var(--wh)}
.cd-task-check.done{background:var(--ac);border-color:var(--ac);position:relative}
.cd-task-check.done::after{content:'';position:absolute;left:3px;top:0;width:4px;height:8px;border:solid var(--wh);border-width:0 2px 2px 0;transform:rotate(45deg)}
.cd-dl{font-size:10px;font-weight:600;color:var(--g500);padding:2px 8px;border-radius:5px;background:var(--g100)}
.cd-dl.urgent{background:#fef3c7;color:#92400e}
.cd-dl.late{background:#fee2e2;color:#991b1b}

.cd-hours-grid{padding:18px 16px;display:flex;align-items:flex-end;gap:10px;height:160px;overflow-x:auto}
.cd-hour-bar{display:flex;flex-direction:column;align-items:center;gap:4px;min-width:42px;flex:1}
.cd-hour-bar-track{width:100%;height:90px;background:var(--g100);border-radius:4px;position:relative;display:flex;align-items:flex-end;overflow:hidden}
.cd-hour-bar-fill{width:100%;background:linear-gradient(to top,var(--ac),var(--t-default));border-radius:3px;transition:height .3s;min-height:2px}
.cd-hour-bar-val{font-size:9px;font-weight:700;color:var(--ac2)}
.cd-hour-bar-lbl{font-size:9px;color:var(--g400);font-weight:600;text-transform:uppercase}

/* Lignes clients cliquables */
.cl-row-clickable{cursor:pointer;transition:background .12s}
.cl-row-clickable:hover{background:var(--acp)}

/* === VUE PROJETS — tableau === */
.proj-toolbar{background:var(--wh);border:1.5px solid var(--g200);border-radius:var(--rad);padding:10px 14px;margin-bottom:14px;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.proj-search{flex:1;min-width:220px;font-size:12px;font-weight:500;padding:7px 12px;border-radius:8px;background:var(--wh);border:1.5px solid var(--g200);color:var(--bk);font-family:'Poppins',sans-serif;outline:none;transition:border-color .12s}
.proj-search:focus{border-color:var(--ac);box-shadow:0 0 0 3px var(--acp)}
.proj-filter-sel{font-size:12px;font-weight:600;padding:7px 28px 7px 12px;border-radius:8px;background:var(--wh);border:1.5px solid var(--g200);cursor:pointer;color:var(--bk);font-family:'Poppins',sans-serif;outline:none;appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8' fill='none' stroke='%236e6e66' stroke-width='1.8' stroke-linecap='round'><path d='M2 2.5l4 4 4-4'/></svg>");background-repeat:no-repeat;background-position:right 10px center;background-size:10px;min-width:140px}
.proj-filter-sel:hover{border-color:var(--ac)}
.proj-count{font-size:11px;font-weight:600;color:var(--g500);background:var(--g100);padding:5px 12px;border-radius:20px}

.proj-table-wrap{background:var(--wh);border:1.5px solid var(--g200);border-radius:var(--rad);overflow:hidden}
.proj-table{width:100%;border-collapse:collapse}
.proj-th{font-size:9px;font-weight:700;color:var(--g400);text-transform:uppercase;letter-spacing:.5px;padding:10px 12px;background:var(--g50);border-bottom:1.5px solid var(--g200);text-align:center;white-space:nowrap}
.proj-th.left{text-align:left}
.proj-row{cursor:pointer;transition:background .12s;border-bottom:1px solid var(--g100)}
.proj-row:hover{background:var(--acp)}
.proj-row:last-child{border-bottom:none}
.proj-td{padding:11px 12px;font-size:12px;text-align:center;vertical-align:middle}
.proj-td.left{text-align:left}
.proj-row-name{font-size:13px;font-weight:700;color:var(--bk);line-height:1.3}
.proj-row-sub{font-size:10px;color:var(--g400);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:340px}
.proj-type-badge{font-size:10px;font-weight:700;padding:3px 9px;border-radius:10px;color:#fff}
.proj-type-badge.t-web{background:var(--t-web)}
.proj-type-badge.t-graphisme{background:var(--t-graphisme)}
.proj-type-badge.t-marketing{background:var(--t-marketing)}
.proj-type-badge.t-ads{background:var(--t-ads)}
.proj-type-badge.t-rs{background:var(--t-rs)}
.proj-type-badge.t-infolettre{background:var(--t-infolettre)}
.proj-type-badge.t-seo{background:var(--t-seo)}
.proj-type-badge.t-maintenance{background:var(--t-maintenance)}
.proj-type-badge.t-default{background:var(--t-default)}

.proj-row-prog{display:flex;align-items:center;gap:8px;justify-content:center}
.proj-row-prog-track{height:6px;background:var(--g200);border-radius:3px;flex:1;max-width:80px;overflow:hidden}
.proj-row-prog-fill{height:100%;background:var(--ac);border-radius:3px;transition:width .3s}
.proj-row-prog-lbl{font-size:11px;font-weight:700;color:var(--bk);min-width:32px;text-align:right}
.proj-row-dl{font-size:11px;font-weight:600;color:var(--g500);padding:3px 9px;border-radius:6px;background:var(--g100);white-space:nowrap}
.proj-row-dl.urgent{background:#fef3c7;color:#92400e}
.proj-row-dl.late{background:#fee2e2;color:#991b1b}
.proj-row-dl.soon{background:var(--acp);color:var(--ac2)}
.proj-row-tasks{font-size:11px;font-weight:700;color:var(--ac2);background:var(--acp);padding:3px 9px;border-radius:10px}
.proj-row-btn{font-size:10px;font-weight:700;color:var(--ac);background:var(--acp);border:1.5px solid transparent;padding:5px 10px;border-radius:7px;cursor:pointer;font-family:'Poppins',sans-serif;transition:all .12s}
.proj-row-btn:hover{background:var(--ac);color:#fff}

/* Slider progression sur carte Kanban */
.kb-card-progress{margin:8px 0 4px;padding:0;cursor:default}
.kb-prog-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:3px}
.kb-prog-lbl{font-size:9px;font-weight:700;color:var(--g400);text-transform:uppercase;letter-spacing:.4px}
.kb-prog-value{font-size:11px;font-weight:800;color:var(--ac2)}
.kb-prog-slider{width:100%;height:5px;-webkit-appearance:none;appearance:none;background:var(--g200);border-radius:3px;outline:none;cursor:pointer;margin:0;padding:0}
.kb-prog-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:14px;height:14px;border-radius:50%;background:var(--ac);cursor:grab;border:2px solid var(--wh);box-shadow:0 1px 3px rgba(0,194,169,.4);transition:transform .12s}
.kb-prog-slider::-webkit-slider-thumb:hover{transform:scale(1.2)}
.kb-prog-slider::-webkit-slider-thumb:active{cursor:grabbing;transform:scale(1.3)}
.kb-prog-slider::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:var(--ac);cursor:grab;border:2px solid var(--wh);box-shadow:0 1px 3px rgba(0,194,169,.4)}
/* Couleur de remplissage proportionnelle (Webkit) */
.kb-prog-slider{background:linear-gradient(to right, var(--ac) 0%, var(--ac) var(--p,0%), var(--g200) var(--p,0%), var(--g200) 100%)}

/* Toast auto-création kanban */
.kb-toast{position:fixed;bottom:24px;right:24px;background:var(--bk);color:#fff;padding:14px 18px;border-radius:10px;font-size:12px;font-weight:600;z-index:2000;box-shadow:0 8px 24px rgba(0,0,0,.25);opacity:0;transform:translateY(8px);transition:opacity .25s,transform .25s;max-width:340px;display:flex;align-items:flex-start;gap:10px}
.kb-toast.show{opacity:1;transform:translateY(0)}
.kb-toast-ico{flex-shrink:0;color:var(--ac);margin-top:1px}
.kb-toast-body{flex:1}
.kb-toast-title{color:var(--ac);font-weight:700;margin-bottom:3px}
.kb-toast-sub{font-size:10px;font-weight:500;opacity:.85}

/* Modal suggestions auto-création */
.sug-list{max-height:380px;overflow-y:auto;border:1.5px solid var(--g200);border-radius:10px;background:var(--g50)}
.sug-row{display:flex;align-items:flex-start;gap:10px;padding:12px;border-bottom:1px solid var(--g200);transition:background .12s}
.sug-row:last-child{border-bottom:none}
.sug-row:hover{background:var(--wh)}
.sug-check{width:18px;height:18px;margin-top:2px;cursor:pointer;accent-color:var(--ac);flex-shrink:0}
.sug-row-body{flex:1;cursor:pointer;display:flex;flex-direction:column;gap:4px;min-width:0}
.sug-client{font-size:13px;font-weight:700;color:var(--bk);display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.sug-titre{font-size:11px;color:var(--g500);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sug-type{font-size:11px;color:var(--g500);display:flex;align-items:center;gap:6px;margin-top:3px}
.sug-type-lbl{font-weight:600}
.sug-type-sel{font-size:11px;font-weight:600;padding:3px 8px;border-radius:6px;background:var(--wh);border:1.5px solid var(--g200);color:var(--bk);font-family:'Poppins',sans-serif;cursor:pointer;outline:none}
.sug-type-sel:focus{border-color:var(--ac)}
.sug-badge{font-size:9px;font-weight:700;padding:2px 8px;border-radius:10px;text-transform:uppercase;letter-spacing:.4px}
.sug-badge.new{background:#fff8e6;color:#92400e}
.sug-badge.known{background:var(--acp);color:var(--ac2)}

/* Modal Gmail Tasks */
.gm-list{max-height:440px;overflow-y:auto;border:1.5px solid var(--g200);border-radius:10px;background:var(--g50)}
.gm-row{display:flex;align-items:flex-start;gap:10px;padding:12px 14px;border-bottom:1px solid var(--g200);transition:background .12s}
.gm-row:last-child{border-bottom:none}
.gm-row:hover{background:var(--wh)}
.gm-check{width:18px;height:18px;margin-top:3px;cursor:pointer;accent-color:var(--ac);flex-shrink:0}
.gm-row-body{flex:1;cursor:pointer;display:flex;flex-direction:column;gap:6px;min-width:0}
.gm-row-top{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.gm-kind{font-size:9px;font-weight:700;color:#fff;padding:2px 8px;border-radius:10px;text-transform:uppercase;letter-spacing:.4px;white-space:nowrap}
.gm-client-badge{font-size:10px;font-weight:600;padding:2px 9px;border-radius:10px;white-space:nowrap}
.gm-client-badge.known{background:var(--acp);color:var(--ac2)}
.gm-client-badge.unknown{background:#fff8e6;color:#92400e}
.gm-date{font-size:10px;color:var(--g400);margin-left:auto}
.gm-task-text{font-size:13px;font-weight:600;color:var(--bk);line-height:1.4}
.gm-meta{display:flex;align-items:center;gap:14px;flex-wrap:wrap;font-size:10px;color:var(--g500)}
.gm-from{font-weight:600}
.gm-subject{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.gm-link{color:var(--ac);font-weight:700;text-decoration:none;padding:2px 8px;border-radius:5px;background:var(--acp);transition:background .12s}
.gm-link:hover{background:var(--ac);color:#fff}

/* === À FACTURER CE MOIS === */
.kpi-clickable{cursor:pointer;transition:all .15s;position:relative}
.kpi-clickable:hover{border-color:var(--amber);transform:translateY(-1px);box-shadow:0 4px 12px rgba(245,158,11,.15)}
.kpi-clickable::after{content:'›';position:absolute;top:14px;right:16px;font-size:18px;font-weight:700;color:var(--g300);transition:color .15s}
.kpi-clickable:hover::after{color:var(--amber)}
.fac-row{display:grid;grid-template-columns:2fr 1fr 1fr 1fr 220px;gap:8px;align-items:center;padding:12px 18px;border-bottom:1px solid var(--g50);transition:background .12s}
.fac-row:last-child{border-bottom:none}
.fac-row:hover{background:#fff8e6}
.fac-client{display:flex;align-items:center;gap:10px;min-width:0}
.fac-av{width:30px;height:30px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:700;flex-shrink:0}
.fac-name{font-size:12px;font-weight:600;color:var(--bk);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fac-meta{font-size:10px;color:var(--g400);margin-top:1px}
.fac-stat{text-align:center}
.fac-stat-val{font-size:14px;font-weight:700;color:var(--bk);line-height:1.2}
.fac-stat-val.dollar{color:var(--amber);font-size:15px}
.fac-stat-lbl{font-size:9px;color:var(--g400);text-transform:uppercase;letter-spacing:.4px;margin-top:2px}
.fac-actions{display:flex;gap:6px;justify-content:flex-end;flex-wrap:wrap}
.btn-fac-detail{font-size:10px;font-weight:600;padding:5px 10px;border-radius:7px;background:var(--wh);border:1.5px solid var(--g200);cursor:pointer;color:var(--g600);font-family:'Poppins',sans-serif;white-space:nowrap}
.btn-fac-detail:hover{border-color:var(--ac);color:var(--ac)}
.btn-fac-mark{font-size:10px;font-weight:700;padding:5px 10px;border-radius:7px;background:var(--ac);border:none;cursor:pointer;color:#fff;font-family:'Poppins',sans-serif;white-space:nowrap}
.btn-fac-mark:hover{background:var(--ac2);transform:translateY(-1px);box-shadow:0 2px 8px rgba(0,194,169,.25)}
.btn-fac-invoice{font-size:10px;font-weight:700;padding:5px 10px;border-radius:7px;background:#111;border:none;cursor:pointer;color:#fff;font-family:'Poppins',sans-serif;white-space:nowrap;display:inline-flex;align-items:center;gap:3px}
.btn-fac-invoice:hover{background:#000;transform:translateY(-1px);box-shadow:0 2px 8px rgba(0,0,0,.15)}
.fac-empty{text-align:center;padding:40px 20px;color:var(--g400);font-size:12px}
.fac-empty-icon{font-size:32px;margin-bottom:8px;opacity:.5}
.fac-summary{display:flex;justify-content:space-between;padding:10px 18px;background:var(--g50);border-bottom:1.5px solid var(--g100);font-size:11px;color:var(--g600)}
.fac-summary strong{color:var(--bk)}
.fac-mini-pill{display:inline-block;font-size:9px;font-weight:700;padding:2px 7px;border-radius:10px;margin-left:5px}
.fac-mini-pill.qb{background:#dcfce7;color:#166534}
.fac-mini-pill.todo{background:#fef3c7;color:#92400e}
.fac-detail-modal-list{max-height:50vh;overflow-y:auto;border:1px solid var(--g200);border-radius:8px;margin-bottom:14px}
.fac-detail-row{display:grid;grid-template-columns:80px 1fr 60px 70px;gap:8px;padding:8px 12px;font-size:11px;border-bottom:1px solid var(--g50);align-items:center}
.fac-detail-row:last-child{border-bottom:none}
.fac-detail-row:hover{background:var(--g50)}
.fac-detail-date{font-weight:600;color:var(--g600)}
.fac-detail-desc{color:var(--bk);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fac-detail-h{font-weight:700;text-align:right;color:var(--g600)}
.fac-detail-d{font-weight:700;text-align:right;color:var(--ac2)}

/* === ALERTE CLIENTS NON MAPPÉS QB === */
.alert-unmapped{display:flex;align-items:center;gap:14px;background:#fff8e6;border:1.5px solid var(--amber);border-left:4px solid var(--amber);border-radius:var(--rad);padding:14px 18px;margin-bottom:16px;cursor:pointer;transition:all .15s}
/* Banner doublons d'IDs Kanban */
/* ── Bandeau Alertes urgentes dashboard ── */
.dash-alerts-banner{display:flex;align-items:center;flex-wrap:wrap;gap:10px;background:linear-gradient(90deg,rgba(226,75,74,0.12) 0%,rgba(240,165,0,0.07) 100%);border:1.5px solid rgba(226,75,74,0.4);border-left:4px solid #e24b4a;border-radius:var(--rad);padding:10px 16px;margin-bottom:14px;animation:alertPulse 2s ease-in-out 3}
@keyframes alertPulse{0%,100%{box-shadow:0 0 0 0 rgba(226,75,74,0)}50%{box-shadow:0 0 0 4px rgba(226,75,74,0.18)}}
.dab-header{display:flex;align-items:center;gap:6px;flex-shrink:0}
.dab-header svg{color:#e24b4a}
.dab-title{font-size:12px;font-weight:700;color:#e24b4a;text-transform:uppercase;letter-spacing:.4px}
.dab-count{background:#e24b4a;color:#fff;font-size:10px;font-weight:700;border-radius:20px;padding:1px 6px;min-width:18px;text-align:center}
.dab-chips{display:flex;flex-wrap:wrap;gap:6px;flex:1}
.dab-chip{display:flex;align-items:center;gap:5px;padding:4px 10px;border-radius:20px;cursor:pointer;font-size:11px;font-weight:500;transition:all .15s;white-space:nowrap}
.dab-chip:hover{transform:translateY(-1px);opacity:.85}
.dab-chip-critical{background:rgba(226,75,74,0.18);border:1px solid rgba(226,75,74,0.4);color:var(--t1)}
.dab-chip-warn{background:rgba(240,165,0,0.15);border:1px solid rgba(240,165,0,0.35);color:var(--t1)}
.dab-chip-icon{font-size:12px}
.dab-chip-label{font-size:11px}
.kb-dup-banner{display:flex;align-items:center;gap:14px;background:#fee2e2;border:1.5px solid #dc2626;border-left:4px solid #dc2626;border-radius:var(--rad);padding:14px 18px;margin-bottom:16px}
.kb-dup-icon{font-size:24px;line-height:1;flex-shrink:0}
.kb-dup-body{flex:1;min-width:0}
.kb-dup-title{font-size:13px;font-weight:700;color:#991b1b;margin-bottom:2px}
.kb-dup-msg{font-size:11px;color:#7f1d1d;line-height:1.4}
.kb-dup-fix{background:#dc2626;color:#fff;border:none;border-radius:8px;padding:8px 14px;font-size:12px;font-weight:700;font-family:'Poppins',sans-serif;cursor:pointer;white-space:nowrap;flex-shrink:0}
.kb-dup-fix:hover{background:#991b1b}
.kb-dup-fix:disabled{opacity:.6;cursor:not-allowed}
.alert-unmapped:hover{background:#fff3d4;transform:translateY(-1px);box-shadow:0 4px 12px rgba(245,158,11,.15)}
.alert-unmapped-icon{font-size:24px;line-height:1;flex-shrink:0}
.alert-unmapped-body{flex:1;min-width:0}
.alert-unmapped-title{font-size:13px;font-weight:700;color:#92400e;line-height:1.3;margin-bottom:2px}
.alert-unmapped-sub{font-size:11px;color:var(--g600);line-height:1.4}
.alert-unmapped-cta{font-size:12px;font-weight:700;color:#92400e;white-space:nowrap;flex-shrink:0;padding:6px 12px;background:rgba(255,255,255,.6);border-radius:8px}
.alert-unmapped:hover .alert-unmapped-cta{background:var(--wh)}
.unmapped-row{display:grid;grid-template-columns:2fr 1fr 1fr 110px;gap:10px;align-items:center;padding:10px 14px;border-bottom:1px solid var(--g50)}
.unmapped-row:last-child{border-bottom:none}
.unmapped-row:hover{background:var(--g50)}
.unmapped-name{font-size:12px;font-weight:600;color:var(--bk);display:flex;align-items:center;gap:8px;min-width:0}
.unmapped-name .fac-av{width:26px;height:26px;font-size:9px}
.unmapped-stat{font-size:11px;color:var(--g500)}
.unmapped-stat strong{color:var(--bk);font-weight:700}
.btn-unmapped-fix{font-size:10px;font-weight:700;padding:5px 10px;border-radius:7px;background:var(--ac);border:none;cursor:pointer;color:#fff;font-family:'Poppins',sans-serif;white-space:nowrap}
.btn-unmapped-fix:hover{background:var(--ac2)}

/* ════════════════════════════════════════════════
   PUBS — Tracker de campagnes publicitaires
   ════════════════════════════════════════════════ */
.pubs-kpis{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin-bottom:16px}
@media(max-width:1100px){.pubs-kpis{grid-template-columns:repeat(3,1fr)}}
@media(max-width:680px){.pubs-kpis{grid-template-columns:repeat(2,1fr)}}
.pub-kpi{background:var(--wh);border:1.5px solid var(--g200);border-radius:10px;padding:12px}
.pub-kpi-lbl{font-size:9px;font-weight:700;color:var(--g400);text-transform:uppercase;letter-spacing:.5px;margin-bottom:6px}
.pub-kpi-val{font-size:22px;font-weight:800;color:var(--bk);letter-spacing:-.5px;line-height:1}
.pub-kpi-sub{font-size:10px;color:var(--g500);margin-top:5px;line-height:1.3}

.pubs-insights{background:#fafafa;border:1.5px solid var(--g200);border-radius:10px;padding:12px;margin-bottom:16px}
.pubs-insights-title{font-size:12px;font-weight:700;color:var(--bk);margin-bottom:10px}
.pubs-insight{background:var(--wh);border-left:3px solid var(--g300);border-radius:6px;padding:10px 12px;margin-bottom:8px;border-top:1px solid var(--g100);border-right:1px solid var(--g100);border-bottom:1px solid var(--g100)}
.pubs-insight:last-child{margin-bottom:0}
.pubs-insight-critique{border-left-color:#e24b4a;background:#fef2f2}
.pubs-insight-attention{border-left-color:var(--amber);background:#fffbeb}
.pubs-insight-positif{border-left-color:var(--ac);background:#f0fdfa}
.pubs-insight-head{display:flex;align-items:center;gap:8px;margin-bottom:4px;flex-wrap:wrap}
.pubs-insight-icon{font-size:14px;line-height:1}
.pubs-insight-title{font-size:12px;font-weight:700;color:var(--bk);flex:1;min-width:0}
.pubs-insight-camp{font-size:10px;color:var(--g500);font-weight:500}
.pubs-insight-msg{font-size:11px;color:var(--g600);line-height:1.4;margin-bottom:4px}
.pubs-insight-action{font-size:11px;color:var(--bk);font-weight:600;line-height:1.3}

.pubs-list-title{font-size:11px;font-weight:700;color:var(--g400);text-transform:uppercase;letter-spacing:.5px;margin-bottom:8px;margin-top:6px}
.pubs-list{display:flex;flex-direction:column;gap:8px}
.pub-card{background:var(--wh);border:1.5px solid var(--g200);border-radius:10px;padding:12px 14px;cursor:pointer;transition:all .15s}
.pub-card:hover{border-color:var(--ac);box-shadow:0 2px 8px rgba(0,194,169,.1);transform:translateY(-1px)}
.pub-card-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:10px}
.pub-card-titles{flex:1;min-width:0}
.pub-card-name{font-size:13px;font-weight:700;color:var(--bk);line-height:1.3;margin-bottom:4px}
.pub-card-meta{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.pub-plat{font-size:10px;font-weight:700;padding:2px 7px;border-radius:10px}
.pub-plat-meta{background:#1877f2;color:#fff}
.pub-plat-google{background:#fef3c7;color:#92400e}
.pub-plat-pinterest{background:#e60023;color:#fff}
.pub-plat-tiktok{background:#000;color:#fff}
.pub-plat-linkedin{background:#0a66c2;color:#fff}
.pub-plat-youtube{background:#ff0000;color:#fff}
.pub-plat-autre{background:var(--g200);color:var(--g600)}
.pub-st{font-size:10px;font-weight:700;padding:2px 7px;border-radius:10px}
.pub-st-active{background:var(--acp);color:#007a6b}
.pub-st-paused{background:#fef3c7;color:#92400e}
.pub-st-archived{background:var(--g100);color:var(--g500)}
.pub-st-other{background:var(--g100);color:var(--g500)}
.pub-obj{font-size:10px;color:var(--g500);font-style:italic}
.pub-card-roas{font-size:24px;font-weight:800;letter-spacing:-1px;line-height:1;text-align:right;flex-shrink:0}
.pub-card-roas-lbl{font-size:9px;font-weight:700;color:var(--g400);text-transform:uppercase;letter-spacing:.5px;margin-top:2px}
.pub-card-stats{display:grid;grid-template-columns:repeat(5,1fr);gap:8px;padding:10px;background:var(--g50);border-radius:8px;margin-bottom:8px}
@media(max-width:680px){.pub-card-stats{grid-template-columns:repeat(3,1fr)}}
.pub-stat{text-align:center}
.pub-stat-val{font-size:13px;font-weight:700;color:var(--bk);line-height:1}
.pub-stat-lbl{font-size:9px;color:var(--g400);text-transform:uppercase;letter-spacing:.5px;margin-top:3px;font-weight:600}
.pub-card-progress{height:5px;background:var(--g100);border-radius:3px;overflow:hidden;margin-bottom:4px}
.pub-card-progress-bar{height:100%;background:var(--ac);border-radius:3px;transition:width .3s}
.pub-card-progress-lbl{font-size:10px;color:var(--g500)}

/* ════════════════════════════════════════════════
   IMPORT CSV — Modal de drag & drop + preview
   ════════════════════════════════════════════════ */
.csv-dropzone{border:2.5px dashed var(--g300);border-radius:12px;padding:36px 20px;text-align:center;cursor:pointer;transition:all .15s;background:var(--g50)}
.csv-dropzone:hover{border-color:var(--ac);background:var(--acp)}
.csv-dz-over{border-color:var(--ac);background:var(--acp);transform:scale(1.01)}
.csv-dz-icon{font-size:42px;margin-bottom:10px}
.csv-dz-title{font-size:14px;font-weight:700;color:var(--bk);margin-bottom:5px}
.csv-dz-sub{font-size:12px;color:var(--g500)}
.csv-dz-sub a{color:var(--ac);font-weight:600;text-decoration:none}
.csv-dz-sub a:hover{text-decoration:underline}

.csv-preview-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:14px;margin-bottom:12px}
@media(max-width:640px){.csv-preview-summary{grid-template-columns:repeat(2,1fr)}}
.csv-summary-item{background:var(--g50);border-radius:8px;padding:10px}
.csv-summary-lbl{font-size:9px;font-weight:700;color:var(--g400);text-transform:uppercase;letter-spacing:.5px;margin-bottom:4px}
.csv-summary-val{font-size:15px;font-weight:800;color:var(--bk);line-height:1.2}

.csv-preview-platform{display:flex;align-items:center;gap:8px;padding:10px 12px;background:var(--wh);border:1.5px solid var(--g200);border-radius:8px;margin-bottom:12px;flex-wrap:wrap}
.csv-preview-platform label{font-size:11px;font-weight:700;color:var(--g500);text-transform:uppercase;letter-spacing:.5px}
.csv-preview-platform select{flex:1;border:1.5px solid var(--g200);border-radius:6px;padding:6px 10px;font-size:12px;font-family:'Poppins',sans-serif;outline:none;color:var(--bk);background:var(--wh);min-width:200px}

.csv-preview-table-wrap{max-height:280px;overflow-y:auto;border:1.5px solid var(--g200);border-radius:8px}
.csv-preview-table{width:100%;border-collapse:collapse;font-size:11px}
.csv-preview-table th{background:var(--g50);padding:8px 10px;font-size:9px;font-weight:700;color:var(--g400);text-transform:uppercase;letter-spacing:.5px;border-bottom:1.5px solid var(--g200);position:sticky;top:0;text-align:left}
.csv-preview-table td{padding:8px 10px;border-bottom:1px solid var(--g100);color:var(--bk)}
.csv-preview-table tr:last-child td{border-bottom:none}
.csv-tag-new{background:var(--acp);color:var(--ac2);font-size:9px;font-weight:700;padding:2px 7px;border-radius:10px;white-space:nowrap}
.csv-tag-update{background:var(--rdvp);color:var(--rdvt);font-size:9px;font-weight:700;padding:2px 7px;border-radius:10px;white-space:nowrap}

/* ════════════════════════════════════════════════
   ONGLET PUBLICITÉS — Vue globale + Graphiques
   ════════════════════════════════════════════════ */
.pubs-toolbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;flex-wrap:wrap;gap:12px}
.pubs-tabs{display:flex;gap:4px;background:var(--g100);padding:4px;border-radius:10px}
.pubs-tab{font-size:12px;font-weight:600;padding:7px 14px;border-radius:7px;background:transparent;border:none;cursor:pointer;color:var(--g600);font-family:'Poppins',sans-serif;transition:all .15s}
.pubs-tab:hover{color:var(--bk)}
.pubs-tab.on{background:var(--wh);color:var(--bk);font-weight:700;box-shadow:0 1px 3px rgba(0,0,0,.08)}
.pubs-filters{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.pubs-filter-select{font-size:11px;padding:7px 10px;border-radius:8px;border:1.5px solid var(--g200);background:var(--wh);font-family:'Poppins',sans-serif;color:var(--bk);outline:none;cursor:pointer;min-width:150px}
.pubs-filter-select:focus{border-color:var(--ac)}

/* Liste des campagnes (vue globale) */
.pubs-camp-row{display:flex;align-items:center;gap:14px;padding:11px 14px;border-bottom:1px solid var(--g100);cursor:pointer;transition:background .12s}
.pubs-camp-row:last-child{border-bottom:none}
.pubs-camp-row:hover{background:var(--acp)}
.pubs-camp-platform{width:32px;height:32px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;color:#fff;flex-shrink:0;text-transform:uppercase}
.pubs-camp-platform.meta{background:#1877f2}
.pubs-camp-platform.google{background:linear-gradient(135deg,#4285f4 0%,#fbbc04 50%,#ea4335 100%)}
.pubs-camp-platform.pinterest{background:#e60023}
.pubs-camp-platform.tiktok{background:#000}
.pubs-camp-platform.linkedin{background:#0a66c2}
.pubs-camp-platform.autre{background:var(--g500)}
.pubs-camp-info{flex:1;min-width:0}
.pubs-camp-name{font-size:13px;font-weight:600;color:var(--bk);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pubs-camp-client{font-size:10px;color:var(--g500);margin-top:1px}
.pubs-camp-sub{font-size:10px;color:var(--g400);margin-top:2px;padding:1px 0;opacity:0.8}.pubs-camp-sub-lbl{font-weight:600;color:var(--g500)}
.pubs-camp-metrics{display:flex;gap:18px;flex-shrink:0}
.pubs-camp-metric{display:flex;flex-direction:column;align-items:flex-end;min-width:62px}
.pubs-camp-metric-lbl{font-size:9px;font-weight:700;color:var(--g400);text-transform:uppercase;letter-spacing:.4px}
.pubs-camp-metric-val{font-size:13px;font-weight:700;color:var(--bk);margin-top:1px}
.pubs-camp-metric-val.roas-good{color:var(--ac)}
.pubs-camp-metric-val.roas-mid{color:var(--amber)}
.pubs-camp-metric-val.roas-bad{color:#e24b4a}.pubs-camp-gerant{display:flex;align-items:center;flex-shrink:0;padding:0 4px}.gerant-badge{font-size:10px;font-weight:600;padding:3px 8px;border-radius:20px;cursor:pointer;transition:all .2s;white-space:nowrap;user-select:none}.gerant-mistral{background:rgba(16,185,129,.12);color:#10b981;border:1px solid rgba(16,185,129,.25)}.gerant-mistral:hover{background:rgba(16,185,129,.22)}.gerant-client{background:rgba(99,102,241,.12);color:#818cf8;border:1px solid rgba(99,102,241,.25)}.gerant-client:hover{background:rgba(99,102,241,.22)}
.pubs-camp-children{font-size:9px;color:var(--g400);margin-left:4px}
/* Client group collapsible */
.pubs-client-group{border-bottom:1px solid var(--g100)}
.pubs-client-group:last-child{border-bottom:none}
.pubs-client-header{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;cursor:pointer;background:var(--bg2);transition:background .12s;user-select:none}
.pubs-client-header:hover{background:var(--acp)}
.pubs-client-header-left{display:flex;align-items:center;gap:8px}
.pubs-client-chevron{font-size:10px;color:var(--g400);transition:transform .2s;display:inline-block;width:14px}
.pubs-client-name{font-size:12px;font-weight:700;color:var(--bk)}
.pubs-client-count{font-size:10px;color:var(--g400);font-weight:400}
.pubs-client-spend{font-size:12px;font-weight:700;color:var(--ac)}
.pubs-client-body{overflow:hidden}
.pubs-client-group.collapsed .pubs-client-chevron{transform:rotate(-90deg)}
.pubs-client-group.collapsed .pubs-client-body{display:none}
/* Campagnes actives widget (dashboard) */
.camp-active-row{display:flex;align-items:center;gap:10px;padding:8px 14px;border-bottom:1px solid var(--g100);cursor:pointer;transition:background .12s}
.camp-active-row:last-child{border-bottom:none}
.camp-active-row:hover{background:var(--acp)}
.camp-active-plat{width:24px;height:24px;border-radius:6px;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:700;color:#fff;flex-shrink:0}
.camp-active-info{flex:1;min-width:0}
.camp-active-name{font-size:11px;font-weight:600;color:var(--bk);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.camp-active-client{font-size:10px;color:var(--g400);margin-top:1px}
.camp-active-metrics{display:flex;flex-direction:column;align-items:flex-end;gap:1px;flex-shrink:0}
.camp-active-spend{font-size:11px;font-weight:700;color:var(--bk)}
.camp-active-roas{font-size:10px;font-weight:600}



/* Lignes par client / plateforme (panneaux droite) */
.pubs-rank-row{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid var(--g100)}
.pubs-rank-row:last-child{border-bottom:none}
.pubs-rank-name{font-size:11px;font-weight:600;color:var(--bk);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:80px;max-width:120px}
.pubs-rank-bar-wrap{flex:1;height:6px;background:var(--g100);border-radius:3px;overflow:hidden;min-width:30px}
.pubs-rank-bar{height:100%;background:var(--ac);border-radius:3px}
.pubs-rank-val{font-size:11px;font-weight:700;color:var(--bk);min-width:60px;text-align:right;flex-shrink:0}

/* Modal détail (drill-down) */
.pub-detail-tabs{display:flex;gap:2px;border-bottom:2px solid var(--g100);margin-bottom:14px}
.pub-detail-tab{font-size:11px;font-weight:600;padding:8px 14px;background:transparent;border:none;cursor:pointer;color:var(--g500);font-family:'Poppins',sans-serif;border-bottom:2px solid transparent;margin-bottom:-2px;transition:all .12s}
.pub-detail-tab:hover{color:var(--bk)}
.pub-detail-tab.on{color:var(--ac);border-bottom-color:var(--ac);font-weight:700}

.pub-hier-list{display:flex;flex-direction:column;gap:6px}
.pub-hier-item{padding:10px 12px;background:var(--g50);border-radius:8px;border-left:3px solid var(--g200);cursor:pointer;transition:all .12s}
.pub-hier-item:hover{background:var(--wh);border-left-color:var(--ac);box-shadow:0 1px 4px rgba(0,0,0,.05)}
.pub-hier-item.level-ensemble{border-left-color:#a855f7}
.pub-hier-item.level-pub{border-left-color:#06b6d4;margin-left:18px}
.pub-hier-head{display:flex;align-items:center;justify-content:space-between;gap:8px}
.pub-hier-title{font-size:12px;font-weight:600;color:var(--bk);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}
.pub-hier-badges{display:flex;gap:4px;flex-shrink:0}
.pub-hier-badge{font-size:9px;font-weight:700;padding:2px 7px;border-radius:10px;white-space:nowrap}
.pub-hier-badge.spend{background:var(--g100);color:var(--g600)}
.pub-hier-badge.conv{background:var(--acp);color:var(--ac2)}
.pub-hier-badge.roas-good{background:#d1fae5;color:#065f46}
.pub-hier-badge.roas-mid{background:#fef3c7;color:#92400e}
.pub-hier-badge.roas-bad{background:#fee2e2;color:#991b1b}
.pub-hier-meta{display:flex;gap:14px;margin-top:6px;font-size:10px;color:var(--g500);flex-wrap:wrap}
.pub-hier-meta strong{color:var(--bk);font-weight:700}

/* Graphiques SVG */
.pubs-chart-svg{width:100%;height:auto;display:block;font-family:'Poppins',sans-serif}
.pubs-chart-empty{padding:30px;text-align:center;font-size:12px;color:var(--g400)}
.pubs-chart-legend{display:flex;flex-wrap:wrap;gap:10px;margin-top:10px;font-size:10px;color:var(--g600)}
.pubs-chart-legend-dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:4px;vertical-align:middle}
.pubs-chart-grid line{stroke:var(--g100);stroke-width:1}
.pubs-chart-axis{font-size:10px;fill:var(--g400)}
.pubs-chart-line{fill:none;stroke:var(--ac);stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.pubs-chart-area{fill:var(--acp);opacity:.6}
.pubs-chart-dot{fill:var(--ac);stroke:#fff;stroke-width:2;cursor:pointer}
.pubs-chart-dot:hover{r:6}
.pubs-pie-slice{cursor:pointer;transition:opacity .12s}
.pubs-pie-slice:hover{opacity:.8}

/* ════════════════════════════════════════════════
   AGENT IA — Bandeau permanent + Modal analyse
   ════════════════════════════════════════════════ */
.agent-banner{background:linear-gradient(135deg,#0f1c1b 0%,#1a2e2b 100%);color:#fff;border-radius:14px;padding:14px 16px;margin-bottom:14px;border:1px solid #1f3633;overflow:hidden}
.agent-banner-head{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.agent-banner-title{font-size:13px;font-weight:800;color:var(--ac);letter-spacing:-.2px}
.agent-banner-summary{flex:1;font-size:12px;color:#d4d4d0;font-weight:500;min-width:200px}
.agent-banner-deep{background:var(--ac);color:#fff;font-size:11px;font-weight:700;padding:8px 14px;border-radius:8px;border:none;cursor:pointer;font-family:'Poppins',sans-serif;white-space:nowrap;transition:all .15s}
.agent-banner-deep:hover{background:var(--wh);color:var(--ac2);transform:translateY(-1px)}
.agent-banner-alerts{display:grid;grid-template-columns:1fr 1fr;gap:4px 8px;margin-top:12px}
.agent-banner-alerts:empty{margin-top:0}
.agent-alert-item{display:flex;align-items:center;gap:10px;padding:6px 9px;border-radius:7px;font-size:11px;background:rgba(255,255,255,.04);border-left:3px solid var(--g400);min-width:0;overflow:hidden}
.agent-alert-item.critique{border-left-color:#ef4444;background:rgba(239,68,68,.08)}
.agent-alert-item.attention{border-left-color:#f59e0b;background:rgba(245,158,11,.08)}
.agent-alert-item.positif{border-left-color:#10b981;background:rgba(16,185,129,.08)}
.agent-alert-item.info{border-left-color:#06b6d4;background:rgba(6,182,212,.08)}
.agent-alert-icon{font-size:14px;flex-shrink:0}
.agent-alert-text{flex:1;color:#e8e8e3;line-height:1.4;min-width:0}
.agent-alert-text strong{color:#fff;font-weight:700}
.agent-alert-context{font-size:9px;color:#888;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.agent-alert-action{background:transparent;color:var(--ac);border:1px solid #1f3633;font-size:10px;font-weight:600;padding:4px 9px;border-radius:6px;cursor:pointer;font-family:'Poppins',sans-serif;white-space:nowrap;flex-shrink:0}
.agent-alert-action:hover{border-color:var(--ac);background:rgba(0,194,169,.12)}
.agent-alert-empty{padding:18px;text-align:center;color:#888;font-size:11px;font-style:italic}
.agent-banner-loading{display:flex;align-items:center;gap:8px;color:#888;font-size:11px;padding:6px 0}
.agent-banner-loading::before{content:'';width:10px;height:10px;border:2px solid #444;border-top-color:var(--ac);border-radius:50%;animation:agent-spin 0.8s linear infinite}
@keyframes agent-spin{to{transform:rotate(360deg)}}

/* Modal Analyse approfondie */
.agent-scope-btn{font-size:11px;font-weight:600;padding:6px 12px;border-radius:8px;background:transparent;border:1.5px solid var(--g200);cursor:pointer;color:var(--g600);font-family:'Poppins',sans-serif;transition:all .12s}
.agent-scope-btn:hover{border-color:var(--ac);color:var(--ac)}
.agent-scope-btn.on{background:var(--bk);border-color:var(--bk);color:#fff}

.agent-section{margin-bottom:16px}
.agent-section-head{display:flex;align-items:center;gap:8px;margin-bottom:10px;padding-bottom:8px;border-bottom:1.5px solid var(--g100)}
.agent-section-icon{font-size:18px}
.agent-section-title{font-size:13px;font-weight:800;color:var(--bk);letter-spacing:-.2px}
.agent-section-count{font-size:11px;font-weight:700;padding:2px 8px;border-radius:10px;margin-left:auto}
.agent-section-count.critique{background:#fee2e2;color:#991b1b}
.agent-section-count.attention{background:#fef3c7;color:#92400e}
.agent-section-count.positif{background:#d1fae5;color:#065f46}
.agent-section-count.info{background:#cffafe;color:#0e7490}

.agent-card{background:var(--wh);border:1.5px solid var(--g200);border-radius:10px;padding:14px;margin-bottom:8px;transition:all .12s}
.agent-card:hover{border-color:var(--g300);box-shadow:0 2px 8px rgba(0,0,0,.04)}
.agent-card.critique{border-left:4px solid #ef4444}
.agent-card.attention{border-left:4px solid #f59e0b}
.agent-card.positif{border-left:4px solid #10b981}
.agent-card.info{border-left:4px solid #06b6d4}

.agent-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:8px}
.agent-card-titre{font-size:13px;font-weight:700;color:var(--bk);line-height:1.3}
.agent-card-niveau{font-size:9px;font-weight:700;padding:3px 8px;border-radius:10px;text-transform:uppercase;letter-spacing:.4px;flex-shrink:0;white-space:nowrap}
.agent-card-niveau.critique{background:#fee2e2;color:#991b1b}
.agent-card-niveau.attention{background:#fef3c7;color:#92400e}
.agent-card-niveau.positif{background:#d1fae5;color:#065f46}
.agent-card-niveau.info{background:#cffafe;color:#0e7490}

.agent-card-context{font-size:10px;color:var(--g500);margin-bottom:10px;font-weight:500}
.agent-card-context strong{color:var(--bk);font-weight:700}

.agent-card-block{display:flex;gap:8px;font-size:11px;line-height:1.5;margin-bottom:6px;color:var(--g600)}
.agent-card-block-icon{flex-shrink:0;font-size:14px;width:18px;text-align:center}
.agent-card-block-text{flex:1;color:var(--bk)}
.agent-card-block-text strong{color:var(--bk);font-weight:700}

.agent-card-actions{display:flex;gap:6px;margin-top:10px;flex-wrap:wrap}
.agent-card-btn{font-size:10px;font-weight:600;padding:5px 10px;border-radius:6px;background:var(--g50);border:1.5px solid var(--g200);cursor:pointer;color:var(--g600);font-family:'Poppins',sans-serif;transition:all .12s}
.agent-card-btn:hover{border-color:var(--ac);color:var(--ac);background:var(--acp)}
.agent-card-btn.primary{background:var(--ac);color:#fff;border-color:var(--ac)}
.agent-card-btn.primary:hover{background:var(--ac2);color:#fff}

.agent-card-trend{display:inline-flex;align-items:center;gap:5px;font-size:10px;font-weight:600;padding:3px 8px;border-radius:6px;background:var(--g50);color:var(--g600)}
.agent-card-trend.up{color:#dc2626;background:#fee2e2}
.agent-card-trend.down{color:#16a34a;background:#d1fae5}

.agent-empty-state{padding:30px;text-align:center;color:var(--g400)}
.agent-empty-icon{font-size:36px;margin-bottom:10px}
.agent-empty-title{font-size:13px;font-weight:700;color:var(--bk);margin-bottom:4px}
.agent-empty-msg{font-size:11px;color:var(--g500);line-height:1.5}

/* ════════════════════════════════════════════════
   SITES WEB — Cartes site + scores
   ════════════════════════════════════════════════ */
.site-row{display:grid;grid-template-columns:auto 1fr auto auto auto auto;gap:14px;align-items:center;padding:12px 14px;border-bottom:1px solid var(--g100);cursor:pointer;transition:background .12s}
.site-row:last-child{border-bottom:none}
.site-row:hover{background:var(--acp)}
.site-favicon{width:36px;height:36px;border-radius:8px;background:var(--g100);display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:14px;color:var(--g500);overflow:hidden}
.site-favicon img{width:100%;height:100%;object-fit:cover}
.site-info{min-width:0}
.site-name{font-size:13px;font-weight:600;color:var(--bk);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.site-meta{font-size:10px;color:var(--g500);margin-top:1px}
.site-meta a{color:var(--g500);text-decoration:none}
.site-meta a:hover{color:var(--ac)}
.site-meta strong{color:var(--bk);font-weight:600}
.site-cms-badge{display:inline-block;font-size:9px;font-weight:700;padding:1px 6px;border-radius:8px;background:var(--g100);color:var(--g600);margin-left:4px}
.site-score-circle{width:50px;height:50px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:800;color:#fff;flex-shrink:0;position:relative}
.site-score-circle.score-good{background:linear-gradient(135deg,#10b981,#059669)}
.site-score-circle.score-mid{background:linear-gradient(135deg,#f59e0b,#d97706)}
.site-score-circle.score-bad{background:linear-gradient(135deg,#ef4444,#dc2626)}
.site-score-circle.score-none{background:var(--g300);color:var(--g500)}
.site-score-circle-label{position:absolute;bottom:-14px;left:50%;transform:translateX(-50%);font-size:8px;font-weight:700;color:var(--g400);text-transform:uppercase;letter-spacing:.4px;white-space:nowrap}
.site-mini-metrics{display:flex;gap:14px}
.site-mini-metric{display:flex;flex-direction:column;align-items:flex-end;min-width:60px}
.site-mini-metric-lbl{font-size:9px;font-weight:700;color:var(--g400);text-transform:uppercase;letter-spacing:.4px}
.site-mini-metric-val{font-size:12px;font-weight:700;color:var(--bk);margin-top:1px}
.site-mini-metric-val.good{color:#10b981}
.site-mini-metric-val.mid{color:#f59e0b}
.site-mini-metric-val.bad{color:#ef4444}

.site-status{display:inline-block;font-size:10px;font-weight:700;padding:3px 8px;border-radius:10px}
.site-status.actif{background:#d1fae5;color:#065f46}
.site-status.dev{background:#dbeafe;color:#1e40af}
.site-status.pause{background:#fef3c7;color:#92400e}
.site-status.archive{background:var(--g100);color:var(--g500)}

/* Modal détail site */
.site-detail-tabs{display:flex;gap:2px;border-bottom:2px solid var(--g100);margin-bottom:14px}
.site-detail-scores{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:14px}
.site-score-card{background:var(--g50);border-radius:10px;padding:12px;text-align:center}
.site-score-card-lbl{font-size:9px;font-weight:700;color:var(--g400);text-transform:uppercase;letter-spacing:.4px;margin-bottom:6px}
.site-score-card-val{font-size:24px;font-weight:800;line-height:1}
.site-score-card-val.good{color:#10b981}
.site-score-card-val.mid{color:#f59e0b}
.site-score-card-val.bad{color:#ef4444}
.site-score-card-val.none{color:var(--g300)}

.cwv-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:14px}
.cwv-card{background:var(--wh);border:1.5px solid var(--g200);border-radius:10px;padding:12px}
.cwv-card.good{border-left:4px solid #10b981}
.cwv-card.mid{border-left:4px solid #f59e0b}
.cwv-card.bad{border-left:4px solid #ef4444}
.cwv-name{font-size:10px;font-weight:700;color:var(--g500);text-transform:uppercase;letter-spacing:.4px}
.cwv-value{font-size:18px;font-weight:800;color:var(--bk);margin:4px 0}
.cwv-status{font-size:10px;color:var(--g500)}
.cwv-status.good{color:#10b981}
.cwv-status.mid{color:#f59e0b}
.cwv-status.bad{color:#ef4444}

.audit-checklist{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin-bottom:14px}
.audit-check{display:flex;align-items:center;gap:8px;padding:8px 12px;background:var(--g50);border-radius:7px;font-size:11px}
.audit-check-icon{width:18px;height:18px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:11px;color:#fff;flex-shrink:0}
.audit-check-icon.ok{background:#10b981}
.audit-check-icon.fail{background:#ef4444}
.audit-check-icon.warn{background:#f59e0b}
.audit-check-text{color:var(--bk)}
.audit-check-text strong{font-weight:700}

.audit-history-row{display:flex;align-items:center;gap:12px;padding:8px 0;border-bottom:1px solid var(--g100);font-size:11px}
.audit-history-row:last-child{border-bottom:none}
.audit-history-date{color:var(--g500);min-width:100px}
.audit-history-score{font-weight:700;color:var(--bk);min-width:40px}

/* Catégories de sites */
.site-cat-badge{display:inline-block;font-size:9px;font-weight:700;padding:2px 7px;border-radius:10px;margin-left:4px;letter-spacing:.2px}
.site-cat-badge.client{background:var(--acp);color:#007a6b}
.site-cat-badge.prospect{background:#fef3c7;color:#92400e}
.site-cat-badge.concurrent{background:#fee2e2;color:#991b1b}
.site-cat-badge.interne{background:#ede9fe;color:#5b21b6}

/* Checkbox de comparaison sur les rows */
.site-compare-check{width:20px;height:20px;border:2px solid var(--g300);border-radius:5px;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all .12s}
.site-compare-check:hover{border-color:var(--ac)}
.site-compare-check.checked{background:var(--ac);border-color:var(--ac)}
.site-compare-check.checked svg{display:block}
.site-compare-check svg{display:none;width:12px;height:12px;color:#fff}

/* Tableau comparaison side-by-side */
.compare-table{width:100%;border-collapse:collapse;font-size:11px}
.compare-table th,.compare-table td{padding:10px 12px;text-align:center;border-bottom:1px solid var(--g100)}
.compare-table th{background:var(--g50);font-weight:700;color:var(--bk);position:sticky;top:0;z-index:10}
.compare-table th.metric-name{text-align:left;background:var(--g50);font-weight:600;color:var(--g500);font-size:10px;text-transform:uppercase;letter-spacing:.4px;width:180px}
.compare-table td.metric-name{text-align:left;font-weight:600;color:var(--g600);background:var(--g50)}
.compare-table .compare-site-header{padding:14px 10px}
.compare-site-header strong{display:block;font-size:13px;font-weight:700;color:var(--bk);margin-bottom:2px}
.compare-site-header .compare-url{font-size:9px;color:var(--g400);font-weight:400;word-break:break-all}
.compare-cell{font-size:13px;font-weight:700;color:var(--bk)}
.compare-cell.winner{background:rgba(0,194,169,.12);position:relative}
.compare-cell.winner::after{content:'★';position:absolute;top:2px;right:4px;font-size:9px;color:var(--ac)}
.compare-cell.no-data{color:var(--g300);font-weight:400;font-size:10px}
.compare-cell.score-good{color:#10b981}
.compare-cell.score-mid{color:#f59e0b}
.compare-cell.score-bad{color:#ef4444}
.compare-section-row td{background:var(--g100);font-weight:700;color:var(--bk);text-align:left;font-size:10px;text-transform:uppercase;letter-spacing:.5px;padding:6px 12px}

/* ════════════════════════════════════════════════
   TOOLTIPS PÉDAGOGIQUES (rapides au survol)
   ════════════════════════════════════════════════ */
.metric-tooltip-wrap{position:relative;display:inline-block}
.metric-tooltip-wrap .metric-tooltip{
  visibility:hidden;opacity:0;
  position:absolute;bottom:calc(100% + 8px);left:50%;transform:translateX(-50%);
  background:#0f1c1b;color:#fff;font-size:11px;font-weight:500;
  padding:8px 12px;border-radius:8px;
  white-space:nowrap;pointer-events:none;
  box-shadow:0 6px 20px rgba(0,0,0,.25);
  z-index:1100;
  transition:opacity .15s
}
.metric-tooltip-wrap .metric-tooltip::after{
  content:'';position:absolute;top:100%;left:50%;transform:translateX(-50%);
  border:5px solid transparent;border-top-color:#0f1c1b
}
.metric-tooltip-wrap:hover .metric-tooltip{visibility:visible;opacity:1}
.metric-tooltip strong{color:#6ee7b7;font-weight:700}

/* Bouton ? pour explication détaillée */
.metric-help-btn{
  display:inline-flex;align-items:center;justify-content:center;
  width:16px;height:16px;border-radius:50%;
  background:var(--g200);color:var(--g600);
  font-size:10px;font-weight:700;
  cursor:pointer;border:none;font-family:'Poppins',sans-serif;
  margin-left:5px;vertical-align:middle;
  transition:all .12s
}
.metric-help-btn:hover{background:var(--ac);color:#fff;transform:scale(1.1)}

/* Popover détaillé (modal léger) */
.metric-popover-overlay{
  position:fixed;inset:0;background:rgba(15,28,27,.6);
  display:none;align-items:center;justify-content:center;
  z-index:1500;padding:20px
}
.metric-popover-overlay.open{display:flex}
.metric-popover{
  background:var(--wh);border-radius:14px;
  width:480px;max-width:100%;max-height:85vh;overflow-y:auto;
  box-shadow:0 20px 60px rgba(0,0,0,.3);
  padding:24px
}
.metric-popover-head{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:6px}
.metric-popover-title{font-size:18px;font-weight:800;color:var(--bk);line-height:1.2}
.metric-popover-subtitle{font-size:11px;color:var(--g500);margin-bottom:14px}
.metric-popover-close{background:var(--g100);border:none;border-radius:8px;width:28px;height:28px;cursor:pointer;font-size:14px;color:var(--g600);flex-shrink:0;margin-left:8px}
.metric-popover-close:hover{background:var(--g200)}
.metric-popover-section{margin-bottom:14px}
.metric-popover-section:last-child{margin-bottom:0}
.metric-popover-section-title{font-size:10px;font-weight:700;color:var(--g400);text-transform:uppercase;letter-spacing:.5px;margin-bottom:6px;display:flex;align-items:center;gap:5px}
.metric-popover-text{font-size:13px;color:var(--g600);line-height:1.5}
.metric-popover-thresholds{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-top:6px}
.metric-popover-threshold{padding:8px 10px;border-radius:8px;text-align:center;border:1.5px solid}
.metric-popover-threshold.good{background:#d1fae5;border-color:#10b981}
.metric-popover-threshold.mid{background:#fef3c7;border-color:#f59e0b}
.metric-popover-threshold.bad{background:#fee2e2;border-color:#ef4444}
.metric-popover-threshold-label{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;margin-bottom:2px}
.metric-popover-threshold-label.good{color:#065f46}
.metric-popover-threshold-label.mid{color:#92400e}
.metric-popover-threshold-label.bad{color:#991b1b}
.metric-popover-threshold-value{font-size:13px;font-weight:700;color:var(--bk)}
.metric-popover-list{list-style:none;padding:0;margin:0;font-size:13px;color:var(--g600);line-height:1.6}
.metric-popover-list li{padding-left:18px;position:relative;margin-bottom:4px}
.metric-popover-list li::before{content:'•';color:var(--ac);font-weight:700;position:absolute;left:6px}

/* ════════════════════════════════════════════════
   AGENT IA — Vue par catégorie + filtres
   ════════════════════════════════════════════════ */
.agent-filters-bar{
  display:flex;flex-wrap:wrap;gap:8px;align-items:center;
  padding:14px 16px;background:var(--g50);border-radius:10px;
  margin-bottom:16px;border:1.5px solid var(--g100)
}
.agent-filter-group{display:flex;gap:4px;align-items:center}
.agent-filter-label{font-size:10px;font-weight:700;color:var(--g500);text-transform:uppercase;letter-spacing:.4px;margin-right:4px}
.agent-filter-btn{
  font-size:11px;font-weight:600;padding:5px 10px;
  border:1.5px solid var(--g200);border-radius:7px;
  background:var(--wh);color:var(--g600);cursor:pointer;
  font-family:'Poppins',sans-serif;transition:all .12s
}
.agent-filter-btn:hover{border-color:var(--ac);color:var(--ac)}
.agent-filter-btn.on{background:var(--acp);border-color:var(--ac);color:var(--ac2)}
.agent-filter-count{
  display:inline-flex;align-items:center;justify-content:center;
  background:var(--g600);color:#fff;font-size:9px;font-weight:700;
  padding:1px 6px;border-radius:10px;margin-left:4px;min-width:18px
}
.agent-filter-btn.on .agent-filter-count{background:var(--ac);color:#fff}

/* Onglets de regroupement */
.agent-view-tabs{
  display:flex;gap:2px;margin-bottom:14px;
  border-bottom:2px solid var(--g100)
}
.agent-view-tab{
  font-size:12px;font-weight:600;padding:10px 16px;
  background:transparent;border:none;cursor:pointer;
  color:var(--g500);font-family:'Poppins',sans-serif;
  border-bottom:2px solid transparent;margin-bottom:-2px
}
.agent-view-tab:hover{color:var(--ac)}
.agent-view-tab.on{color:var(--bk);border-bottom-color:var(--ac);font-weight:700}

/* Catégories de problèmes (Perf, SEO, Sécurité…) */
.agent-cat-section{margin-bottom:18px}
.agent-cat-header{
  display:flex;align-items:center;gap:10px;
  padding:12px 14px;border-radius:10px;
  background:linear-gradient(90deg, var(--g100), transparent);
  margin-bottom:10px;cursor:pointer;
  user-select:none;transition:background .15s
}
.agent-cat-header:hover{background:linear-gradient(90deg, var(--g200), transparent)}
.agent-cat-icon{font-size:22px;flex-shrink:0}
.agent-cat-title{font-size:14px;font-weight:700;color:var(--bk);flex:1}
.agent-cat-stats{display:flex;gap:8px;align-items:center;flex-shrink:0}
.agent-cat-stat{
  font-size:10px;font-weight:700;padding:3px 8px;border-radius:10px;
  display:inline-flex;align-items:center;gap:3px
}
.agent-cat-stat.critique{background:#fee2e2;color:#991b1b}
.agent-cat-stat.attention{background:#fef3c7;color:#92400e}
.agent-cat-stat.positif{background:#d1fae5;color:#065f46}
.agent-cat-toggle{
  width:24px;height:24px;border-radius:6px;
  display:flex;align-items:center;justify-content:center;
  background:var(--g100);color:var(--g500);font-size:11px;
  transition:transform .2s
}
.agent-cat-section.collapsed .agent-cat-toggle{transform:rotate(-90deg)}
.agent-cat-content{padding-left:8px}
.agent-cat-section.collapsed .agent-cat-content{display:none}

/* Liste détaillée images sans alt */
.img-noalt-list{
  display:grid;grid-template-columns:repeat(auto-fill, minmax(280px, 1fr));
  gap:8px;max-height:400px;overflow-y:auto;
  border:1.5px solid var(--g100);border-radius:10px;padding:10px;background:var(--g50)
}
.img-noalt-item{
  display:flex;align-items:center;gap:10px;
  padding:8px;background:var(--wh);border-radius:8px;
  border:1px solid var(--g100)
}
.img-noalt-thumb{
  width:48px;height:48px;border-radius:6px;
  background:var(--g100);overflow:hidden;flex-shrink:0;
  display:flex;align-items:center;justify-content:center;
  font-size:20px;color:var(--g400)
}
.img-noalt-thumb img{width:100%;height:100%;object-fit:cover}
.img-noalt-info{flex:1;min-width:0}
.img-noalt-filename{
  font-size:11px;font-weight:600;color:var(--bk);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis
}
.img-noalt-meta{
  font-size:9px;color:var(--g500);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  margin-top:2px;font-family:monospace
}
.img-noalt-link{
  flex-shrink:0;width:24px;height:24px;
  display:flex;align-items:center;justify-content:center;
  background:var(--g100);border-radius:6px;
  color:var(--g500);text-decoration:none;font-size:12px
}
.img-noalt-link:hover{background:var(--ac);color:#fff}

/* ════════════════════════════════════════════════
   ÉCHÉANCES (renouvellements)
   ════════════════════════════════════════════════ */
.echeances-list{display:flex;flex-direction:column;gap:8px}
.echeance-row{
  display:grid;
  grid-template-columns:auto 1fr auto auto auto auto;
  gap:14px;align-items:center;
  padding:14px 16px;border-radius:10px;
  background:var(--wh);border:1.5px solid var(--g200);
  cursor:pointer;transition:all .15s;
  position:relative
}
.echeance-row:hover{border-color:var(--ac);background:var(--g50)}
.echeance-row.expired{border-left:4px solid #dc2626;background:#fef2f2}
.echeance-row.expired:hover{background:#fee2e2}
.echeance-row.critical{border-left:4px solid #ea580c;background:#fff7ed}
.echeance-row.critical:hover{background:#ffedd5}
.echeance-row.warning{border-left:4px solid #ca8a04;background:#fefce8}
.echeance-row.warning:hover{background:#fef9c3}
.echeance-row.ok{border-left:4px solid #10b981}

.echeance-icon{font-size:24px;width:36px;text-align:center;flex-shrink:0}
.echeance-main{min-width:0}
.echeance-title{font-size:13px;font-weight:700;color:var(--bk);line-height:1.3}
.echeance-type-badge{
  display:inline-block;font-size:9px;font-weight:700;
  padding:2px 7px;border-radius:8px;
  background:var(--g100);color:var(--g600);
  text-transform:uppercase;letter-spacing:.3px;
  margin-left:4px;vertical-align:middle
}
.echeance-meta{font-size:11px;color:var(--g500);margin-top:3px;line-height:1.4}

.echeance-cost{
  text-align:right;font-size:13px;font-weight:700;color:var(--bk);
  flex-shrink:0;min-width:80px
}

.echeance-auto{font-size:18px;flex-shrink:0;cursor:help}

.echeance-status{
  display:flex;flex-direction:column;align-items:center;
  flex-shrink:0;min-width:90px
}
.echeance-status-icon{font-size:18px}
.echeance-status-txt{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.3px;margin-top:2px;text-align:center}
.echeance-status.expired .echeance-status-txt{color:#dc2626}
.echeance-status.critical .echeance-status-txt{color:#ea580c}
.echeance-status.warning .echeance-status-txt{color:#ca8a04}
.echeance-status.ok .echeance-status-txt{color:#10b981}
.echeance-status.unknown .echeance-status-txt{color:var(--g400)}

.echeance-renew-btn{
  background:#10b981;color:#fff;border:none;
  padding:6px 12px;border-radius:7px;
  font-size:10px;font-weight:700;
  font-family:'Poppins',sans-serif;cursor:pointer;
  flex-shrink:0;white-space:nowrap;
  transition:background .12s
}
.echeance-renew-btn:hover{background:#059669}

/* ════════════════════════════════════════════════
   SEO — Module SE Ranking
   ════════════════════════════════════════════════ */
.seo-subtabs{display:flex;gap:6px;margin-bottom:14px;border-bottom:1.5px solid var(--g200)}
.seo-subtab{
  background:transparent;border:none;
  padding:9px 16px;font-size:12px;font-weight:600;
  color:var(--g500);cursor:pointer;
  border-bottom:2.5px solid transparent;
  font-family:'Poppins',sans-serif;
  margin-bottom:-1.5px;transition:all .12s
}
.seo-subtab:hover{color:var(--bk)}
.seo-subtab.on{color:var(--ac);border-bottom-color:var(--ac)}

.seo-distrib{margin-bottom:18px;background:var(--g50);border-radius:10px;padding:14px}
.seo-distrib-title{font-size:11px;font-weight:700;color:var(--g500);text-transform:uppercase;letter-spacing:.5px;margin-bottom:10px}
.seo-bars{display:flex;flex-direction:column;gap:6px}
.seo-bar{display:grid;grid-template-columns:90px 1fr 50px;gap:10px;align-items:center}
.seo-bar-lbl{font-size:11px;font-weight:600;color:var(--g600)}
.seo-bar-track{height:8px;background:var(--g200);border-radius:4px;overflow:hidden}
.seo-bar-fill{height:100%;border-radius:4px;transition:width .4s}
.seo-bar-fill.teal{background:var(--ac)}
.seo-bar-fill.amber{background:#f59e0b}
.seo-bar-fill.red{background:#dc2626}
.seo-bar-val{font-size:12px;font-weight:700;color:var(--bk);text-align:right}

.seo-section{margin-bottom:18px}
.seo-section-title{font-size:13px;font-weight:700;color:var(--bk);margin-bottom:8px;display:flex;align-items:center;gap:6px}
.seo-section-meta{font-size:10px;font-weight:500;color:var(--g500);margin-left:6px}

.seo-table{width:100%;border-collapse:collapse;background:var(--wh);border:1px solid var(--g200);border-radius:8px;overflow:hidden;font-size:11px}
.seo-table thead{background:var(--g50)}
.seo-table th{padding:8px 12px;text-align:left;font-size:10px;font-weight:700;color:var(--g500);text-transform:uppercase;letter-spacing:.4px;border-bottom:1.5px solid var(--g200)}
.seo-table td{padding:9px 12px;border-bottom:1px solid var(--g100);vertical-align:middle}
.seo-table tbody tr:last-child td{border-bottom:none}
.seo-table tbody tr:hover{background:var(--acp)}

.kw-name{font-weight:600;color:var(--bk);max-width:260px}
.kw-pos{display:inline-block;padding:3px 9px;border-radius:6px;font-weight:700;font-size:11px;min-width:42px;text-align:center}
.kw-pos.pos-top3{background:#d1fae5;color:#065f46}
.kw-pos.pos-top10{background:var(--acp);color:var(--ac2)}
.kw-pos.pos-top30{background:#fef3c7;color:#92400e}
.kw-pos.pos-low{background:#fef2f2;color:#991b1b}
.kw-pos.pos-na{background:var(--g100);color:var(--g400)}

.kw-var{font-weight:700;font-size:11px}
.kw-var.var-up{color:#10b981}
.kw-var.var-down{color:#dc2626}
.kw-var.var-zero{color:var(--g400)}

.kw-vol,.kw-cpc,.kw-diff{font-weight:600;color:var(--bk);font-variant-numeric:tabular-nums}

/* Modal liaison projets SE Ranking */
.seranking-projects-grid{
  display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));
  gap:10px
}
.seranking-project-card{
  background:var(--wh);border:1.5px solid var(--g200);border-radius:10px;
  padding:12px 14px;cursor:pointer;transition:all .15s
}
.seranking-project-card:hover{border-color:var(--ac);transform:translateY(-1px);box-shadow:0 4px 12px rgba(0,194,169,.1)}
.seranking-project-card.current{border-color:var(--ac);background:var(--acp)}
.seranking-project-title{font-size:12px;font-weight:700;color:var(--bk);margin-bottom:3px;line-height:1.3}
.seranking-project-url{font-size:10px;color:var(--g500);margin-bottom:6px;word-break:break-all}
.seranking-project-meta{display:flex;justify-content:space-between;align-items:center;font-size:11px;color:var(--g600)}

/* ════════════════════════════════════════════════
   OPPORTUNITÉS SEO (modale globale)
   ════════════════════════════════════════════════ */
.opp-section{margin-bottom:24px}
.opp-section-head{margin-bottom:10px}
.opp-section-title{font-size:14px;font-weight:800;color:var(--bk);margin-bottom:3px}
.opp-section-subtitle{font-size:11px;color:var(--g500)}
.opp-table tbody tr{cursor:pointer}
.opp-cat-badge{
  display:inline-block;font-size:9px;font-weight:700;
  padding:2px 7px;border-radius:8px;margin-left:6px;vertical-align:middle
}
.opp-cat-badge.cat-client{background:#e0f2fe;color:#0369a1}
.opp-cat-badge.cat-prospect{background:#fef3c7;color:#92400e}
.opp-cat-badge.cat-concurrent{background:#f3e8ff;color:#7e22ce}
.opp-cat-badge.cat-mine{background:var(--acp);color:var(--ac2)}

/* ─── Alignement universel des icônes inline (sprite SVG) ─── */
/* Toute icône SVG inline héritera la couleur du parent (currentColor) */
/* et sera bien alignée verticalement avec le texte adjacent */
button > svg, .btn > svg, .btn-add > svg, .btn-craft > svg, .btn-outline > svg,
.btn-save > svg, .export-btn > svg, .btn-tb-teal > svg, .btn-tb-dark > svg,
.fbtn > svg, .tab > svg, .sb-it > svg, .open-btn > svg,
.cd-action-btn > svg, .agent-banner-deep > svg, .te-quick > svg {
  vertical-align: -2px;
  flex-shrink: 0;
}
/* Espacement automatique entre icône et texte dans les boutons flex */
.btn-add, .btn-craft, .btn-outline, .btn-save, .export-btn,
.btn-tb-teal, .btn-tb-dark, .fbtn, .open-btn, .cd-action-btn,
.agent-banner-deep, .te-quick {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

::-webkit-scrollbar{width:5px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:var(--g200);border-radius:3px}

/* ════════════════════════════════════════════════════════════
   DARK MODE — REFACTOR PROPRE VIA VARIABLES CSS
   Activation : <html data-theme="dark"> ou prefers-color-scheme
   ════════════════════════════════════════════════════════════ */

[data-theme="dark"] {
  /* Inversions principales */
  --bk: #ededeb;
  --wh: #2a2a2a;
  
  /* Accent légèrement plus vif pour rester visible sur sombre */
  --ac: #00d4b8;
  --ac2: #00bfa5;
  --acp: #0f2e2a;
  
  /* Échelle de gris inversée */
  --g50: #1f1f1f;
  --g100: #262626;
  --g200: rgba(255, 255, 255, 0.10);
  --g300: rgba(255, 255, 255, 0.15);
  --g400: #737373;
  --g500: #a3a3a3;
  --g600: #d4d4d4;
  
  /* Variantes pâles → versions sombres translucides */
  --rdvp: #0f2832;
  --deadp: #2e1f0a;
  --projp: #2a1f3a;
  
  /* Tags type projet : ajustés pour fond sombre */
  --t-web-l: rgba(59, 130, 246, 0.20);   --t-web-d: #93c5fd;
  --t-graphisme-l: rgba(168, 85, 247, 0.20);  --t-graphisme-d: #d8b4fe;
  --t-marketing-l: rgba(249, 115, 22, 0.20); --t-marketing-d: #fdba74;
  --t-ads-l: rgba(234, 179, 8, 0.20);    --t-ads-d: #fde047;
  --t-rs-l: rgba(236, 72, 153, 0.20);    --t-rs-d: #f9a8d4;
  --t-infolettre-l: rgba(16, 185, 129, 0.20); --t-infolettre-d: #6ee7b7;
  --t-seo-l: rgba(14, 165, 233, 0.20);   --t-seo-d: #7dd3fc;
  --t-maintenance-l: rgba(100, 116, 139, 0.30); --t-maintenance-d: #cbd5e1;
  --t-default-l: rgba(0, 212, 184, 0.15); --t-default-d: #5eead4;
}

/* Body en dark : nouveau fond */
[data-theme="dark"] html,
[data-theme="dark"] body {
  background: #1a1a1a;
}

/* Sidebar reste dark (déjà le cas naturellement) */

/* Topbar : assume var(--wh) = #2a2a2a en dark */
/* Plus besoin d'overrides ici car .topbar utilise déjà var(--wh) ou rien */

/* Bandeaux jaunes (#fff8e6, #fff7ed) : adapter en dark */
[data-theme="dark"] .st-attente,
[data-theme="dark"] .status-envoyee,
[data-theme="dark"] .kb-interne-tag,
[data-theme="dark"] .kb-col[data-col="En attente"],
[data-theme="dark"] .sug-badge.new,
[data-theme="dark"] .gm-client-badge.unknown,
[data-theme="dark"] .alert-unmapped,
[data-theme="dark"] .echeance-row.critical {
  background: rgba(245, 158, 11, 0.10) !important;
  color: #fde68a !important;
}

[data-theme="dark"] .fac-row:hover {
  background: rgba(245, 158, 11, 0.08) !important;
}

[data-theme="dark"] .alert-unmapped:hover {
  background: rgba(245, 158, 11, 0.15) !important;
}

[data-theme="dark"] .pubs-insight-attention {
  background: rgba(245, 158, 11, 0.08) !important;
}

/* Highlight de recherche (#fff3a8) → version sombre */
[data-theme="dark"] .ss-match {
  background: rgba(254, 240, 138, 0.25) !important;
  color: #fde68a !important;
}

/* Boutons noirs (background:#111 hardcodé, intentionnel) en dark : maintenir leur style */
[data-theme="dark"] .btn-fac-invoice,
[data-theme="dark"] .btn-tb-dark {
  background: #000 !important;
  color: #fff !important;
}

/* Couleurs de texte hardcodées sombres restantes (pas attrapées par le refactor) */
[data-theme="dark"] [style*="color:#92400e"],
[data-theme="dark"] [style*="color: #92400e"] { color: #fde68a !important; }
[data-theme="dark"] [style*="color:#1e40af"] { color: #93c5fd !important; }
[data-theme="dark"] [style*="color:#065f46"] { color: #6ee7b7 !important; }
[data-theme="dark"] [style*="color:#7f1d1d"],
[data-theme="dark"] [style*="color:#991b1b"] { color: #fca5a5 !important; }
[data-theme="dark"] [style*="color:#854d0e"] { color: #fde047 !important; }
[data-theme="dark"] [style*="color:#dc2626"] { color: #f87171 !important; }
[data-theme="dark"] [style*="color:#10b981"],
[data-theme="dark"] [style*="color:#16a34a"] { color: #34d399 !important; }
[data-theme="dark"] [style*="color:#f59e0b"] { color: #fbbf24 !important; }

/* Backgrounds inline #fff hardcodés dans le JS (escaped) */
[data-theme="dark"] [style*="background:#fff"]:not([class*="kb-"]):not([class*="badge"]):not([class*="tag"]):not([class*="-st-"]),
[data-theme="dark"] [style*="background: #fff"]:not([class*="kb-"]):not([class*="badge"]):not([class*="tag"]):not([class*="-st-"]) {
  background: var(--wh) !important;
  color: var(--bk);
}

/* Bandeaux clairs dans HTML inline */
[data-theme="dark"] [style*="background:#fff8e6"],
[data-theme="dark"] [style*="background:#fff7ed"],
[data-theme="dark"] [style*="background:#fffbeb"],
[data-theme="dark"] [style*="background:#fef3c7"] {
  background: rgba(245, 158, 11, 0.10) !important;
  color: #fde68a !important;
}
[data-theme="dark"] [style*="background:#dbeafe"],
[data-theme="dark"] [style*="background:#eff6ff"] {
  background: rgba(59, 130, 246, 0.10) !important;
  color: #93c5fd !important;
}
[data-theme="dark"] [style*="background:#dcfce7"],
[data-theme="dark"] [style*="background:#d1fae5"] {
  background: rgba(16, 185, 129, 0.10) !important;
  color: #6ee7b7 !important;
}
[data-theme="dark"] [style*="background:#fee2e2"],
[data-theme="dark"] [style*="background:#fef2f2"] {
  background: rgba(220, 38, 38, 0.12) !important;
  color: #fca5a5 !important;
}
[data-theme="dark"] [style*="background:#e6faf7"],
[data-theme="dark"] [style*="background:#e8faf8"] {
  background: rgba(0, 212, 184, 0.10) !important;
  color: #5eead4 !important;
}

/* Typo : moins gras en dark */
[data-theme="dark"] strong,
[data-theme="dark"] b {
  font-weight: 600;
}
[data-theme="dark"] [style*="font-weight:800"],
[data-theme="dark"] [style*="font-weight: 800"] {
  font-weight: 700 !important;
}

/* SVG icons : héritent de currentColor donc OK automatiquement.
   Sauf les couleurs explicites sombres dans inline style */
[data-theme="dark"] svg[style*="color:#111"],
[data-theme="dark"] svg[style*="color: #111"] { color: #ededeb !important; }

/* Scrollbar dark */
[data-theme="dark"] ::-webkit-scrollbar-track { background: transparent; }
[data-theme="dark"] ::-webkit-scrollbar-thumb { background: rgba(255, 255, 255, 0.15); }
[data-theme="dark"] ::-webkit-scrollbar-thumb:hover { background: rgba(255, 255, 255, 0.25); }

/* ─── TOGGLE THEME (UI) ─── */
.theme-toggle {
  width: 56px;
  height: 28px;
  background: var(--g100);
  border: 1px solid var(--g200);
  border-radius: 14px;
  cursor: pointer;
  position: relative;
  flex-shrink: 0;
  transition: background 0.3s, border-color 0.3s;
}
.theme-toggle:hover { border-color: var(--ac); }
.theme-toggle-knob {
  position: absolute;
  top: 2px;
  left: 2px;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  background: var(--wh);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 11px;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.15);
  transition: all 0.32s cubic-bezier(0.16, 1, 0.3, 1);
}
[data-theme="dark"] .theme-toggle-knob {
  transform: translateX(28px);
  background: #0a0a0a;
}
[data-theme="dark"] .theme-toggle {
  background: rgba(255, 255, 255, 0.08);
  border-color: rgba(255, 255, 255, 0.15);
}
.theme-toggle-knob svg {
  width: 13px;
  height: 13px;
}

/* ─── PRINT : désactiver dark si impression ─── */
@media print {
  [data-theme="dark"] {
    --bk: #111;
    --wh: #fff;
  }
}

/* ════════════════════════════════════════════════════════════
   AJUSTEMENTS FINAUX DARK MODE
   - Colonnes Kanban : versions sombres translucides
   - Puces des Checks : plus vives
   - Items Agenda violet : plus lumineux
   ════════════════════════════════════════════════════════════ */

/* ─── KANBAN : couleurs des colonnes en dark ─── */
[data-theme="dark"] .kb-col[data-col="Nouveau"] {
  background: rgba(168, 85, 247, 0.10) !important;
}
[data-theme="dark"] .kb-col[data-col="En cours"] {
  background: rgba(0, 212, 184, 0.08) !important;
}
[data-theme="dark"] .kb-col[data-col="En révision"] {
  background: rgba(220, 38, 38, 0.10) !important;
}
[data-theme="dark"] .kb-col[data-col="Prog"] {
  background: rgba(147, 51, 234, 0.10) !important;
}
[data-theme="dark"] .kb-col[data-col="Print"] {
  background: rgba(61, 228, 232, 0.08) !important;
}
[data-theme="dark"] .kb-col[data-col="Terminé"] {
  background: rgba(22, 163, 74, 0.10) !important;
}
[data-theme="dark"] .kb-col[data-col="Facturé"] {
  background: rgba(255, 255, 255, 0.04) !important;
}
/* En attente : déjà géré plus haut avec le bandeau jaune */

/* Cards Kanban : assurer fond sombre opaque pour bien ressortir sur les colonnes translucides */
[data-theme="dark"] .kb-card {
  background: #2a2a2a !important;
}

/* Puces colorées (kb-col-dot) : assurer leur visibilité */
[data-theme="dark"] .kb-col-dot {
  filter: brightness(1.1);
}

/* ─── CHECKS : puces plus vives ─── */
/* Les puces vertes / amber des checks doivent être plus marquées */
[data-theme="dark"] .check-row .check-dot,
[data-theme="dark"] .check-row [class*="dot"]:not(.kb-col-dot):not(.gcal-dot):not(.sync-dot),
[data-theme="dark"] .audit-row .audit-dot,
[data-theme="dark"] [class*="check"] [class*="-dot"]:not(.kb-col-dot) {
  width: 14px !important;
  height: 14px !important;
  filter: brightness(1.15) saturate(1.1);
}

/* Si les puces sont en background-color hardcodé dans inline style */
[data-theme="dark"] [style*="background:#10b981"],
[data-theme="dark"] [style*="background: #10b981"],
[data-theme="dark"] [style*="background:#16a34a"],
[data-theme="dark"] [style*="background: #16a34a"] {
  background: #34d399 !important;
}
[data-theme="dark"] [style*="background:#f59e0b"]:not(.kb-col-dot),
[data-theme="dark"] [style*="background: #f59e0b"]:not(.kb-col-dot) {
  background: #fbbf24 !important;
}
[data-theme="dark"] [style*="background:#dc2626"],
[data-theme="dark"] [style*="background: #dc2626"],
[data-theme="dark"] [style*="background:#ef4444"] {
  background: #f87171 !important;
}

/* ─── AGENDA : item violet (Projet calendrier) trop foncé ─── */
/* Augmenter la luminosité du violet en dark */
[data-theme="dark"] .ag-item.projet,
[data-theme="dark"] .agenda-item.projet,
[data-theme="dark"] .ag-item.calendrier,
[data-theme="dark"] .agenda-item.calendrier,
[data-theme="dark"] [style*="background:var(--projp)"],
[data-theme="dark"] [style*="background: var(--projp)"] {
  background: rgba(168, 85, 247, 0.20) !important;
  border-left: 3px solid #c084fc !important;
  color: #e9d5ff !important;
}

/* Texte heure dans items violets : plus lisible */
[data-theme="dark"] .ag-item.projet .ag-time,
[data-theme="dark"] .agenda-item.projet .agenda-time {
  color: #d8b4fe !important;
}

/* Variable --projp en dark : plus lumineux */
[data-theme="dark"] {
  --projp: rgba(168, 85, 247, 0.20);
  --projt: #d8b4fe;
}

/* RDV (cyan) : améliorer aussi */
[data-theme="dark"] .ag-item.rdv,
[data-theme="dark"] .agenda-item.rdv,
[data-theme="dark"] [style*="background:var(--rdvp)"] {
  background: rgba(61, 228, 232, 0.15) !important;
  border-left: 3px solid #67e8f9 !important;
  color: #cffafe !important;
}

/* Tâche (teal) */
[data-theme="dark"] .ag-item.tache,
[data-theme="dark"] .agenda-item.tache {
  background: rgba(0, 212, 184, 0.15) !important;
  border-left: 3px solid var(--ac) !important;
  color: #99f6e4 !important;
}

/* Deadline (rouge/amber) */
[data-theme="dark"] .ag-item.deadline,
[data-theme="dark"] .agenda-item.deadline,
[data-theme="dark"] [style*="background:var(--deadp)"] {
  background: rgba(245, 158, 11, 0.15) !important;
  border-left: 3px solid #fbbf24 !important;
  color: #fde68a !important;
}

/* ─── DERNIERS AJUSTEMENTS DARK MODE ─── */

/* Sous-totaux feuille de temps : background:#faf7ff inline (rose/lavande pâle) → version sombre */
[data-theme="dark"] [style*="background:#faf7ff"],
[data-theme="dark"] [style*="background: #faf7ff"] {
  background: rgba(168, 85, 247, 0.08) !important;
}

/* Color violet inline (--projt) sur sous-totaux : plus visible en dark */
[data-theme="dark"] .ft-subtotal-projet td[style*="color:var(--projt)"],
[data-theme="dark"] [style*="color:var(--projt)"] {
  color: #d8b4fe !important;
}

/* Sous-total client (couleur teal) : déjà OK car --ac/--ac2 sont vifs en dark */
/* On s'assure juste de la lisibilité */
[data-theme="dark"] .ft-subtotal td {
  background: rgba(0, 212, 184, 0.06) !important;
}

/* Bandes de sous-total générales */
[data-theme="dark"] .subtotal-row td {
  background: rgba(255, 255, 255, 0.03) !important;
}

/* ─── ICÔNES CHECKS — booster visibilité ─── */
/* Les puces colorées dans les checks (HTTPS, SSL, etc.) doivent être bien lumineuses */
[data-theme="dark"] .check-row > div:first-child,
[data-theme="dark"] .check-item > div:first-child {
  filter: brightness(1.2) saturate(1.15);
}

/* Si l'icône check est un span/div coloré rond */
[data-theme="dark"] .check-icon,
[data-theme="dark"] .audit-check-icon,
[data-theme="dark"] [class*="check-icon"] {
  box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.06);
}

/* ─── FIX FINAL : icônes DANS les cercles colorés des Checks ─── */
/* L'icône SVG doit être blanche, peu importe sa couleur originale,
   car elle est sur un cercle coloré (vert/ambre/rouge) */

/* Mode clair ET dark : forcer l'icône SVG en blanc dans les cercles audit-check-icon */
.audit-check-icon svg,
.audit-check-icon svg * {
  color: #fff !important;
  stroke: #fff !important;
}

/* Sécurité : forcer aussi sur les fills si le SVG en utilise */
.audit-check-icon svg path,
.audit-check-icon svg circle,
.audit-check-icon svg line,
.audit-check-icon svg polyline {
  stroke: #fff !important;
}

/* Pour les cas où icon() utilise fill au lieu de stroke */
.audit-check-icon svg [fill]:not([fill="none"]) {
  fill: #fff !important;
}

/* ════════════════════════════════════════════════════════════
   GLASS / MESH / LAYOUT FLOTTANT
   ════════════════════════════════════════════════════════════ */

/* ─── MESH COLORÉ EN FOND (style iOS 16) ─── */
[data-theme="dark"] body {
  position: relative;
  overflow-x: hidden;
}

[data-theme="dark"] body::before {
  content: '';
  position: fixed;
  inset: 0;
  background: 
    radial-gradient(ellipse 50% 35% at 15% 20%, rgba(0, 212, 184, 0.18), transparent 50%),
    radial-gradient(ellipse 40% 30% at 85% 25%, rgba(99, 102, 241, 0.15), transparent 50%),
    radial-gradient(ellipse 45% 35% at 75% 75%, rgba(168, 85, 247, 0.15), transparent 50%),
    radial-gradient(ellipse 40% 30% at 20% 85%, rgba(0, 212, 184, 0.12), transparent 50%),
    radial-gradient(ellipse 35% 25% at 50% 50%, rgba(56, 189, 248, 0.10), transparent 50%);
  background-size: 100% 100%;
  pointer-events: none;
  z-index: 0;
  animation: mesh-drift 28s ease-in-out infinite;
}

@keyframes mesh-drift {
  0%, 100% {
    background-position: 0% 0%, 100% 0%, 100% 100%, 0% 100%, 50% 50%;
  }
  25% {
    background-position: 5% 8%, 92% 5%, 95% 95%, 8% 92%, 55% 48%;
  }
  50% {
    background-position: 8% 12%, 88% 12%, 92% 88%, 12% 88%, 48% 52%;
  }
  75% {
    background-position: 4% 4%, 96% 8%, 96% 92%, 4% 96%, 52% 50%;
  }
}

/* Le mesh doit rester en arrière-plan, le contenu au-dessus */
[data-theme="dark"] .app {
  position: relative;
  z-index: 1;
  background: transparent !important;
}

/* En mode clair, mesh très subtil teal */
body::before {
  content: '';
  position: fixed;
  inset: 0;
  background: 
    radial-gradient(ellipse 60% 40% at 20% 20%, rgba(0, 194, 169, 0.04), transparent 50%),
    radial-gradient(ellipse 50% 35% at 80% 80%, rgba(0, 194, 169, 0.03), transparent 50%);
  pointer-events: none;
  z-index: 0;
}
.app {
  position: relative;
  z-index: 1;
}

/* ─── LAYOUT FLOTTANT — sidebar + topbar avec marges et arrondis ─── */
.app {
  padding: 14px;
  gap: 14px;
  background: transparent;
}

.sb {
  border-radius: 16px;
  height: calc(100vh - 28px);
  overflow: hidden;
}

[data-theme="dark"] .sb {
  background: rgba(20, 20, 20, 0.55);
  backdrop-filter: blur(24px) saturate(1.2);
  -webkit-backdrop-filter: blur(24px) saturate(1.2);
  border: 1px solid rgba(255, 255, 255, 0.08);
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4);
}

.tb {
  border-radius: 14px;
  margin: 0;
  background: rgba(255, 255, 255, 0.65) !important;
  backdrop-filter: blur(20px) saturate(1.5);
  -webkit-backdrop-filter: blur(20px) saturate(1.5);
  border: 1px solid rgba(0, 0, 0, 0.04);
  box-shadow: 0 2px 12px rgba(0, 0, 0, 0.03);
}

[data-theme="dark"] .tb {
  background: rgba(28, 28, 28, 0.55) !important;
  backdrop-filter: blur(20px) saturate(1.2);
  -webkit-backdrop-filter: blur(20px) saturate(1.2);
  border: 1px solid rgba(255, 255, 255, 0.08);
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.25);
}

/* La VRAIE classe topbar (pas .tb) — fix layout flottant */
.topbar {
  border-radius: 14px !important;
  border: 1px solid rgba(0, 0, 0, 0.04) !important;
  border-bottom: 1px solid rgba(0, 0, 0, 0.04) !important;
  background: rgba(255, 255, 255, 0.65) !important;
  backdrop-filter: blur(20px) saturate(1.5);
  -webkit-backdrop-filter: blur(20px) saturate(1.5);
  box-shadow: 0 2px 12px rgba(0, 0, 0, 0.03);
  margin: 0 !important;
}

[data-theme="dark"] .topbar {
  background: rgba(28, 28, 28, 0.55) !important;
  backdrop-filter: blur(20px) saturate(1.2);
  -webkit-backdrop-filter: blur(20px) saturate(1.2);
  border: 1px solid rgba(255, 255, 255, 0.08) !important;
  border-bottom: 1px solid rgba(255, 255, 255, 0.08) !important;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.25);
}

/* En mode clair : light glass sur sidebar */
.sb {
  background: rgba(255, 255, 255, 0.65);
  backdrop-filter: blur(24px) saturate(1.5);
  -webkit-backdrop-filter: blur(24px) saturate(1.5);
  border: 1px solid rgba(0, 0, 0, 0.06);
  box-shadow: 0 4px 24px rgba(0, 0, 0, 0.04);
}

/* La sidebar en clair garde son fond noir d'origine pour cohérence avec la marque */
.sb {
  background: var(--bk) !important;
  backdrop-filter: none;
  -webkit-backdrop-filter: none;
}

[data-theme="dark"] .sb {
  background: rgba(20, 20, 20, 0.55) !important;
  backdrop-filter: blur(24px) saturate(1.2);
  -webkit-backdrop-filter: blur(24px) saturate(1.2);
}

/* Content area : pas de border-radius car il est dans le scroll */
.content {
  border-radius: 14px;
  overflow-y: auto;
  background: transparent;
}

/* ─── GLASS EFFECT — Modal Liaison GSC (échantillon) ─── */
/* Capture par ID ou par classe spécifique */
#modal-gsc-link .modal-content,
.modal-gsc .modal-content,
[data-glass="true"] .modal-content {
  background: rgba(255, 255, 255, 0.75);
  backdrop-filter: blur(40px) saturate(1.8);
  -webkit-backdrop-filter: blur(40px) saturate(1.8);
  border: 1px solid rgba(255, 255, 255, 0.5);
  box-shadow: 
    0 20px 60px rgba(0, 0, 0, 0.15),
    inset 0 1px 0 rgba(255, 255, 255, 0.5);
}

[data-theme="dark"] #modal-gsc-link .modal-content,
[data-theme="dark"] .modal-gsc .modal-content,
[data-theme="dark"] [data-glass="true"] .modal-content {
  background: rgba(40, 40, 42, 0.55);
  backdrop-filter: blur(40px) saturate(1.8);
  -webkit-backdrop-filter: blur(40px) saturate(1.8);
  border: 1px solid rgba(255, 255, 255, 0.10);
  box-shadow: 
    0 20px 60px rgba(0, 0, 0, 0.5),
    inset 0 1px 0 rgba(255, 255, 255, 0.08);
}

/* Overlay des modals plus subtil quand le modal est en glass */
#modal-gsc-link.modal-overlay,
.modal-gsc.modal-overlay {
  background: rgba(0, 0, 0, 0.3);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
}

[data-theme="dark"] #modal-gsc-link.modal-overlay,
[data-theme="dark"] .modal-gsc.modal-overlay {
  background: rgba(0, 0, 0, 0.6);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
}

/* ─── HAUTEUR DU CONTENT pour matcher le layout flottant ─── */
html, body {
  height: 100vh;
  overflow: hidden;
}
.app {
  height: 100vh;
  box-sizing: border-box;
}

/* Performance : limiter le mesh sur mobiles */
@media (max-width: 768px) {
  body::before,
  [data-theme="dark"] body::before {
    animation: none;
  }
}

/* ════════════════════════════════════════════════════════════
   FIX & AMÉLIORATIONS — pubs / SEO interactif
   ════════════════════════════════════════════════════════════ */

/* ─── PUBS : axes du graphique plus lisibles en dark ─── */
[data-theme="dark"] .pubs-chart-axis {
  fill: #a3a3a3 !important;
  font-size: 11px !important;
}

/* En clair : aussi améliorer */
.pubs-chart-axis {
  fill: var(--g500);
  font-size: 11px;
}

/* ─── SEO : KPI cards cliquables ─── */
.seo-kpi-clickable {
  cursor: pointer;
  transition: all 0.15s;
}
.seo-kpi-clickable:hover {
  transform: translateY(-1px);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
  border-color: var(--ac);
}
[data-theme="dark"] .seo-kpi-clickable:hover {
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4);
  background: rgba(0, 212, 184, 0.06) !important;
}

/* ─── SEO : barres de distribution cliquables ─── */
.seo-bar-clickable {
  cursor: pointer;
  padding: 6px 8px;
  border-radius: 8px;
  transition: background 0.15s;
}
.seo-bar-clickable:hover {
  background: var(--g50);
}
[data-theme="dark"] .seo-bar-clickable:hover {
  background: rgba(0, 212, 184, 0.06);
}

/* ─── SEO : "Tout voir →" lien dans les sections ─── */
.seo-section-link {
  background: transparent;
  border: 1px solid var(--g200);
  color: var(--ac2);
  font-size: 10px;
  font-weight: 700;
  padding: 4px 10px;
  border-radius: 7px;
  cursor: pointer;
  font-family: 'Poppins', sans-serif;
  margin-left: auto;
  transition: all 0.15s;
}
.seo-section-link:hover {
  background: var(--ac);
  color: #fff;
  border-color: var(--ac);
}
.seo-section-title {
  display: flex;
  align-items: center;
  gap: 8px;
}

/* ─── SEO : filter bar + pills ─── */
.seo-filter-bar {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 16px;
  padding: 10px 12px;
  background: var(--g50);
  border-radius: 10px;
}
[data-theme="dark"] .seo-filter-bar {
  background: rgba(255, 255, 255, 0.03);
  border: 1px solid rgba(255, 255, 255, 0.06);
}

.seo-filter-lbl {
  font-size: 11px;
  font-weight: 700;
  color: var(--g500);
  text-transform: uppercase;
  letter-spacing: 0.5px;
  margin-right: 4px;
}

.seo-filter-pill {
  font-size: 11px;
  font-weight: 600;
  padding: 5px 11px;
  border-radius: 16px;
  background: transparent;
  border: 1.5px solid var(--g200);
  color: var(--bk);
  cursor: pointer;
  font-family: 'Poppins', sans-serif;
  transition: all 0.15s;
}
.seo-filter-pill:hover {
  border-color: var(--ac);
  color: var(--ac2);
}
.seo-filter-pill.on {
  background: var(--ac);
  border-color: var(--ac);
  color: #fff;
}
[data-theme="dark"] .seo-filter-pill {
  border-color: rgba(255, 255, 255, 0.12);
}
[data-theme="dark"] .seo-filter-pill:hover {
  border-color: var(--ac);
  background: rgba(0, 212, 184, 0.10);
}

.seo-filter-count {
  margin-left: auto;
  font-size: 11px;
  font-weight: 600;
  color: var(--g500);
  background: var(--wh);
  padding: 4px 10px;
  border-radius: 6px;
  border: 1px solid var(--g200);
}
[data-theme="dark"] .seo-filter-count {
  background: rgba(255, 255, 255, 0.05);
  border-color: rgba(255, 255, 255, 0.10);
}

/* ════════════════════════════════════════════════════════════
   ICÔNES FLÈCHES KPI (style stat cards modernes)
   Cercle pastel à gauche du chiffre + flèche colorée au centre
   ════════════════════════════════════════════════════════════ */

/* Layout en row : icône + value côte à côte */
.t-card {
  position: relative;
}

/* Le wrapper qui contient icone + chiffre */
.t-card-row {
  display: flex;
  align-items: center;
  gap: 12px;
}

/* Cercle pastel à gauche */
.t-arrow-icon {
  width: 32px;
  height: 32px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}

/* Variantes par couleur — fond pastel + flèche couleur saturée */
.t-arrow-icon.up.teal,
.t-arrow-icon.teal {
  background: rgba(0, 194, 169, 0.12);
}
.t-arrow-icon.up.purple,
.t-arrow-icon.purple {
  background: rgba(99, 102, 241, 0.13);
}
.t-arrow-icon.up.amber,
.t-arrow-icon.amber {
  background: rgba(245, 158, 11, 0.14);
}
.t-arrow-icon.up.red,
.t-arrow-icon.red {
  background: rgba(220, 38, 38, 0.12);
}
.t-arrow-icon.up.blue,
.t-arrow-icon.blue {
  background: rgba(59, 130, 246, 0.12);
}
.t-arrow-icon.up.green,
.t-arrow-icon.green {
  background: rgba(16, 185, 129, 0.13);
}

/* Mode dark : cercle un peu plus opaque */
[data-theme="dark"] .t-arrow-icon.teal { background: rgba(0, 212, 184, 0.18); }
[data-theme="dark"] .t-arrow-icon.purple { background: rgba(168, 85, 247, 0.20); }
[data-theme="dark"] .t-arrow-icon.amber { background: rgba(245, 158, 11, 0.18); }
[data-theme="dark"] .t-arrow-icon.red { background: rgba(220, 38, 38, 0.18); }
[data-theme="dark"] .t-arrow-icon.blue { background: rgba(99, 153, 246, 0.20); }
[data-theme="dark"] .t-arrow-icon.green { background: rgba(52, 211, 153, 0.18); }

/* La flèche SVG : couleur saturée selon variante */
.t-arrow-icon svg {
  width: 14px;
  height: 14px;
  stroke-width: 2.4;
}
.t-arrow-icon.teal svg { color: #00c2a9; stroke: #00c2a9; }
.t-arrow-icon.purple svg { color: #6366f1; stroke: #6366f1; }
.t-arrow-icon.amber svg { color: #f59e0b; stroke: #f59e0b; }
.t-arrow-icon.red svg { color: #dc2626; stroke: #dc2626; }
.t-arrow-icon.blue svg { color: #3b82f6; stroke: #3b82f6; }
.t-arrow-icon.green svg { color: #10b981; stroke: #10b981; }

[data-theme="dark"] .t-arrow-icon.teal svg { color: #2dd4bf; stroke: #2dd4bf; }
[data-theme="dark"] .t-arrow-icon.purple svg { color: #a78bfa; stroke: #a78bfa; }
[data-theme="dark"] .t-arrow-icon.amber svg { color: #fbbf24; stroke: #fbbf24; }
[data-theme="dark"] .t-arrow-icon.red svg { color: #f87171; stroke: #f87171; }
[data-theme="dark"] .t-arrow-icon.blue svg { color: #60a5fa; stroke: #60a5fa; }
[data-theme="dark"] .t-arrow-icon.green svg { color: #34d399; stroke: #34d399; }

/* Variante DOWN : flèche descendante (pour KPIs en baisse) */
.t-arrow-icon.down svg {
  transform: rotate(180deg);
}

/* Variante NEUTRAL : flèche horizontale (pas de tendance) */
.t-arrow-icon.neutral svg {
  transform: rotate(90deg);
  opacity: 0.7;
}

/* Le t-val dans la nouvelle structure : taille préservée */
.t-card-row .t-val {
  font-size: 30px;
  font-weight: 800;
  letter-spacing: -1.5px;
  line-height: 1;
}


/* ════════════════════════════════════════════════════════════
   META ADS — Banner de statut
   ════════════════════════════════════════════════════════════ */

.meta-banner {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 14px 18px;
  border-radius: 12px;
  border: 1.5px solid;
  margin-bottom: 14px;
  flex-wrap: wrap;
}

.meta-banner-icon {
  font-size: 28px;
  flex-shrink: 0;
}

.meta-banner-text {
  flex: 1;
  min-width: 200px;
}

.meta-banner-text strong {
  display: block;
  font-size: 14px;
  margin-bottom: 3px;
  color: var(--bk);
}

.meta-banner-sub {
  font-size: 11.5px;
  color: var(--g500);
  line-height: 1.5;
}

.meta-banner-sub code {
  background: var(--g100);
  padding: 1px 6px;
  border-radius: 4px;
  font-size: 10px;
  font-family: 'Menlo', 'Monaco', monospace;
}

[data-theme="dark"] .meta-banner-sub code {
  background: rgba(255, 255, 255, 0.06);
  color: #fde68a;
}

/* Variantes */
.meta-banner-warn {
  background: rgba(245, 158, 11, 0.08);
  border-color: rgba(245, 158, 11, 0.30);
}

.meta-banner-info {
  background: rgba(59, 130, 246, 0.06);
  border-color: rgba(59, 130, 246, 0.25);
}

.meta-banner-ok {
  background: rgba(0, 194, 169, 0.06);
  border-color: rgba(0, 194, 169, 0.30);
}

[data-theme="dark"] .meta-banner-warn {
  background: rgba(245, 158, 11, 0.12);
  border-color: rgba(245, 158, 11, 0.35);
}

[data-theme="dark"] .meta-banner-info {
  background: rgba(99, 153, 246, 0.10);
  border-color: rgba(99, 153, 246, 0.30);
}

[data-theme="dark"] .meta-banner-ok {
  background: rgba(0, 212, 184, 0.10);
  border-color: rgba(0, 212, 184, 0.35);
}


/* ─── FIX modal OpenSRS Import : cards opaques en dark ─── */

/* Le modal lui-même : opaque, pas glass (pour bonne lisibilité) */
#modal-opensrs-import .modal-content {
  background: var(--wh) !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
}

[data-theme="dark"] #modal-opensrs-import .modal-content {
  background: #2a2a2a !important;
  border: 1px solid rgba(255, 255, 255, 0.10) !important;
}

/* Rangées : fond opaque (pas de glass) */
.opensrs-row {
  background: var(--wh) !important;
}

[data-theme="dark"] .opensrs-row {
  background: #333 !important;
  border-color: rgba(255, 255, 255, 0.08) !important;
}

[data-theme="dark"] .opensrs-row.opensrs-row-matched {
  background: rgba(0, 212, 184, 0.06) !important;
  border-color: rgba(0, 212, 184, 0.20) !important;
}

[data-theme="dark"] .opensrs-row.opensrs-row-exists {
  background: rgba(115, 115, 115, 0.08) !important;
  opacity: 0.7;
}

[data-theme="dark"] .opensrs-row.opensrs-row-unmatched {
  background: rgba(245, 158, 11, 0.05) !important;
  border-color: rgba(245, 158, 11, 0.15) !important;
}

/* Pickers (modals secondaires pour choisir site/client) : opaques */
.modal-overlay[style*="z-index:1200"] .modal-content,
.modal-overlay[style*="z-index: 1200"] .modal-content {
  background: var(--wh) !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
}

[data-theme="dark"] .modal-overlay[style*="z-index:1200"] .modal-content,
[data-theme="dark"] .modal-overlay[style*="z-index: 1200"] .modal-content {
  background: #2a2a2a !important;
  border: 1px solid rgba(255, 255, 255, 0.10) !important;
}

/* Items dans la liste du picker */
[data-theme="dark"] #opensrs-sites-list > div,
[data-theme="dark"] #opensrs-clients-list > div {
  background: #2a2a2a;
  border-bottom-color: rgba(255, 255, 255, 0.05) !important;
}
[data-theme="dark"] #opensrs-sites-list > div:hover,
[data-theme="dark"] #opensrs-clients-list > div:hover {
  background: rgba(0, 212, 184, 0.08) !important;
}

/* Header KPI bar du modal OpenSRS */
[data-theme="dark"] #opensrs-import-content > div:first-child {
  background: rgba(255, 255, 255, 0.03) !important;
  border-color: rgba(255, 255, 255, 0.08) !important;
}

/* Footer (sticky) : doit être opaque pour pas voir au travers en scrollant */
#opensrs-import-content > div[style*="position:sticky"],
#opensrs-import-content > div[style*="sticky"] {
  background: var(--wh) !important;
}
[data-theme="dark"] #opensrs-import-content > div[style*="sticky"] {
  background: #2a2a2a !important;
  border-top-color: rgba(255, 255, 255, 0.10) !important;
}

/* Pareil pour le modal GSC Liaison */
#modal-gsc-link .modal-content {
  background: var(--wh) !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
}
[data-theme="dark"] #modal-gsc-link .modal-content {
  background: #2a2a2a !important;
  border: 1px solid rgba(255, 255, 255, 0.10) !important;
}



/* ============================================================
   MODULE RAPPORTS — Styles pour l'onglet Rapports du CRM
   ============================================================ */

.rap-wrap { max-width: 1100px; }

.rap-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  margin-bottom: 24px;
}

.rap-title {
  font-size: 22px;
  font-weight: 700;
  color: var(--bk);
  display: flex;
  align-items: center;
}

.rap-subtitle {
  font-size: 13px;
  color: var(--g500);
  margin-top: 4px;
}

.rap-filters {
  display: flex;
  gap: 12px;
  margin-bottom: 20px;
}

.rap-select {
  padding: 8px 12px;
  border: 1.5px solid var(--g200);
  border-radius: 8px;
  font-size: 13px;
  font-family: Poppins, sans-serif;
  background: var(--wh);
  color: var(--bk);
  outline: none;
  min-width: 200px;
}

.rap-select:focus { border-color: var(--ac); }

.rap-empty {
  text-align: center;
  padding: 60px 20px;
  color: var(--g400);
}
.rap-empty p { margin-top: 12px; font-size: 14px; }

.rap-table {
  width: 100%;
  border-collapse: collapse;
  background: var(--wh);
  border-radius: 12px;
  overflow: hidden;
  border: 1.5px solid var(--g200);
}

.rap-table th {
  background: var(--g50);
  padding: 10px 16px;
  text-align: left;
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.5px;
  color: var(--g500);
  border-bottom: 1.5px solid var(--g200);
}

.rap-table td {
  padding: 12px 16px;
  font-size: 13px;
  border-bottom: 1px solid var(--g100);
  color: var(--bk);
}

.rap-table tr:last-child td { border-bottom: none; }
.rap-table tr:hover td { background: var(--acp); }

.rap-client-name { font-weight: 600; }

.rap-badge-type {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 3px 8px;
  border-radius: 20px;
  font-size: 11px;
  font-weight: 600;
  background: var(--g100);
  color: var(--g600);
}

.rap-url-link {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  color: var(--ac);
  text-decoration: none;
  font-size: 12px;
  font-weight: 600;
}
.rap-url-link:hover { text-decoration: underline; }

.rap-btn-del {
  background: none;
  border: none;
  cursor: pointer;
  color: var(--g400);
  padding: 4px;
  border-radius: 6px;
  display: flex;
  align-items: center;
}
.rap-btn-del:hover { background: rgba(239,68,68,.1); color: #ef4444; }

/* Modal rapports */
.rap-type-btns {
  display: flex;
  gap: 10px;
  margin-top: 4px;
}

.rap-type-btn {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 10px 16px;
  border: 1.5px solid var(--g200);
  border-radius: 10px;
  background: var(--wh);
  font-family: Poppins, sans-serif;
  font-size: 13px;
  font-weight: 500;
  cursor: pointer;
  color: var(--bk);
  transition: 0.15s;
}

.rap-type-btn.active {
  border-color: var(--ac);
  background: var(--acp);
  color: var(--ac2);
  font-weight: 600;
}

.rap-type-btn:disabled {
  opacity: 0.5;
  cursor: not-allowed;
}

.rap-soon {
  font-size: 9px;
  background: var(--g200);
  color: var(--g500);
  padding: 2px 5px;
  border-radius: 4px;
  text-transform: uppercase;
  letter-spacing: 0.5px;
}

.rap-status {
  padding: 12px 16px;
  border-radius: 10px;
  font-size: 13px;
  display: flex;
  align-items: center;
  gap: 8px;
  margin-top: 4px;
}

.rap-loading { background: var(--acp); color: var(--ac2); }
.rap-success { background: rgba(0, 212, 184, 0.1); color: var(--ac2); }
.rap-warning { background: rgba(245, 158, 11, 0.1); color: #92400e; }
.rap-error { background: rgba(239, 68, 68, 0.1); color: #991b1b; }

@keyframes spin { to { transform: rotate(360deg); } }
.rap-spinner {
  display: inline-block;
  width: 14px;
  height: 14px;
  border: 2px solid rgba(0, 212, 184, .3);
  border-top-color: var(--ac);
  border-radius: 50%;
  animation: spin 0.8s linear infinite;
  flex-shrink: 0;
}

[data-theme="dark"] .rap-table { background: var(--wh); border-color: var(--g200); }
[data-theme="dark"] .rap-table th { background: var(--g50); }
[data-theme="dark"] .rap-select { background: var(--wh); border-color: var(--g200); color: var(--bk); }


/* ═══════════════════════════════════════════════════
   DASHBOARD REDESIGN — Layout & Widgets
═══════════════════════════════════════════════════ */

/* Layout principal 3 zones */
.dash-grid-new{display:grid;grid-template-columns:1fr 320px;gap:14px;align-items:start}
.dash-col-main{display:flex;flex-direction:column;gap:14px}
.dash-col-side{display:flex;flex-direction:column;gap:14px}
.dash-widget{overflow:hidden}
.ph-link{font-size:10px;color:var(--ac);font-weight:600;text-decoration:none;margin-left:auto;opacity:.8;transition:opacity .15s}
.ph-link:hover{opacity:1}

/* ── Projets actifs ─────────────────────────────── */
.dp-list{display:flex;flex-direction:column;gap:0}
.dp-row{display:flex;align-items:center;gap:10px;padding:9px 16px;border-bottom:1px solid var(--g50);border-left:3px solid transparent;transition:background .12s}
.dp-row:last-child{border-bottom:none}
.dp-row:hover{background:var(--g50)}
.dp-overdue{border-left-color:#ef4444;background:rgba(239,68,68,.04)}
.dp-urgent{border-left-color:#f97316}
.dp-today{border-left-color:#eab308}
.dp-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.dp-client{font-size:9px;font-weight:700;color:var(--g400);text-transform:uppercase;letter-spacing:.4px}
.dp-nom{font-size:12px;font-weight:600;color:var(--bk);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dp-prog-wrap{display:flex;align-items:center;gap:6px;width:100px;flex-shrink:0}
.dp-prog-bar{flex:1;height:5px;background:var(--g100);border-radius:3px;overflow:hidden}
.dp-prog-fill{height:100%;background:var(--ac);border-radius:3px;transition:width .3s}
.dp-prog-pct{font-size:10px;color:var(--g400);font-weight:600;flex-shrink:0;width:30px;text-align:right}
.dp-meta{display:flex;align-items:center;gap:6px;flex-shrink:0}
.dp-statut{font-size:9px;font-weight:700;padding:2px 7px;border-radius:10px;white-space:nowrap}
.dp-statut-en-cours{background:#dcfce7;color:#15803d}
.dp-statut-en-r-vision{background:#fef3c7;color:#92400e}
.dp-statut-en-attente{background:#e0f2fe;color:#0369a1}
.dp-statut-nouveau{background:var(--acp);color:var(--ac)}
.dp-days{font-size:10px;font-weight:700;padding:2px 7px;border-radius:8px;white-space:nowrap;flex-shrink:0}
.dp-days.overdue{background:#fee2e2;color:#dc2626}
.dp-days.today{background:#fef9c3;color:#b45309}
.dp-days.urgent{background:#fff7ed;color:#c2410c}
.dp-days.ok{background:var(--g100);color:var(--g500)}

/* ── Campagnes ads ──────────────────────────────── */
.dc-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px;padding:12px 16px}
.dc-card{background:var(--g50);border-radius:10px;padding:12px;border:1px solid var(--g100);transition:border-color .15s;position:relative;border-left:3px solid var(--g200)}
.dc-card:hover{border-color:var(--g300)}
.dc-alert-high{border-left-color:#ef4444;background:rgba(239,68,68,.04)}
.dc-alert-med{border-left-color:#f97316}
.dc-card-top{display:flex;align-items:center;gap:6px;margin-bottom:6px}
.dc-plat{font-size:9px;font-weight:700;padding:2px 7px;border-radius:6px;flex-shrink:0}
.dc-plat-meta{background:#e7f3ff;color:#1877f2}
.dc-plat-google{background:#fce8e6;color:#ea4335}
.dc-plat-autre{background:var(--g100);color:var(--g600)}
.dc-client{font-size:9px;font-weight:700;color:var(--g400);text-transform:uppercase;letter-spacing:.3px;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dc-alert-badge{font-size:12px;flex-shrink:0}
.dc-nom{font-size:11px;font-weight:600;color:var(--bk);margin-bottom:8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dc-stats{display:flex;gap:10px;margin-bottom:8px;flex-wrap:wrap}
.dc-stat{display:flex;flex-direction:column;gap:1px}
.dc-stat-val{font-size:13px;font-weight:700;color:var(--bk)}
.dc-roas{color:#10b981}
.dc-stat-lbl{font-size:9px;color:var(--g400);font-weight:500}
.dc-budget-bar-wrap{display:flex;align-items:center;gap:6px}
.dc-budget-bar{flex:1;height:4px;background:var(--g200);border-radius:2px;overflow:hidden}
.dc-budget-fill{height:100%;border-radius:2px}
.dc-budget-fill-meta{background:#1877f2}
.dc-budget-fill-google{background:#ea4335}
.dc-budget-fill-autre{background:var(--ac)}
.dc-budget-pct{font-size:9px;color:var(--g400);font-weight:600;white-space:nowrap}

/* ── Sites & SEO ────────────────────────────────── */
.ds-list{display:flex;flex-direction:column;padding:4px 0}
.ds-row{display:flex;align-items:center;gap:10px;padding:8px 16px;border-bottom:1px solid var(--g50);transition:background .12s}
.ds-row:last-child{border-bottom:none}
.ds-row:hover{background:var(--g50)}
.ds-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.ds-client{font-size:9px;font-weight:700;color:var(--g400);text-transform:uppercase;letter-spacing:.3px}
.ds-nom{font-size:11px;font-weight:500;color:var(--bk);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ds-score{width:36px;height:36px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;flex-shrink:0}
.ds-good{background:#dcfce7;color:#15803d}
.ds-ok{background:#fef3c7;color:#92400e}
.ds-warn{background:#fee2e2;color:#dc2626}
.ds-na{background:var(--g100);color:var(--g400)}

/* Responsive: single column on small screens */
@media (max-width: 900px) {
  .dash-grid-new{grid-template-columns:1fr}
}
