:root{--ribbon-bg:#1a237e;--ribbon-bar-bg:#e8eaf6;--accent:#1565C0;--accent-light:#42a5f5;--danger:#c62828;--success:#2e7d32;--weekend-bg:#f5f5f5;--border:#e0e0e0;--txt:#212121;--txt2:#757575;--sidebar-w:260px;--shadow:0 1px 3px rgba(0,0,0,.12);--shadow2:0 2px 8px rgba(0,0,0,.15)}
*{box-sizing:border-box}
.req-star{color:#c62828;font-weight:700;font-size:14px}
.del-agence-btn,.del-catmat-btn,.del-unite-btn{background:#ffebee;border:1px solid #ef9a9a;color:#c62828;border-radius:4px;cursor:pointer;padding:2px 8px;font-size:11px;font-weight:600}
html,body{margin:0;padding:0;height:100%;font-family:'Segoe UI',Tahoma,sans-serif;font-size:13px;color:var(--txt);overflow:hidden;background:#f0f2f5}
:not(#slide-out):not(nav) .hidden{display:none}

#slide-out.sidenav {
    z-index: 1000;
}

/* RIBBON */
#ribbon{position:fixed;top:0;left:0;right:0;z-index:996;background:var(--ribbon-bg);box-shadow:var(--shadow2)}
.ribbon-tabs{display:flex;padding:0 8px;gap:2px}
.ribbon-tab{border:none;background:0;color:rgba(255,255,255,.7);padding:5px 11px;font-size:10px;font-weight:500;cursor:pointer;display:flex;align-items:center;gap:4px;border-radius:4px 4px 0 0;transition:.2s;text-transform:uppercase;letter-spacing:.4px}
.ribbon-tab i{font-size:14px}
.ribbon-tab:hover{background:rgba(255,255,255,.1);color:#fff}
.ribbon-tab.active{background:var(--ribbon-bar-bg);color:var(--ribbon-bg)}
.ribbon-bar{background:var(--ribbon-bar-bg);display:flex;align-items:center;padding:10px 10px 4px;gap:6px;min-height:36px;border-bottom:1px solid var(--border)}
.rg{display:flex;align-items:center;gap:3px;padding:3px 7px;border:1px solid #c5cae9;border-radius:4px;position:relative}
.rg:last-child{border:1px solid #c5cae9}
/* Groupes sans label (bouton d'action isolé) : pas de cadre pour rester compact */
.rg:not(:has(>.rg-label)){border:none;padding:0;background:transparent}
.rg-label{position:absolute;top:-7px;left:6px;background:var(--ribbon-bar-bg);padding:0 5px;font-size:8px;font-weight:700;color:#1a237e;text-transform:uppercase;letter-spacing:.5px;line-height:1;white-space:nowrap}
.pr-period-input{width:46px;height:28px!important;border:1px solid #cfd8dc!important;border-radius:4px!important;padding:0 4px 0 6px!important;font-size:12px!important;font-weight:700!important;color:#1a237e!important;background:#fff!important;box-shadow:none!important;margin:0 2px 0 0!important;text-align:center;-moz-appearance:textfield;appearance:textfield}
.pr-period-input:focus{border-color:#3949ab!important;box-shadow:0 0 0 2px rgba(57,73,171,.15)!important;outline:none}
.pr-period-input::-webkit-outer-spin-button,.pr-period-input::-webkit-inner-spin-button{-webkit-appearance:auto;opacity:1;height:26px}
.pr-period-suffix{font-size:10px;color:#546e7a;font-weight:600;margin-right:4px}
.rb{padding:3px 8px!important;font-size:10px!important;border-radius:3px!important;min-width:auto!important;height:auto!important;line-height:1.3!important;display:flex!important;align-items:center;gap:3px;color:#37474f!important}
.rb i{font-size:14px}
.rb:hover{background:rgba(0,0,0,.08)!important}
.rb.active{background:var(--accent)!important;color:#fff!important}
.rbp{background:var(--accent)!important;color:#fff!important;border-radius:3px!important;height:24px!important;line-height:24px!important;font-size:10px!important;padding:0 10px!important}
.rbp i{font-size:14px}
.ri{border:1px solid #bbb!important;border-radius:3px!important;padding:2px 6px!important;height:24px!important;font-size:10px!important;margin:0 3px!important;width:120px!important;background:#fff}

/* LAYOUT */
#app{position:fixed;top:80px;left:0;right:0;bottom:0;display:flex}
#sidebar{display:none!important}
#btn-open-sb{display:none!important}
#sidebar-legacy{width:var(--sidebar-w);min-width:var(--sidebar-w);background:#fafafa;border-right:1px solid var(--border);display:flex;flex-direction:column;transition:margin-left .3s,opacity .3s;overflow:hidden;z-index:100}
#sidebar:not(.open){margin-left:calc(-1*var(--sidebar-w));opacity:0;pointer-events:none}
.sb-hd{display:flex;justify-content:space-between;align-items:center;padding:8px 12px;border-bottom:1px solid var(--border);background:#fff}
.sb-hd h6{margin:0;font-size:13px;font-weight:600}
.sb-search{padding:6px 10px;border-bottom:1px solid var(--border)}
.sb-search input{border:1px solid #ddd!important;border-radius:4px!important;padding:4px 10px!important;height:30px!important;font-size:12px!important;margin:0!important;box-shadow:none!important}
.sb-sections{flex:1;overflow-y:auto;padding:4px 0}
.sb-sec-hd{padding:6px 12px;font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:.5px;color:var(--txt2);display:flex;align-items:center;gap:6px;cursor:pointer;user-select:none}
.sb-sec-hd i{font-size:16px}
.sb-sec-hd:hover{background:#eee}
.sb-item{padding:5px 10px;margin:1px 0;border-radius:4px;font-size:12px;cursor:grab;display:flex;align-items:center;gap:6px;background:#fff;border:1px solid #eee;transition:.15s;user-select:none}
.sb-item:hover{background:#e3f2fd;border-color:var(--accent-light)}
.sb-item:active{cursor:grabbing}
.sb-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}
.sb-sub{font-size:10px;color:var(--txt2);margin-left:auto}
#btn-open-sb{position:fixed;top:88px;left:4px;z-index:101;background:var(--accent)!important}
#main{flex:1;overflow:hidden;position:relative}
.tc{position:absolute;inset:0;overflow:auto}

/* TIMELINE */
#tl-container{height:100%;width:100%}
.vis-timeline{border:none!important;font-family:inherit}
.vis-item{border-radius:3px!important;border:none!important;font-size:11px!important;min-height:22px}
.vis-item .vis-item-content{padding:2px 6px!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#fff;font-weight:500;font-size:10px}
.vis-label .vis-inner{padding:4px 8px!important;font-size:11px}
.vis-labelset .vis-label{border-bottom:1px solid #eee}
.vis-time-axis .vis-grid.vis-saturday,.vis-time-axis .vis-grid.vis-sunday{background:transparent!important}
.vis-current-time{background-color:var(--danger)!important;width:2px!important}
.vis-time-axis .vis-text.vis-major{font-weight:700;font-size:12px!important;color:#1a237e}
.vis-time-axis .vis-text.vis-minor{font-size:11px!important}
/* Jours fériés */
.vis-item.vis-background.ferie-bg{background:repeating-linear-gradient(135deg,rgba(244,67,54,.07),rgba(244,67,54,.07) 4px,rgba(244,67,54,.14) 4px,rgba(244,67,54,.14) 8px)!important;border-left:2px solid rgba(244,67,54,.35)!important;border-right:none!important}
/* Jours de repos (non travaillés) */
.vis-item.vis-background.rest-bg{background:rgba(158,158,158,.12)!important;border-left:1px solid rgba(158,158,158,.2)!important;border-right:none!important}
/* Non-work day cells in tables */
.hbtbl td.nwd{background:#f5f5f5;color:#bbb}
.hbtbl th.nwd{background:#78909c!important}
.dmtx .cnwd{background:#f5f5f5}
.tl-grp{display:flex;align-items:center;gap:6px;font-size:12px}
.tl-grp .gc{width:10px;height:10px;border-radius:2px}
.tl-grp .gn{font-weight:600}
.tl-grp .gd{font-size:10px;color:var(--txt2);margin-left:auto}
.tl-usr{display:flex;align-items:center;gap:4px;font-size:11px;padding-left:12px}
.tl-usr i{font-size:14px;color:#9e9e9e}

/* CONTEXT MENU */
#ctx-menu{position:fixed;z-index:2000;background:#fff;border-radius:6px;box-shadow:0 4px 16px rgba(0,0,0,.2);min-width:180px}
#ctx-menu ul{margin:0;padding:4px 0;list-style:none}
#ctx-menu li{padding:8px 14px;cursor:pointer;display:flex;align-items:center;gap:8px;font-size:12px;transition:.15s}
#ctx-menu li:hover{background:#f5f5f5}
#ctx-menu li i{font-size:16px}

/* CHANTIER SUMMARY */
#ch-summary{padding:8px 12px 0}
.ch-summ{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-bottom:3px}
@media(max-width:900px){.ch-summ{grid-template-columns:repeat(2,1fr)}}
@media(max-width:500px){.ch-summ{grid-template-columns:1fr}}
.ch-summ-card{background:#fff;border-radius:5px;padding:6px 10px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:1px;border-left:3px solid #ccc;transition:.2s}
.ch-summ-card:hover{box-shadow:var(--shadow2)}
.ch-summ-card.cs-attente{border-left-color:#e65100}
.ch-summ-card.cs-encours{border-left-color:#2e7d32}
.ch-summ-card.cs-termine{border-left-color:#616161}
.ch-summ-card.cs-total{border-left-color:#1565C0;background:#e8eaf6}
.ch-summ-lbl{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;color:var(--txt2);display:flex;align-items:center;gap:3px}
.ch-summ-lbl i{font-size:11px}
.ch-summ-cnt{font-size:16px;font-weight:800;color:var(--txt);line-height:1.15}
.ch-summ-cnt span{font-size:10px;font-weight:400;color:var(--txt2)}
.ch-summ-ht{font-size:11px;font-weight:700;color:#2e7d32;margin-top:2px}
.ch-summ-ttc{font-size:10px;color:#666;margin-top:0}
.ch-summ-detail{font-size:10px;color:#1565c0;font-weight:600;margin-top:2px}
.ch-summ-detail span{color:#c62828}
.ch-summ-none{font-size:10px;color:#bbb;font-style:italic;margin-top:1px}

/* CHANTIER CARDS */
#ch-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:7px;padding:10px}
.ch-section{grid-column:1/-1;display:flex;align-items:center;gap:6px;padding:2px 0;margin-top:5px}
.ch-section:first-child{margin-top:0}
.ch-section h5{margin:0;font-size:11px;font-weight:700;color:#37474f}
.ch-section .ch-sec-line{flex:1;height:1px;background:#ccc}
.ch-section .ch-sec-count{font-size:9px;color:#999;background:#f5f5f5;padding:1px 7px;border-radius:8px}
.ch-card{background:#fff;border-radius:5px;box-shadow:var(--shadow);overflow:hidden;transition:.2s}
.ch-card:hover{box-shadow:var(--shadow2)}
.ch-bd-summary{padding:4px 9px;font-size:9px;color:#555;border-bottom:1px dashed #eee}
.ch-bd-summary .ch-sum-desc{color:#90a4ae;font-style:italic;margin-bottom:1px}
.ch-bd-summary .ch-sum-row{display:flex;gap:7px;flex-wrap:wrap}
.ch-bd-summary .ch-sum-item{display:flex;align-items:center;gap:3px}
.ch-bd-detail{display:none}
.ch-card.ch-open .ch-bd-detail{display:block}
.ch-toggle{display:flex;align-items:center;justify-content:center;padding:2px;cursor:pointer;font-size:9px;color:#1565c0;background:#f5f5f5;transition:.2s;gap:3px;user-select:none}
.ch-toggle:hover{background:#e3f2fd}
.ch-toggle i{font-size:13px;transition:transform .2s}
.ch-card.ch-open .ch-toggle i{transform:rotate(180deg)}
.ch-hd{padding:6px 9px;color:#fff;display:flex;justify-content:space-between;align-items:flex-start;gap:8px}
.ch-hd h6{margin:0;font-size:11px;font-weight:600;flex:1;min-width:0;line-height:1.3;word-break:break-word}
.ch-hd-right{display:flex;flex-direction:column;align-items:flex-end;gap:4px;flex-shrink:0}
.ch-hd-act{display:flex;gap:3px}
.ch-hd-act .ch-ha{width:22px;height:22px;border-radius:5px;display:inline-flex;align-items:center;justify-content:center;background:rgba(255,255,255,.18);color:rgba(255,255,255,.85);cursor:pointer;transition:all .15s;border:1px solid rgba(255,255,255,.15)}
.ch-hd-act .ch-ha:hover{background:#fff;transform:scale(1.08)}
.ch-hd-act .ch-ha i{font-size:14px}
.ch-hd-act .ch-ha.ch-ha-ed:hover{color:#37474f}
.ch-hd-act .ch-ha.ch-ha-dup:hover{color:#1565c0}
.ch-hd-act .ch-ha.ch-ha-rm:hover{color:#c62828}
.ch-statut-pill{display:inline-flex;align-items:center;gap:3px;padding:1px 7px;border-radius:8px;font-size:8px;font-weight:700;letter-spacing:.2px;text-transform:uppercase;white-space:nowrap;box-shadow:0 1px 2px rgba(0,0,0,.18)}
.ch-st-encours{background:#fff;color:#2e7d32;border:1px solid #a5d6a7}
.ch-st-attente{background:#fff;color:#e65100;border:1px solid #ffcc80}
.ch-st-termine{background:#fff;color:#616161;border:1px solid #bdbdbd}
.ch-st-absence{background:#ffc107;color:#333;border:1px solid #ffa000}
.ch-statut-pill i{font-size:10px}
/* Financial section */
.ch-finance{padding:10px 12px;margin:8px 0;background:#f9fbe7;border:1px solid #e6ee9c;border-radius:6px}
.ch-finance-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.ch-finance-row .input-field{margin:4px 0;flex:1;min-width:120px}
.ch-finance-total{display:flex;align-items:center;gap:12px;padding:8px 12px;margin-top:8px;background:#fff;border-radius:6px;border:1px solid #dcedc8;font-size:13px}
.ch-finance-total .ft-label{color:#558b2f;font-weight:600}
.ch-finance-total .ft-val{font-size:16px;font-weight:800;color:#33691e}
.av-section{margin-top:10px}
.av-list{max-height:160px;overflow-y:auto;margin:6px 0}
.av-item{display:flex;align-items:center;gap:8px;padding:6px 10px;margin:3px 0;border-radius:4px;font-size:11px;border:1px solid #eee;background:#fff}
.av-item.av-pos{border-left:3px solid #43a047}
.av-item.av-neg{border-left:3px solid #e53935}
.av-item .av-date{color:#999;min-width:70px}
.av-item .av-desc{flex:1;color:#333}
.av-item .av-amt{font-weight:700;white-space:nowrap;min-width:110px;text-align:right}
.av-item .av-amt.pos{color:#2e7d32}
.av-item .av-amt.neg{color:#c62828}
.av-item .av-col-hr,.av-item .av-col-jr{min-width:60px;text-align:center}
.av-item .av-edit{cursor:pointer;color:#1565c0;font-size:14px}
.av-item .av-edit:hover{color:#0d47a1}
.av-item .av-del{cursor:pointer;color:#bbb;font-size:14px}
.av-item .av-del:hover{color:#c62828}
.av-item.av-editing{background:#e8eaf6;border-color:#7986cb}
.av-item .av-e-date{width:120px!important;border:1px solid #c5cae9!important;border-radius:4px!important;height:26px!important;font-size:11px!important;padding:2px 4px!important;margin:0!important;box-shadow:none!important}
.av-item .av-e-desc{flex:1;border:1px solid #c5cae9!important;border-radius:4px!important;height:26px!important;font-size:11px!important;padding:2px 6px!important;margin:0!important;box-shadow:none!important;min-width:80px!important}
.av-item .av-e-mt{width:110px!important;border:1px solid #c5cae9!important;border-radius:4px!important;height:26px!important;font-size:11px!important;padding:2px 4px!important;margin:0!important;box-shadow:none!important}
.av-item .av-e-hr,.av-item .av-e-jr{width:80px!important;border:1px solid #c5cae9!important;border-radius:4px!important;height:26px!important;font-size:11px!important;padding:2px 4px!important;margin:0!important;box-shadow:none!important}
.av-item .av-save{cursor:pointer;color:#2e7d32;font-size:14px}
.av-item .av-save:hover{color:#1b5e20}
.av-item .av-cancel{cursor:pointer;color:#757575;font-size:14px}
.av-item .av-cancel:hover{color:#424242}
.av-add{display:flex;gap:6px;align-items:flex-end;margin-top:6px;flex-wrap:wrap}
.av-add input{border:1px solid #ddd!important;border-radius:4px!important;height:28px!important;font-size:11px!important;padding:2px 6px!important;margin:0!important;box-shadow:none!important}
.av-add .av-inp-date{width:110px!important}
.av-add .av-inp-mt{width:110px!important}
.av-add .av-inp-jr{width:90px!important}
.av-add .av-inp-hr{width:90px!important}
.av-add .av-inp-desc{flex:1!important;min-width:120px!important}
.av-item .av-deltas{display:inline-flex;gap:3px;margin:0 4px}
.av-item .av-delta{display:inline-block;padding:1px 6px;border-radius:8px;font-size:9px;font-weight:700;white-space:nowrap}
/* Onglets fiche chantier */
.ch-modal-tabs{display:flex;gap:2px;padding:2px;margin-bottom:10px;background:#f1f3f9;border-radius:7px}
.ch-mtab{padding:5px 10px;font-size:11px;font-weight:600;color:#607d8b;cursor:pointer;display:flex;align-items:center;gap:4px;border-radius:5px;transition:all .2s;flex:1;justify-content:center}
.ch-mtab i{font-size:14px}
.ch-mtab:hover{color:#1a237e;background:rgba(255,255,255,.7)}
.ch-mtab.active{color:#fff;background:linear-gradient(135deg,#1a237e,#3949ab);box-shadow:0 1px 3px rgba(26,35,126,.25)}
.ch-tab-content{display:none;animation:chFadeIn .2s ease}
.ch-tab-content.active{display:block}
@keyframes chFadeIn{from{opacity:0;transform:translateY(3px)}to{opacity:1;transform:none}}
@keyframes phPulse{0%,100%{box-shadow:0 3px 12px rgba(239,108,0,.35)}50%{box-shadow:0 3px 20px rgba(239,108,0,.6)}}
/* Besoin en effectif — chips filtres types ressources */
.be-tchip{border:1px solid #cfd8dc;background:#fafbfc;color:#546e7a;border-radius:18px;height:28px;padding:0 11px;font-size:11px;font-weight:600;display:inline-flex;align-items:center;gap:5px;cursor:pointer;transition:all .15s}
.be-tchip i{font-size:14px}
.be-tchip:hover{background:#fff;color:#1a237e;border-color:#5c6bc0}
.be-tchip.active{color:#fff;border-color:transparent;box-shadow:0 2px 6px rgba(0,0,0,.15)}
.be-tchip-cnt{font-size:9.5px;background:rgba(0,0,0,.08);padding:1px 6px;border-radius:9px;font-weight:700;min-width:16px;text-align:center}
.be-tchip.active .be-tchip-cnt{background:rgba(255,255,255,.22)}
.be-tchip-personnel.active{background:linear-gradient(135deg,#0d47a1,#1976d2)}
.be-tchip-interim.active{background:linear-gradient(135deg,#00695c,#00897b)}
.be-tchip-saison.active{background:linear-gradient(135deg,#33691e,#689f38)}
.be-tchip-appr.active{background:linear-gradient(135deg,#bf360c,#f57c00)}
.be-tchip-st.active{background:linear-gradient(135deg,#4527a0,#7e57c2)}
/* Besoin en effectif — projection annuelle */
.be-kpi{background:#fff;border:1px solid #eceff1;border-radius:10px;padding:10px 14px;display:flex;flex-direction:column;gap:3px;box-shadow:0 1px 3px rgba(0,0,0,.04)}
.be-kpi-lbl{font-size:10px;color:#90a4ae;text-transform:uppercase;letter-spacing:.4px;font-weight:600;display:flex;align-items:center;gap:5px}
.be-kpi-lbl i{font-size:14px;color:#5c6bc0}
.be-kpi-val{font-size:18px;font-weight:800;color:#1a237e;line-height:1.1;font-variant-numeric:tabular-nums}
.be-kpi-sub{font-size:10.5px;color:#546e7a;font-weight:600}
.be-kpi-sub.ok{color:#1b5e20}.be-kpi-sub.warn{color:#e65100}.be-kpi-sub.danger{color:#c62828}
.be-tbl{width:100%;border-collapse:separate;border-spacing:0;font-size:11.5px;background:#fff;border-radius:8px;overflow:hidden;box-shadow:0 1px 4px rgba(0,0,0,.06)}
.be-tbl thead th{background:linear-gradient(180deg,#1a237e,#3949ab);color:#fff;padding:8px 6px;font-size:10.5px;font-weight:700;text-align:center;letter-spacing:.4px;text-transform:uppercase;position:sticky;top:0;z-index:3}
.be-tbl thead th.be-th-ch{background:linear-gradient(180deg,#0d1642,#1a237e);text-align:left;width:280px;padding-left:14px;position:sticky;left:0;z-index:4}
.be-tbl thead th.be-th-tot{background:linear-gradient(180deg,#0d47a1,#1976d2);width:80px}
.be-tbl tbody td{padding:6px 4px;border-bottom:1px solid #f0f0f0;border-right:1px solid #f5f5f5;text-align:center;font-variant-numeric:tabular-nums}
.be-tbl tbody td.be-td-ch{position:sticky;left:0;z-index:2;background:#fafbfc;text-align:left;padding:8px 14px;border-right:2px solid #e8eaf6}
.be-tbl tbody tr:hover td:not(.be-td-ch){background:#fff8e1}
.be-tbl tbody tr:hover td.be-td-ch{background:#e8eaf6}
.be-ch-name{font-weight:700;color:#1a237e;font-size:12px}
.be-ch-meta{font-size:10px;color:#78909c;margin-top:2px;display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.be-ch-meta .be-pill{background:#fafbfc;border:1px solid #eceff1;border-radius:8px;padding:1px 6px;font-size:9.5px;font-weight:600;color:#546e7a}
.be-cell{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:4px 0;border-radius:4px;cursor:default}
.be-cell-val{font-size:13px;font-weight:800;line-height:1.1}
.be-cell-sub{font-size:9px;color:#78909c;margin-top:1px;font-weight:600}
.be-cell.empty{color:#cfd8dc}
.be-cell.empty .be-cell-val{color:#cfd8dc}
.be-row-tot{background:#1a237e!important;color:#fff!important;font-weight:800;font-size:13px}
.be-row-tot td{background:#1a237e!important;color:#fff!important;border-color:#0d1642!important}
.be-row-eff{background:#0d47a1!important;color:#fff!important}
.be-row-eff td{background:#0d47a1!important;color:#fff!important;border-color:#0a3680!important}
.be-row-bal td{font-weight:800;font-size:12.5px;border-bottom:2px solid #1a237e!important}
.be-row-bal td.be-bal-pos{background:#e8f5e9;color:#1b5e20}
.be-row-bal td.be-bal-warn{background:#fff3e0;color:#bf360c}
.be-row-bal td.be-bal-neg{background:#ffebee;color:#b71c1c}
.be-month-curr{background:linear-gradient(180deg,#bf360c,#e65100)!important}
.be-th-ch-curr{background:linear-gradient(180deg,#0a2351,#3949ab)!important}
/* Onglet Adéquation — chips période */
.adq-pchip{border:1px solid #cfd8dc;background:#fff;color:#546e7a;border-radius:18px;height:30px;padding:0 12px;font-size:11px;font-weight:600;display:inline-flex;align-items:center;gap:5px;cursor:pointer;transition:all .15s}
.adq-pchip i{font-size:14px}
.adq-pchip:hover{background:#fafbfc;color:#1a237e;border-color:#5c6bc0}
.adq-pchip.active{background:linear-gradient(135deg,#1a237e,#3949ab);color:#fff;border-color:transparent;box-shadow:0 2px 8px rgba(57,73,171,.25)}
/* Onglet Adéquation */
.adq-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:14px}
.adq-kpi{background:#fff;border:1px solid #eceff1;border-radius:10px;padding:10px 14px;box-shadow:0 1px 3px rgba(0,0,0,.04)}
.adq-kpi-lbl{font-size:10.5px;color:#90a4ae;text-transform:uppercase;letter-spacing:.4px;font-weight:600;margin-bottom:5px;display:flex;align-items:center;gap:5px}
.adq-kpi-lbl i{font-size:14px;color:#5c6bc0}
.adq-kpi-val{font-size:18px;font-weight:800;color:#1a237e;line-height:1.1;font-variant-numeric:tabular-nums}
.adq-kpi-sub{font-size:10.5px;color:#546e7a;margin-top:3px;font-weight:600}
.adq-kpi-sub.ok{color:#1b5e20}
.adq-kpi-sub.warn{color:#e65100}
.adq-kpi-sub.danger{color:#c62828}
.adq-card{background:#fff;border:1px solid #eceff1;border-radius:10px;margin-bottom:10px;overflow:hidden;box-shadow:0 1px 4px rgba(0,0,0,.05)}
.adq-card-hd{display:flex;align-items:center;gap:10px;padding:10px 14px;background:linear-gradient(90deg,#ede7f6,#fff);border-bottom:1px solid #eceff1}
.adq-card-num{width:28px;height:28px;border-radius:50%;background:#5e35b1;color:#fff;font-weight:700;display:flex;align-items:center;justify-content:center;font-size:12px;flex-shrink:0}
.adq-card-name{font-size:13.5px;font-weight:700;color:#1a237e;flex:1;min-width:0}
.adq-card-period{font-size:11px;color:#546e7a;font-weight:600;background:#fafbfc;padding:3px 8px;border-radius:5px;border:1px solid #eceff1;white-space:nowrap}
.adq-card-cov{display:inline-flex;align-items:center;gap:4px;padding:3px 9px;border-radius:11px;font-size:10.5px;font-weight:700;letter-spacing:.3px}
.adq-card-cov.ok{background:#e8f5e9;color:#1b5e20;border:1px solid #a5d6a7}
.adq-card-cov.warn{background:#fff3e0;color:#bf360c;border:1px solid #ffcc80}
.adq-card-cov.danger{background:#ffebee;color:#b71c1c;border:1px solid #ef9a9a}
.adq-card-cov.over{background:#e3f2fd;color:#0d47a1;border:1px solid #90caf9}
.adq-card-body{padding:12px 14px;display:grid;grid-template-columns:1fr 1fr;gap:10px}
.adq-col{background:#fafbfc;border:1px solid #eceff1;border-radius:8px;padding:10px 12px}
.adq-col-prev{border-left:4px solid #5e35b1}
.adq-col-real{border-left:4px solid #1565c0}
.adq-col-h{font-size:10.5px;font-weight:700;color:#37474f;text-transform:uppercase;letter-spacing:.4px;margin-bottom:8px;display:flex;align-items:center;gap:5px}
.adq-col-h i{font-size:15px}
.adq-col-prev .adq-col-h{color:#5e35b1}
.adq-col-real .adq-col-h{color:#1565c0}
.adq-stat{display:flex;justify-content:space-between;align-items:baseline;padding:4px 0;border-bottom:1px dashed #eceff1;font-size:12px}
.adq-stat:last-child{border-bottom:none}
.adq-stat-lbl{color:#546e7a;font-weight:600}
.adq-stat-val{color:#1a237e;font-weight:700;font-variant-numeric:tabular-nums}
.adq-bars{padding:0 14px 12px;display:flex;flex-direction:column;gap:6px}
.adq-bar{display:grid;grid-template-columns:80px 1fr 64px;gap:8px;align-items:center;font-size:11px}
.adq-bar-lbl{color:#546e7a;font-weight:600;text-align:right}
.adq-bar-track{background:#eceff1;border-radius:4px;height:8px;overflow:hidden;position:relative}
.adq-bar-fill{height:100%;border-radius:4px;background:linear-gradient(90deg,#1b5e20,#43a047);transition:width .3s}
.adq-bar-fill.warn{background:linear-gradient(90deg,#bf360c,#f57c00)}
.adq-bar-fill.danger{background:linear-gradient(90deg,#b71c1c,#e53935)}
.adq-bar-fill.over{background:linear-gradient(90deg,#0d47a1,#1976d2)}
.adq-bar-pct{font-weight:700;color:#1a237e;text-align:right;font-variant-numeric:tabular-nums}
.adq-foot{padding:8px 14px;background:#fafbfc;border-top:1px solid #eceff1;display:flex;align-items:center;gap:14px;font-size:11.5px;flex-wrap:wrap}
.adq-foot-item{display:flex;align-items:center;gap:5px}
.adq-foot-item b{font-variant-numeric:tabular-nums}
.adq-empty-resources{margin-top:6px;font-size:11px;color:#bf360c;background:#fff3e0;padding:5px 10px;border-radius:5px;border:1px solid #ffcc80;display:inline-flex;align-items:center;gap:5px}
.adq-empty-resources i{font-size:14px}
/* En-tête compact */
.m-ch-banner{display:flex;align-items:center;gap:10px;padding:8px 14px;margin:-16px -16px 10px;background:linear-gradient(135deg,#1a237e 0%,#3949ab 55%,#5c6bc0 100%);color:#fff;border-radius:0}
/* DQE — onglet Devis Quantitatif Estimatif */
.dqe-toolbar{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:12px;padding:10px;background:#f5f7fb;border-radius:6px;border:1px solid #e0e0e0}
.dqe-tranche-sel{display:flex;align-items:center;gap:8px;flex:1;min-width:300px}
.dqe-tranche-sel label{font-size:11px;font-weight:700;color:#1a237e;text-transform:uppercase;letter-spacing:.3px;margin:0}
.dqe-tranche-sel select{flex:1;border:1px solid #cfd8dc!important;border-radius:5px!important;height:30px!important;font-size:12px!important;padding:2px 8px!important;margin:0!important;box-shadow:none!important;background:#fff!important;-webkit-appearance:menulist;appearance:menulist;min-width:180px}
.dqe-tranche-sel .btn{height:30px!important;line-height:30px!important;padding:0 12px!important;font-size:11px!important;text-transform:none!important;font-weight:600!important;flex-shrink:0;white-space:nowrap;letter-spacing:0!important}
.dqe-tranche-sel .btn i{font-size:14px;line-height:30px;margin-right:4px}
.dqe-actions{display:flex;gap:6px;flex-wrap:wrap}
.dqe-actions .btn{height:28px!important;line-height:28px!important;padding:0 10px!important;font-size:11px!important;text-transform:none!important;font-weight:600!important}
.dqe-actions .btn i{font-size:14px;line-height:28px}
.dqe-totals-bar{display:flex;gap:14px;justify-content:flex-end;padding:8px 12px;background:linear-gradient(90deg,#e8eaf6,#f3e5f5);border:1px solid #c5cae9;border-radius:6px;margin-bottom:10px}
.dqe-tot{display:flex;align-items:center;gap:6px}
.dqe-tot-lbl{font-size:10px;color:#546e7a;font-weight:700;text-transform:uppercase;letter-spacing:.3px}
.dqe-tot-val{font-size:14px;font-weight:800;color:#1a237e;font-variant-numeric:tabular-nums}
.dqe-tbl{width:100%;border-collapse:separate;border-spacing:0;font-size:11px;background:#fff;border:1px solid #cfd8dc;border-radius:6px;overflow:hidden}
.dqe-tbl thead th{background:#0277bd;color:#fff;font-weight:700;padding:7px 8px;text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.3px}
.dqe-tbl thead th.num{text-align:right}
.dqe-tbl tbody tr:nth-child(even){background:#fafbfc}
.dqe-tbl tbody td{padding:5px 8px;border-bottom:1px solid #eceff1;vertical-align:middle}
.dqe-tbl tbody td.num{text-align:right;font-variant-numeric:tabular-nums}
.dqe-tbl tbody tr.dqe-cat td{background:#bbdefb!important;color:#0d47a1;font-weight:700;font-size:11px;text-transform:uppercase;letter-spacing:.3px;padding:6px 10px}
.dqe-tbl tbody tr.dqe-empty td{padding:30px;text-align:center;color:#bbb;font-style:italic}
.dqe-tbl input:not([type=checkbox]),.dqe-tbl select{border:1px solid transparent!important;border-radius:3px!important;height:24px!important;font-size:11px!important;padding:1px 4px!important;margin:0!important;box-shadow:none!important;background:transparent!important;width:100%}
.dqe-tbl input:not([type=checkbox]):focus,.dqe-tbl select:focus{border-color:#0277bd!important;background:#fff!important;outline:none}
.dqe-tbl input.num{text-align:right}
.dqe-tbl .dqe-row-del{cursor:pointer;color:#c62828;opacity:.5;transition:opacity .15s;font-size:14px}
.dqe-tbl tbody tr:hover .dqe-row-del{opacity:1}
/* Cases à cocher DQE : éléments dessinés (immunes aux overrides Materialize) */
.dqe-cb{display:inline-block;width:16px;height:16px;border:1.5px solid #607d8b;border-radius:3px;background:#fff;cursor:pointer;vertical-align:middle;transition:all .15s;position:relative;box-sizing:border-box}
.dqe-cb:hover{border-color:#0277bd;box-shadow:0 0 0 2px rgba(2,119,189,.15)}
.dqe-cb.checked{background:#0277bd;border-color:#0277bd}
.dqe-cb.checked::after{content:'';position:absolute;left:4px;top:0px;width:5px;height:10px;border-right:2px solid #fff;border-bottom:2px solid #fff;transform:rotate(45deg)}
/* Barre de sélection multi-lignes DQE */
#dqe-bulk-bar{user-select:none}
#dqe-bulk-bar .btn,#dqe-bulk-bar .btn-flat{height:28px!important;line-height:28px!important;padding:0 10px!important;font-size:11px!important;text-transform:none!important;font-weight:600!important;letter-spacing:0!important}
#dqe-bulk-bar .btn i,#dqe-bulk-bar .btn-flat i{font-size:14px;line-height:28px;margin-right:3px}
#dqe-bulk-bar button:disabled{opacity:.4;cursor:not-allowed}
#dqe-bulk-bar button:not(:disabled){cursor:pointer}
.m-ch-banner .mcb-icon{width:30px;height:30px;border-radius:7px;background:rgba(255,255,255,.18);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.m-ch-banner .mcb-icon i{font-size:18px}
.m-ch-banner h5{margin:0;font-size:15px;font-weight:700;letter-spacing:.1px;line-height:1.1}
.m-ch-banner .mcb-sub{display:none}
/* Cartes de section — compactes */
.ch-sec-card{background:#fff;border:1px solid #e8eaf0;border-radius:7px;padding:7px 10px 2px;margin-bottom:7px;box-shadow:0 1px 1px rgba(0,0,0,.02)}
.ch-sec-card.accent-primary{border-left:3px solid #3949ab}
.ch-sec-card.accent-green{border-left:3px solid #43a047}
.ch-sec-card.accent-orange{border-left:3px solid #fb8c00}
.ch-sec-card.accent-purple{border-left:3px solid #8e24aa}
.ch-sec-card.accent-teal{border-left:3px solid #00897b}
.ch-sec-head{display:flex;align-items:center;gap:6px;margin:-2px 0 10px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;color:#37474f;min-height:22px;clear:both;position:relative;z-index:2}
.m-modern .ch-sec-card>.row{clear:both;margin-top:0}
.m-modern .ch-sec-card>.row:first-of-type{margin-top:4px}
.ch-sec-head .chs-ico{width:20px;height:20px;border-radius:5px;display:inline-flex;align-items:center;justify-content:center;color:#fff;font-size:12px}
.ch-sec-head .chs-ico i{font-size:12px!important}
.ch-sec-card.accent-primary .chs-ico{background:linear-gradient(135deg,#3949ab,#5c6bc0)}
.ch-sec-card.accent-green .chs-ico{background:linear-gradient(135deg,#43a047,#66bb6a)}
.ch-sec-card.accent-orange .chs-ico{background:linear-gradient(135deg,#fb8c00,#ffa726)}
.ch-sec-card.accent-purple .chs-ico{background:linear-gradient(135deg,#8e24aa,#ab47bc)}
.ch-sec-card.accent-teal .chs-ico{background:linear-gradient(135deg,#00897b,#26a69a)}
.ch-sec-card .ch-sub-head{font-size:9px;font-weight:600;color:#607d8b;text-transform:uppercase;letter-spacing:.3px;margin:2px 0 2px}
/* Compactage global des .row dans la modale chantier */
.m-modern .row{margin-bottom:4px}
.m-modern .row:last-child{margin-bottom:0}
.m-modern .ch-sec-card .row{margin-bottom:2px}
/* On réserve de la place au-dessus de l'input pour que le label ne chevauche jamais le contenu */
.m-modern .input-field{margin:0;padding:14px 0 0;position:relative}
.m-modern .input-field>label{font-size:10px;font-weight:600;color:#607d8b;text-transform:uppercase;letter-spacing:.3px;position:absolute;top:0;left:2px;transform:none;pointer-events:none}
.m-modern .input-field>label.active,.m-modern .input-field input:focus+label,.m-modern .input-field textarea:focus+label{font-size:10px;transform:none;color:#3949ab}
/* Inputs compacts */
.m-modern .input-field input:not([type=color]):not([type=checkbox]):not([type=radio]),.m-modern .input-field textarea,.m-modern .input-field select{border:1px solid #e0e0e0!important;border-radius:5px!important;height:30px!important;padding:3px 8px!important;box-shadow:none!important;background:#fafbfc!important;font-size:12px!important;box-sizing:border-box!important;margin:0!important;transition:border-color .15s,background .15s}
.m-modern .input-field textarea{height:auto!important;min-height:30px!important;padding:5px 8px!important}
/* Multi-selects : on laisse respirer (liste de plusieurs lignes) */
.m-modern .input-field select[multiple],.m-modern .input-field select[size]{height:auto!important;min-height:62px!important;padding:2px 4px!important;overflow-y:auto!important}
.m-modern .input-field select[multiple] option,.m-modern .input-field select[size] option{padding:2px 6px;font-size:11px}
.m-modern .input-field input:focus,.m-modern .input-field textarea:focus,.m-modern .input-field select:focus{border-color:#3949ab!important;background:#fff!important;box-shadow:0 0 0 2px rgba(57,73,171,.1)!important}
.m-modern .input-field input[readonly]{background:#eef1f6!important;color:#546e7a}
.m-modern .input-field input[type=color]{border:1px solid #e0e0e0!important;border-radius:5px!important;padding:1px!important;height:30px!important;width:100%;cursor:pointer;background:#fff!important}
/* Les inputs date : éviter la superposition label / placeholder navigateur */
.m-modern .input-field input[type=date],.m-modern .input-field input[type=number]{background:#fafbfc!important}
.m-modern .input-field label{color:#607d8b}
.m-modern .input-field label.active,.m-modern .input-field input:focus+label{color:#3949ab!important}
/* Icône d'aide (tooltip natif) */
.chf-help{display:inline-flex;align-items:center;justify-content:center;width:13px;height:13px;margin-left:4px;border-radius:50%;background:#cfd8dc;color:#fff;font-size:9px;font-weight:700;font-family:'Segoe UI',sans-serif;cursor:help;vertical-align:middle;text-transform:none;letter-spacing:0;line-height:1;transition:background .15s}
.chf-help:hover{background:#3949ab}
/* Multi-select ergonomique (checkboxes + recherche + tout sélectionner) */
.ms-pick{position:relative;width:100%}
.ms-pick-hidden{display:none!important}
.ms-pick-trigger{min-height:30px;border:1px solid #e0e0e0;border-radius:5px;background:#fafbfc;padding:3px 28px 3px 6px;cursor:pointer;font-size:11px;color:#455a64;display:flex;flex-wrap:wrap;gap:3px;align-items:center;position:relative;transition:border-color .15s,background .15s}
.ms-pick-trigger:hover{border-color:#3949ab;background:#fff}
.ms-pick.open .ms-pick-trigger{border-color:#3949ab;background:#fff;box-shadow:0 0 0 2px rgba(57,73,171,.1)}
.ms-pick-trigger::after{content:'';position:absolute;right:8px;top:50%;width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent;border-top:5px solid #90a4ae;transform:translateY(-50%);transition:transform .2s}
.ms-pick.open .ms-pick-trigger::after{transform:translateY(-50%) rotate(180deg)}
.ms-pick-placeholder{color:#90a4ae;font-style:italic}
.ms-pick-chip{display:inline-flex;align-items:center;gap:3px;background:#e8eaf6;color:#1a237e;padding:1px 4px 1px 6px;border-radius:10px;font-size:10px;font-weight:600;line-height:16px}
.ms-pick-chip .mspc-x{cursor:pointer;width:14px;height:14px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:12px;color:#5c6bc0;transition:background .15s}
.ms-pick-chip .mspc-x:hover{background:rgba(26,35,126,.15);color:#c62828}
.ms-pick-summary{font-size:10px;color:#1a237e;background:#e8eaf6;padding:2px 8px;border-radius:10px;font-weight:600}
.ms-pick-panel{position:absolute;top:calc(100% + 4px);left:0;right:0;background:#fff;border:1px solid #cfd8dc;border-radius:7px;box-shadow:0 6px 18px rgba(0,0,0,.12);z-index:10000;max-height:240px;display:flex;flex-direction:column;overflow:hidden}
.ms-pick-panel.hidden{display:none}
.ms-pick-search{border:none!important;border-bottom:1px solid #e0e0e0!important;border-radius:0!important;padding:6px 10px!important;margin:0!important;height:30px!important;font-size:11px!important;box-shadow:none!important;background:#f7f8fa!important;outline:none!important;width:100%!important;box-sizing:border-box!important}
.ms-pick-search:focus{background:#fff!important;box-shadow:none!important;border-bottom-color:#3949ab!important}
.ms-pick-all{display:flex;align-items:center;gap:6px;padding:5px 10px;border-bottom:1px solid #e0e0e0;background:#fafbfc;font-size:11px;font-weight:600;color:#1a237e;cursor:pointer;user-select:none}
.ms-pick-all input{margin:0;cursor:pointer}
.ms-pick-all:hover{background:#eef1f6}
.ms-pick-list{overflow-y:auto;flex:1;max-height:170px;padding:2px 0}
.ms-pick-item{display:flex;align-items:center;gap:6px;padding:4px 10px;font-size:11px;color:#37474f;cursor:pointer;user-select:none;transition:background .1s}
.ms-pick-item:hover{background:#eef1f6}
.ms-pick-item input{margin:0;cursor:pointer}
.ms-pick-item.ms-sel{background:#e8eaf6}
.ms-pick-item.ms-sel:hover{background:#dfe3f3}
.ms-pick-empty{padding:10px;text-align:center;color:#bbb;font-size:11px;font-style:italic}
/* Modal content : padding réduit */
.m-modern .modal-content{padding:16px!important}
.m-modern h5{font-size:14px!important}
/* Footer compact */
.m-modern .modal-footer{background:#fafbfc;border-top:1px solid #e8eaf0;padding:6px 12px;min-height:auto}
.m-modern .modal-footer .btn{border-radius:5px;text-transform:none;font-weight:600;letter-spacing:.1px;box-shadow:0 1px 2px rgba(0,0,0,.1);height:30px;line-height:30px;padding:0 12px;font-size:12px}
.m-modern .modal-footer .btn i{font-size:16px;line-height:30px}
.m-modern .modal-footer .btn-flat{border-radius:5px;text-transform:none;font-weight:600;height:30px;line-height:30px;padding:0 12px;font-size:12px}
.ru-mtab{padding:5px 10px;font-size:11px;font-weight:600;color:#607d8b;cursor:pointer;display:flex;align-items:center;gap:4px;border-radius:5px;transition:all .2s;flex:1;justify-content:center}
.ru-mtab i{font-size:14px}
.ru-mtab:hover{color:#1a237e;background:rgba(255,255,255,.7)}
.ru-mtab.active{color:#fff;background:linear-gradient(135deg,#1a237e,#3949ab);box-shadow:0 1px 3px rgba(26,35,126,.25)}
.ru-tab-content{display:none;animation:chFadeIn .2s ease}
.ru-tab-content.active{display:block}
.rm-mtab{padding:5px 10px;font-size:11px;font-weight:600;color:#607d8b;cursor:pointer;display:flex;align-items:center;gap:4px;border-radius:5px;transition:all .2s;flex:1;justify-content:center}
.rm-mtab i{font-size:14px}
.rm-mtab:hover{color:#e65100;background:rgba(255,255,255,.7)}
.rm-mtab.active{color:#fff;background:linear-gradient(135deg,#e65100,#fb8c00);box-shadow:0 1px 3px rgba(230,81,0,.25)}
.rm-tab-content{display:none;animation:chFadeIn .2s ease}
.rm-tab-content.active{display:block}
.rs-mtab{padding:5px 10px;font-size:11px;font-weight:600;color:#607d8b;cursor:pointer;display:flex;align-items:center;gap:4px;border-radius:5px;transition:all .2s;flex:1;justify-content:center}
.rs-mtab i{font-size:14px}
.rs-mtab:hover{color:#ad1457;background:rgba(255,255,255,.7)}
.rs-mtab.active{color:#fff;background:linear-gradient(135deg,#ad1457,#c2185b);box-shadow:0 1px 3px rgba(173,20,87,.25)}
.rs-tab-content{display:none;animation:chFadeIn .2s ease}
.rs-tab-content.active{display:block}
.rs-contact-row{display:flex;gap:6px;align-items:center;padding:6px;background:#f5f3fa;border:1px solid #e1bee7;border-radius:5px}
.rs-contact-row input{border:1px solid #e0e0e0!important;border-radius:5px!important;height:26px!important;font-size:11px!important;padding:2px 6px!important;margin:0!important;background:#fff!important;box-shadow:none!important;border-bottom:1px solid #e0e0e0!important;outline:none!important}
.rs-contact-row input:invalid,.rs-contact-row input.invalid,.rs-contact-row input:focus:invalid{border-color:#e0e0e0!important;border-bottom-color:#e0e0e0!important;box-shadow:none!important;color:inherit!important}
.rs-contact-row input:focus{border-color:#ad1457!important;box-shadow:0 0 0 2px rgba(173,20,87,.08)!important}
/* Kill Materialize's ::after/::before indicators on contact rows */
.rs-contact-row input+span,.rs-contact-row input:after,.rs-contact-row input:before{display:none!important}
.rs-contact-row input.validate{border:1px solid #e0e0e0!important}
.rs-contact-row input.rs-c-principal{flex-shrink:0}
.rs-contact-row input.rs-c-nom{flex:1;min-width:100px}
.rs-contact-row input.rs-c-prenom{flex:1;min-width:100px}
.rs-contact-row input.rs-c-fonction{flex:1;min-width:120px}
.rs-contact-row input.rs-c-tel{width:130px}
.rs-contact-row input.rs-c-email{flex:1;min-width:140px}
.rs-contact-row .rs-c-del{cursor:pointer;color:#c62828;font-size:16px;flex-shrink:0;padding:2px 4px}
.rs-contact-row .rs-c-del:hover{color:#f44336}
.rs-justif-row{display:grid;grid-template-columns:22px 1fr 100px 100px 22px 1fr auto 22px;gap:6px;align-items:center;padding:6px 8px;border-radius:5px;margin-bottom:4px;font-size:11px;transition:background .15s}
.rs-justif-row.rs-jr-req{background:#fff8e1;border:1px solid #ffe0b2}
.rs-justif-row.rs-jr-opt{background:#f5f5f5;border:1px solid #e0e0e0}
.rs-justif-row .rs-jr-status{font-size:14px;text-align:center}
.rs-justif-row .rs-jr-name{font-weight:600;color:#37474f;line-height:1.2}
.rs-justif-row .rs-jr-name small{display:block;font-size:9px;color:#90a4ae;font-weight:400;margin-top:1px}
.rs-justif-row input[type=date],.rs-justif-row input[type=text]{border:1px solid #e0e0e0!important;border-radius:5px!important;height:26px!important;font-size:10px!important;padding:2px 6px!important;margin:0!important;background:#fff!important;box-shadow:none!important;width:100%!important;box-sizing:border-box!important}
.rs-justif-row .rs-jr-file{cursor:pointer;background:#1565c0;color:#fff;border:none;border-radius:5px;padding:3px 8px;font-size:10px;font-weight:600;white-space:nowrap;display:flex;align-items:center;gap:3px}
.rs-justif-row .rs-jr-file:hover{background:#0d47a1}
.rs-justif-row .rs-jr-file-has{background:#2e7d32}
.rs-justif-row .rs-jr-rm{cursor:pointer;color:#c62828;font-size:14px;padding:0 2px}
.rs-justif-row .rs-jr-rm:hover{color:#f44336}
/* Phase list */
.ch-phase-item{display:flex;align-items:center;gap:8px;padding:8px 12px;margin:4px 0;border-radius:4px;font-size:11px;background:#fff;border:1px solid #e0e0e0;flex-wrap:wrap}
.ch-phase-item .ph-num{color:#999;font-weight:700;min-width:20px}
.ch-phase-item .ph-name{font-weight:600;color:#1a237e;min-width:120px}
.ch-phase-item .ph-dates{color:#333;min-width:170px}
.ch-phase-item .ph-dur{color:#558b2f;font-weight:600;min-width:60px}
.ch-phase-item .ph-dep{font-size:10px;color:#e65100;font-weight:600}
.ch-phase-item .ph-users{flex:1;color:#555;font-size:10px}
.ch-phase-item .ph-edit{cursor:pointer;color:#1565c0;font-size:14px}
.ch-phase-item .ph-edit:hover{color:#0d47a1}
.ch-phase-item .ph-del{cursor:pointer;color:#bbb;font-size:14px}
.ch-phase-item .ph-del:hover{color:#c62828}
.ch-phase-item.ph-editing{background:#e8eaf6;border-color:#7986cb}
.ch-phase-item .ph-e-inp{border:1px solid #c5cae9!important;border-radius:4px!important;height:26px!important;font-size:11px!important;padding:2px 6px!important;margin:0!important;box-shadow:none!important}
.ch-phase-item .ph-e-name{flex:1;min-width:120px!important}
.ch-phase-item .ph-e-date{width:130px!important}
.ch-phase-item .ph-save{cursor:pointer;color:#2e7d32;font-size:14px}
.ch-phase-item .ph-save:hover{color:#1b5e20}
.ch-phase-item .ph-cancel{cursor:pointer;color:#757575;font-size:14px}
.ch-phase-item .ph-cancel:hover{color:#424242}
.ph-add-section{display:flex;gap:6px;align-items:flex-end;flex-wrap:wrap;margin-top:10px;padding:10px 12px;background:#e8eaf6;border:1px solid #c5cae9;border-radius:6px}
.ph-add-section input,.ph-add-section select{border:1px solid #ddd!important;border-radius:4px!important;height:28px!important;font-size:11px!important;padding:2px 6px!important;margin:0!important;box-shadow:none!important}
.ph-add-section .ph-a-name{flex:1;min-width:140px!important}
.ph-add-section .ph-a-date{width:130px!important}
/* Jalons */
.jalon-section{margin-top:10px;padding:10px 12px;background:#e8eaf6;border:1px solid #c5cae9;border-radius:6px}
.jalon-list{max-height:150px;overflow-y:auto;margin:6px 0}
.jalon-item{display:flex;align-items:center;gap:6px;padding:5px 10px;margin:3px 0;border-radius:4px;font-size:11px;background:#fff;border:1px solid #e0e0e0}
.jalon-item .j-date{color:#1a237e;font-weight:600;min-width:80px}
.jalon-item .j-name{flex:1;color:#333}
.jalon-item .j-edit{cursor:pointer;color:#1565c0;font-size:14px}
.jalon-item .j-edit:hover{color:#0d47a1}
.jalon-item .j-del{cursor:pointer;color:#bbb;font-size:14px}
.jalon-item .j-del:hover{color:#c62828}
.jalon-item.j-editing{background:#e8eaf6;border-color:#7986cb}
.jalon-item .j-edit-date{width:120px!important;border:1px solid #c5cae9!important;border-radius:4px!important;height:26px!important;font-size:11px!important;padding:2px 4px!important;margin:0!important;box-shadow:none!important}
.jalon-item .j-edit-name{flex:1;border:1px solid #c5cae9!important;border-radius:4px!important;height:26px!important;font-size:11px!important;padding:2px 6px!important;margin:0!important;box-shadow:none!important;min-width:100px!important}
.jalon-item .j-save{cursor:pointer;color:#2e7d32;font-size:14px}
.jalon-item .j-save:hover{color:#1b5e20}
.jalon-item .j-cancel{cursor:pointer;color:#757575;font-size:14px}
.jalon-item .j-cancel:hover{color:#424242}
.jalon-add{display:flex;gap:6px;align-items:flex-end;flex-wrap:wrap;margin-top:6px}
.jalon-add input{border:1px solid #ddd!important;border-radius:4px!important;height:28px!important;font-size:11px!important;padding:2px 6px!important;margin:0!important;box-shadow:none!important}
.jalon-add .j-inp-date{width:130px!important}
.jalon-add .j-inp-name{flex:1!important;min-width:160px!important}
.ch-bd{padding:10px 14px}
.ch-row{display:flex;justify-content:space-between;padding:2px 0;font-size:12px;border-bottom:1px solid #f5f5f5}
.ch-row:last-child{border:none}
.ch-lbl{color:var(--txt2)}
.ch-val{font-weight:500}
.ch-act{display:none}
.ch-card[draggable="true"]{cursor:grab}
.ch-card[draggable="true"]:active{cursor:grabbing;opacity:.6}
.ch-drop-zone{display:none;grid-column:1/-1;align-items:center;justify-content:center;gap:8px;padding:16px;border:2px dashed #bbb;border-radius:8px;background:#fafafa;color:#999;font-size:13px;font-weight:600;transition:.2s;min-height:50px;cursor:default}
.ch-drop-zone.ch-dz-over{border-color:#1565c0;background:#e3f2fd;color:#1565c0}
.ch-drop-zone i{font-size:22px}
.ch-desc{padding:8px 10px;margin-bottom:6px;background:#f5f7fa;border-left:3px solid #90a4ae;border-radius:0 4px 4px 0;font-size:12px;color:#37474f;line-height:1.4}
.ch-toolbar{display:flex;align-items:center;gap:12px;padding:12px 16px 0;flex-wrap:wrap}
.ch-search{flex:1;min-width:200px;max-width:400px;position:relative}
.ch-search input{width:100%;border:1px solid #ddd!important;border-radius:6px!important;padding:6px 12px 6px 34px!important;height:34px!important;font-size:12px!important;margin:0!important;box-shadow:none!important}
.ch-search input:focus{border-color:var(--accent)!important;box-shadow:0 0 0 1px var(--accent)!important}
.ch-search i.s-icon{position:absolute;left:10px;top:8px;font-size:18px;color:#aaa;pointer-events:none}
.ch-search .ch-search-clear{position:absolute;right:8px;top:6px;font-size:16px;color:#bbb;cursor:pointer;display:none}
.ch-search .ch-search-clear:hover{color:var(--danger)}
.ch-search.has-text .ch-search-clear{display:block}
.ch-count{font-size:12px;color:var(--txt2);flex-shrink:0;white-space:nowrap}.ch-count b{color:var(--txt);font-size:13px}

/* RESOURCE TABLE */
#res-tbl-wrap{padding:16px}
.res-toolbar{display:flex;align-items:center;margin-bottom:10px;gap:12px}
.res-toolbar .res-count{font-size:12px;color:var(--txt2);white-space:nowrap;flex-shrink:0}
.res-toolbar .res-count b{color:var(--txt);font-size:13px}
.res-search{flex:1;min-width:200px;max-width:320px;position:relative}
.res-search input{width:100%;border:1px solid #ddd!important;border-radius:6px!important;padding:6px 12px 6px 34px!important;height:34px!important;font-size:12px!important;margin:0!important;box-shadow:none!important;background:#fff;transition:.2s}
.res-search input:focus{border-color:var(--accent)!important;box-shadow:0 0 0 1px var(--accent)!important}
.res-search i{position:absolute;left:10px;top:8px;font-size:18px;color:#aaa;pointer-events:none}
.res-search .res-search-clear{position:absolute;right:8px;top:6px;font-size:16px;color:#bbb;cursor:pointer;pointer-events:all;display:none}
.res-search .res-search-clear:hover{color:var(--danger)}
.res-search.has-text .res-search-clear{display:block}
.res-filter-btn{position:relative;flex-shrink:0}
.res-filter-btn>button{display:flex;align-items:center;gap:4px;padding:6px 12px;border:1px solid #ccc;border-radius:6px;background:#fff;cursor:pointer;font-size:12px;font-weight:500;color:var(--txt);transition:.2s}
.res-filter-btn>button:hover{border-color:var(--accent);color:var(--accent)}
.res-filter-btn>button.has-filter{border-color:var(--accent);background:#e3f2fd;color:var(--accent)}
.res-filter-btn>button i{font-size:18px}
.rfp{position:fixed;background:#fff;border-radius:8px;box-shadow:0 4px 20px rgba(0,0,0,.18);min-width:280px;max-height:70vh;overflow-y:auto;z-index:9999;padding:12px 0;display:none}
.rfp.open{display:block}
.rfp-section{padding:6px 16px}
.rfp-section-title{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--accent);margin-bottom:6px;display:flex;align-items:center;gap:4px}
.rfp-section-title i{font-size:14px}
.rfp-item{display:flex;align-items:center;gap:8px;padding:4px 0;font-size:12px;cursor:pointer;user-select:none}
.rfp-item:hover{color:var(--accent)}
.rfp-item input[type=checkbox]{margin-right:0}
.rfp-item [type="checkbox"]+span{padding-left:22px;font-size:12px;line-height:1.3}
.rfp-divider{height:1px;background:#eee;margin:6px 16px}
.rfp-actions{padding:8px 16px;display:flex;gap:6px;justify-content:flex-end}
.rfp-actions button{padding:4px 12px;border-radius:4px;border:none;font-size:11px;cursor:pointer;font-weight:600}
.rfp-actions .rfp-reset{background:#f5f5f5;color:#666}
.rfp-actions .rfp-reset:hover{background:#eee}
.rfp-actions .rfp-apply{background:var(--accent);color:#fff}
.rfp-actions .rfp-apply:hover{opacity:.9}
.rtbl{width:100%;border-collapse:collapse;background:#fff;border-radius:8px;overflow:hidden;box-shadow:var(--shadow)}
.rtbl thead{background:#37474f;color:#fff}
.res-recap-card{background:#fff;border-radius:6px;box-shadow:0 1px 3px rgba(0,0,0,.08);padding:8px 14px;border-left:4px solid #ccc;cursor:pointer;transition:.2s;min-width:100px;flex:1}
.res-recap-card:hover{box-shadow:0 2px 8px rgba(0,0,0,.15);transform:translateY(-1px)}
.res-recap-card .rrc-val{font-size:22px;font-weight:800;line-height:1.2}
.res-recap-card .rrc-lbl{font-size:11px;font-weight:600;color:#37474f;margin-top:2px}
.res-recap-card .rrc-sub{font-size:9px;color:#999;margin-top:1px}
.rob-sal-card{background:#fff;border-radius:8px;box-shadow:0 1px 4px rgba(0,0,0,.08);margin-bottom:12px;overflow:hidden}
.rob-sal-hd{display:flex;align-items:center;gap:10px;padding:10px 14px;background:#37474f;color:#fff;font-weight:700;font-size:13px}
.rob-sal-hd .rob-sal-badges{display:flex;gap:4px;margin-left:auto}
.rob-sal-hd .rob-mini{padding:2px 8px;border-radius:10px;font-size:9px;font-weight:700}
.rob-sal-body{padding:0}
.rob-sal-body table{width:100%;border-collapse:collapse;font-size:11px;table-layout:fixed}
.rob-sal-body th{padding:6px 8px;text-align:left;background:#eceff1;font-weight:700;font-size:10px;color:#37474f;text-transform:uppercase;letter-spacing:.4px;border-bottom:2px solid #cfd8dc}
.rob-sal-body td{padding:6px 8px;border-bottom:1px solid #eceff1;vertical-align:middle;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rob-sal-body tr:hover td{background:rgba(26,35,126,.03)}
.rob-sal-body td.num,.rob-sal-body th.num{text-align:center}
.rob-sal-body td.wrap{white-space:normal}
/* Tableau Échéancier */
.ech-tbl{width:100%;border-collapse:collapse;font-size:11px;table-layout:fixed;background:#fff;border-radius:0 0 6px 6px;overflow:hidden;box-shadow:0 1px 3px rgba(0,0,0,.06)}
.ech-tbl thead th{padding:6px 8px;text-align:left;background:#eceff1;font-weight:700;font-size:10px;color:#37474f;text-transform:uppercase;letter-spacing:.4px;border-bottom:2px solid #cfd8dc}
.ech-tbl td{padding:6px 8px;border-bottom:1px solid #eceff1;vertical-align:middle;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ech-tbl tr:hover td{background:rgba(26,35,126,.03)}
.ech-tbl td.num,.ech-tbl th.num{text-align:center}
.ech-tbl td.wrap{white-space:normal}
.rob-badge{display:flex;align-items:center;gap:4px;padding:4px 10px;border-radius:16px;font-size:10px;font-weight:700;color:#fff;cursor:pointer;transition:.2s;white-space:nowrap}
.rob-badge:hover{opacity:.85;transform:scale(1.05)}
.rob-badge .rob-val{font-size:14px;font-weight:800}
.res-type-pills{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.res-type-pill{display:flex;align-items:center;gap:4px;padding:5px 12px;border-radius:20px;font-size:11px;font-weight:600;cursor:pointer;border:2px solid transparent;transition:.2s;user-select:none}
.res-type-pill:hover{opacity:.85}
.res-type-pill.rtp-inactive{opacity:.35;filter:grayscale(1)}
.res-type-pill .rtp-count{font-size:10px;background:rgba(255,255,255,.3);padding:1px 6px;border-radius:10px;font-weight:700}
.rtbl th{padding:9px 8px;text-align:left;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.4px;white-space:nowrap;position:relative;user-select:none;cursor:pointer}
.rtbl th:hover{background:#455a64}
.rtbl td{padding:7px 8px;font-size:12px;border-bottom:1px solid #f0f0f0;white-space:nowrap}
/* Resize handle */
.rtbl th .col-resize{position:absolute;right:0;top:0;bottom:0;width:4px;cursor:col-resize;background:transparent}
.rtbl th .col-resize:hover,.rtbl th .col-resize.resizing{background:rgba(255,255,255,.4)}
/* Sort indicator */
.rtbl th .col-sort{font-size:10px;margin-left:3px;opacity:.6}
/* Filter dropdown */
.col-filter-panel{position:fixed;background:#fff;border-radius:8px;box-shadow:0 4px 20px rgba(0,0,0,.2);min-width:180px;max-height:250px;overflow-y:auto;z-index:9999;padding:8px 0;display:none}
.col-filter-panel.open{display:block}
.col-filter-item{display:flex;align-items:center;gap:6px;padding:4px 12px;font-size:11px;cursor:pointer}
.col-filter-item:hover{background:#f5f5f5}
.col-filter-item input{margin:0}
.col-filter-actions{display:flex;gap:6px;padding:6px 12px;border-top:1px solid #eee;margin-top:4px}
.col-filter-actions button{padding:3px 10px;border-radius:4px;border:none;font-size:10px;cursor:pointer;font-weight:600}
/* Drag column */
.rtbl th[draggable=true]{cursor:grab}
.rtbl th.col-dragging{opacity:.4}
.rtbl tbody tr:hover{background:#f5f5f5}
.rtbl .act-cell{display:flex;gap:4px}
.btn-ic{border:none;background:0;cursor:pointer;padding:4px;border-radius:4px}
.btn-ic:hover{background:#eee}
.btn-ic i{font-size:16px}
.tbdg{padding:2px 8px;border-radius:10px;font-size:10px;font-weight:600;color:#fff;display:inline-block}
.tbdg.tp{background:#1565c0}.tbdg.ti{background:#7b1fa2}.tbdg.ts{background:#00838f}.tbdg.ta{background:#2e7d32}.tbdg.tst{background:#ad1457}.tbdg.tm{background:#e65100}.tbdg.tl{background:#ff8f00}
/* Resource modal */
.res-photo-area{display:flex;align-items:center;gap:16px;margin-bottom:16px;padding:12px;background:#f5f5f5;border-radius:8px}
.res-photo-preview{width:80px;height:80px;border-radius:50%;background:#e0e0e0;display:flex;align-items:center;justify-content:center;overflow:hidden;border:3px solid #fff;box-shadow:0 1px 4px rgba(0,0,0,.15);flex-shrink:0}
.res-photo-preview img{width:100%;height:100%;object-fit:cover}
.res-photo-preview i{font-size:36px;color:#bbb}
.res-photo-actions{display:flex;flex-direction:column;gap:6px}
.res-photo-actions label{cursor:pointer;font-size:12px;color:var(--accent);font-weight:500;display:flex;align-items:center;gap:4px}
.res-photo-actions label:hover{text-decoration:underline}
.res-photo-actions input[type=file]{display:none}
.res-schedule{margin:10px 0;border:1px solid #e0e0e0;border-radius:6px;overflow:hidden}
.res-schedule table{width:100%;border-collapse:collapse;font-size:11px}
.res-schedule th{background:#37474f;color:#fff;padding:5px 6px;font-weight:500;text-align:center;font-size:10px}
.res-schedule td{padding:3px 4px;border:1px solid #eee;text-align:center}
.res-schedule td.rlbl{font-weight:600;font-size:10px;padding-left:8px;text-align:left;background:#fafafa;white-space:nowrap;min-width:90px}
.res-schedule td.rsec{font-weight:700;font-size:9px;text-transform:uppercase;letter-spacing:.3px;background:#eceff1;color:#455a64;padding:4px 8px;text-align:left}
.res-schedule input{border:1px solid #ddd!important;border-radius:3px!important;text-align:center;width:56px!important;height:24px!important;font-size:11px!important;padding:2px 4px!important;margin:0!important;box-shadow:none!important}
.res-schedule .tot-cell{font-weight:700;font-size:11px;color:#1565c0;background:#e3f2fd;min-width:56px}
.res-schedule .tot-week{font-weight:800;font-size:12px;color:#fff;background:#1565c0}
.res-schedule .propag-row td{border-top:2px solid #e0e0e0;padding:4px}
.btn-propag{border:none;background:#e3f2fd;color:#1565c0;font-size:10px;padding:3px 8px;border-radius:4px;cursor:pointer;font-weight:600;white-space:nowrap}
.btn-propag:hover{background:#bbdefb}
.res-cost-row{display:flex;align-items:center;gap:10px;margin:10px 0;padding:10px 12px;background:#fff8e1;border-radius:6px;border:1px solid #ffe082}
.res-cost-row .input-field{margin:0}
.res-cost-row input{height:28px!important;font-size:12px!important;margin:0!important}
.res-cost-row select{height:28px!important;font-size:12px!important}
.cat-combo{display:flex;align-items:flex-end;gap:6px}
.cat-combo .input-field{flex:1;margin:0}
.cat-add-row{display:flex;align-items:center;gap:6px;margin-top:6px;padding:8px 10px;background:#e8f5e9;border-radius:6px;border:1px dashed #81c784}
.cat-add-row input{border:1px solid #a5d6a7!important;border-radius:4px!important;height:28px!important;font-size:12px!important;padding:2px 8px!important;margin:0!important;box-shadow:none!important;flex:1}
.cat-add-row button{white-space:nowrap}

/* JOURNALIER */
.jrn-hd{display:flex;align-items:center;gap:12px;padding:12px 20px;background:#fff;border-bottom:1px solid var(--border)}
.jrn-hd h5{margin:0;font-size:16px}
.jrn-notes{margin-left:auto}
#jrn-content{display:flex;height:calc(100% - 54px);overflow:hidden}
.jrn-col{width:220px;min-width:220px;background:#fafafa;border-right:1px solid var(--border);padding:10px;overflow-y:auto}
.jrn-col h6{font-size:12px;font-weight:600;margin:0 0 8px}
.jrn-area{flex:1;display:flex;flex-wrap:wrap;align-content:flex-start;gap:12px;padding:12px;overflow-y:auto}
.jrn-box{width:280px;background:#fff;border-radius:8px;box-shadow:var(--shadow);overflow:hidden;min-height:110px}
.jrn-box-hd{padding:8px 12px;color:#fff;font-weight:600;font-size:13px;display:flex;justify-content:space-between;align-items:center}
.jrn-box-bd{padding:8px;min-height:50px}
.jrn-chip{display:inline-flex;align-items:center;gap:4px;padding:3px 7px;margin:2px;border-radius:3px;font-size:10px;font-weight:600;background:#e3f2fd;border:1px solid #bbdefb;cursor:grab;box-shadow:0 1px 2px rgba(0,0,0,.08);letter-spacing:.15px}
.jrn-chip:active{cursor:grabbing}
.jrn-chip i{font-size:12px;cursor:pointer;color:#999}
.jrn-chip i:hover{color:var(--danger)}

/* HEBDO */
.hb-hd{display:flex;align-items:center;gap:12px;padding:12px 20px;background:#fff;border-bottom:1px solid var(--border)}
.hb-hd h5{margin:0;font-size:16px}
#hb-grid{overflow:auto;height:calc(100% - 54px);padding:8px}
.hbtbl{width:100%;border-collapse:collapse;background:#fff;border-radius:6px;overflow:hidden;box-shadow:var(--shadow)}
.hbtbl th{padding:8px 6px;font-size:11px;font-weight:600;text-align:center;background:#37474f;color:#fff;position:sticky;top:0;z-index:10}
.hbtbl th.we{background:#455a64}
.hbtbl td{padding:4px;text-align:center;font-size:11px;border:1px solid #eee;min-width:90px;vertical-align:top}
.hbtbl td.sat{background:#e3f2fd}
.hbtbl td.sun{background:#ffebee}
.hbtbl th.sat{background:#1565c0!important}
.hbtbl th.sun{background:#c62828!important}
.hbtbl td.fe,.hbtbl th.fe{background:#fce4ec!important}
.hbtbl th.fe{background:#e57373!important}
.hbtbl td.cn{text-align:left;font-weight:600;padding-left:10px;min-width:180px;position:sticky;left:0;background:#fff;z-index:5}
.hbtbl .hchip{display:inline-block;padding:2px 6px;margin:1px;border-radius:3px;font-size:10px;color:#fff;font-weight:500}
.hbtbl .hnote{display:block;font-size:9px;color:var(--danger);font-style:italic;margin-top:2px}

/* DASHBOARD */
#dash{padding:16px;overflow:auto;height:100%}
.dmtx{width:100%;border-collapse:collapse;background:#fff;border-radius:6px;overflow:hidden;box-shadow:var(--shadow)}
.dmtx th{padding:7px 5px;font-size:10px;font-weight:600;text-align:center;background:#263238;color:#fff;position:sticky;top:0;z-index:10;min-width:34px}
.dmtx td{padding:2px;text-align:center;border:1px solid #eee;min-width:34px;height:26px}
.dmtx td.rn{text-align:left;font-weight:600;font-size:11px;padding-left:10px;min-width:150px;position:sticky;left:0;background:#fff;z-index:5;white-space:nowrap}
.dmtx th.month-hd{background:#37474f;font-size:11px;text-align:center;letter-spacing:.3px}
.dmtx th.wk-hd{font-size:9px;min-width:28px;padding:3px 2px}
.dmtx th.wk-sub{background:#455a64;font-size:9px;padding:2px 3px;font-weight:500}
.dmtx th.month-sub{background:#37474f;font-size:10px;letter-spacing:.3px}
.dmtx tr.weather-row td{font-size:10px;padding:2px 1px;background:#f5f9ff;border-bottom:1px solid #c5cae9;white-space:nowrap;height:auto;line-height:1.3}
.dmtx tr.weather-row:last-of-type td{border-bottom:2px solid var(--accent)}
.dmtx tr.weather-row td.rn{background:#f5f9ff;font-weight:500;color:var(--accent);white-space:normal;line-height:1.3;padding:4px 10px}
.dmtx tr.weather-row td.rn .wr-name{display:block;font-size:10px;font-weight:600;color:#1565C0}
.dmtx tr.weather-row td.rn .wr-loc{display:block;font-size:9px;font-weight:400;color:#78909c}
.dmtx tr.hours-row td{font-size:10px;font-weight:700;padding:3px 2px;border-top:2px solid #ccc}
.dmtx tr.hours-row td.rn{font-weight:700;font-size:11px;border-top:2px solid #ccc}
.dmtx tr.hours-row td.h-val{background:#fff8e1;color:#e65100}
.weather-icon{font-size:13px;display:block;line-height:1.1}
.weather-temp{font-size:9px;color:#37474f;display:block;font-weight:600}
.weather-wind{font-size:9px;color:#1565C0;display:block}

/* PLANIFICATION RESSOURCES */
#pr-header{padding:10px 14px;display:flex;align-items:center;gap:12px}
#pr-header .pr-week-label{font-size:16px;font-weight:700;color:#1a237e}
.pr-tbl{width:100%;border-collapse:separate;border-spacing:0;font-size:11px;background:#fff;border-radius:6px;box-shadow:0 1px 4px rgba(0,0,0,.08);table-layout:fixed}
.pr-tbl thead{background:#37474f;color:#fff}
.pr-tbl thead th{position:sticky;top:0;z-index:5;background:#37474f;color:#fff;box-shadow:0 2px 0 0 rgba(0,0,0,.1)}
.pr-tbl .pr-wk-row th.pr-wk-hd{background:#263238;color:#fff;font-size:11px;font-weight:700;letter-spacing:.3px;padding:5px 6px;text-align:center;text-transform:uppercase;border-bottom:1px solid rgba(255,255,255,.12)}
.pr-tbl thead tr:not(.pr-wk-row) th{top:26px}
.pr-tbl .pr-wk-row th[rowspan="2"]{z-index:7}
/* Neutralise l'héritage de styles "first-child" du thead sur la ligne des jours (col 1 occupée par le rowspan) */
.pr-tbl thead tr:not(.pr-wk-row) th:first-child{text-align:center;padding-left:4px;z-index:5}
.pr-tbl th{padding:6px 4px;text-align:center;font-weight:600;font-size:9px;text-transform:uppercase}
.pr-tbl thead th:first-child{text-align:left;padding-left:12px;user-select:none;z-index:6}
.pr-tbl th:first-child{min-width:140px}
.pr-tbl td:first-child{min-width:140px}
.pr-col-resize{position:absolute;top:0;right:-3px;width:8px;height:100%;cursor:col-resize;background:transparent;z-index:5}
.pr-col-resize:hover,.pr-col-resize.active{background:linear-gradient(90deg,transparent 0,rgba(33,150,243,.5) 40%,rgba(33,150,243,.8) 50%,rgba(33,150,243,.5) 60%,transparent 100%)}
.pr-col-resize::after{content:'';position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:2px;height:20px;background:rgba(255,255,255,.4);border-radius:1px;opacity:0;transition:opacity .15s}
.pr-col-resize:hover::after,.pr-col-resize.active::after{opacity:1}
/* Boutons filtre Humains/Matériels vue ressource */
.pr-rf-btn{border:1px solid #9fa8da;background:#fff;color:#3949ab;border-radius:14px;padding:3px 10px;font-size:11px;font-weight:600;cursor:pointer;transition:all .15s;white-space:nowrap}
.pr-rf-btn:hover{background:#eef1f8;border-color:#3949ab}
.pr-rf-btn.on{background:linear-gradient(135deg,#1a237e,#3949ab);border-color:#1a237e;color:#fff;box-shadow:0 1px 3px rgba(26,35,126,.25)}
/* Badge de notes dans l'en-tête de jour */
.pr-day-hd-wrap{display:flex;flex-direction:column;align-items:center;gap:2px;line-height:1.1}
.pr-note-badge{display:inline-flex;align-items:center;gap:2px;padding:1px 6px;border-radius:9px;font-size:9px;font-weight:700;color:#fff;cursor:pointer;box-shadow:0 1px 2px rgba(0,0,0,.25);border:1px solid rgba(255,255,255,.25);transition:transform .15s,box-shadow .15s}
.pr-note-badge:hover{transform:scale(1.08);box-shadow:0 2px 4px rgba(0,0,0,.35)}
/* Badges temps / jour dans les chips d'affectation */
.pr-chip-big .pcb-dur{background:rgba(0,0,0,.07);padding:0 5px;border-radius:2px;font-weight:700;font-size:9px;color:#37474f;white-space:nowrap}
.pr-chip-big .pcb-dur-hr{color:#0d47a1}
.pr-chip-big .pcb-dur-mat{color:#1b5e20}
/* Colonne Σ Semaine */
.pr-tbl th.pr-total-col-hd{font-weight:700;font-size:10px;text-transform:uppercase;letter-spacing:.3px;padding:6px 4px;text-align:center;white-space:nowrap;width:150px;min-width:150px}
.pr-tbl td.pr-total-col{background:#e8eaf6;border-left:2px solid #1a237e;text-align:center;padding:4px 8px;vertical-align:middle;width:150px;min-width:150px}
.pr-tbl td.pr-total-col .pr-tot-hr{font-size:12px;font-weight:800;color:#0d47a1;line-height:1.25}
.pr-tbl td.pr-total-col .pr-tot-day{font-size:11px;font-weight:800;color:#1b5e20;line-height:1.25;margin-top:1px}
.pr-tbl td.pr-total-col .pr-tot-prev{margin-top:4px;padding-top:4px;border-top:1px dashed #b0bec5;font-size:10px;line-height:1.35;text-align:left}
.pr-tbl td.pr-total-col .pr-tot-prev-row{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#37474f}
.pr-tbl td.pr-total-col .pr-tot-prev-lbl{color:#78909c;font-weight:600;font-size:10px}
.pr-tbl td.pr-total-col .pr-tot-solde{margin-top:3px;padding:2px 6px;border-radius:8px;font-size:10px;font-weight:700;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:center}
.pr-tbl td{padding:4px 6px;border-bottom:1px solid #f0f0f0;vertical-align:top;min-height:40px}
.pr-tbl td:first-child{padding-left:12px;font-weight:600}
.pr-tbl tr:hover{background:#fafafa}
.pr-tbl .pr-day-we{background:#eeeeee!important}
.pr-tbl th.pr-day-we{background:#78909c!important;color:#fff!important}
.pr-tbl .pr-day-ferie{background:repeating-linear-gradient(135deg,rgba(244,67,54,.04),rgba(244,67,54,.04) 4px,rgba(244,67,54,.08) 4px,rgba(244,67,54,.08) 8px)!important}
/* Colonne du jour courant — surbrillance jaune doux pour repérage rapide */
.pr-tbl td.pr-day-today{background:#fff8e1!important;box-shadow:inset 2px 0 0 #ffb300,inset -2px 0 0 #ffb300}
.pr-tbl th.pr-day-today{background:linear-gradient(180deg,#ff9800,#fb8c00)!important;color:#fff!important;box-shadow:inset 0 -3px 0 #e65100}
.pr-tbl th.pr-day-today::after{content:'⬤';position:absolute;top:3px;right:3px;font-size:6px;color:#fff;text-shadow:0 0 4px rgba(255,255,255,.8)}
.pr-tbl td.pr-day-today.pr-day-we{background:#ffe0b2!important;box-shadow:inset 2px 0 0 #ffb300,inset -2px 0 0 #ffb300}
.pr-tbl td.pr-day-today.pr-day-ferie{background:repeating-linear-gradient(135deg,#fff3e0,#fff3e0 4px,#ffe0b2 4px,#ffe0b2 8px)!important;box-shadow:inset 2px 0 0 #ffb300,inset -2px 0 0 #ffb300}
.pr-tbl .pr-gnt-cell{cursor:help;transition:filter .15s}
.pr-tbl .pr-gnt-cell:hover{filter:brightness(1.12) saturate(1.15)}
.pr-tbl .pr-gnt-count{display:inline-flex;align-items:center;justify-content:center;min-width:24px;height:24px;padding:0 6px;border-radius:12px;font-size:12px;font-weight:700;box-shadow:0 1px 2px rgba(0,0,0,.15)}
.pr-tbl .pr-gnt-split{display:inline-flex;gap:3px;align-items:center;justify-content:center;flex-wrap:wrap}
.pr-tbl .pr-cnt-h{display:inline-flex;align-items:center;justify-content:center;gap:2px;min-width:22px;height:22px;padding:0 6px;border-radius:11px;font-size:11px;font-weight:700;background:#bbdefb;color:#0d47a1;border:1.5px solid #64b5f6;box-shadow:0 1px 2px rgba(0,0,0,.15)}
.pr-tbl .pr-cnt-m{display:inline-flex;align-items:center;justify-content:center;gap:2px;min-width:22px;height:22px;padding:0 6px;border-radius:11px;font-size:11px;font-weight:700;background:#ffe0b2;color:#bf360c;border:1.5px solid #ffb74d;box-shadow:0 1px 2px rgba(0,0,0,.15)}
.pr-cnt-btn.active{background:#1a237e!important;color:#fff!important;box-shadow:inset 0 0 0 2px #fff,0 0 0 2px #1a237e}
.pr-tbl tr.pr-gnt-totals td{position:sticky;bottom:0;background:#37474f;color:#fff;font-weight:700;padding:6px 4px;text-align:center;border-top:3px solid #0d1642;font-size:11px;z-index:4}
.pr-tbl tr.pr-gnt-totals td:first-child{text-align:right;padding-right:12px;background:#263238;color:#fff;letter-spacing:.3px;text-transform:uppercase;font-size:10px;z-index:5}
.pr-tbl tr.pr-gnt-totals td.pr-tot-week{background:#1a237e;border-left:3px solid #0d1642;font-size:11px}
.pr-tbl tr.pr-gnt-totals .tot-pills{display:flex;gap:3px;align-items:center;justify-content:center;flex-wrap:wrap;line-height:1.1}
.pr-chip{display:inline-flex;align-items:center;gap:3px;padding:2px 7px;border-radius:3px;font-size:10px;font-weight:600;color:#fff;margin:1px;cursor:default;white-space:nowrap}
.pr-chip .pr-chip-del{cursor:pointer;font-size:10px;margin-left:2px;opacity:.7}
.pr-chip .pr-chip-del:hover{opacity:1}
/* Chip plus grand et plus lisible — utilisé dans les vues planning */
.pr-chip-big{display:flex;flex-direction:column;gap:1px;padding:3px 18px 3px 6px;border-radius:4px;margin:2px 0;cursor:default;box-shadow:0 1px 2px rgba(0,0,0,.06);line-height:1.2;background:#fafbfc;border-left:4px solid #999;position:relative;min-width:0;transition:box-shadow .15s,transform .15s}
.pr-chip-big .pcb-main{display:flex;align-items:center;gap:3px;font-size:11px;font-weight:700;color:#1a237e;min-width:0}
.pr-chip-big .pcb-main .pcb-ico{font-size:10px;flex-shrink:0}
.pr-chip-big .pcb-main .pcb-nom{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}
.pr-chip-big .pcb-sub{font-size:9px;font-weight:500;color:#607d8b;letter-spacing:.2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:flex;align-items:center;gap:4px}
.pr-chip-big .pcb-sub .pcb-time{background:rgba(0,0,0,.07);padding:0 4px;border-radius:2px;font-weight:700;color:#37474f}
.pr-chip-big .pr-chip-del{position:absolute;top:2px;right:3px;font-size:13px;color:#90a4ae;cursor:pointer;opacity:.6;transition:opacity .15s,color .15s;padding:1px}
.pr-chip-big .pr-chip-edit-hours{position:absolute;top:2px;right:20px;font-size:13px;color:#1565c0;cursor:pointer;opacity:0;transition:opacity .15s;padding:1px;background:rgba(255,255,255,.85);border-radius:3px}
.pr-chip-big:hover .pr-chip-edit-hours{opacity:.8}
.pr-chip-big .pr-chip-edit-hours:hover{opacity:1;background:#fff;color:#0d47a1}
.pr-chip-big.pr-chip-ov{box-shadow:0 0 0 1.5px #43a047,0 1px 2px rgba(0,0,0,.05)}
.pr-chip-big.pr-chip-ov .pr-chip-edit-hours{opacity:1;color:#2e7d32}
.pcb-dur.pcb-dur-ov{background:#43a047!important;color:#fff!important;font-weight:700}
.pr-chip-big .pr-chip-del:hover{opacity:1;color:#c62828}
.pr-chip-big:hover{box-shadow:0 2px 6px rgba(0,0,0,.12);transform:translateX(1px)}
#pr-dispo.pr-dispo-collapsed{width:0!important;min-width:0!important;padding:0!important;border-right:none!important;overflow:hidden!important}
#pr-dispo-toggle:hover{background:#cfd8dc!important;color:#1565c0!important}
#gnt-dispo.gnt-dispo-collapsed{width:0!important;min-width:0!important;padding:0!important;border-right:none!important;overflow:hidden!important}
#gnt-dispo-toggle:hover{background:#cfd8dc!important;color:#1565c0!important}
#gnt-dispo .gnt-dispo-title{font-size:11px;font-weight:700;color:#1a237e;padding:4px 0;border-bottom:2px solid #1a237e;margin-bottom:6px;text-align:center}
#gnt-dispo .gnt-dispo-section{font-size:9px;font-weight:700;padding:4px 0 2px;color:#607d8b;border-top:1px solid #e0e0e0;margin-top:6px}
#gnt-dispo .gnt-dispo-section:first-of-type{border-top:none;margin-top:0}
.gnt-dispo-chip{display:flex;align-items:center;gap:4px;padding:4px 8px;margin:3px 0;border-radius:6px;font-size:10px;font-weight:600;color:#fff;cursor:grab;transition:.2s}
.gnt-dispo-chip:hover{opacity:.85;transform:scale(1.02)}
.gnt-dispo-chip:active{opacity:.5;cursor:grabbing}
.gnt-dispo-chip.gnt-selected{outline:3px solid #ffd600;outline-offset:-1px;box-shadow:0 0 8px rgba(255,214,0,.6)}
#gantt-container.gnt-drop-active{outline:3px dashed #1565c0;outline-offset:-3px}
#pr-dispo .pr-dispo-title{font-size:11px;font-weight:700;color:#1a237e;padding:4px 0;border-bottom:2px solid #1a237e;margin-bottom:6px;text-align:center}
#pr-dispo .pr-dispo-section{font-size:9px;font-weight:700;padding:4px 0 2px;color:#607d8b;border-top:1px solid #e0e0e0;margin-top:6px}
#pr-dispo .pr-dispo-section:first-of-type{border-top:none;margin-top:0}
.pr-dispo-chip{display:flex;align-items:center;gap:4px;padding:4px 8px;margin:3px 0;border-radius:6px;font-size:10px;font-weight:600;color:#fff;cursor:grab;transition:.2s}
.pr-dispo-chip:hover{opacity:.85;transform:scale(1.02)}
.pr-dispo-chip:active{opacity:.5;cursor:grabbing}
.pr-dispo-chip.pr-selected{outline:3px solid #ffd600;outline-offset:-1px;box-shadow:0 0 8px rgba(255,214,0,.6)}
.pr-dispo-chip .pr-sel-icon{margin-left:auto;font-size:12px;opacity:.7}
.pr-chip[draggable=true],.pr-chip-big[draggable=true]{cursor:grab}
.pr-chip[draggable=true]:active,.pr-chip-big[draggable=true]:active{cursor:grabbing;opacity:.5}
.pr-tbl td.pr-drop-over{outline:2px dashed #1565c0;outline-offset:-2px;background:#e3f2fd!important}
.pr-cell-add{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;background:#e3f2fd;color:#1565c0;font-size:12px;cursor:pointer;margin:1px;opacity:.5;transition:.2s}
.pr-cell-add:hover{opacity:1;background:#bbdefb}
.pr-cell-mch{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;background:#ede7f6;color:#5e35b1;font-size:11px;cursor:pointer;margin:1px;opacity:.55;transition:.2s}
.pr-cell-mch:hover{opacity:1;background:#d1c4e9}
/* Marquage visuel des affectations multi-chantier (hachures diagonales semi-transparentes) */
.pr-chip.pr-chip-mch,
.tl-bar.tl-bar-mch,
.agenda-bloc.agenda-bloc-mch{position:relative;overflow:hidden}
.pr-chip.pr-chip-mch::before,
.tl-bar.tl-bar-mch::before,
.agenda-bloc.agenda-bloc-mch::before{
 content:'';position:absolute;inset:0;border-radius:inherit;pointer-events:none;z-index:0;
 background-image:repeating-linear-gradient(45deg,rgba(255,255,255,.32),rgba(255,255,255,.32) 4px,transparent 4px,transparent 9px);
 box-shadow:inset 0 0 0 1px rgba(255,255,255,.55)
}
.pr-chip.pr-chip-mch>*,
.tl-bar.tl-bar-mch>*,
.agenda-bloc.agenda-bloc-mch>*{position:relative;z-index:1}
/* Multi-chantier sur le nouveau pr-chip-big : badge "+N" coloré au lieu des hachures */
.pr-chip-big.pr-chip-mch::after{content:'⏱ multi';position:absolute;top:2px;right:18px;font-size:8px;font-weight:700;color:#6a1b9a;background:#ede7f6;padding:1px 4px;border-radius:3px;letter-spacing:.3px}
.pr-chip.pr-chip-mch:hover,
.pr-chip-big.pr-chip-mch:hover,
.tl-bar.tl-bar-mch:hover,
.agenda-bloc.agenda-bloc-mch:hover{filter:brightness(1.08)}
/* Contenu interne du bloc agenda */
.agenda-bloc .ag-bloc-time{font-size:10px;font-weight:700;opacity:.95;letter-spacing:.2px;display:flex;align-items:center;gap:4px}
.agenda-bloc .ag-bloc-pause-lbl{font-size:8px;background:rgba(0,0,0,.25);padding:0 4px;border-radius:3px;font-weight:700;letter-spacing:.3px}
.agenda-bloc .ag-bloc-name{font-size:11px;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:1px}
.agenda-bloc .ag-bloc-net{font-size:10px;font-weight:700;background:rgba(255,255,255,.2);padding:1px 5px;border-radius:3px;align-self:flex-start;letter-spacing:.2px}
.agenda-bloc .ag-bloc-code{font-size:9px;opacity:.9;font-weight:700;background:rgba(255,255,255,.22);color:#fff;padding:0 5px;border-radius:3px;align-self:flex-start;letter-spacing:.3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.agenda-bloc .ag-bloc-adr{font-size:9px;font-weight:500;opacity:.9;font-style:italic;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.3}
.agenda-bloc .ag-bloc-co{font-size:9px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;background:rgba(0,0,0,.18);padding:1px 5px;border-radius:3px;display:flex;align-items:center;gap:3px;line-height:1.3}
.agenda-bloc .ag-bloc-co-ic{flex-shrink:0;font-size:10px}
.agenda-bloc .ag-bloc-co-names{overflow:hidden;text-overflow:ellipsis;min-width:0}
.agenda-bloc .ag-bloc-note{font-size:9px;font-weight:700;background:rgba(255,255,255,.25);padding:1px 5px;border-radius:3px;align-self:flex-start;letter-spacing:.2px}
/* Bande pause : hachures diagonales semi-transparentes pour matérialiser la soustraction */
.ag-pause-band{background-image:repeating-linear-gradient(135deg,rgba(255,255,255,.42) 0,rgba(255,255,255,.42) 5px,rgba(0,0,0,.12) 5px,rgba(0,0,0,.12) 10px);border-top:1px dashed rgba(255,255,255,.7);border-bottom:1px dashed rgba(255,255,255,.7);z-index:2}
.pr-row-label{display:flex;align-items:flex-start;gap:6px}
.pr-row-label .pr-dot{width:8px;height:8px;border-radius:2px;flex-shrink:0;margin-top:4px}
.pr-row-label .pr-name{font-size:11px;font-weight:600;color:#212121}
.pr-row-label .pr-sub{font-size:9px;color:#999}
/* Nouvelle présentation carte moderne (vue Par chantier) */
.pr-ch-card{position:relative;padding:6px 8px 6px 12px;border-radius:5px;background:#fff;transition:box-shadow .15s,transform .15s;min-width:0;flex:1}
.pr-ch-card::before{content:'';position:absolute;left:0;top:4px;bottom:4px;width:4px;border-radius:2px;background:var(--chColor,#607d8b)}
.pr-ch-card:hover{box-shadow:0 1px 6px rgba(0,0,0,.08)}
.pr-ch-card .pch-hd{display:flex;flex-direction:column;align-items:flex-start;gap:2px;margin-bottom:3px;min-width:0}
.pr-ch-card .pch-nom{font-size:12px;font-weight:800;color:#1a237e;line-height:1.2;text-transform:uppercase;letter-spacing:.2px;min-width:0;overflow-wrap:anywhere;word-break:break-word;hyphens:auto}
.pr-ch-card .pch-code{font-size:9px;color:#5c6bc0;background:#e8eaf6;padding:1px 6px;border-radius:10px;font-weight:700;letter-spacing:.2px;display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pr-ch-card .pch-desc{font-size:10px;font-style:italic;color:#90a4ae;line-height:1.3;margin-bottom:3px;overflow-wrap:anywhere;word-break:break-word;hyphens:auto;white-space:normal}
.pr-ch-card .pch-meta{font-size:10px;color:#546e7a;line-height:1.35;margin-bottom:3px;display:flex;flex-direction:column;gap:2px}
.pr-ch-card .pch-meta span{overflow-wrap:anywhere;word-break:break-word;white-space:normal}
.pr-ch-card .pch-kpis{display:flex;flex-direction:column;align-items:flex-start;gap:2px;margin-top:3px}
.pr-ch-card .pch-pill{display:inline-flex;align-items:center;gap:3px;padding:1px 7px;border-radius:10px;font-size:9px;font-weight:600;line-height:1.4;white-space:nowrap;border:1px solid transparent;max-width:100%;overflow:hidden;text-overflow:ellipsis}
.pr-ch-card .pch-pill.pk-date{background:#e3f2fd;color:#0d47a1;border-color:#bbdefb}
.pr-ch-card .pch-pill.pk-dur{background:#ede7f6;color:#4527a0;border-color:#d1c4e9}
.pr-ch-card .pch-pill.pk-money{background:#e8f5e9;color:#1b5e20;border-color:#a5d6a7;font-weight:700}
.pr-ch-card .pch-pill.pk-hr{background:#fff3e0;color:#bf360c;border-color:#ffcc80}
.pr-ch-card .pch-pill.pk-absence{background:#fff8e1;color:#e65100;border-color:#ffe082}
.pra-res-item{display:flex;align-items:center;gap:8px;padding:4px 8px;border-bottom:1px solid #f5f5f5;font-size:11px}
.pra-res-item:last-child{border:none}
.pra-res-item label{display:flex;align-items:center;gap:6px;cursor:pointer;flex:1}
.prn-card{padding:5px 8px;border-radius:5px;margin-bottom:4px;border-left:3px solid #ccc;background:#fff;font-size:11px}
.prn-card.prn-info{border-left-color:#1565c0;background:#e3f2fd}
.prn-card.prn-important{border-left-color:#e65100;background:#fff3e0}
.prn-card.prn-urgent{border-left-color:#c62828;background:#ffebee}
.prn-card .prn-meta{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;margin-bottom:3px;font-size:10px;color:#546e7a}
.prn-card .prn-meta .prn-ch{font-weight:700;color:#1a237e;font-size:11px}
.prn-card .prn-meta .prn-scope{color:#37474f;font-weight:600}
.prn-card .prn-meta .prn-time{color:#90a4ae;font-size:9px;font-style:italic;margin-left:auto}
.prn-card .prn-body{color:#333;font-size:12px;line-height:1.35}
.prn-card .prn-files{display:flex;gap:4px;flex-wrap:wrap;margin-top:4px}
.prn-card .prn-file-link{font-size:9px;background:#f5f5f5;padding:2px 6px;border-radius:3px;color:#1565c0;cursor:pointer;text-decoration:none}
.prn-card .prn-actions{float:right;display:flex;align-items:center;gap:4px}
.prn-card .prn-del{cursor:pointer;color:#bbb;font-size:14px}
.prn-card .prn-del:hover{color:#c62828}
.prn-card .prn-edit{cursor:pointer;color:#1565c0;font-size:14px;transition:color .15s,transform .15s}
.prn-card .prn-edit:hover{color:#0d47a1;transform:scale(1.15)}
.prn-card .prn-locked{color:#90a4ae;font-size:13px;cursor:help;opacity:.65}
.prn-card.prn-editing{outline:2px solid #1565c0;outline-offset:-2px;box-shadow:0 0 0 3px rgba(21,101,192,.15)}
.prn-card.prn-editing::before{content:'✎ EN COURS DE MODIFICATION';display:block;font-size:9px;font-weight:700;color:#fff;background:#1565c0;padding:2px 8px;margin:-5px -8px 5px;border-radius:5px 5px 0 0;letter-spacing:.4px}
.pr-note-icon{display:inline-block;width:14px;height:14px;text-align:center;font-size:10px;cursor:pointer;vertical-align:middle;opacity:.6}
.pr-note-icon:hover{opacity:1}
.pr-meteo-row td{background:#f0f8ff!important;padding:1px 3px!important;text-align:center;font-size:9px;border-bottom:2px solid #e0e0e0!important}
.pr-meteo-cell{display:flex;flex-direction:column;align-items:center;gap:0;font-size:8px;line-height:1.3}
.pr-meteo-cell .pm-line1{display:flex;align-items:center;gap:3px;white-space:nowrap}
.pr-meteo-cell .pm-line2{display:flex;align-items:center;gap:3px;white-space:nowrap}
.pr-meteo-cell .pm-icon{font-size:12px}
.pr-meteo-cell .pm-temp{font-weight:600;color:#333}
.pr-meteo-cell .pm-wind{color:#1565c0}
.pr-meteo-cell .pm-rain{color:#0277bd;font-weight:600}
/* DECHETS */
#dec-summary{display:flex;gap:12px;padding:10px 14px;flex-wrap:wrap}
.dec-stat{flex:1;min-width:150px;padding:12px 16px;border-radius:8px;text-align:center;color:#fff;font-size:12px}
.dec-stat .ds-val{font-size:22px;font-weight:800;display:block}
.dec-stat .ds-lbl{font-size:10px;opacity:.85;margin-top:2px}
#dec-grid{padding:0 14px 14px}
.dec-table{width:100%;border-collapse:collapse;font-size:11px;background:#fff;border-radius:6px;overflow:hidden;box-shadow:0 1px 4px rgba(0,0,0,.08)}
.dec-table thead{background:#37474f;color:#fff}
.dec-table th{padding:8px 10px;text-align:left;font-weight:600;font-size:10px;text-transform:uppercase;letter-spacing:.3px}
.dec-table td{padding:7px 10px;border-bottom:1px solid #f0f0f0}
.dec-table tr:hover{background:#f5f5f5}
.dec-table .dec-cat{font-weight:600;color:#1a237e}
.dec-table .dec-danger{color:#c62828;font-weight:700}
.dec-table .dec-ok{color:#2e7d32}
.dec-badge{display:inline-block;font-size:8px;font-weight:700;color:#fff;padding:2px 6px;border-radius:3px}
/* PRINT */
@media print{
 @page{size:landscape;margin:8mm}
 body{overflow:visible!important;background:#fff!important}
 #ribbon,#sidebar,#btn-open-sb,.modal,.modal-overlay,#ctx-menu,.toast{display:none!important}
 #app{position:static!important;display:block!important}
 #main{position:static!important;overflow:visible!important}
 .tc{position:static!important;overflow:visible!important}
 .tc.hidden{display:none!important}
 #dash{padding:0!important;overflow:visible!important;height:auto!important}
 .dmtx{font-size:9px!important;box-shadow:none!important}
 .dmtx th{font-size:8px!important;padding:3px 2px!important}
 .dmtx td{padding:2px!important;font-size:8px!important}
 .dmtx td.rn{font-size:9px!important;min-width:100px!important}
 .dmtx .cf{font-size:7px!important}
 .cell-int{cursor:default!important}
 .cell-int:hover{outline:none!important}
 /* Gantt print */
 #gantt-container{overflow:visible!important;height:auto!important}
 #gantt-container .vis-timeline{overflow:visible!important;border:none!important}
 #gantt-container .vis-panel{overflow:visible!important}
 .gantt-print-header{display:block!important}
 .gantt-print-footer{display:block!important}
}
.dmtx .cf{border-radius:2px;color:#fff;font-size:9px;font-weight:600}
.dmtx .cfe{background:#fce4ec}
/* Interactive cells */
.dmtx td.cell-int{cursor:pointer;transition:all .15s;position:relative}
.dmtx td.cell-int:hover{outline:2px solid var(--accent);outline-offset:-2px;z-index:1}
.dmtx td.cell-int:not(.cf):hover{background:#e3f2fd!important}
.dmtx td.cell-int.cf:hover{filter:brightness(1.15)}
/* Assignment modal list */
.assign-item{display:flex;align-items:center;gap:10px;padding:10px 12px;margin:4px 0;border-radius:6px;cursor:pointer;transition:.15s;border:1px solid #eee}
.assign-item:hover{background:#f5f5f5;border-color:var(--accent-light)}
.assign-item .a-dot{width:14px;height:14px;border-radius:3px;flex-shrink:0}
.assign-item .a-name{font-weight:600;font-size:13px}
.assign-item .a-code{font-size:11px;color:var(--txt2);margin-left:auto}
.assign-cur{margin-bottom:12px;padding:10px 14px;border-radius:6px;display:flex;align-items:center;justify-content:space-between;gap:10px}
.assign-cur .cur-label{font-weight:600;font-size:13px;display:flex;align-items:center;gap:8px}
.assign-cur .cur-dot{width:12px;height:12px;border-radius:3px}
.assign-remove{display:flex;align-items:center;gap:10px;padding:12px 14px;margin:4px 0;border-radius:6px;cursor:pointer;border:2px dashed #ef9a9a;color:#c62828;font-weight:600;font-size:13px;transition:.15s}
.assign-remove:hover{background:#ffebee;border-color:#c62828}
.assign-remove i{font-size:18px}

.modal{border-radius:10px!important;max-height:85vh!important}
.modal-lg{width:700px!important;max-width:90vw!important}
/* Fiche chantier (m-ch) : modale plus large pour accueillir le tableau Phasage à 12 colonnes */
#m-ch.modal-lg{width:1100px!important;max-width:95vw!important;max-height:90vh!important}
#m-ch .modal-content{max-height:calc(90vh - 56px)!important;padding:0 24px 24px!important}
/* Bandeau et onglets sticky en haut du contenu — on remonte au-dessus du scroll */
#m-ch .m-ch-banner{position:sticky;top:0;z-index:30;background:linear-gradient(135deg,#1a237e 0%,#3949ab 55%,#5c6bc0 100%)!important;color:#fff;padding:10px 24px;margin:0 -24px 0;display:flex;align-items:center;gap:10px;box-shadow:0 2px 8px -4px rgba(0,0,0,.25);border-radius:0}
#m-ch .m-ch-banner h5,#m-ch .m-ch-banner .mcb-sub{color:#fff!important}
#m-ch .ch-modal-tabs{position:sticky;top:54px;z-index:25;background:linear-gradient(180deg,#fff,#fbfbfd);margin:0 -24px 10px;padding:6px 24px;box-shadow:0 1px 0 #e0e0e0}
/* Tableau Phasage : scroll horizontal local quand il déborde, plus compact */
#chtab-phasage #ch-phase-list{overflow-x:auto;border:1px solid #eceff1;border-radius:6px;background:#fff;max-width:100%}
#chtab-phasage #ch-phase-list table{font-size:10.5px;min-width:1050px}
#chtab-phasage #ch-phase-list th,#chtab-phasage #ch-phase-list td{padding:4px 6px!important;white-space:nowrap}
#chtab-phasage #ch-phase-list th{position:sticky;top:0;background:#e8eaf6;z-index:2}
#chtab-phasage .ph-add-section{flex-wrap:wrap;gap:6px;align-items:center}
#chtab-phasage .ph-add-section input,#chtab-phasage .ph-add-section select{font-size:11px}
.modal h5{font-size:18px;margin-bottom:14px}
.modal .modal-footer{padding:8px 16px}
.exports-ct{padding:16px}
/* PARAMS */
#v-params{padding:20px}
/* === Onglet ÉDITIONS === */
#v-edit{padding:14px 20px;overflow:auto}
.ed2-form{background:#fff;border:1px solid #cfd8dc;border-radius:10px;padding:18px 22px;box-shadow:0 1px 4px rgba(0,0,0,.06)}
.ed2-form-hd{display:flex;align-items:center;gap:12px;padding-bottom:12px;margin-bottom:14px;border-bottom:2px solid #c5cae9}
.ed2-form-hd i{font-size:28px;color:#1a237e}
.ed2-form-hd h2{margin:0;font-size:18px;font-weight:700;color:#1a237e}
.ed2-form-hd p{margin:0;font-size:11px;color:#78909c}
.ed2-row{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:12px}
.ed2-field{display:flex;flex-direction:column;gap:4px}
.ed2-field label{font-size:11px;font-weight:700;color:#1a237e;text-transform:uppercase;letter-spacing:.3px;margin:0}
.ed2-field select,.ed2-field input{border:1px solid #cfd8dc!important;border-radius:5px!important;height:36px!important;font-size:13px!important;padding:4px 10px!important;margin:0!important;box-shadow:none!important;background:#fff!important;-webkit-appearance:menulist;appearance:menulist;width:100%}
.ed2-field select:focus,.ed2-field input:focus{border-color:#1a237e!important;box-shadow:0 0 0 2px rgba(26,35,126,.15)!important;outline:none}
.ed2-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:14px;padding-top:12px;border-top:1px dashed #e0e0e0}
.ed2-actions .btn{height:36px!important;line-height:36px!important;padding:0 18px!important;border-radius:5px!important;text-transform:none!important;font-weight:600!important}
.ed2-preview-box{background:#fff;border:1px solid #cfd8dc;border-radius:10px;box-shadow:0 1px 4px rgba(0,0,0,.06);overflow:hidden;display:none}
.ed2-preview-box.visible{display:flex;flex-direction:column}
.ed2-preview-tb{background:linear-gradient(90deg,#37474f,#263238);color:#fff;padding:10px 14px;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.ed2-preview-tb .ed2-preview-title{font-size:13px;font-weight:700;display:flex;align-items:center;gap:8px}
.ed2-preview-tb .ed2-preview-meta{font-size:11px;opacity:.85;margin-left:auto}
.ed2-preview-tb .btn{background:#fff!important;color:#1a237e!important;height:30px!important;line-height:30px!important;padding:0 14px!important;border-radius:5px!important;font-size:11px!important;font-weight:700!important;text-transform:none!important;box-shadow:none!important}
.ed2-preview-tb .btn:hover{background:#e3f2fd!important}
.ed2-preview-tb .btn.red{background:#c62828!important;color:#fff!important}
.ed2-preview-tb .btn.red:hover{background:#b71c1c!important}
.ed2-preview-tb .btn.green{background:#2e7d32!important;color:#fff!important}
.ed2-preview-tb .btn.green:hover{background:#1b5e20!important}
.ed2-preview-tb .btn.grey{background:#90a4ae!important;color:#fff!important}
.ed2-preview-zone{background:#cfd8dc;padding:20px;overflow:auto;max-height:calc(100vh - 360px);min-height:400px}
.ed2-preview-zone iframe{display:block;margin:0 auto;background:#fff;border:none;box-shadow:0 4px 16px rgba(0,0,0,.25)}
.ed2-xls-preview{background:#fff;padding:20px;max-height:calc(100vh - 360px);overflow:auto}
.ed2-xls-preview table{width:100%;border-collapse:collapse;font-size:11px;font-family:Consolas,monospace}
.ed2-xls-preview th{background:#1b5e20;color:#fff;padding:6px 8px;text-align:left;font-weight:700;border:1px solid #0d4514}
.ed2-xls-preview td{padding:5px 8px;border:1px solid #c8e6c9;vertical-align:top}
.ed2-xls-preview tr:nth-child(even) td{background:#f1f8e9}
.ed-banner{display:flex;align-items:center;gap:14px;padding:12px 18px;background:linear-gradient(90deg,#1a237e,#3949ab);color:#fff;border-radius:8px;margin-bottom:18px}
.ed-banner .ed-banner-title{font-size:18px;font-weight:700;display:flex;align-items:center;gap:10px}
.ed-banner .ed-banner-title i{font-size:24px}
.ed-banner .ed-banner-sub{font-size:12px;opacity:.85;margin-left:auto}
.ed-cat{margin-bottom:22px}
.ed-cat-title{font-size:13px;font-weight:700;color:#1a237e;text-transform:uppercase;letter-spacing:.4px;margin-bottom:10px;display:flex;align-items:center;gap:8px;padding-bottom:6px;border-bottom:2px solid #c5cae9}
.ed-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px}
.ed-card{background:#fff;border:1px solid #e0e0e0;border-radius:8px;padding:14px;cursor:pointer;transition:all .15s;display:flex;flex-direction:column;gap:8px;box-shadow:0 1px 3px rgba(0,0,0,.05)}
.ed-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px rgba(26,35,126,.15);border-color:#3949ab}
.ed-card-hd{display:flex;align-items:center;gap:10px}
.ed-card-icon{width:38px;height:38px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:20px;flex-shrink:0;color:#fff}
.ed-card-icon.ed-c-ch{background:linear-gradient(135deg,#1565c0,#0d47a1)}
.ed-card-icon.ed-c-res{background:linear-gradient(135deg,#2e7d32,#1b5e20)}
.ed-card-icon.ed-c-pl{background:linear-gradient(135deg,#7b1fa2,#4a148c)}
.ed-card-icon.ed-c-dec{background:linear-gradient(135deg,#e65100,#bf360c)}
.ed-card-title{font-size:13px;font-weight:700;color:#1a237e;line-height:1.2}
.ed-card-desc{font-size:11px;color:#78909c;line-height:1.4}
.ed-card-actions{display:flex;gap:6px;margin-top:auto;padding-top:6px;border-top:1px dashed #eceff1}
.ed-card-btn{flex:1;padding:6px 8px;border:1px solid #e0e0e0;border-radius:5px;background:#fafafa;font-size:11px;font-weight:600;color:#37474f;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:4px;transition:all .15s}
.ed-card-btn:hover{background:#1a237e;color:#fff;border-color:#1a237e}
.ed-card-btn.ed-pdf:hover{background:#c62828;border-color:#c62828}
.ed-card-btn.ed-xls:hover{background:#2e7d32;border-color:#2e7d32}
/* Modal de paramètres d'édition */
.ed-modal{display:none;position:fixed;inset:0;z-index:9999;background:rgba(0,0,0,.5);align-items:center;justify-content:center}
.ed-modal.visible{display:flex}
.ed-modal-content{background:#fff;border-radius:10px;padding:0;max-width:500px;width:90%;max-height:85vh;overflow-y:auto;box-shadow:0 12px 40px rgba(0,0,0,.3)}
.ed-modal-hd{padding:16px 20px;background:linear-gradient(90deg,#1a237e,#3949ab);color:#fff;border-radius:10px 10px 0 0;display:flex;align-items:center;gap:10px}
.ed-modal-hd i{font-size:22px}
.ed-modal-hd h5{margin:0;font-size:15px;font-weight:700}
.ed-modal-body{padding:18px 20px}
.ed-modal-body label{display:block;font-size:11px;font-weight:600;color:#1a237e;margin-bottom:4px;text-transform:uppercase;letter-spacing:.3px}
.ed-modal-body select,.ed-modal-body input[type=date],.ed-modal-body input[type=number],.ed-modal-body input[type=text]{width:100%;border:1px solid #cfd8dc!important;border-radius:5px!important;height:34px!important;font-size:13px!important;padding:4px 8px!important;margin:0 0 12px!important;box-shadow:none!important;background:#fff!important;-webkit-appearance:menulist;appearance:menulist}
.ed-format-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-bottom:12px}
.ed-format-btn{border:2px solid #e0e0e0;background:#fafafa;padding:8px 6px;border-radius:6px;cursor:pointer;text-align:center;font-size:11px;font-weight:600;color:#546e7a;transition:all .15s;display:flex;flex-direction:column;align-items:center;gap:2px}
.ed-format-btn.active{border-color:#1a237e;background:#e8eaf6;color:#1a237e}
.ed-format-btn i{font-size:22px;margin-bottom:2px}
.ed-format-btn .ed-fmt-lbl{font-weight:700;font-size:11px;letter-spacing:.3px}
.ed-format-btn .ed-fmt-orient{font-size:9px;color:#90a4ae;font-weight:500;letter-spacing:.2px}
.ed-format-btn.active .ed-fmt-orient{color:#3949ab}
.ed-modal-ft{padding:12px 20px;border-top:1px solid #eceff1;display:flex;gap:8px;justify-content:flex-end}
.ed-modal-ft .btn-flat,.ed-modal-ft .btn{height:34px!important;line-height:34px!important;font-size:12px!important;padding:0 14px!important;border-radius:5px!important;text-transform:none!important;font-weight:600!important}
/* === Onglet RÉCAPITULATIF === */
#v-recap{padding:16px;overflow:auto}
#recap-toolbar{margin-bottom:12px}
.recap-banner{display:flex;justify-content:space-between;align-items:center;padding:10px 14px;background:linear-gradient(135deg,#1a237e,#3949ab);color:#fff;border-radius:8px;margin-bottom:10px;flex-wrap:wrap;gap:10px}
.recap-period{display:flex;align-items:center;gap:10px}
.recap-period-label{font-size:15px;font-weight:700;min-width:200px;text-align:center;display:flex;align-items:center;justify-content:center;gap:6px}
.recap-inline-sel,.recap-inline-date{display:inline-block!important;height:28px!important;line-height:28px!important;background:rgba(255,255,255,.15)!important;color:#fff!important;border:1px solid rgba(255,255,255,.35)!important;border-radius:4px!important;padding:0 8px!important;font-size:13px!important;font-weight:600!important;box-shadow:none!important;margin:0!important;width:auto!important;cursor:pointer;outline:none!important}
.recap-inline-sel:hover,.recap-inline-date:hover,.recap-inline-sel:focus,.recap-inline-date:focus{background:rgba(255,255,255,.28)!important;border-color:rgba(255,255,255,.6)!important}
.recap-inline-sel option{color:#1a237e;background:#fff}
.recap-inline-date{font-family:inherit}
.recap-inline-date::-webkit-calendar-picker-indicator{filter:invert(1) brightness(2);opacity:.8;cursor:pointer}
.recap-nav{background:rgba(255,255,255,.15);border:1px solid rgba(255,255,255,.3);color:#fff;cursor:pointer;padding:4px 12px;border-radius:6px;font-size:14px;font-weight:700;transition:all .15s}
.recap-nav:hover{background:rgba(255,255,255,.3)}
.recap-modes{display:flex;gap:4px}
.recap-mode-btn{background:rgba(255,255,255,.15);border:1px solid rgba(255,255,255,.3);color:#fff;cursor:pointer;padding:5px 12px;border-radius:6px;font-size:12px;font-weight:600;transition:all .15s}
.recap-mode-btn:hover{background:rgba(255,255,255,.25)}
.recap-mode-btn.active{background:#fff;color:#1a237e}
.recap-views{display:flex;gap:4px;background:rgba(255,255,255,.1);padding:3px;border-radius:8px}
.recap-view-btn{background:transparent;border:none;color:rgba(255,255,255,.85);cursor:pointer;padding:5px 12px;border-radius:5px;font-size:12px;font-weight:700;transition:all .15s}
.recap-view-btn:hover{background:rgba(255,255,255,.15);color:#fff}
.recap-view-btn.active{background:#fff;color:#1a237e;box-shadow:0 1px 3px rgba(0,0,0,.2)}
.recap-filters{display:flex;align-items:center;gap:6px;padding:6px 10px;background:#f5f5f5;border-radius:6px;flex-wrap:wrap;font-size:11px}
.recap-filter-sep{width:1px;height:20px;background:#cfd8dc;margin:0 4px}
.recap-chip-filter{--c:#90a4ae;display:inline-flex;align-items:center;gap:3px;padding:2px 8px;border-radius:12px;background:#fff;border:1px solid #e0e0e0;cursor:pointer;font-size:11px;color:#90a4ae;transition:all .15s;user-select:none;line-height:1.5}
.recap-chip-filter:hover{border-color:var(--c);color:var(--c)}
.recap-chip-filter:has(input:checked){background:var(--c);border-color:var(--c);color:#fff;font-weight:600;box-shadow:0 1px 2px rgba(0,0,0,.1)}
.recap-chip-filter input{display:none}
.recap-hz-toggle{display:inline-flex;align-items:center;gap:4px;padding:3px 8px;border-radius:12px;background:#fff;border:1px solid #e0e0e0;cursor:pointer;font-size:11px;color:#90a4ae;transition:all .15s;user-select:none;line-height:1.5}
.recap-hz-toggle:hover{border-color:#37474f;color:#37474f}
.recap-hz-toggle:has(input:checked){background:#37474f;border-color:#37474f;color:#fff;font-weight:600}
.recap-hz-toggle input{display:none}
.recap-hz-toggle .material-icons{font-size:13px}
.recap-search{position:relative;display:flex;align-items:center;background:#fff;border:1px solid #cfd8dc;border-radius:20px;padding:2px 8px 2px 30px;min-width:260px;max-width:360px;transition:border-color .15s,box-shadow .15s}
.recap-search:focus-within{border-color:#3949ab;box-shadow:0 0 0 3px rgba(57,73,171,.12)}
.recap-search>.material-icons:first-child{position:absolute;left:8px;top:50%;transform:translateY(-50%);font-size:16px;color:#90a4ae;pointer-events:none}
.recap-search input{border:none!important;outline:none!important;background:transparent!important;font-size:12px!important;height:26px!important;padding:0!important;margin:0!important;flex:1;width:100%;box-shadow:none!important}
.recap-search .recap-search-clear{cursor:pointer;color:#90a4ae;font-size:16px;padding:2px;border-radius:50%;flex-shrink:0}
.recap-search .recap-search-clear:hover{color:#c62828;background:#ffebee}
.recap-cols-wrap{position:relative}
.recap-cols-btn{display:inline-flex;align-items:center;gap:4px;background:#fff;border:1px solid #cfd8dc;border-radius:20px;padding:4px 12px;font-size:11px;font-weight:600;color:#3949ab;cursor:pointer;transition:all .15s}
.recap-cols-btn:hover{background:#e8eaf6;border-color:#3949ab}
.recap-cols-btn i{font-size:14px}
.recap-cols-panel{position:absolute;top:calc(100% + 6px);left:0;background:#fff;border:1px solid #cfd8dc;border-radius:10px;box-shadow:0 8px 24px rgba(0,0,0,.15);padding:10px;z-index:100;min-width:220px}
.recap-cols-panel.hidden{display:none}
.recap-cols-panel .recap-cols-title{font-size:11px;font-weight:700;color:#1a237e;text-transform:uppercase;letter-spacing:.4px;border-bottom:1px solid #e0e0e0;padding-bottom:6px;margin-bottom:6px}
.recap-cols-panel .recap-cols-item{display:flex;align-items:center;gap:6px;padding:4px 2px;font-size:12px;color:#37474f;cursor:pointer;border-radius:4px}
.recap-cols-panel .recap-cols-item:hover{background:#f5f5f5}
.recap-cols-panel .recap-cols-actions{display:flex;gap:4px;margin-top:8px;padding-top:6px;border-top:1px solid #e0e0e0}
.recap-cols-panel .recap-cols-actions .btn{flex:1;height:26px;line-height:26px;font-size:10px;text-transform:none;padding:0 8px}
.recap-tbl{width:100%;border-collapse:collapse;font-size:12px;background:#fff;border-radius:6px;overflow:hidden;box-shadow:0 1px 4px rgba(0,0,0,.08)}
.recap-tbl thead{background:#37474f;color:#fff}
.recap-tbl thead th{padding:8px 6px;font-weight:700;font-size:11px;text-transform:uppercase;letter-spacing:.3px;text-align:center;border-right:1px solid rgba(255,255,255,.1)}
.recap-tbl tbody td{padding:6px 8px;border-bottom:1px solid #eceff1;font-size:12px;color:#37474f}
.recap-tbl .rcp-row-res:hover{background:#eef1f8!important}
.recap-tbl .rcp-caret,.recap-tbl .rcp-caret2{font-size:10px;color:#607d8b;display:inline-block;transition:transform .1s;margin-right:4px}
.recap-tbl .recap-col-resize{position:absolute;top:0;right:-4px;width:8px;height:100%;cursor:col-resize;background:transparent;z-index:5;user-select:none}
.recap-tbl .recap-col-resize:hover,.recap-tbl .recap-col-resize.active{background:linear-gradient(90deg,transparent 0,rgba(255,255,255,.4) 40%,rgba(255,255,255,.7) 50%,rgba(255,255,255,.4) 60%,transparent 100%)}
.recap-tbl .recap-col-resize::after{content:'';position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:2px;height:20px;background:rgba(255,255,255,.5);border-radius:1px;opacity:0;transition:opacity .15s}
.recap-tbl .recap-col-resize:hover::after,.recap-tbl .recap-col-resize.active::after{opacity:1}
.recap-summary{display:flex;gap:14px;padding:10px 14px;background:linear-gradient(90deg,#e8eaf6,#f3e5f5);border-radius:6px;margin-top:10px;font-size:12px;flex-wrap:wrap;border:1px solid #c5cae9;align-items:center}
.recap-summary .rcs-lbl{color:#546e7a;font-weight:600}
.recap-summary b{color:#1a237e;font-size:13px}
.recap-summary .rcs-sep{width:1px;height:28px;background:#c5cae9}
.recap-summary .rcs-group{display:flex;align-items:center;gap:8px}
.recap-summary .rcs-head{color:#37474f;font-weight:700;font-size:12px}
.recap-summary .rcs-pill{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:10px;font-size:11px;font-weight:600;line-height:1.4}
.recap-summary .rcs-p-prev{background:#e3f2fd;color:#0d47a1;border:1px solid #bbdefb}
.recap-summary .rcs-p-reel{background:#e8f5e9;color:#1b5e20;border:1px solid #c8e6c9}
.recap-summary .rcs-p-ecart{background:#fff3e0;color:#bf360c;border:1px solid #ffe0b2}
.recap-tbl .rcp-grp-head{text-align:center;font-size:12px;font-weight:700;letter-spacing:.4px;text-transform:uppercase;padding:6px 4px;border-bottom:2px solid rgba(255,255,255,.2);color:#fff}
.recap-tbl .rcp-grp-trajet{background:#546e7a}
.recap-tbl .rcp-grp-heures{background:#1565c0}
.recap-tbl .rcp-grp-jours{background:#3949ab}
.recap-tbl .rcp-grp-paniers{background:#e65100}
.recap-tbl .rcp-sub{text-align:center;font-size:10px;font-weight:600;padding:4px 2px;text-transform:uppercase;letter-spacing:.3px}
.recap-tbl .rcp-sub-prev{background:#bbdefb;color:#0d47a1}
.recap-tbl .rcp-sub-reel{background:#c8e6c9;color:#1b5e20}
.recap-tbl .rcp-sub-ecart{background:#ffe0b2;color:#bf360c}
.recap-print-head{display:none;align-items:center;gap:14px;padding:8px 12px;background:#fff;border:1px solid #e0e0e0;border-radius:6px;margin-bottom:8px;font-size:12px}
.recap-print-head .rph-logo{width:70px;min-width:70px;height:50px;display:flex;align-items:center;justify-content:center;background:#fafafa;border:1px dashed #e0e0e0;border-radius:4px;overflow:hidden}
.recap-print-head .rph-logo:empty{display:none}
.recap-print-head .rph-logo img{max-width:100%;max-height:100%;object-fit:contain}
.recap-print-head .rph-logo:has(img){background:#fff;border:none}
.recap-print-head .rph-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.recap-print-head .rph-name{font-size:14px;font-weight:700;color:#1a237e;line-height:1.2}
.recap-print-head .rph-adr{font-size:10px;color:#78909c}
.recap-print-head .rph-title{font-size:12px;font-weight:600;color:#37474f;margin-top:2px}
.recap-print-head .rph-date{text-align:right;font-size:11px;color:#455a64;display:flex;flex-direction:column;gap:1px;white-space:nowrap}
.recap-print-head .rph-date-lbl{font-size:9px;color:#90a4ae;text-transform:uppercase;letter-spacing:.4px}
.recap-print-head .rph-date-val{font-weight:600;color:#263238}
/* Mode impression PDF — conforme à l'affichage */
@media print{
 body.recap-printing *{visibility:hidden}
 body.recap-printing #v-recap,body.recap-printing #v-recap *{visibility:visible;-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important}
 body.recap-printing #v-recap{position:absolute;left:0;top:0;width:100%;padding:8mm}
 body.recap-printing .recap-banner{margin-bottom:6px;padding:6px 10px;border-radius:4px}
 body.recap-printing .recap-print-head{display:flex!important;margin-bottom:8px;padding:10px 12px;border:2px solid #263238;border-radius:4px;page-break-inside:avoid}
 body.recap-printing .recap-print-head .rph-logo{width:90px;min-width:90px;height:60px}
 body.recap-printing .recap-print-head .rph-name{font-size:16px}
 body.recap-printing .recap-print-head .rph-adr{font-size:10px}
 body.recap-printing .recap-print-head .rph-title{font-size:13px}
 body.recap-printing .recap-print-head .rph-date-val{font-size:12px}
 body.recap-printing .recap-nav,body.recap-printing .recap-modes,body.recap-printing .recap-views,body.recap-printing .recap-filters{display:none!important}
 body.recap-printing .recap-period-label{font-size:14px;text-align:left;justify-content:flex-start}
 body.recap-printing .recap-inline-sel,body.recap-printing .recap-inline-date{background:transparent!important;border:none!important;appearance:none!important;-webkit-appearance:none!important;padding:0 2px!important;color:#fff!important;pointer-events:none}
 body.recap-printing .recap-inline-sel::-ms-expand{display:none}
 body.recap-printing .recap-tbl{box-shadow:none;font-size:9px}
 body.recap-printing .recap-tbl th,body.recap-printing .recap-tbl td{padding:3px 4px!important}
 body.recap-printing .recap-summary{font-size:10px;padding:6px 10px;margin-top:6px}
 body.recap-printing .recap-summary .rcs-pill{font-size:9px;padding:1px 5px}
 /* Coupure de page : éviter de couper un groupe au milieu */
 body.recap-printing .rcp-grp-sep,body.recap-printing .rcp-grp-sep-ch,body.recap-printing .rcp-grp-sep-res{page-break-inside:avoid}
 body.recap-printing .recap-tbl thead{display:table-header-group}
}
#v-recap{padding:14px 20px;overflow:auto}
.recap-tb{display:flex;align-items:center;gap:12px;padding:10px 14px;background:linear-gradient(90deg,#e8eaf6,#f3e5f5);border:1px solid #c5cae9;border-radius:8px;flex-wrap:wrap;margin-bottom:14px}
.recap-tb-title{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:700;color:#1a237e}
.recap-tb-title i{font-size:22px}
.recap-mode-tabs{display:flex;gap:4px;background:#fff;border:1px solid #cfd8dc;border-radius:20px;padding:2px}
.recap-mode-btn{border:none;background:transparent;color:#546e7a;border-radius:14px;padding:4px 12px;font-size:11px;font-weight:600;cursor:pointer;transition:all .15s;white-space:nowrap}
.recap-mode-btn:hover{color:#1a237e}
.recap-mode-btn.active{background:linear-gradient(135deg,#1a237e,#3949ab);color:#fff;box-shadow:0 1px 3px rgba(26,35,126,.25)}
.recap-period-sel{display:flex;align-items:center;gap:6px}
.recap-sel,.recap-date{border:1px solid #cfd8dc!important;border-radius:5px!important;height:30px!important;font-size:12px!important;padding:3px 8px!important;background:#fff!important;box-shadow:none!important;margin:0!important}
.recap-actions{display:flex;gap:6px;margin-left:auto}
.recap-actions .btn{border-radius:5px;text-transform:none;font-weight:600;box-shadow:0 1px 3px rgba(0,0,0,.12)}
.recap-empty{padding:40px;text-align:center;color:#999;font-size:12px;background:#fff;border-radius:8px;border:1px dashed #cfd8dc}
.recap-synth{background:#fff;border:1px solid #cfd8dc;border-radius:8px;padding:12px 14px;margin-bottom:12px;box-shadow:0 1px 3px rgba(0,0,0,.05)}
.recap-synth-title{font-size:13px;font-weight:700;color:#37474f;margin-bottom:8px}
.recap-synth-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px}
.recap-kpi{background:#f5f7fb;border-left:3px solid #3949ab;padding:8px 12px;border-radius:5px;display:flex;flex-direction:column;gap:2px}
.recap-kpi-v{font-size:20px;font-weight:800;color:#1a237e;line-height:1.1}
.recap-kpi-l{font-size:10px;color:#78909c;text-transform:uppercase;letter-spacing:.3px;font-weight:600}
.recap-tbl{width:100%;border-collapse:collapse;background:#fff;border-radius:8px;overflow:hidden;box-shadow:0 1px 4px rgba(0,0,0,.08);font-size:11px}
.recap-tbl thead th{background:#1a237e;color:#fff;padding:8px 10px;text-align:left;font-weight:700;font-size:11px}
.recap-tbl tbody td{padding:6px 10px;border-bottom:1px solid #eceff1;color:#37474f}
.recap-tbl tbody tr:hover{background:#fafbfc}
.recap-ch-dot{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:6px;vertical-align:middle}
.recap-tbl tr.recap-total td{background:linear-gradient(90deg,#1a237e,#3949ab);color:#fff;font-weight:800;font-size:12px;padding:8px 10px;border:none}
.params-card{background:#fff;border-radius:8px;box-shadow:var(--shadow);padding:20px 24px;margin-bottom:16px;max-width:860px}
/* Budget de la ressource (onglet) */
.bdg-pane{display:flex;flex-direction:column;gap:14px}
.bdg-row{display:grid;grid-template-columns:1fr 130px;gap:10px;align-items:end}
.bdg-lbl{display:block;font-size:10.5px;font-weight:600;color:#1a237e;text-transform:uppercase;letter-spacing:.3px;margin-bottom:3px}
.bdg-pane select,.bdg-pane input[type=text],.bdg-pane input[type=number],.bdg-pane input[type=date]{width:100%;border:1px solid #cfd8dc!important;border-radius:5px!important;height:32px!important;font-size:12px!important;padding:2px 8px!important;margin:0!important;box-shadow:none!important;background:#fff!important}
.bdg-model-info{padding:8px 12px;border-radius:6px;background:#fafbfc;border:1px dashed #cfd8dc;font-size:11px;color:#37474f;line-height:1.6}
.bdg-model-info.has{background:#e8eaf6;border-style:solid;border-color:#5c6bc0;color:#1a237e}
.bdg-model-info b{color:#0d47a1}
.bdg-cost-tbl{width:100%;border-collapse:collapse;font-size:11.5px}
.bdg-cost-tbl thead th{background:#1a237e;color:#fff;padding:5px 10px;font-size:10.5px;font-weight:700;text-align:left;letter-spacing:.3px}
.bdg-cost-tbl thead th.num{text-align:right}
.bdg-cost-tbl tbody tr:nth-child(even){background:#fff8e1}
.bdg-cost-tbl td{padding:3px 6px;border-bottom:1px solid #e0e0e0}
.bdg-cost-tbl input{width:100%;border:1px solid transparent;background:transparent;font-size:11.5px;padding:3px 6px;border-radius:3px}
.bdg-cost-tbl input:focus{border-color:#1a237e;background:#fff;outline:none}
.bdg-cost-tbl .num input{text-align:right;font-variant-numeric:tabular-nums}
.bdg-del{color:#c62828;cursor:pointer;font-size:16px;line-height:1}
.bdg-del:hover{color:#b71c1c}
.bdg-section{background:#fff;border:1px solid #cfd8dc;border-radius:6px;padding:10px 12px}
.bdg-section-hd{display:flex;align-items:center;gap:8px;margin-bottom:8px;font-size:12px;font-weight:700;color:#1a237e}
.bdg-section-hd .grow{flex:1}
/* Rémunération modèles — design moderne master-detail */
.params-section[data-psec="remun"]{max-width:1320px}
.rm-shell{background:#fff;border-radius:14px;box-shadow:0 4px 16px rgba(31,45,70,.06);padding:18px 20px;border:1px solid #eceff1}
/* Top bar */
.rm-topbar{display:flex;flex-direction:column;gap:12px;margin-bottom:14px;padding-bottom:14px;border-bottom:1px solid #eceff1}
.rm-topbar-title{display:flex;align-items:center;gap:14px;width:100%;min-width:0}
.rm-topbar-title>div:not(.rm-topbar-ico){flex:1;min-width:0;overflow:hidden}
.rm-topbar-ico{width:46px;height:46px;border-radius:12px;background:linear-gradient(135deg,#1a237e,#5c6bc0);display:flex;align-items:center;justify-content:center;color:#fff;box-shadow:0 4px 14px rgba(57,73,171,.35)}
.rm-topbar-ico i{font-size:24px}
.rm-topbar-h{font-size:18px;font-weight:700;color:#1a237e;letter-spacing:-.2px}
.rm-topbar-sub{font-size:11.5px;color:#78909c;margin-top:1px;line-height:1.4}
.rm-topbar-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;width:100%;min-width:0}
.rm-search-wrap{position:relative;flex:1;min-width:160px;max-width:300px}
.rm-stats-badge{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;background:#fafbfc;border:1px solid #eceff1;border-radius:8px;font-size:11px;color:#546e7a;font-weight:600}
.rm-stats-badge .rm-stats-num{font-size:14px;font-weight:800;color:#1a237e;font-variant-numeric:tabular-nums}
.rm-stats-badge i{font-size:14px;color:#5c6bc0}
.rm-search-wrap i{position:absolute;left:10px;top:50%;transform:translateY(-50%);font-size:18px;color:#90a4ae;pointer-events:none}
.rm-search-wrap input{width:100%;border:1px solid #cfd8dc!important;border-radius:8px!important;height:36px!important;font-size:13px!important;padding:0 10px 0 34px!important;margin:0!important;box-shadow:none!important;background:#fafbfc!important;transition:all .15s}
.rm-search-wrap input:focus{background:#fff!important;border-color:#5c6bc0!important;box-shadow:0 0 0 3px rgba(92,107,192,.12)!important}
.rm-btn-arch{border:1px solid #cfd8dc;background:#fff;color:#546e7a;border-radius:8px;width:36px;height:36px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .15s}
.rm-btn-arch:hover{background:#fff3e0;color:#e65100;border-color:#ffcc80}
.rm-btn-arch.active{background:linear-gradient(135deg,#e65100,#fb8c00);color:#fff;border-color:transparent;box-shadow:0 2px 8px rgba(230,81,0,.3)}
.rm-btn-arch i{font-size:18px}
.rm-btn-new{border:none;background:linear-gradient(135deg,#1b5e20,#43a047);color:#fff;border-radius:8px;height:36px;padding:0 16px;font-size:13px;font-weight:600;display:flex;align-items:center;gap:6px;cursor:pointer;box-shadow:0 2px 8px rgba(46,125,50,.3);transition:all .15s}
.rm-btn-new:hover{transform:translateY(-1px);box-shadow:0 4px 14px rgba(46,125,50,.4)}
.rm-btn-new i{font-size:18px}
.rm-btn-new-block{width:100%;justify-content:center;height:42px;font-size:14px;margin-bottom:10px;border-radius:10px}
.rm-btn-new-block i{font-size:20px}
.rm-stats-resources-badge{cursor:help;position:relative;transition:all .15s}
.rm-stats-resources-badge:hover{background:#e8eaf6;border-color:#c5cae9}
.rm-rt-popover{position:fixed;background:#fff;border:1px solid #cfd8dc;border-radius:10px;box-shadow:0 10px 32px rgba(0,0,0,.18);padding:0;width:340px;max-width:90vw;max-height:60vh;overflow:hidden;display:flex;flex-direction:column;z-index:11000;font-size:12px;color:#37474f;opacity:0;transform:translateY(4px);transition:opacity .12s,transform .12s;pointer-events:none}
.rm-rt-popover.visible{opacity:1;transform:none;pointer-events:auto}
.rm-rt-hd{padding:10px 14px;background:linear-gradient(135deg,#1a237e,#3949ab);color:#fff;display:flex;align-items:center;gap:8px;font-weight:700;font-size:13px}
.rm-rt-hd i{font-size:18px}
.rm-rt-body{padding:8px 0;overflow-y:auto;flex:1}
.rm-rt-empty{padding:20px;text-align:center;color:#90a4ae;font-style:italic}
.rm-rt-cat{padding:6px 14px 4px;font-size:10px;font-weight:700;color:#1a237e;text-transform:uppercase;letter-spacing:.4px;background:#fafbfc;border-bottom:1px solid #eceff1;display:flex;align-items:center;gap:5px}
.rm-rt-cat i{font-size:14px}
.rm-rt-cat-cnt{margin-left:auto;background:#e8eaf6;color:#1a237e;padding:1px 7px;border-radius:9px;font-size:10px;font-weight:700}
.rm-rt-item{padding:5px 14px 5px 28px;border-bottom:1px solid #f5f5f5;font-size:11.5px;color:#37474f;display:flex;align-items:center;gap:5px}
.rm-rt-item:last-child{border-bottom:none}
.rm-rt-item-name{flex:1;font-weight:600;color:#1a237e;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rm-rt-item-model{font-size:10px;color:#78909c;font-weight:500;padding:1px 6px;background:#fafbfc;border-radius:8px;border:1px solid #eceff1;max-width:140px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* Filtres types */
.rm-filters{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:14px}
.rm-chip{border:1px solid #cfd8dc;background:#fafbfc;color:#546e7a;border-radius:20px;height:30px;padding:0 12px;font-size:12px;font-weight:600;display:flex;align-items:center;gap:5px;cursor:pointer;transition:all .15s}
.rm-chip:hover{background:#fff;border-color:#5c6bc0;color:#1a237e}
.rm-chip i{font-size:15px}
.rm-chip.active{background:linear-gradient(135deg,#1a237e,#3949ab);color:#fff;border-color:transparent;box-shadow:0 2px 8px rgba(57,73,171,.25)}
.rm-chip-cnt{font-size:10px;background:rgba(0,0,0,.08);color:inherit;padding:1px 7px;border-radius:10px;font-weight:700;min-width:18px;text-align:center}
.rm-chip.active .rm-chip-cnt{background:rgba(255,255,255,.2)}
.rm-chip.rm-chip-personnel.active{background:linear-gradient(135deg,#0d47a1,#1976d2)}
.rm-chip.rm-chip-interim.active{background:linear-gradient(135deg,#00695c,#00897b)}
.rm-chip.rm-chip-mati.active{background:linear-gradient(135deg,#bf360c,#ef6c00)}
.rm-chip.rm-chip-matl.active{background:linear-gradient(135deg,#4527a0,#7e57c2)}
.rm-chip.rm-chip-arch{border-color:#90a4ae;color:#546e7a;background:#fff;border-style:dashed}
.rm-chip.rm-chip-arch:hover{background:#fff3e0;color:#bf360c;border-color:#ffb74d}
.rm-chip.rm-chip-arch.active{background:linear-gradient(135deg,#bf360c,#e65100);color:#fff;border-color:transparent;border-style:solid;box-shadow:0 2px 8px rgba(191,54,12,.3)}
/* Layout */
.rm-layout{display:grid;grid-template-columns:minmax(420px,1.1fr) minmax(420px,1fr);gap:18px;align-items:start}
.rm-layout.rm-no-detail{grid-template-columns:1fr}
@media(max-width:1100px){.rm-layout{grid-template-columns:1fr}}
/* Cards pane */
.rm-cards-pane{display:flex;flex-direction:column;gap:10px;max-height:680px;overflow-y:auto;padding-right:6px}
.rm-cards-pane::-webkit-scrollbar{width:8px}
.rm-cards-pane::-webkit-scrollbar-thumb{background:#cfd8dc;border-radius:4px}
.rm-cards{display:flex;flex-direction:column;gap:8px}
.rm-card{background:#fff;border:1.5px solid #eceff1;border-radius:12px;padding:12px 14px;cursor:pointer;transition:all .18s;position:relative;overflow:hidden}
.rm-card:hover{border-color:#5c6bc0;box-shadow:0 4px 16px rgba(57,73,171,.12);transform:translateY(-1px)}
.rm-card.active{border-color:#1a237e;background:linear-gradient(135deg,#f3f7ff,#fff);box-shadow:0 4px 18px rgba(26,35,126,.15)}
.rm-card.archived{opacity:.6;background:#fafafa}
.rm-card.archived::before{content:'';position:absolute;top:0;left:0;width:5px;height:100%;background:#90a4ae}
.rm-card-row{display:flex;align-items:center;gap:10px}
.rm-card-row.first{margin-bottom:8px}
.rm-card-name{font-size:14.5px;font-weight:700;color:#1a237e;flex:1;line-height:1.3;min-width:0;overflow:hidden;text-overflow:ellipsis}
.rm-card.archived .rm-card-name{text-decoration:line-through;color:#90a4ae}
.rm-card-vis{cursor:pointer;width:28px;height:28px;display:flex;align-items:center;justify-content:center;border-radius:6px;transition:all .15s;color:#90a4ae}
.rm-card-vis:hover{background:#eceff1}
.rm-card-vis.on{color:#2e7d32}
.rm-card-vis.off{color:#c62828}
.rm-card-vis i{font-size:18px}
.rm-card-del{cursor:pointer;width:28px;height:28px;display:flex;align-items:center;justify-content:center;border-radius:6px;color:#90a4ae;transition:all .15s}
.rm-card-del:hover{background:#ffebee;color:#c62828}
.rm-card-del i{font-size:18px}
.rm-card-badges{display:flex;gap:5px;flex-wrap:wrap;margin-bottom:8px}
.rm-badge{display:inline-flex;align-items:center;gap:4px;font-size:10.5px;font-weight:600;padding:3px 8px;border-radius:10px;letter-spacing:.2px}
.rm-badge i{font-size:13px}
.rm-badge-personnel{background:#e3f2fd;color:#0d47a1}
.rm-badge-interim{background:#e0f2f1;color:#004d40}
.rm-badge-mati{background:#fff3e0;color:#bf360c}
.rm-badge-matl{background:#ede7f6;color:#4527a0}
.rm-card-meta{display:flex;align-items:center;gap:14px;flex-wrap:wrap;font-size:11.5px;color:#546e7a;padding-top:8px;border-top:1px dashed #eceff1}
.rm-card-meta-item{display:flex;align-items:center;gap:4px}
.rm-card-meta-item i{font-size:14px;color:#90a4ae}
.rm-card-meta-item b{color:#1a237e;font-weight:700}
.rm-card-cost{display:inline-flex;align-items:baseline;gap:3px;font-size:14px;font-weight:800;color:#1b5e20;font-variant-numeric:tabular-nums}
.rm-card-cost-unit{font-size:10.5px;color:#558b2f;font-weight:600}
.rm-card-usage{cursor:pointer;text-decoration:none;color:#1565c0;font-weight:700;border-bottom:1px dashed #1565c0}
.rm-card-usage:hover{color:#0d47a1;background:#e3f2fd;padding:0 4px;border-radius:3px}
.rm-cards-empty{padding:60px 20px;text-align:center;color:#90a4ae;font-style:italic;background:#fafbfc;border:2px dashed #cfd8dc;border-radius:12px}
.rm-cards-empty i{font-size:42px;color:#cfd8dc;display:block;margin-bottom:10px}
/* Form pane */
.rm-form-pane{position:sticky;top:14px;background:#fff;border:1.5px solid #eceff1;border-radius:14px;overflow:hidden;display:flex;flex-direction:column;max-height:calc(100vh - 100px)}
.rm-form-empty{padding:60px 30px;text-align:center;color:#90a4ae}
.rm-empty-ico{width:72px;height:72px;border-radius:50%;background:#fafbfc;border:2px dashed #cfd8dc;display:flex;align-items:center;justify-content:center;margin:0 auto 14px}
.rm-empty-ico i{font-size:34px;color:#90a4ae}
.rm-empty-h{font-size:15px;font-weight:700;color:#546e7a;margin-bottom:5px}
.rm-empty-sub{font-size:12.5px;color:#90a4ae;line-height:1.4}
#rm-form{display:flex!important;flex-direction:column;flex:1;overflow:hidden}
.rm-form-banner{display:grid;grid-template-columns:46px 1fr auto;gap:12px;padding:14px 16px;background:linear-gradient(135deg,#1a237e,#3949ab);color:#fff;align-items:start}
.rm-form-banner-ico{width:46px;height:46px;border-radius:10px;background:rgba(255,255,255,.18);display:flex;align-items:center;justify-content:center;color:#fff}
.rm-form-banner-ico i{font-size:24px}
.rm-form-banner-info{display:flex;flex-direction:column;gap:6px;min-width:0}
.rm-form-banner-info input{background:rgba(255,255,255,.15)!important;border:1px solid rgba(255,255,255,.25)!important;color:#fff!important;border-radius:7px!important;height:36px!important;font-size:14px!important;font-weight:700!important;padding:0 12px!important;margin:0!important;box-shadow:none!important}
.rm-form-banner-info input::placeholder{color:rgba(255,255,255,.6)}
.rm-form-banner-info input:focus{background:rgba(255,255,255,.25)!important;border-color:#fff!important}
.rm-form-banner-info textarea{background:rgba(255,255,255,.1)!important;border:1px solid rgba(255,255,255,.2)!important;color:#fff!important;border-radius:7px!important;font-size:11.5px!important;padding:6px 10px!important;margin:0!important;box-shadow:none!important;resize:none;min-height:38px;line-height:1.4!important}
.rm-form-banner-info textarea::placeholder{color:rgba(255,255,255,.55)}
.rm-form-banner-status{display:flex;flex-direction:column;gap:8px;align-items:flex-end}
.rm-status-badge{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:12px;font-size:10.5px;font-weight:700;letter-spacing:.3px;background:rgba(46,204,113,.25);color:#fff;border:1px solid rgba(46,204,113,.5);text-transform:uppercase}
.rm-status-badge i{font-size:13px}
.rm-status-badge.archived{background:rgba(255,152,0,.25);border-color:rgba(255,152,0,.55)}
.rm-archive-btn{display:inline-flex;align-items:center;gap:5px;padding:5px 12px;border-radius:7px;background:rgba(255,255,255,.15);border:1px solid rgba(255,255,255,.3);color:#fff;cursor:pointer;font-size:11.5px;font-weight:600;transition:all .15s}
.rm-archive-btn:hover{background:rgba(255,255,255,.28);border-color:rgba(255,255,255,.5);transform:translateY(-1px)}
.rm-archive-btn i{font-size:15px}
.rm-archive-btn.archived{background:rgba(255,193,7,.2);border-color:rgba(255,193,7,.5)}
.rm-archive-btn.archived:hover{background:rgba(255,193,7,.32)}
.rm-date-fin{display:flex;flex-direction:column;gap:2px}
.rm-date-fin label{font-size:9.5px;font-weight:700;color:rgba(255,255,255,.75);text-transform:uppercase;letter-spacing:.3px}
.rm-date-fin input{background:rgba(255,255,255,.15)!important;border:1px solid rgba(255,255,255,.25)!important;color:#fff!important;border-radius:6px!important;height:28px!important;font-size:11px!important;padding:0 8px!important;margin:0!important;box-shadow:none!important;width:140px}
/* Sections */
.rm-section{padding:14px 16px;border-bottom:1px solid #eceff1}
.rm-section:last-of-type{border-bottom:none}
.rm-section-h{display:flex;align-items:center;gap:6px;font-size:11px;font-weight:700;color:#1a237e;text-transform:uppercase;letter-spacing:.5px;margin-bottom:10px}
.rm-section-h i{font-size:16px;color:#5c6bc0}
.rm-section-action{margin-left:auto;border:none;background:#e8eaf6;color:#1a237e;border-radius:6px;height:26px;padding:0 10px;font-size:11px;font-weight:600;display:flex;align-items:center;gap:4px;cursor:pointer;text-transform:none;letter-spacing:0;transition:all .15s}
.rm-section-action:hover{background:#c5cae9}
.rm-section-action i{font-size:15px;color:#1a237e}
.rm-fld-lbl{display:block;font-size:10.5px;font-weight:600;color:#546e7a;text-transform:uppercase;letter-spacing:.3px;margin-bottom:5px}
/* Types tiles */
.rm-types-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-bottom:14px}
.rm-typ-tile{position:relative;display:flex;flex-direction:column;align-items:center;gap:4px;padding:10px 6px;border:1.5px solid #eceff1;border-radius:8px;cursor:pointer;background:#fafbfc;transition:all .15s;text-align:center}
.rm-typ-tile:hover{background:#fff;border-color:#cfd8dc}
.rm-typ-tile input{position:absolute;opacity:0}
.rm-typ-tile span{font-size:11px;font-weight:600;color:#546e7a;line-height:1.2}
.rm-typ-ico{width:32px;height:32px;border-radius:8px;background:#eceff1;display:flex;align-items:center;justify-content:center;color:#90a4ae;transition:all .2s}
.rm-typ-ico i{font-size:18px}
.rm-typ-tile input:checked ~ span{font-weight:700}
.rm-typ-personnel input:checked ~ .rm-typ-ico{background:#e3f2fd;color:#0d47a1}
.rm-typ-personnel:has(input:checked){background:#e3f2fd;border-color:#1976d2}
.rm-typ-personnel:has(input:checked) span{color:#0d47a1}
.rm-typ-interim input:checked ~ .rm-typ-ico{background:#e0f2f1;color:#004d40}
.rm-typ-interim:has(input:checked){background:#e0f2f1;border-color:#00897b}
.rm-typ-interim:has(input:checked) span{color:#004d40}
.rm-typ-mati input:checked ~ .rm-typ-ico{background:#fff3e0;color:#bf360c}
.rm-typ-mati:has(input:checked){background:#fff3e0;border-color:#ef6c00}
.rm-typ-mati:has(input:checked) span{color:#bf360c}
.rm-typ-matl input:checked ~ .rm-typ-ico{background:#ede7f6;color:#4527a0}
.rm-typ-matl:has(input:checked){background:#ede7f6;border-color:#7e57c2}
.rm-typ-matl:has(input:checked) span{color:#4527a0}
/* Mode segmented */
.rm-mode-row{display:flex;flex-direction:column;gap:4px}
.rm-mode-seg{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;background:#eceff1;border-radius:8px;padding:3px}
.rm-mode-seg button{border:none;background:transparent;color:#546e7a;border-radius:6px;height:34px;font-size:11px;font-weight:600;display:flex;align-items:center;justify-content:center;gap:4px;cursor:pointer;transition:all .15s}
.rm-mode-seg button i{font-size:14px}
.rm-mode-seg button:hover{background:rgba(255,255,255,.6)}
.rm-mode-seg button.active{background:#fff;color:#1a237e;box-shadow:0 1px 3px rgba(26,35,126,.15);font-weight:700}
.rm-mode-seg button.active i{color:#5c6bc0}
/* Cost table */
.rm-cost-wrap{border:1px solid #eceff1;border-radius:8px;background:#fff;overflow:hidden}
.rm-cost-tbl{width:100%;border-collapse:collapse;font-size:12px}
.rm-cost-tbl thead th{background:#fafbfc;color:#546e7a;padding:7px 10px;font-size:10px;font-weight:700;text-align:left;letter-spacing:.4px;text-transform:uppercase;border-bottom:1px solid #eceff1}
.rm-cost-tbl thead th.rm-th-num{text-align:right}
.rm-cost-tbl tbody tr{transition:background .12s}
.rm-cost-tbl tbody tr:hover{background:#fafbfc}
.rm-cost-tbl td{padding:5px 10px;border-bottom:1px solid #f5f5f5}
.rm-cost-tbl tbody tr:last-child td{border-bottom:none}
.rm-cost-tbl input{width:100%;border:1px solid transparent;background:transparent;font-size:12px;padding:4px 6px;border-radius:5px;font-variant-numeric:tabular-nums}
.rm-cost-tbl input:focus{border-color:#5c6bc0;background:#fff;outline:none;box-shadow:0 0 0 2px rgba(92,107,192,.1)}
.rm-cost-tbl .num input{text-align:right;font-weight:600;color:#1b5e20}
.rm-cost-del{color:#90a4ae;cursor:pointer;font-size:18px;line-height:1;transition:all .15s;display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:5px}
.rm-cost-del:hover{color:#c62828;background:#ffebee}
/* Links tiles */
.rm-links-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:6px}
.rm-lnk-tile{position:relative;display:flex;align-items:center;gap:8px;padding:9px 12px;border:1.5px solid #eceff1;border-radius:8px;cursor:pointer;background:#fafbfc;transition:all .15s;font-size:12px;color:#546e7a;font-weight:600}
.rm-lnk-tile:hover{background:#fff}
.rm-lnk-tile input{position:absolute;opacity:0}
.rm-lnk-tile i{font-size:18px;color:#90a4ae;transition:color .15s}
.rm-lnk-tile:has(input:checked){background:linear-gradient(135deg,#e8eaf6,#fff);border-color:#5c6bc0;color:#1a237e}
.rm-lnk-tile:has(input:checked) i{color:#3949ab}
/* Footer actions */
.rm-form-footer{display:flex;align-items:center;gap:10px;padding:12px 16px;background:#fafbfc;border-top:1px solid #eceff1;position:sticky;bottom:0}
.rm-footer-spacer{flex:1}
.rm-btn-del{border:1px solid #ffcdd2;background:#fff;color:#c62828;border-radius:8px;height:36px;padding:0 14px;font-size:13px;font-weight:600;display:flex;align-items:center;gap:5px;cursor:pointer;transition:all .15s}
.rm-btn-del:hover{background:#ffebee;border-color:#c62828}
.rm-btn-del i{font-size:17px}
.rm-btn-save{border:none;background:linear-gradient(135deg,#1a237e,#3949ab);color:#fff;border-radius:8px;height:36px;padding:0 18px;font-size:13px;font-weight:700;display:flex;align-items:center;gap:5px;cursor:pointer;box-shadow:0 2px 8px rgba(57,73,171,.3);transition:all .15s}
.rm-btn-save:hover{transform:translateY(-1px);box-shadow:0 4px 14px rgba(57,73,171,.4)}
.rm-btn-save i{font-size:17px}
/* Hide legacy elements (compat backward) */
#rm-mode.hidden{display:none}
.params-card h6{margin:0 0 12px;font-size:15px;font-weight:600;color:var(--accent);border-bottom:2px solid var(--accent);padding-bottom:6px;display:flex;align-items:center;gap:8px}
.params-card h6 i{font-size:20px}
/* Navigation par onglets de la page Paramètres */
.params-tabs{display:flex;gap:4px;padding:4px;margin-bottom:18px;background:#eceff1;border-radius:10px;max-width:860px;flex-wrap:wrap}
.params-tab{flex:1;min-width:140px;padding:10px 14px;border:none;background:transparent;color:#546e7a;cursor:pointer;border-radius:7px;font-size:13px;font-weight:600;display:flex;align-items:center;justify-content:center;gap:6px;transition:all .2s}
.params-tab i{font-size:18px}
.params-tab:hover{color:#1a237e;background:rgba(255,255,255,.7)}
.params-tab.active{color:#fff;background:linear-gradient(135deg,#1a237e,#3949ab);box-shadow:0 2px 6px rgba(26,35,126,.25)}
.imp-card .imp-hd{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px;flex-wrap:wrap}
.imp-card .imp-hd-title{display:flex;align-items:center;gap:6px;font-size:14px;font-weight:700;color:#1a237e}
.imp-card .imp-hd-title i{font-size:20px;color:#3949ab}
.imp-card code{background:#eceff1;color:#37474f;padding:1px 6px;border-radius:3px;font-size:11px;font-family:monospace}
.imp-dropzone{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:22px 16px;border:2px dashed #b0bec5;border-radius:8px;background:#fafbfc;transition:all .2s;cursor:pointer}
.imp-dropzone:hover{border-color:#3949ab;background:#f3f7ff}
.imp-dropzone.drag-over{border-color:#2e7d32;background:#e8f5e9;border-style:solid}
.imp-dropzone i.material-icons{font-size:40px;color:#90a4ae}
.imp-dropzone:hover i.material-icons{color:#3949ab}
.imp-dropzone.drag-over i.material-icons{color:#2e7d32}
.imp-dropzone .imp-dz-title{font-size:13px;font-weight:600;color:#455a64}
.imp-dropzone .imp-dz-sub{font-size:11px;color:#90a4ae}
.imp-preview{border:1px solid #cfd8dc;border-radius:6px;overflow:hidden;background:#fff}
.imp-preview-hd{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;background:linear-gradient(90deg,#e8eaf6,#f3e5f5);border-bottom:1px solid #cfd8dc;flex-wrap:wrap}
.imp-preview-hd-title{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:700;color:#1a237e}
.imp-preview-hd-actions{display:flex;gap:6px}
.imp-preview-stats{display:flex;gap:8px;flex-wrap:wrap}
.imp-preview-stat{font-size:11px;padding:2px 8px;border-radius:10px;font-weight:600;display:inline-flex;align-items:center;gap:3px}
.imp-preview-stat.ok{background:#c8e6c9;color:#1b5e20}
.imp-preview-stat.err{background:#ffcdd2;color:#b71c1c}
.imp-preview-stat.total{background:#e3f2fd;color:#0d47a1}
.imp-preview-body{max-height:360px;overflow:auto;font-size:11px}
.imp-preview-body table{width:100%;border-collapse:collapse}
.imp-preview-body th{background:#eceff1;color:#37474f;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.3px;padding:6px 8px;position:sticky;top:0;z-index:1;border-bottom:1px solid #cfd8dc}
.imp-preview-body td{padding:5px 8px;border-bottom:1px solid #f0f0f0;color:#37474f}
.imp-preview-body tr.row-err{background:#ffebee}
.imp-preview-body tr.row-err td:first-child{color:#c62828;font-weight:700}
.imp-row-err-msg{display:inline-flex;align-items:center;gap:3px;font-size:10px;color:#c62828;background:#fff;padding:1px 6px;border-radius:8px;border:1px solid #ffcdd2;margin-top:2px}
.params-section{display:none;animation:psFadeIn .25s ease}
.params-section.active{display:block}
@keyframes psFadeIn{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}
.days-grid{display:flex;gap:8px;flex-wrap:wrap;margin:8px 0 16px}
.day-toggle{display:flex;flex-direction:column;align-items:center;gap:4px;padding:10px 12px;border:2px solid #e0e0e0;border-radius:8px;cursor:pointer;transition:.2s;min-width:70px;user-select:none;background:#fff}
.day-toggle:hover{border-color:var(--accent-light);background:#f5f9ff}
.day-toggle.active{border-color:var(--accent);background:#e3f2fd}
.day-toggle .day-name{font-size:12px;font-weight:600;color:var(--txt)}
.day-toggle .day-icon{font-size:22px}
.day-toggle.active .day-icon{color:var(--accent)}
.day-toggle:not(.active) .day-icon{color:#bbb}
.day-toggle:not(.active) .day-name{color:#999}
.params-info{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.params-info .input-field{margin:6px 0}
::-webkit-scrollbar{width:6px;height:6px}
::-webkit-scrollbar-track{background:0}
::-webkit-scrollbar-thumb{background:#bbb;border-radius:3px}

/* ── PLAN DE CHARGE (GANTT) ──────────────────────────────────────────────── */
#gantt-container{height:100%;width:100%}
#gantt-container .vis-labelset .vis-label{min-width:230px!important;max-width:230px!important}
#gantt-container .vis-label .vis-inner{padding:0!important}
/* ══════════ NOUVEAU PLAN DE CHARGE (refonte HTML native v2) ══════════ */
#v-gantt{padding:14px 18px;box-sizing:border-box;display:block}
#v-gantt #gnt2-header{margin-bottom:10px}
#gnt2-header{display:flex;align-items:center;gap:14px;padding:10px 14px;background:linear-gradient(90deg,#1a237e,#3949ab);color:#fff;border-radius:8px;flex-wrap:wrap;font-size:13px}
#gnt2-header .gnt2-title{font-size:16px;font-weight:700;display:flex;align-items:center;gap:8px}
#gnt2-header .gnt2-title i{font-size:20px}
#gnt2-header .gnt2-stats{display:flex;gap:8px;flex-wrap:wrap;margin-left:auto}
#gnt2-header .gnt2-stat{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:12px;background:rgba(255,255,255,.15);font-size:11px;font-weight:600;border:1px solid rgba(255,255,255,.25)}
#gnt2-header .gnt2-stat b{font-size:13px;font-weight:800}
#gnt2-grid{overflow-x:scroll;overflow-y:auto;background:#fff;border:1px solid #cfd8dc;border-radius:8px;box-shadow:0 1px 4px rgba(0,0,0,.06);min-height:300px;max-height:calc(100vh - 210px);cursor:grab;scroll-behavior:auto;user-select:none;-webkit-user-select:none}
#gnt2-grid.gnt2-grabbing,#gnt2-grid.gnt2-grabbing *{cursor:grabbing!important;scroll-behavior:auto}
/* Curseur grab sur la grille et tout son contenu non-interactif (override inline cursor:pointer) */
#gnt2-grid .pr-ch-card,#gnt2-grid .pch-hd,#gnt2-grid .pch-desc,#gnt2-grid .pch-meta,#gnt2-grid .pch-kpis,#gnt2-grid .gnt2-card-hd,#gnt2-grid .gnt2-tbl tbody td{cursor:grab!important}
#gnt2-grid.gnt2-grabbing .pr-ch-card,#gnt2-grid.gnt2-grabbing .pch-hd,#gnt2-grid.gnt2-grabbing .pch-desc,#gnt2-grid.gnt2-grabbing .pch-meta,#gnt2-grid.gnt2-grabbing .pch-kpis,#gnt2-grid.gnt2-grabbing .gnt2-card-hd,#gnt2-grid.gnt2-grabbing .gnt2-tbl tbody td{cursor:grabbing!important}
#gnt2-grid::-webkit-scrollbar{height:14px;width:14px}
#gnt2-grid::-webkit-scrollbar-track{background:#eceff1;border-radius:7px}
#gnt2-grid::-webkit-scrollbar-thumb{background:linear-gradient(180deg,#7986cb,#5c6bc0);border-radius:7px;border:2px solid #eceff1}
#gnt2-grid::-webkit-scrollbar-thumb:hover{background:linear-gradient(180deg,#5c6bc0,#3949ab)}
.gnt2-tbl{border-collapse:separate;border-spacing:0;font-size:11px;background:#fff;table-layout:fixed}
.gnt2-tbl,.gnt2-tbl th,.gnt2-tbl td{box-sizing:border-box}
.gnt2-tbl thead{background:#37474f;color:#fff}
.gnt2-tbl thead th{position:sticky;top:0;z-index:5;background:#37474f;color:#fff;box-shadow:0 2px 0 0 rgba(0,0,0,.1);padding:6px 4px;text-align:center;font-size:9px;font-weight:600;text-transform:uppercase;letter-spacing:.2px}
.gnt2-tbl thead .gnt2-wk-row th:first-child{text-align:left;padding-left:12px;z-index:7;left:0;background:#263238!important}
.gnt2-tbl thead tr:not(.gnt2-wk-row) th:first-child{text-align:center;padding-left:4px}
.gnt2-tbl tbody tr.gnt2-totals td:first-child{position:sticky;left:0;z-index:6}
.gnt2-tbl .gnt2-wk-row th{background:#263238;font-size:11px;padding:5px 6px;letter-spacing:.3px;border-bottom:1px solid rgba(255,255,255,.12)}
.gnt2-tbl thead tr:not(.gnt2-wk-row) th{top:26px}
.gnt2-tbl thead tr:not(.gnt2-wk-row) th:first-child{text-align:center;padding-left:4px}
.gnt2-tbl .gnt2-wk-row th[rowspan="2"]{z-index:7;vertical-align:middle}
.gnt2-tbl .gnt2-day-we{background:#eeeeee!important}
.gnt2-tbl thead th.gnt2-day-we{background:#78909c!important;color:#fff!important}
.gnt2-tbl .gnt2-day-ferie{background:repeating-linear-gradient(135deg,rgba(244,67,54,.04),rgba(244,67,54,.04) 4px,rgba(244,67,54,.08) 4px,rgba(244,67,54,.08) 8px)!important}
.gnt2-tbl thead th.gnt2-day-ferie{background:repeating-linear-gradient(135deg,#c62828,#c62828 4px,#b71c1c 4px,#b71c1c 8px)!important;color:#fff!important}
/* Colonne du jour courant — distincte des WE et fériés */
.gnt2-tbl thead th.gnt2-day-today{background:linear-gradient(180deg,#ff9800,#fb8c00)!important;color:#fff!important;box-shadow:inset 0 -3px 0 #e65100}
.gnt2-tbl thead th.gnt2-day-today::after{content:'⬤';position:absolute;top:3px;right:3px;font-size:6px;color:#fff;text-shadow:0 0 4px rgba(255,255,255,.8)}
.gnt2-tbl .gnt2-today-overlay{position:absolute;top:0;bottom:0;background:#fff8e1;box-shadow:inset 2px 0 0 #ffb300,inset -2px 0 0 #ffb300;pointer-events:none;z-index:0}
.gnt2-tbl tbody tr:hover{background:#fafafa}
.gnt2-tbl tbody td{padding:4px;border-bottom:1px solid #f0f0f0;vertical-align:middle;height:64px;position:relative}
.gnt2-tbl tbody td:first-child{padding:6px 8px;background:#fff;border-right:2px solid #e0e0e0;width:280px;min-width:280px;max-width:280px;vertical-align:top;position:sticky;left:0;z-index:3}
.gnt2-tbl .gnt2-bar{position:absolute;left:2px;right:2px;top:8px;height:24px;border-radius:4px;cursor:pointer;display:flex;align-items:center;justify-content:flex-start;padding:0 6px;font-size:10px;font-weight:700;color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.4);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;box-shadow:0 1px 3px rgba(0,0,0,.2);transition:filter .15s,transform .15s;z-index:1}
.gnt2-tbl .gnt2-phase-mini{position:absolute;top:38px;height:14px;border-radius:3px;display:flex;align-items:center;padding:0 4px;font-size:8px;font-weight:700;color:#fff;text-shadow:0 1px 1px rgba(0,0,0,.5);overflow:hidden;white-space:nowrap;cursor:grab;box-shadow:0 1px 2px rgba(0,0,0,.2);border:1px solid rgba(255,255,255,.3);z-index:2;transition:filter .15s,transform .15s}
.gnt2-tbl .gnt2-phase-mini.gnt2-dragging{cursor:grabbing;opacity:.5;z-index:10}
.gnt2-tbl .gnt2-handle.gnt2-h-ph{height:14px;width:5px;cursor:ew-resize}
.gnt2-tbl .gnt2-phase-mini:hover .gnt2-handle.gnt2-h-ph{background:rgba(255,255,255,.45);box-shadow:inset 0 0 0 1px rgba(255,255,255,.6)}
.gnt2-tbl .gnt2-phase-mini:hover{filter:brightness(1.15);transform:scaleY(1.15);z-index:3}
.gnt2-tbl .gnt2-phase-mini span{overflow:hidden;text-overflow:ellipsis}
.gnt2-tbl .gnt2-bar:hover{filter:brightness(1.1);transform:scale(1.02);z-index:2}
.gnt2-tbl .gnt2-bar-abs{background-image:repeating-linear-gradient(45deg,rgba(255,255,255,.3),rgba(255,255,255,.3) 4px,transparent 4px,transparent 9px)}
.gnt2-tbl .gnt2-bar-end{background:repeating-linear-gradient(135deg,#999,#999 3px,#666 3px,#666 6px)!important;opacity:.6}
.gnt2-tbl .gnt2-today-marker{position:absolute;top:0;bottom:0;width:2px;background:#c62828;z-index:4;pointer-events:none}
.gnt2-tbl .gnt2-today-marker::before{content:'';position:absolute;top:0;left:-4px;width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:6px solid #c62828}
.gnt2-tbl tr.gnt2-totals td{position:sticky;bottom:0;background:#37474f;color:#fff;font-weight:700;padding:6px 4px;text-align:center;border-top:3px solid #0d1642;font-size:11px;z-index:4}
.gnt2-tbl tr.gnt2-totals td:first-child{text-align:right;padding-right:12px;background:#263238;color:#fff;text-transform:uppercase;font-size:10px;letter-spacing:.3px;z-index:5}
.gnt2-tbl .gnt2-empty{padding:50px 20px;text-align:center;color:#999;font-size:12px}
.gnt2-tbl .gnt2-caret{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;background:rgba(26,35,126,.08);color:#1a237e;font-size:11px;font-weight:700;cursor:pointer;margin-right:5px;transition:transform .15s,background .15s;flex-shrink:0;user-select:none}
.gnt2-tbl .gnt2-caret:hover{background:rgba(26,35,126,.18)}
.gnt2-tbl .gnt2-caret.open{transform:rotate(90deg);background:#1a237e;color:#fff}
.gnt2-tbl .gnt2-card-hd{display:flex;align-items:flex-start;gap:0}
.gnt2-tbl .gnt2-card-hd .pr-ch-card{flex:1;min-width:0}
.gnt2-tbl tr.gnt2-phase-row td{background:#fafbff;border-bottom:1px solid #e8eaf0}
.gnt2-tbl tr.gnt2-phase-row td:first-child{padding:6px 12px 6px 36px;font-size:11px;color:#37474f;background:#f3f4fa;border-right:2px solid #c5cae9;font-weight:600}
.gnt2-tbl tr.gnt2-phase-row .gnt2-phase-name{display:flex;align-items:center;gap:5px;color:#3949ab}
.gnt2-tbl tr.gnt2-phase-row .gnt2-phase-name::before{content:'▸';color:#90a4ae;font-size:10px}
.gnt2-tbl .gnt2-phase-bar{position:absolute;left:2px;right:2px;top:50%;transform:translateY(-50%);height:18px;border-radius:3px;cursor:pointer;display:flex;align-items:center;padding:0 6px;font-size:10px;font-weight:600;color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.4);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;box-shadow:0 1px 2px rgba(0,0,0,.15);z-index:1}
.gnt2-tbl .gnt2-phase-bar:hover{filter:brightness(1.1)}
.gnt2-tbl .gnt2-jalon{position:absolute;top:13px;width:14px;height:14px;background:#ffc107;border:2px solid #fff;transform:translateX(-50%) rotate(45deg);box-shadow:0 1px 4px rgba(0,0,0,.4);z-index:4;cursor:help}
.gnt2-tbl .gnt2-jalon:hover{background:#ffa000;transform:translateX(-50%) rotate(45deg) scale(1.2)}
.gnt2-tbl .gnt2-bar .gnt2-bar-avt{display:inline-flex;align-items:center;gap:2px;background:rgba(0,0,0,.25);padding:0 5px;border-radius:8px;margin-left:6px;font-size:9px;font-weight:700;letter-spacing:.2px}
/* Pastille jalons cliquable avec popover personnalisé */
.gnt2-jalons-pill{cursor:help;position:relative}
.gnt2-jalons-pop{position:fixed;background:#fff;border:1px solid #cfd8dc;border-radius:8px;box-shadow:0 8px 24px rgba(0,0,0,.2);padding:10px 12px;font-size:11px;color:#37474f;min-width:240px;max-width:340px;z-index:9999;display:none}
.gnt2-jalons-pop.visible{display:block}
.gnt2-jalons-pop .gnt2-jp-hd{font-size:11px;font-weight:700;color:#1a237e;text-transform:uppercase;letter-spacing:.3px;padding-bottom:6px;border-bottom:1px solid #eceff1;margin-bottom:6px;display:flex;align-items:center;gap:6px}
.gnt2-jalons-pop ul{list-style:none;margin:0;padding:0}
.gnt2-jalons-pop li{display:flex;gap:8px;padding:4px 0;border-bottom:1px solid #f5f5f5;line-height:1.4}
.gnt2-jalons-pop li:last-child{border-bottom:none}
.gnt2-jalons-pop li .gnt2-jp-d{font-weight:600;color:#5c6bc0;min-width:74px;font-variant-numeric:tabular-nums}
.gnt2-jalons-pop li .gnt2-jp-n{flex:1;min-width:0;overflow-wrap:anywhere}
.gnt2-jalons-pop li.passed .gnt2-jp-d,.gnt2-jalons-pop li.passed .gnt2-jp-n{text-decoration:line-through;color:#9e9e9e}
.gnt2-jalons-pop li.next .gnt2-jp-d,.gnt2-jalons-pop li.next .gnt2-jp-n{font-weight:800;color:#0d47a1}
.gnt2-jalons-pop li.next::before{content:'▶';color:#0d47a1;font-size:10px;flex-shrink:0;margin-top:2px}
.gnt2-jalons-pop li.future{color:#37474f}
/* Variante Phases : prochain en vert, en cours = surbrillance, passé barré */
.gnt2-jalons-pop li.current .gnt2-jp-d,.gnt2-jalons-pop li.current .gnt2-jp-n{font-weight:800;color:#1b5e20}
.gnt2-jalons-pop li.current{background:#e8f5e9;border-radius:4px;padding-left:6px;margin:0 -6px;border-bottom-color:transparent}
.gnt2-jalons-pop li.current::before{content:'⏵';color:#1b5e20;font-size:11px;flex-shrink:0;margin-top:1px}
.gnt2-jalons-pop li .gnt2-jp-meta{display:block;font-size:9px;color:#90a4ae;margin-top:1px;font-weight:400}
.gnt2-jalons-pop li.passed .gnt2-jp-meta,.gnt2-jalons-pop li.passed .gnt2-jp-d,.gnt2-jalons-pop li.passed .gnt2-jp-n{text-decoration:line-through}
.gnt2-tbl .gnt2-bar{cursor:grab}
.gnt2-tbl .gnt2-bar.gnt2-dragging{cursor:grabbing;opacity:.6;z-index:10}
.gnt2-tbl .gnt2-handle{position:absolute;top:0;bottom:0;width:7px;cursor:ew-resize;z-index:5;background:transparent;transition:background .15s}
.gnt2-tbl .gnt2-handle.gnt2-h-l{left:0;border-radius:4px 0 0 4px}
.gnt2-tbl .gnt2-handle.gnt2-h-r{right:0;border-radius:0 4px 4px 0}
.gnt2-tbl .gnt2-bar:hover .gnt2-handle{background:rgba(255,255,255,.35);box-shadow:inset 0 0 0 1px rgba(255,255,255,.5)}
.gnt2-tbl .gnt2-handle:hover{background:rgba(255,255,255,.6)!important}
.gnt2-tbl .gnt2-bar.gnt2-no-drag{cursor:pointer}
.gnt2-ghost{position:absolute;top:50%;height:24px;transform:translateY(-50%);border:2px dashed #1a237e;background:rgba(26,35,126,.12);border-radius:4px;pointer-events:none;z-index:9;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:700;color:#1a237e;text-shadow:0 1px 2px #fff;letter-spacing:.2px}
.gnt2-tbl .gnt2-bar.gnt2-no-drag{cursor:pointer}
/* Tooltips riches Plan de charge — phases et jalons */
.pc-tooltip{position:fixed;background:#fff;border:1px solid #cfd8dc;border-radius:8px;box-shadow:0 8px 28px rgba(0,0,0,.18);padding:0;width:340px;max-width:90vw;z-index:10000;font-size:11.5px;color:#37474f;pointer-events:none;opacity:0;transform:translateY(4px);transition:opacity .12s,transform .12s}
.pc-tooltip.visible{opacity:1;transform:none}
.pc-tt-hd{padding:10px 12px;background:linear-gradient(135deg,#1a237e,#3949ab);color:#fff;border-radius:8px 8px 0 0;display:flex;align-items:center;gap:8px}
.pc-tt-hd.jalon{background:linear-gradient(135deg,#bf360c,#f57c00)}
.pc-tt-hd i{font-size:18px}
.pc-tt-hd-title{font-weight:700;font-size:13px;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pc-tt-body{padding:10px 12px;max-height:340px;overflow-y:auto}
.pc-tt-row{display:grid;grid-template-columns:110px 1fr;gap:6px;padding:4px 0;border-bottom:1px dashed #eceff1;line-height:1.4}
.pc-tt-row:last-child{border-bottom:none}
.pc-tt-lbl{color:#90a4ae;font-weight:600;font-size:10.5px;text-transform:uppercase;letter-spacing:.3px;display:flex;align-items:center;gap:3px}
.pc-tt-val{color:#37474f;font-weight:600}
.pc-tt-val.num{font-variant-numeric:tabular-nums;color:#1a237e}
.pc-tt-bar{padding:7px 12px;background:#fafbfc;border-radius:0 0 8px 8px;border-top:1px solid #eceff1;font-size:10.5px;color:#546e7a;display:flex;align-items:center;gap:6px;font-weight:600}
.pc-tt-bar i{font-size:14px;color:#5c6bc0}
.pc-tt-baseline{margin-top:6px;padding:6px 8px;background:#fff8e1;border:1px solid #ffe082;border-radius:5px;font-size:10.5px;color:#e65100;display:flex;align-items:center;gap:5px}
.pc-tt-baseline.improved{background:#e8f5e9;border-color:#a5d6a7;color:#1b5e20}
.gnt2-tbl .gnt2-sep-abs td{background:#fff3e0;color:#bf360c;font-weight:700;padding:6px 14px;font-size:11px;letter-spacing:.3px;text-transform:uppercase;border-top:2px solid #ffa000;text-align:left}
.gantt-grp{display:flex;align-items:center;gap:7px;padding:5px 8px;width:228px;overflow:hidden}
.gantt-grp-card{display:flex;align-items:flex-start;overflow:hidden;background:#fff;box-sizing:border-box}
.gantt-grp-card .pr-ch-card{width:100%;padding:5px 8px 5px 12px}
.gantt-grp-card .pr-ch-card .pch-nom{font-size:11px;letter-spacing:.15px}
.gantt-grp-card .pr-ch-card .pch-desc{font-size:10px;white-space:normal;word-break:break-word}
.gantt-grp-card .pr-ch-card .pch-meta{font-size:10px}
.gantt-grp-card .pr-ch-card .pch-pill{font-size:9px;padding:1px 6px}
.gantt-grp .gg-dot{width:11px;height:11px;border-radius:2px;flex-shrink:0}
.gantt-grp .gg-info{overflow:hidden;min-width:0;flex:1}
.gantt-grp .gg-nom{font-weight:800;font-size:18px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gantt-grp .gg-code{font-size:9px;font-weight:400;opacity:.65;letter-spacing:.2px}
.gantt-grp .gg-desc{font-size:9px;color:#90a4ae;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-style:italic;margin-top:1px}
.gantt-grp .gg-sub{font-size:9px;color:var(--txt2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:1px}
.gantt-grp .gg-tags{display:flex;gap:4px;margin-top:2px}
.gantt-grp .gg-tag{font-size:8px;color:#fff;font-weight:700;padding:1px 4px;border-radius:3px;white-space:nowrap}
#gantt-container .vis-item.gantt-bar{border-radius:4px!important;border-width:0!important;color:#fff!important;min-height:22px!important;cursor:pointer}
#gantt-container .vis-labelset .vis-label{cursor:pointer}
#gantt-container .vis-item.gantt-bar .vis-item-content{padding:3px 8px!important;color:#fff!important;font-size:10px!important;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#gantt-container .vis-item.gantt-bar.vis-selected{box-shadow:0 0 0 2px rgba(0,0,0,.35)!important}
#gantt-container .vis-item.gantt-bar-handle{background:transparent!important;border:none!important;min-height:22px!important;cursor:grab!important;z-index:10!important}
#gantt-container .vis-item.gantt-bar-handle .vis-item-content{display:none!important}
#gantt-container .vis-item.gantt-bar-handle .vis-drag-left,#gantt-container .vis-item.gantt-bar-handle .vis-drag-right{width:8px!important;background:rgba(0,0,0,.2)!important;border-radius:2px!important;cursor:ew-resize!important;opacity:0;transition:opacity .2s}
#gantt-container .vis-item.gantt-bar-handle:hover .vis-drag-left,#gantt-container .vis-item.gantt-bar-handle:hover .vis-drag-right{opacity:1}
#gantt-container .vis-item.gantt-phase{border-radius:3px!important;border-width:0!important;min-height:18px!important;opacity:.85}
#gantt-container .vis-item.gantt-phase .vis-item-content{padding:2px 6px!important;color:#fff!important;font-size:9px!important;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#gantt-container .vis-item.gantt-phase-handle{background:transparent!important;border:none!important;min-height:18px!important;cursor:grab!important;z-index:10!important}
#gantt-container .vis-item.gantt-phase-handle .vis-item-content{display:none!important}
#gantt-container .vis-item.gantt-phase-handle .vis-drag-left,#gantt-container .vis-item.gantt-phase-handle .vis-drag-right{width:6px!important;background:rgba(0,0,0,.15)!important;border-radius:2px!important;cursor:ew-resize!important;opacity:0;transition:opacity .2s}
#gantt-container .vis-item.gantt-phase-handle:hover .vis-drag-left,#gantt-container .vis-item.gantt-phase-handle:hover .vis-drag-right{opacity:1}
#gantt-container .vis-item.gantt-phase-ghost{background:transparent!important;border:2px dashed #9e9e9e!important;border-radius:3px!important;min-height:14px!important;opacity:.7;pointer-events:none}
#gantt-container .vis-item.gantt-phase-ghost .vis-item-content{padding:0!important;font-size:8px!important;color:#616161!important;font-weight:600;letter-spacing:.3px;text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#gantt-container .vis-item.gantt-phase-ghost.gp-allonge{border-color:#c62828!important}
#gantt-container .vis-item.gantt-phase-ghost.gp-reduite{border-color:#2e7d32!important}
#gantt-container .vis-item.gantt-phase-ghost.gp-decale{border-color:#e65100!important}
#gantt-container .vis-item.gantt-resaff{border-radius:3px!important;border-width:0!important;color:#fff!important;min-height:16px!important;cursor:grab!important;opacity:.92}
#gantt-container .vis-item.gantt-resaff .vis-item-content{padding:1px 6px!important;color:#fff!important;font-size:9px!important;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#gantt-container .vis-item.gantt-resaff .vis-drag-left,#gantt-container .vis-item.gantt-resaff .vis-drag-right{width:5px!important;cursor:ew-resize!important;background:rgba(0,0,0,.2)!important;border-radius:2px!important;opacity:0;transition:opacity .2s}
#gantt-container .vis-item.gantt-resaff:hover .vis-drag-left,#gantt-container .vis-item.gantt-resaff:hover .vis-drag-right{opacity:1}
#gantt-container .vis-item.gantt-jalon{background:transparent!important;border:none!important;cursor:grab!important}
#gantt-container .vis-item.gantt-jalon .vis-item-content{font-size:9px!important;font-weight:600;padding:1px 5px!important;white-space:nowrap;background:#1a237e;color:#fff!important;border-radius:2px;box-shadow:0 1px 2px rgba(0,0,0,.18);line-height:12px!important}
#gantt-container .vis-item.gantt-jalon .vis-point.vis-dot{border-color:#1a237e!important;border-width:2px!important;width:7px!important;height:7px!important;background:#1a237e!important}
#gantt-container .vis-item.gantt-jalon-past .vis-item-content{background:#78909c;opacity:.85}
#gantt-container .vis-item.gantt-jalon-past .vis-point.vis-dot{border-color:#78909c!important;background:#78909c!important}
#gantt-container .vis-time-axis .vis-text.vis-major{font-weight:700;font-size:11px!important;color:#1a237e}
#gantt-container .vis-time-axis .vis-text.vis-minor{font-size:9px!important;white-space:nowrap}
#gantt-container .vis-current-time{background:#c62828!important;width:2px!important}
.gantt-empty{display:flex;align-items:center;justify-content:center;height:100%;color:#bbb;flex-direction:column;gap:10px}
.gantt-empty i{font-size:52px}
.gantt-empty p{font-size:14px;margin:0}
/* Jours non travaillés (sam/dim selon paramètres) — fond gris doux */
#gantt-container .vis-item.vis-background.gantt-nwd-bg,#pr-tl-gantt-inner .vis-item.vis-background.gantt-nwd-bg{background:rgba(0,0,0,.055)!important;border-left:1px solid rgba(0,0,0,.08)!important;border-right:none!important}
/* Planification Gantt — Total par jour, ligne météo, labels renforcés */
#pr-tl-gantt-inner .tl-grp-total{background:linear-gradient(90deg,#e8eaf6,#f3e5f5);font-weight:700}
#pr-tl-gantt-inner .tl-usr-meteo{background:#f0f8ff;padding-left:22px;font-size:10px;color:#1565c0}
#pr-tl-gantt-inner .vis-item.pr-total-day{border-radius:3px!important;min-height:20px!important;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:11px}
#pr-tl-gantt-inner .vis-item.pr-total-day .vis-item-content{padding:0 4px!important;text-align:center;color:#fff!important}
#pr-tl-gantt-inner .vis-item.pr-total-day-off{opacity:.6}
#pr-tl-gantt-inner .vis-item.pr-meteo-item{border-radius:3px!important;min-height:28px!important;padding:0!important}
#pr-tl-gantt-inner .vis-item.pr-meteo-item .vis-item-content{padding:1px 3px!important}
/* Toggles du bandeau Gantt */
.pr-gntl-tgl{border:1px solid #b0bec5;background:#fff;color:#546e7a;border-radius:16px;padding:4px 12px;font-size:11px;font-weight:600;cursor:pointer;transition:all .15s;white-space:nowrap}
.pr-gntl-tgl:hover{border-color:#1a237e;color:#1a237e;background:#eef1f8}
.pr-gntl-tgl.on{background:linear-gradient(135deg,#1a237e,#3949ab);border-color:#1a237e;color:#fff;box-shadow:0 1px 3px rgba(26,35,126,.25)}
/* Popover contextuel sur clic d'une cellule jour×ressource ou jour×chantier */
.pr-tbl tbody td[data-dropday]{cursor:pointer}
.pr-tbl tbody td[data-dropday]:hover{background:rgba(21,101,192,.06)}
.pr-day-menu{position:fixed;min-width:280px;max-width:320px;background:#fff;border:1px solid #cfd8dc;border-radius:10px;box-shadow:0 8px 24px rgba(0,0,0,.18);padding:10px;z-index:100000;opacity:0;transform:translateY(-6px);transition:opacity .15s,transform .15s}
.pr-day-menu.open{opacity:1;transform:translateY(0)}
.pr-day-menu .pr-dm-hd{font-size:13px;font-weight:700;color:#1a237e;text-transform:capitalize;margin-bottom:2px}
.pr-day-menu .pr-dm-ctx{font-size:12px;font-weight:600;color:#455a64;padding:3px 8px;background:#f5f5f5;border-radius:5px;margin-bottom:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pr-day-menu .pr-dm-sub{font-size:10px;color:#90a4ae;margin-bottom:10px;font-style:italic}
.pr-day-menu .pr-dm-btn{display:flex;align-items:center;gap:10px;width:100%;padding:8px 10px;margin-bottom:5px;border:1px solid #eceff1;background:#fafbfc;border-radius:7px;cursor:pointer;text-align:left;transition:all .15s;color:#37474f}
.pr-day-menu .pr-dm-btn:hover{background:#fff;border-color:#1a237e;transform:translateX(2px);box-shadow:0 1px 4px rgba(0,0,0,.08)}
.pr-day-menu .pr-dm-btn:last-of-type{margin-bottom:0}
.pr-day-menu .pr-dm-btn b{font-size:12px;font-weight:700;color:#1a237e;display:block}
.pr-day-menu .pr-dm-btn small{font-size:10px;color:#78909c;display:block;margin-top:1px}
.pr-day-menu .pr-dm-ico{width:34px;height:34px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;font-size:16px;flex-shrink:0}
.pr-day-menu .pr-dm-close{position:absolute;top:6px;right:8px;background:transparent;border:none;color:#90a4ae;cursor:pointer;font-size:14px;font-weight:700;padding:2px 6px;border-radius:50%}
.pr-day-menu .pr-dm-close:hover{background:#ffebee;color:#c62828}
/* ── Grille Gantt Planification (HTML natif, sticky) ── */
#pr-tl-gantt-inner{overflow:auto}
.prg-tbl{border-collapse:separate;border-spacing:0;width:max-content;min-width:100%;font-size:11px;table-layout:fixed}
.prg-tbl th,.prg-tbl td{padding:0;box-sizing:border-box}
/* Header ligne (dates) */
.prg-tbl thead th{position:sticky;top:0;z-index:2;background:linear-gradient(180deg,#37474f,#455a64);color:#fff;font-weight:700;text-align:center;padding:5px 3px;border-right:1px solid #546e7a;border-bottom:2px solid #263238;height:34px;width:44px;min-width:44px}
.prg-tbl thead th.prg-hd-day{font-size:10px;line-height:1.1}
.prg-tbl thead th.prg-hd-day .prg-hd-dow{font-size:9px;color:#cfd8dc;text-transform:uppercase;letter-spacing:.3px}
.prg-tbl thead th.prg-hd-day .prg-hd-day-num{font-size:11px;margin-top:1px}
.prg-tbl thead th.prg-hd-left{position:sticky;left:0;z-index:4;width:220px;min-width:220px;text-align:left;padding:5px 10px;font-size:11px;background:linear-gradient(180deg,#1a237e,#283593)}
.prg-tbl thead th.prg-hd-right{position:sticky;right:0;z-index:4;width:70px;min-width:70px;background:linear-gradient(180deg,#1a237e,#283593)}
/* Colonnes fériés / week-end */
.prg-tbl thead th.prg-col-ferie{background:linear-gradient(180deg,#c62828,#b71c1c)!important}
.prg-tbl thead th.prg-col-we{background:linear-gradient(180deg,#546e7a,#455a64)!important}
/* Cellules corps */
.prg-tbl tbody td{border-right:1px solid #eceff1;border-bottom:1px solid #f0f0f0;background:#fff;height:26px}
.prg-tbl tbody td.prg-col-we{background:#eceff1}
.prg-tbl tbody td.prg-col-ferie{background:repeating-linear-gradient(135deg,rgba(244,67,54,.06),rgba(244,67,54,.06) 4px,rgba(244,67,54,.14) 4px,rgba(244,67,54,.14) 8px)}
/* Colonne gauche sticky (nom chantier / ressource) */
.prg-tbl tbody td.prg-cell-left{position:sticky;left:0;z-index:1;background:#fff;padding:4px 8px;border-right:2px solid #cfd8dc;font-weight:500}
.prg-tbl tbody tr.prg-row-chantier td.prg-cell-left{background:#fafbfc;font-weight:700;display:flex;align-items:center;gap:6px;padding:6px 10px}
.prg-tbl tbody tr.prg-row-chantier td{background:#fafbfc}
.prg-dot{width:10px;height:10px;border-radius:3px;flex-shrink:0;box-shadow:0 1px 2px rgba(0,0,0,.2)}
.prg-ch-nom{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#37474f;font-size:12px}
.prg-ch-nb{background:#e8eaf6;color:#1a237e;padding:1px 7px;border-radius:10px;font-size:10px;font-weight:700;flex-shrink:0}
.prg-tbl tbody tr.prg-row-res td.prg-cell-left{background:#fff;padding-left:26px;color:#455a64;font-size:11px;display:flex;align-items:center;gap:6px}
.prg-res-ico{font-size:12px;flex-shrink:0}
.prg-tbl tbody tr.prg-row-meteo td.prg-cell-left{background:#f0f8ff;color:#1565c0;font-size:10px;padding-left:26px;font-weight:600}
.prg-tbl tbody tr.prg-row-meteo td{background:#f0f8ff;text-align:center}
.prg-wx{display:flex;flex-direction:column;align-items:center;line-height:1.1;font-size:9px}
.prg-wx-ico{font-size:12px}
.prg-wx-tmax{color:#c62828;font-weight:700}
.prg-wx-tmin{color:#1565c0}
/* Colonne droite sticky (total) */
.prg-tbl tbody td.prg-cell-right{position:sticky;right:0;z-index:1;background:#e8eaf6;color:#1a237e;text-align:center;font-size:11px;font-weight:700;border-left:2px solid #cfd8dc}
.prg-tbl tbody tr.prg-row-chantier td.prg-cell-right{background:#c5cae9;font-size:13px}
.prg-tbl tbody tr.prg-row-meteo td.prg-cell-right{background:#e3f2fd}
.prg-tot-unit{font-size:9px;font-weight:500;margin-left:1px;opacity:.7}
/* Footer : total ressources / jour */
.prg-tbl tfoot td{position:sticky;bottom:0;z-index:2;background:linear-gradient(180deg,#283593,#1a237e);color:#fff;text-align:center;font-size:12px;font-weight:800;padding:6px 2px;border-top:3px solid #0d1642}
.prg-tbl tfoot td.prg-cell-left{position:sticky;left:0;z-index:5;text-align:right;padding:6px 10px;font-size:11px}
.prg-tbl tfoot td.prg-cell-right{position:sticky;right:0;z-index:5;background:linear-gradient(180deg,#ad1457,#880e4f);font-size:13px}
.prg-tbl tfoot td.prg-col-we{background:linear-gradient(180deg,#546e7a,#455a64)!important;opacity:.85}
.prg-tbl tfoot td.prg-col-ferie{background:linear-gradient(180deg,#c62828,#b71c1c)!important}
/* Jours fériés tombant sur un jour normalement travaillé — hachures rouges */
#gantt-container .vis-item.vis-background.gantt-ferie-bg,#pr-tl-gantt-inner .vis-item.vis-background.gantt-ferie-bg{background:repeating-linear-gradient(135deg,rgba(244,67,54,.07),rgba(244,67,54,.07) 4px,rgba(244,67,54,.14) 4px,rgba(244,67,54,.14) 8px)!important;border-left:2px solid rgba(244,67,54,.35)!important;border-right:none!important}
/* Numéros de semaine dans l'axe temps */
#gantt-container .vis-time-axis .vis-text{font-size:9px}
