:root{
  /* Fonds */
  --bg:#eef2eb;--s1:#ffffff;--s2:#f3f7f0;--s3:#e8efe4;--s4:#dce6d7;
  /* Bordures */
  --border:#d4e0ce;--border2:#b8cdb0;
  /* Vert BoxInnov */
  --acc:#79be26;--acc2:#63a01f;--acc-dim:rgba(121,190,38,0.10);
  /* Texte */
  --text:#253323;--t2:#527050;--t3:#90a88c;
  /* Couleurs sémantiques (mode clair) */
  --green:#2e9e18;--blue:#2068c0;--red:#cc2f2f;
  --purple:#6744cc;--cyan:#0f8f9a;--yellow:#b07c08;--orange:#c05a10;
  --r:10px;--rl:14px;
}
*{box-sizing:border-box;margin:0;padding:0;}
body{font-family:'DM Sans',sans-serif;background:var(--bg);color:var(--text);min-height:100vh;display:flex;}

/* SIDEBAR */
.sidebar{width:240px;min-height:100vh;background:var(--s1);border-right:1px solid var(--border);display:flex;flex-direction:column;position:fixed;top:0;left:0;bottom:0;z-index:100;}
.logo{padding:14px 12px 12px;border-bottom:1px solid var(--border);}
.logo-sub{font-size:9px;color:var(--t3);letter-spacing:2px;text-transform:uppercase;margin-top:2px;}
.nav{flex:1;padding:8px 6px;display:flex;flex-direction:column;gap:0;overflow-y:auto;}
.ni{display:flex;align-items:center;gap:8px;padding:7px 10px;border-radius:7px;cursor:pointer;font-size:12.5px;color:var(--t2);transition:all 0.12s;user-select:none;}
.ni:hover{background:var(--s2);color:var(--text);}
.ni.active{background:var(--acc-dim);color:var(--acc);font-weight:600;}
.ni svg{width:14px;height:14px;flex-shrink:0;}
.ni .nb{display:none;}

/* NAV GROUPES ACCORDION */
.nav-grp{margin-bottom:2px;}
.nav-grp-hd{display:flex;align-items:center;gap:7px;padding:8px 10px;border-radius:7px;cursor:pointer;transition:background 0.12s;user-select:none;}
.nav-grp-hd:hover{background:var(--s2);}
.nav-grp-ico{width:15px;height:15px;flex-shrink:0;color:var(--t3);}
.nav-grp-lbl{font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:1.5px;color:var(--t3);flex:1;}
.nav-grp-arr{width:12px;height:12px;color:var(--t3);transition:transform 0.22s;flex-shrink:0;}
.nav-grp.open .nav-grp-arr{transform:rotate(90deg);}
.nav-grp-body{overflow:hidden;max-height:0;transition:max-height 0.3s ease;}
.nav-grp.open .nav-grp-body{max-height:800px;}
.nav-grp-body .ni{padding-left:14px;}
/* Sous-groupe Gestion commerciale */
.nav-sub-hd{display:flex;align-items:center;gap:7px;padding:6px 10px 6px 14px;border-radius:6px;cursor:pointer;font-size:12px;font-weight:500;color:var(--t2);transition:all 0.12s;user-select:none;}
.nav-sub-hd:hover{background:var(--s2);color:var(--text);}
.nav-sub-hd svg{width:13px;height:13px;flex-shrink:0;}
.nav-sub-arr{width:11px;height:11px;transition:transform 0.2s;margin-left:auto;flex-shrink:0;color:var(--t3);}
.nav-sub.open .nav-sub-arr{transform:rotate(90deg);}
.nav-sub-body{overflow:hidden;max-height:0;transition:max-height 0.25s;}
.nav-sub.open .nav-sub-body{max-height:300px;}
.ni-sub{padding-left:26px !important;font-size:12px;}
.ni-dim{opacity:0.45;pointer-events:none;cursor:default;}
.ni-beta{margin-left:auto;flex-shrink:0;font-size:8.5px;font-weight:800;letter-spacing:0.5px;text-transform:uppercase;color:var(--orange);background:rgba(249,115,22,0.14);border-radius:4px;padding:2px 5px;}
/* Badge WMS */
.wms-badge{font-size:8px;background:var(--acc);color:#fff;border-radius:3px;padding:1px 5px;font-weight:900;letter-spacing:0.5px;}
/* Séparateur */
.nav-sep{height:1px;background:var(--border);margin:6px 8px;}

.sidebar-foot{padding:10px 8px;border-top:1px solid var(--border);}
.api-pill{display:flex;align-items:center;gap:7px;padding:8px 10px;background:var(--s2);border-radius:7px;font-size:11px;}
.api-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0;}
.api-dot.ok{background:var(--green);box-shadow:0 0 5px var(--green);animation:pulse 2s infinite;}
.api-dot.err{background:var(--red);}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:0.4}}

/* MAIN */
.main{margin-left:240px;flex:1;display:flex;flex-direction:column;}
.topbar{display:flex;align-items:center;justify-content:space-between;padding:12px 22px;border-bottom:1px solid var(--border);background:var(--s1);position:sticky;top:0;z-index:50;gap:12px;}
.topbar h1{font-family:'DM Sans',sans-serif;font-size:18px;font-weight:700;white-space:nowrap;}
.topbar-r{display:flex;align-items:center;gap:7px;flex-shrink:0;}
.content{padding:18px 22px;flex:1;}

/* BUTTONS */
.btn{display:inline-flex;align-items:center;gap:6px;padding:7px 13px;border-radius:8px;font-size:12.5px;font-weight:500;cursor:pointer;border:none;transition:all 0.12s;font-family:'DM Sans',sans-serif;white-space:nowrap;}
.btn svg{width:13px;height:13px;}
.btn-acc{background:var(--acc);color:#fff;font-weight:600;}.btn-acc:hover{background:var(--acc2);}
.btn-ghost{background:var(--s2);color:var(--t2);border:1px solid var(--border);}.btn-ghost:hover{background:var(--s3);color:var(--text);}
.btn-danger{background:rgba(204,47,47,0.08);color:var(--red);border:1px solid rgba(204,47,47,0.18);}.btn-danger:hover{background:rgba(204,47,47,0.16);}
.btn-blue{background:rgba(32,104,192,0.10);color:var(--blue);border:1px solid rgba(32,104,192,0.20);}
.btn-sm{padding:4px 9px;font-size:11.5px;}

/* SEARCH */
.searchbar{display:flex;align-items:center;gap:7px;background:var(--s2);border:1px solid var(--border);border-radius:8px;padding:6px 11px;min-width:220px;}
.searchbar input{background:none;border:none;outline:none;color:var(--text);font-size:12.5px;font-family:'DM Sans',sans-serif;width:100%;}
.searchbar input::placeholder{color:var(--t3);}
.searchbar svg{width:13px;height:13px;color:var(--t3);flex-shrink:0;}

/* Recherche globale — menu déroulant sous la barre du haut */
.gsearch-wrap{position:relative;}
.gsearch-panel{display:none;flex-direction:column;position:absolute;top:calc(100% + 6px);right:0;width:380px;max-width:90vw;max-height:420px;background:var(--s1);border:1px solid var(--border);border-radius:var(--r);box-shadow:0 10px 34px rgba(37,51,35,0.18);z-index:70;overflow-y:auto;}
.gsearch-panel.open{display:flex;}
.gsearch-item{align-items:flex-start;}

/* KPI */
.kpi-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:11px;margin-bottom:18px;}
.kpi-grid.g5{grid-template-columns:repeat(5,1fr);}
.kpi{background:var(--s1);border:1px solid var(--border);border-radius:var(--rl);padding:14px 16px;position:relative;overflow:hidden;}
.kpi-bar{position:absolute;left:0;top:0;width:3px;height:100%;}
.kpi-label{font-size:9.5px;text-transform:uppercase;letter-spacing:1.2px;color:var(--t3);font-weight:700;margin-bottom:7px;}
.kpi-val{font-family:'DM Sans',sans-serif;font-size:24px;font-weight:700;line-height:1;}
.kpi-sub{font-size:11px;color:var(--t2);margin-top:5px;}

/* TABLE */
.tbl-wrap{background:var(--s1);border:1px solid var(--border);border-radius:var(--rl);overflow:hidden;}
table{width:100%;border-collapse:collapse;}
thead th{text-align:left;padding:9px 14px;font-size:10px;text-transform:uppercase;letter-spacing:1px;color:var(--t3);font-weight:700;border-bottom:1px solid var(--border);white-space:nowrap;}
tbody tr{border-bottom:1px solid var(--border);transition:background 0.1s;cursor:pointer;}
tbody tr:last-child{border-bottom:none;}
tbody tr:hover{background:var(--s2);}
tbody td{padding:10px 14px;font-size:12.5px;vertical-align:middle;}
.mono{font-family:'DM Mono',monospace;font-size:11.5px;}
.ref-badge{background:var(--s3);border:1px solid var(--border2);border-radius:4px;padding:2px 6px;font-family:'DM Mono',monospace;font-size:10.5px;color:var(--t2);}

/* PILLS */
.pill{display:inline-flex;align-items:center;font-size:10.5px;padding:2px 7px;border-radius:4px;font-weight:600;}
.p-green{background:rgba(46,158,24,0.13);color:var(--green);}
.p-orange{background:rgba(192,90,16,0.13);color:var(--orange);}
.p-blue{background:rgba(32,104,192,0.13);color:var(--blue);}
.p-yellow{background:rgba(176,124,8,0.13);color:var(--yellow);}
.p-red{background:rgba(204,47,47,0.13);color:var(--red);}
.p-purple{background:rgba(103,68,204,0.13);color:var(--purple);}
.p-cyan{background:rgba(15,143,154,0.13);color:var(--cyan);}
.p-grey{background:var(--s3);color:var(--t2);}

/* PIPELINE */
.pipeline{display:flex;gap:10px;overflow-x:auto;padding-bottom:8px;}
.pcol{background:var(--s1);border:1px solid var(--border);border-radius:var(--rl);padding:12px;min-height:280px;flex:1 0 240px;min-width:240px;}
.pcol-h{display:flex;align-items:center;justify-content:space-between;margin-bottom:2px;}
.pcol-title{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:0.6px;}
.pcol-cnt{font-size:10px;background:var(--s2);border-radius:20px;padding:1px 7px;color:var(--t2);font-family:'DM Mono',monospace;}
.pcol-total{font-size:10px;color:var(--t2);font-family:'DM Mono',monospace;margin-bottom:10px;}
.deal{background:var(--s2);border:1px solid var(--border);border-radius:7px;padding:10px;margin-bottom:7px;transition:all 0.12s;cursor:pointer;}
.deal:hover{border-color:var(--acc);}
.deal-name{font-size:12px;font-weight:600;margin-bottom:3px;}
.deal-client{font-size:11px;color:var(--t2);margin-bottom:6px;}
.deal-foot{display:flex;align-items:center;justify-content:space-between;}
.deal-amount{font-family:'DM Sans',sans-serif;font-size:12px;font-weight:700;color:var(--acc);}
.deal-warn{color:var(--orange);margin-left:4px;font-size:11px;}

/* FICHE (générique : affaire, contact, ...) — mise en page sobre */
.fiche-meta{display:flex;align-items:center;flex-wrap:wrap;gap:7px;font-size:12px;color:var(--t2);margin-bottom:12px;}
.fiche-meta b{color:var(--text);font-weight:600;}
.fiche-meta .dot{color:var(--border2);}

.stage-bar-wrap{margin-bottom:16px;}
.stage-bar{display:flex;gap:1px;height:14px;border-radius:4px;overflow:hidden;}
.stage-seg{display:flex;align-items:center;justify-content:center;font-size:8px;font-weight:700;color:#fff;background:var(--s3);letter-spacing:0.2px;}
.stage-seg.reached{opacity:0.88;}
.stage-seg.current{opacity:1;box-shadow:inset 0 0 0 1px rgba(255,255,255,0.35);}
.stage-seg.future{background:var(--s3)!important;}

.fiche-grid{display:grid;grid-template-columns:270px 1fr;gap:14px;}
.fiche-side{background:var(--s1);border:1px solid var(--border);border-radius:var(--rl);overflow:hidden;}
.fiche-side-sec{padding:12px 14px;border-top:1px solid var(--border);}
.fiche-side-sec:first-child{border-top:none;}
.fiche-side-lbl{font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:0.7px;color:var(--t3);margin-bottom:8px;}
.fiche-side-row{display:flex;justify-content:space-between;gap:10px;font-size:11.5px;padding:3px 0;}
.fiche-side-row span:first-child{color:var(--t2);}
.fiche-side-row span:last-child{font-weight:500;text-align:right;}
.fiche-side-empty{font-size:11px;color:var(--t3);}
.fiche-side-person{display:flex;align-items:center;gap:8px;margin-bottom:8px;}
.fiche-side-avatar{width:26px;height:26px;border-radius:7px;background:var(--acc-dim);color:var(--acc);display:flex;align-items:center;justify-content:center;font-family:'DM Sans',sans-serif;font-size:10.5px;font-weight:700;flex-shrink:0;}
.fiche-side-person-name{font-size:12px;font-weight:600;line-height:1.3;}
.fiche-side-person-sub{font-size:10.5px;color:var(--t3);}

/* PARAMÈTRES — éditeur de listes génériques */
.param-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px;}
.param-card{background:var(--s1);border:1px solid var(--border);border-radius:var(--rl);padding:14px;}
.param-card-title{font-size:12.5px;font-weight:700;margin-bottom:10px;}
.param-card-list{max-height:260px;overflow-y:auto;margin-bottom:10px;}
.param-row{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:5px 8px;border-radius:6px;background:var(--s2);margin-bottom:4px;font-size:12px;}
.param-row-lbl{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.param-row-code{font-size:10px;color:var(--t3);margin-left:6px;font-family:'DM Mono',monospace;}
.param-row-actions{display:flex;align-items:center;gap:2px;flex-shrink:0;}
.param-row-actions .btn{padding:2px 6px;}
.param-add-row{display:flex;gap:6px;}
.param-add-row .fi{flex:1;}

/* DOUBLONS */
.dup-pair{display:grid;grid-template-columns:1fr auto 1fr;gap:14px;align-items:center;background:var(--s1);border:1px solid var(--border);border-radius:var(--rl);padding:14px;margin-bottom:10px;}
.dup-card{font-size:12px;}
.dup-card b{font-size:13px;}
.dup-card .t2{color:var(--t2);font-size:11px;}
.dup-score{display:flex;flex-direction:column;align-items:center;gap:6px;}
.dup-score-val{font-size:16px;font-weight:700;}
.dup-warn{background:rgba(240,171,54,0.12);border:1px solid rgba(240,171,54,0.35);border-radius:8px;padding:8px 10px;font-size:11.5px;color:var(--orange);margin-bottom:12px;}
.dup-warn ul{margin:6px 0 0;padding-left:16px;}
.dup-warn a{color:var(--orange);text-decoration:underline;cursor:pointer;}

/* MOE CARDS */
.moe-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;}
.moe-card{background:var(--s1);border:1px solid var(--border);border-radius:var(--rl);padding:16px;transition:all 0.18s;cursor:pointer;}
.moe-card:hover{border-color:var(--purple);transform:translateY(-1px);}
.moe-av{width:40px;height:40px;border-radius:9px;display:flex;align-items:center;justify-content:center;font-family:'DM Sans',sans-serif;font-size:14px;font-weight:700;margin-bottom:10px;}
.moe-stats{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin:10px 0;}
.moe-stat{background:var(--s2);border-radius:6px;padding:7px 9px;}
.moe-stat-l{font-size:9.5px;text-transform:uppercase;letter-spacing:0.6px;color:var(--t3);margin-bottom:2px;}
.moe-stat-v{font-family:'DM Mono',monospace;font-size:12.5px;font-weight:500;}

/* LOT CARDS */
.lots-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;}
.lot-card{background:var(--s1);border:1px solid var(--border);border-radius:var(--rl);overflow:hidden;transition:all 0.18s;cursor:pointer;}
.lot-card:hover{border-color:var(--border2);transform:translateY(-1px);}
.lot-colorbar{height:3px;}
.lot-head{padding:13px 15px;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:flex-start;}
.lot-num{font-size:10px;font-family:'DM Mono',monospace;color:var(--t3);margin-bottom:3px;}
.lot-name{font-family:'DM Sans',sans-serif;font-size:13.5px;font-weight:700;}
.lot-body{padding:12px 15px;}
.lot-foot{padding:9px 15px;border-top:1px solid var(--border);display:flex;justify-content:space-between;align-items:center;}
.lot-total{font-family:'DM Sans',sans-serif;font-size:14px;font-weight:700;color:var(--acc);}

/* CONTAINER CARDS */
.cards-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px;}
.cont-card{background:var(--s1);border:1px solid var(--border);border-radius:var(--rl);overflow:hidden;transition:all 0.18s;cursor:pointer;}
.cont-card:hover{border-color:var(--acc);transform:translateY(-1px);}
.cont-top{display:flex;}
.cont-side{width:4px;flex-shrink:0;}
.cont-body{flex:1;padding:12px 12px 0 12px;}
.cont-hd{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:7px;}
.cont-ref{font-family:'DM Sans',sans-serif;font-size:15px;font-weight:700;}
.cont-type{font-size:11px;color:var(--t2);margin-top:1px;}
.cont-depot{font-size:11px;color:var(--t2);margin-bottom:6px;}
.cont-defauts{display:flex;flex-wrap:wrap;gap:3px;margin-bottom:9px;}
.cont-costs{display:grid;grid-template-columns:1fr 1fr 1fr;border-top:1px solid var(--border);}
.cont-cost{padding:7px 9px;border-right:1px solid var(--border);text-align:center;}
.cont-cost:last-child{border-right:none;}
.cont-cost-l{font-size:9px;text-transform:uppercase;letter-spacing:0.7px;color:var(--t3);margin-bottom:2px;}
.cont-cost-v{font-family:'DM Mono',monospace;font-size:11px;}
.cont-foot{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;border-top:1px solid var(--border);background:var(--s2);}
.cont-prix-l{font-size:9px;text-transform:uppercase;letter-spacing:0.7px;color:var(--t3);}
.cont-prix-v{font-family:'DM Sans',sans-serif;font-size:15px;font-weight:700;color:var(--acc);}

/* DEPOT CARDS */
.depot-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;}
.depot-card{background:var(--s1);border:1px solid var(--border);border-radius:var(--rl);overflow:hidden;transition:all 0.18s;}
.depot-card:hover{border-color:var(--border2);}
.dc-hd{padding:14px 16px;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:flex-start;}
.dc-name{font-family:'DM Sans',sans-serif;font-size:15px;font-weight:700;}
.dc-ville{font-size:11px;color:var(--t2);margin-top:2px;}
.dc-body{padding:12px 16px;}
.dc-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin-bottom:10px;}
.dc-stat{background:var(--s2);border-radius:6px;padding:7px 9px;text-align:center;}
.dc-stat-l{font-size:9px;text-transform:uppercase;letter-spacing:0.7px;color:var(--t3);margin-bottom:2px;}
.dc-stat-v{font-family:'DM Mono',monospace;font-size:13px;font-weight:600;}
.dc-tarifs{border-top:1px solid var(--border);padding-top:9px;}
.dc-tarif-row{display:flex;justify-content:space-between;font-size:11.5px;padding:3px 0;}
.dc-tarif-l{color:var(--t2);}
.dc-tarif-v{font-family:'DM Mono',monospace;}

/* HISTORIQUE */
.hist-wrap{background:var(--s1);border:1px solid var(--border);border-radius:var(--rl);overflow:hidden;}
.hist-item{display:flex;gap:0;position:relative;padding:0 14px;}
.hist-item::before{content:'';position:absolute;left:37px;top:34px;bottom:0;width:1px;background:var(--border);}
.hist-item:last-child::before{display:none;}
.hist-icon-col{width:50px;padding:12px 0;display:flex;align-items:center;flex-direction:column;flex-shrink:0;}
.hist-dot{width:24px;height:24px;border-radius:7px;display:flex;align-items:center;justify-content:center;font-size:12px;border:1.5px solid var(--border);background:var(--s2);}
.hist-body{flex:1;padding:12px 0 14px 0;}
.hist-hd{display:flex;align-items:center;gap:8px;margin-bottom:3px;}
.hist-type{font-weight:700;font-size:12px;}
.hist-date{font-size:10.5px;color:var(--t3);font-family:'DM Mono',monospace;}
.hist-desc{font-size:12px;color:var(--t2);}
.hist-cost{display:inline-flex;align-items:center;font-size:11px;font-weight:600;padding:2px 7px;border-radius:4px;margin-top:5px;}
.hc-pos{background:rgba(204,47,47,0.10);color:var(--red);}
.hc-inf{background:rgba(32,104,192,0.10);color:var(--blue);}

/* COMPOSANTS */
.compo-wrap{border:1px solid var(--border);border-radius:8px;overflow:hidden;margin-bottom:10px;}
.compo-item{display:flex;align-items:center;gap:8px;padding:8px 11px;border-bottom:1px solid var(--border);font-size:12px;}
.compo-item:last-child{border-bottom:none;}
.comp-ref{font-family:'DM Mono',monospace;font-size:10.5px;color:var(--t3);width:80px;flex-shrink:0;}
.comp-name{flex:1;}
.comp-qty input{background:var(--s3);border:1px solid var(--border);border-radius:5px;padding:3px 6px;color:var(--text);font-size:11.5px;font-family:'DM Mono',monospace;outline:none;width:60px;}
.comp-unit{width:35px;font-size:10.5px;color:var(--t3);text-align:center;}
.comp-price{font-family:'DM Mono',monospace;font-size:11.5px;color:var(--acc);width:75px;text-align:right;}
.comp-del{width:22px;height:22px;border-radius:4px;background:none;border:none;cursor:pointer;color:var(--t3);display:flex;align-items:center;justify-content:center;font-size:12px;transition:all 0.12s;}
.comp-del:hover{background:rgba(255,68,102,0.1);color:var(--red);}
.compo-add-row{display:flex;gap:6px;padding:7px 11px;background:var(--s2);}

/* COUT PREVIEW */
.cout-prev{background:var(--s2);border:1px solid var(--border);border-radius:8px;padding:12px;margin-top:10px;}
.cp-row{display:flex;justify-content:space-between;font-size:12.5px;padding:3px 0;border-bottom:1px solid var(--border);}
.cp-row:last-child{border:none;margin-top:3px;padding-top:7px;}
.cp-row.tot{font-weight:700;font-size:13.5px;}
.cp-row.tot span:last-child{color:var(--acc);font-family:'DM Mono',monospace;}
.cp-row span:first-child{color:var(--t2);}
.cp-row span:last-child{font-family:'DM Mono',monospace;}

/* TRANSFERT WIDGET */
.tw-widget{display:flex;align-items:center;gap:10px;padding:12px;background:var(--s2);border-radius:8px;border:1px solid var(--border);margin-bottom:12px;}
.tw-depot{flex:1;text-align:center;padding:9px;background:var(--s1);border-radius:7px;border:1px solid var(--border);}
.tw-depot-l{font-size:9.5px;text-transform:uppercase;letter-spacing:1px;color:var(--t3);margin-bottom:3px;}
.tw-depot-n{font-weight:700;font-size:13.5px;}
.tw-arrow svg{width:20px;height:20px;color:var(--acc);}

/* FICHE */
.fiche-grid{display:grid;grid-template-columns:1fr 320px;gap:14px;}
.info-block{background:var(--s1);border:1px solid var(--border);border-radius:var(--rl);padding:14px;}
.ib-title{font-family:'DM Sans',sans-serif;font-size:12.5px;font-weight:700;text-transform:uppercase;color:var(--t2);margin-bottom:10px;}
.info-row{display:flex;justify-content:space-between;font-size:12px;padding:5px 0;border-bottom:1px solid var(--border);}
.info-row:last-child{border:none;}
.info-row span:first-child{color:var(--t2);}
.info-row span:last-child{font-weight:500;font-family:'DM Mono',monospace;font-size:11.5px;}

/* DASHBOARD */
.dash-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;}
.dash-card{background:var(--s1);border:1px solid var(--border);border-radius:var(--rl);padding:16px;}
.dash-card-title{font-family:'DM Sans',sans-serif;font-size:13px;font-weight:700;margin-bottom:12px;display:flex;align-items:center;justify-content:space-between;}
.dash-row{display:flex;align-items:center;justify-content:space-between;padding:6px 0;border-bottom:1px solid var(--border);font-size:12px;}
.dash-row:last-child{border:none;}
.act-item{display:flex;gap:10px;padding:8px 0;border-bottom:1px solid var(--border);}
.act-item:last-child{border:none;}
.act-icon{width:28px;height:28px;border-radius:7px;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:12px;}
.act-time{font-size:10.5px;color:var(--t3);margin-top:1px;}

/* MODAL */
.overlay{position:fixed;inset:0;background:rgba(37,51,35,0.55);z-index:200;display:none;align-items:center;justify-content:center;backdrop-filter:blur(4px);}
.overlay.open{display:flex;}
.modal{background:var(--s1);border:1px solid var(--border);border-radius:var(--rl);width:560px;max-height:88vh;overflow-y:auto;animation:mIn 0.18s ease;box-shadow:0 8px 40px rgba(37,51,35,0.14);}
.modal.w720{width:720px;}.modal.w900{width:900px;max-width:95vw;}
@keyframes mIn{from{opacity:0;transform:scale(0.96)translateY(8px)}to{opacity:1;transform:scale(1)translateY(0)}}
.mh{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--border);position:sticky;top:0;background:var(--s1);z-index:10;}
.mh-title{font-family:'DM Sans',sans-serif;font-size:15px;font-weight:700;display:flex;align-items:center;gap:7px;color:var(--text);}
.mh-close{width:26px;height:26px;border-radius:6px;background:var(--s2);border:1px solid var(--border);cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--t2);font-size:13px;}
.mh-close:hover{background:var(--s3);}
.mb{padding:20px;}
.mf{padding:12px 20px;border-top:1px solid var(--border);display:flex;gap:7px;justify-content:flex-end;position:sticky;bottom:0;background:var(--s1);}
.fg{display:flex;flex-direction:column;gap:4px;margin-bottom:12px;}
.fg2{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:12px;}
.fg3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;margin-bottom:12px;}
.fl{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:0.8px;color:var(--t2);}
.fi{background:#fff;border:1px solid var(--border);border-radius:7px;padding:7px 10px;color:var(--text);font-size:12.5px;outline:none;font-family:'DM Sans',sans-serif;transition:border-color 0.12s;width:100%;}
.fi:focus{border-color:var(--acc);box-shadow:0 0 0 3px rgba(121,190,38,0.12);}
select.fi{cursor:pointer;}
textarea.fi{resize:vertical;}
.sdiv{border:none;border-top:1px solid var(--border);margin:14px 0;}
.slbl{font-size:9.5px;text-transform:uppercase;letter-spacing:1.5px;color:var(--t3);margin-bottom:9px;font-weight:700;}
.defauts-g{display:grid;grid-template-columns:repeat(4,1fr);gap:5px;margin-bottom:12px;}
.dcb{display:flex;align-items:center;gap:5px;padding:6px 9px;border-radius:6px;border:1px solid var(--border);cursor:pointer;transition:all 0.12s;font-size:11.5px;font-weight:600;user-select:none;}
.dcb.on{border-color:var(--orange);background:rgba(255,122,53,0.08);}
.dcb input{display:none;}

/* LOADING / EMPTY / TOAST */
.loading{display:flex;align-items:center;justify-content:center;padding:48px;color:var(--t3);}
.spinner{width:24px;height:24px;border:2px solid var(--border);border-top-color:var(--acc);border-radius:50%;animation:spin 0.7s linear infinite;margin-right:10px;}
@keyframes spin{to{transform:rotate(360deg)}}
.empty{text-align:center;padding:44px 20px;color:var(--t3);}
.empty-icon{font-size:32px;margin-bottom:10px;}
.empty-txt{font-size:13.5px;color:var(--t2);margin-bottom:3px;}
.toast{position:fixed;bottom:18px;right:18px;background:#fff;border:1px solid var(--border2);border-radius:9px;padding:9px 14px;font-size:12.5px;display:flex;align-items:center;gap:7px;z-index:999;transform:translateY(60px);opacity:0;transition:all 0.22s;box-shadow:0 4px 16px rgba(0,0,0,0.10);}
.toast.show{transform:translateY(0);opacity:1;}
.tdot{width:6px;height:6px;border-radius:50%;flex-shrink:0;}
.toolbar{display:flex;align-items:center;gap:8px;margin-bottom:13px;flex-wrap:wrap;}
.fsel{background:var(--s2);border:1px solid var(--border);border-radius:7px;padding:6px 9px;color:var(--t2);font-size:12px;font-family:'DM Sans',sans-serif;outline:none;cursor:pointer;}
::-webkit-scrollbar{width:4px;height:4px;}
::-webkit-scrollbar-track{background:var(--bg);}
::-webkit-scrollbar-thumb{background:var(--border2);border-radius:2px;}

/* ══ CODE COULEUR articles / ouvrages / MOE ══ */
:root{
  --art:#c05a10;   /* orange articles */
  --ouv:#2068c0;   /* bleu ouvrages */
  --moe:#cc2f2f;   /* rouge MOE */
}
.sect-art{display:flex;align-items:center;justify-content:space-between;border-left:4px solid var(--art);background:rgba(192,90,16,0.06);border-radius:0 7px 7px 0;padding:7px 12px;margin-bottom:7px;}
.sect-ouv{display:flex;align-items:center;justify-content:space-between;border-left:4px solid var(--ouv);background:rgba(32,104,192,0.06);border-radius:0 7px 7px 0;padding:7px 12px;margin-bottom:7px;}
.sect-moe{display:flex;align-items:center;justify-content:space-between;border-left:4px solid var(--moe);background:rgba(204,47,47,0.06);border-radius:0 7px 7px 0;padding:7px 12px;margin-bottom:7px;}
.sect-art span{font-size:12.5px;font-weight:700;color:var(--art);}
.sect-ouv span{font-size:12.5px;font-weight:700;color:var(--ouv);}
.sect-moe span{font-size:12.5px;font-weight:700;color:var(--moe);}
.btn-art{background:rgba(192,90,16,0.1);color:var(--art);border:1px solid rgba(192,90,16,0.25);font-weight:600;}
.btn-art:hover{background:rgba(192,90,16,0.18);}
.btn-ouv{background:rgba(32,104,192,0.1);color:var(--ouv);border:1px solid rgba(32,104,192,0.25);font-weight:600;}
.btn-ouv:hover{background:rgba(32,104,192,0.18);}
.btn-moe{background:rgba(204,47,47,0.1);color:var(--moe);border:1px solid rgba(204,47,47,0.25);font-weight:600;}
.btn-moe:hover{background:rgba(204,47,47,0.18);}
/* Lignes composition colorées */
.compo-row-art > div:first-child{border-left:3px solid var(--art);}
.compo-row-ouv > div:first-child{border-left:3px solid var(--ouv);}
.compo-row-moe > div:first-child{border-left:3px solid var(--moe);}

/* ══ ARTICLE PICKER (catalogue) ══ */
.picker-layout{display:grid;grid-template-columns:210px 1fr;height:560px;overflow:hidden;border-top:1px solid var(--border);}
.picker-sidebar{border-right:1px solid var(--border);overflow-y:auto;background:var(--s1);}
.picker-cat-lbl{font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:1.2px;color:var(--t3);padding:9px 10px 3px;margin-top:2px;display:flex;align-items:center;gap:5px;cursor:pointer;border-radius:5px;transition:background 0.1s;}
.picker-cat-lbl:hover{background:var(--s2);color:var(--t2);}
.picker-chevron{font-size:8px;transition:transform 0.18s;display:inline-block;flex-shrink:0;}
.picker-chevron.open{transform:rotate(90deg);}
.picker-item{padding:6px 14px;font-size:12.5px;cursor:pointer;color:var(--t2);transition:all 0.1s;display:flex;align-items:center;gap:6px;border-left:3px solid transparent;}
.picker-item:hover{background:var(--s2);color:var(--text);}
.picker-item.on{background:var(--acc-dim);color:var(--acc);font-weight:700;border-left-color:var(--acc);}
.picker-item-sub{padding-left:26px !important;font-size:12px;}
.picker-main{display:flex;flex-direction:column;overflow:hidden;}
.picker-search-bar{padding:10px 12px;border-bottom:1px solid var(--border);background:var(--s2);}
.picker-table{flex:1;overflow-y:auto;}
.picker-table table{width:100%;}
.picker-table tbody tr:hover{background:var(--acc-dim);cursor:pointer;}
.picker-empty{text-align:center;padding:40px 20px;color:var(--t3);font-size:13px;}
.compo-row{display:grid;gap:0;border-bottom:1px solid var(--border);font-size:12px;}
.compo-row:last-child{border-bottom:none;}
.compo-row-art{grid-template-columns:80px 1fr 50px 80px 90px 90px 30px;align-items:center;}
.compo-row-moe{grid-template-columns:80px 1fr 60px 90px 90px 30px;align-items:center;}
.compo-row-ouv{grid-template-columns:80px 1fr 60px 90px 90px 30px;align-items:center;}
.compo-cell{padding:7px 8px;}
.compo-cell-head{padding:5px 8px;font-size:9.5px;text-transform:uppercase;letter-spacing:0.8px;color:var(--t3);font-weight:700;background:var(--s2);border-bottom:1px solid var(--border);}
.compo-qty-inp{background:var(--s3);border:1px solid var(--border);border-radius:5px;padding:3px 6px;color:var(--text);font-size:12px;font-family:'DM Mono',monospace;outline:none;width:60px;}
.compo-qty-inp:focus{border-color:var(--acc);}
.prix-block{background:var(--s2);border:1px solid var(--border);border-radius:10px;padding:14px 16px;margin-top:4px;}
.prix-row{display:flex;justify-content:space-between;align-items:center;padding:5px 0;border-bottom:1px solid var(--border);font-size:12.5px;}
.prix-row:last-child{border:none;}
.prix-row.total{font-weight:700;font-size:14px;padding-top:9px;margin-top:3px;border-top:2px solid var(--border);}
.prix-alert{background:rgba(204,47,47,0.08);border:1px solid rgba(204,47,47,0.25);border-radius:7px;padding:9px 13px;font-size:12.5px;color:var(--red);margin-top:8px;display:none;}

/* ══ CONFIRM DIALOG ══ */
.confirm-overlay{position:fixed;inset:0;background:rgba(37,51,35,0.45);z-index:999;display:none;align-items:center;justify-content:center;backdrop-filter:blur(3px);}
.confirm-overlay.open{display:flex;}
.confirm-box{background:#fff;border:1px solid var(--border);border-radius:14px;padding:28px 28px 20px;width:340px;box-shadow:0 12px 48px rgba(0,0,0,0.14);animation:mIn 0.15s ease;text-align:center;}
.confirm-icon{font-size:32px;margin-bottom:12px;}
.confirm-title{font-family:'DM Sans',sans-serif;font-size:16px;font-weight:700;color:var(--text);margin-bottom:6px;}
.confirm-msg{font-size:13px;color:var(--t2);line-height:1.5;margin-bottom:22px;}
.confirm-btns{display:flex;gap:9px;justify-content:center;}
.confirm-btns button{min-width:100px;padding:9px 18px;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer;border:none;font-family:'DM Sans',sans-serif;transition:all 0.12s;}
.confirm-cancel{background:var(--s2);color:var(--t2);border:1px solid var(--border) !important;}
.confirm-cancel:hover{background:var(--s3);color:var(--text);}
.confirm-ok{background:var(--red);color:#fff;}
.confirm-ok:hover{opacity:0.88;}
.confirm-ok.green{background:var(--acc);}

/* ══ RICH TEXT EDITOR ══ */
.rte-wrap{border:1px solid var(--border);border-radius:7px;overflow:hidden;background:#fff;margin-bottom:0;}
.rte-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:2px;padding:4px 6px;background:var(--s2);border-bottom:1px solid var(--border);}
.rte-tb-btn{width:26px;height:26px;border-radius:4px;border:none;background:none;cursor:pointer;font-size:12px;display:flex;align-items:center;justify-content:center;color:var(--text);flex-shrink:0;}
.rte-tb-btn:hover{background:var(--s3);}
.rte-tb-btn.on{background:var(--acc-dim);color:var(--acc);}
.rte-sep{width:1px;height:20px;background:var(--border);margin:0 3px;flex-shrink:0;}
.rte-toolbar select{height:26px;border:1px solid var(--border);border-radius:4px;background:#fff;cursor:pointer;font-size:11px;padding:0 3px;color:var(--text);}
.rte-toolbar input[type="color"]{width:26px;height:26px;border:1px solid var(--border);border-radius:4px;cursor:pointer;padding:2px;background:none;}
.rte-body{min-height:70px;padding:8px 11px;outline:none;font-size:13px;line-height:1.65;color:var(--text);font-family:'DM Sans',sans-serif;}
.rte-body:empty::before{content:attr(data-ph);color:var(--t3);pointer-events:none;}
.rte-body ul,.rte-body ol{padding-left:22px;margin:3px 0;}
.rte-body li{margin:1px 0;}
.rte-body blockquote{border-left:3px solid var(--acc);margin:6px 0;padding:2px 12px;color:var(--t2);}
.rte-body img{max-width:100%;border-radius:4px;}
.rte-body h1,.rte-body h2,.rte-body h3{margin:8px 0 4px;line-height:1.3;}
.rte-body a{color:var(--acc);}

/* ── Puces de variables (templates mail) ── */
.var-chip{display:inline-block;background:var(--acc-dim);color:var(--acc);border:1px solid var(--acc);border-radius:12px;padding:1px 8px;font-size:11.5px;font-weight:700;margin:0 1px;line-height:1.6;white-space:nowrap;user-select:none;}

/* ── Panneau "Insérer un champ" ── */
.rte-varbtn{border:1px solid var(--acc);}
.rte-varpanel{display:none;flex-direction:column;position:absolute;top:30px;right:0;width:280px;max-height:340px;background:var(--s1);border:1px solid var(--border);border-radius:9px;box-shadow:0 8px 30px rgba(37,51,35,0.18);z-index:60;overflow:hidden;}
.rte-varpanel.open{display:flex;}
.rte-varpanel .picker-search-bar{padding:8px;flex-shrink:0;}
.rte-varpanel-list{overflow-y:auto;padding:2px 0 8px;}
.rte-varpanel .picker-cat-lbl{padding:8px 12px 2px;}
.rte-varpanel .picker-item{padding:6px 12px;border-left:none;}
.rte-body p{margin:2px 0;}

/* ── Zone latérale "Insérer un champ" (alternative au panneau flottant :
     toujours visible, pas de positionnement absolu donc pas de risque de
     débordement dans une modale étroite) ── */
.rte-with-sidebar{display:flex;gap:12px;align-items:flex-start;flex-wrap:wrap;}
.rte-with-sidebar .rte-wrap{flex:1;min-width:260px;}
.rte-var-sidebar{width:230px;flex-shrink:0;display:flex;flex-direction:column;background:var(--s1);border:1px solid var(--border);border-radius:9px;overflow:hidden;max-height:280px;}
.rte-var-sidebar-title{padding:9px 12px 7px;font-size:10.5px;font-weight:800;text-transform:uppercase;letter-spacing:0.8px;color:var(--t2);border-bottom:1px solid var(--border);background:var(--s2);}
.rte-var-sidebar .picker-search-bar{padding:8px;flex-shrink:0;}
.rte-var-sidebar-list{overflow-y:auto;padding:2px 0 8px;}
.rte-var-sidebar .picker-cat-lbl{padding:8px 12px 2px;}
.rte-var-sidebar .picker-item{padding:6px 12px;border-left:none;}

/* TABLE MANAGER — tri + filtre Excel */
.th-s{cursor:pointer;user-select:none;white-space:nowrap;}
.th-s:hover{background:var(--s2);}
.th-inner{display:flex;align-items:center;gap:5px;}
.th-arr{font-size:9px;color:var(--t3);flex-shrink:0;}
.th-arr.on{color:var(--acc);}
.tbl-filters th{padding:3px 6px;background:var(--s3);border-bottom:1px solid var(--border);}
.tbl-filters .fi{font-size:11px;padding:3px 6px;min-width:60px;}
.tbl-info{display:flex;align-items:center;justify-content:space-between;padding:7px 14px;background:var(--s2);border-bottom:1px solid var(--border);font-size:11.5px;color:var(--t2);}
.tbl-info strong{color:var(--text);}

/* TABS */
.tabs-nav{display:flex;border-bottom:1px solid var(--border);margin-bottom:16px;gap:0;}
.tab-btn{padding:8px 16px;font-size:12px;font-weight:600;cursor:pointer;background:none;border:none;border-bottom:2px solid transparent;color:var(--t2);margin-bottom:-1px;font-family:'DM Sans',sans-serif;transition:all 0.12s;white-space:nowrap;}
.tab-btn:hover{color:var(--text);}
.tab-btn.active{color:var(--acc);border-bottom-color:var(--acc);}
.tab-pane{display:none;}
.tab-pane.active{display:block;}

/* TOGGLE PRO / PARTICULIER */
.pers-toggle{display:flex;gap:3px;background:var(--s2);border:1px solid var(--border);border-radius:8px;padding:3px;margin-bottom:14px;}
.pers-btn{flex:1;padding:8px;font-size:13px;font-weight:600;cursor:pointer;border:none;border-radius:6px;background:none;color:var(--t2);font-family:'DM Sans',sans-serif;transition:all 0.15s;}
.pers-btn.active{background:var(--acc);color:#fff;}

/* CARTES PERSONNES CONTACT */
.pers-card{background:var(--s2);border:1px solid var(--border);border-radius:8px;padding:11px 13px;margin-bottom:7px;}
.pers-card-hd{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;}
.pers-name{font-weight:700;font-size:13px;}
.pers-fonction{font-size:10.5px;color:var(--acc);background:var(--acc-dim);border-radius:4px;padding:2px 7px;}
.pers-infos{display:grid;grid-template-columns:1fr 1fr;gap:4px;}
.pers-info-row{display:flex;align-items:center;gap:6px;font-size:11.5px;color:var(--t2);}
.pers-info-row span{color:var(--text);}

/* SECTION LABEL */
.section-lbl{font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:1.5px;color:var(--t3);margin:14px 0 8px;padding-bottom:5px;border-bottom:1px solid var(--border);}

/* ══ COMPOSANTS RÉFÉRENTS ══ */
.fin-grid { display:grid; gap:10px; margin:10px 0; }
.fin-bloc { background:var(--s2); border-radius:8px; padding:10px 13px; }
.fin-lbl  { font-size:9.5px; text-transform:uppercase; letter-spacing:0.8px; color:var(--t3); margin-bottom:5px; font-weight:700; }
.fin-val  { font-family:'DM Mono',monospace; font-size:15px; font-weight:700; }
.fin-sub  { font-size:10.5px; color:var(--t2); margin-top:2px; }
.bgt-bar  { height:5px; background:var(--s3); border-radius:3px; overflow:hidden; margin-top:5px; }
.bgt-fill { height:100%; border-radius:3px; transition:width 0.4s; }

/* ══ MODULE CHANTIERS ══ */
.project-card { background:var(--s1); border:1px solid var(--border); border-radius:var(--rl); overflow:hidden; transition:all 0.18s; }
.project-card:hover { border-color:var(--border2); transform:translateY(-1px); box-shadow:0 4px 16px rgba(37,51,35,0.08); }
.project-card-top   { display:flex; }
.project-card-side  { width:4px; flex-shrink:0; }
.project-card-body  { flex:1; padding:13px 13px 0; }
.project-card-hd    { display:flex; align-items:flex-start; justify-content:space-between; margin-bottom:6px; gap:8px; }
.project-card-num   { font-family:'DM Mono',monospace; font-size:10px; color:var(--t3); margin-bottom:2px; }
.project-card-name  { font-family:'DM Sans',sans-serif; font-size:14px; font-weight:700; }
.project-card-client{ font-size:11.5px; color:var(--t2); margin-bottom:4px; }
.project-card-dates { font-size:10.5px; color:var(--t3); margin-bottom:10px; }
.project-card-fin   { display:grid; grid-template-columns:repeat(3,1fr); border-top:1px solid var(--border); }
.project-fin-item   { padding:8px 10px; border-right:1px solid var(--border); }
.project-fin-item:last-child { border-right:none; }
.project-fin-lbl    { font-size:9px; text-transform:uppercase; letter-spacing:0.7px; color:var(--t3); margin-bottom:3px; }
.project-fin-val    { font-family:'DM Mono',monospace; font-size:11.5px; font-weight:600; }

/* ══ MODULE DEVIS ══ */
.dv-page { display:flex; flex-direction:column; gap:0; min-height:calc(100vh - 60px); margin:-18px -22px; }

/* Topbar éditeur devis */
.dv-topbar { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:10px 18px; background:var(--s1); border-bottom:1px solid var(--border); position:sticky; top:0; z-index:60; }
.dv-topbar-center { display:flex; align-items:center; gap:9px; flex:1; justify-content:center; }
.dv-num-badge { font-family:'DM Mono',monospace; font-size:13px; font-weight:700; background:var(--acc-dim); color:var(--acc); border-radius:6px; padding:3px 10px; }
.dv-statut-sel { background:var(--s2); border:1px solid var(--border); border-radius:7px; padding:5px 10px; color:var(--text); font-size:12.5px; font-family:'DM Sans',sans-serif; cursor:pointer; outline:none; }

/* Layout éditeur */
.dv-layout { display:grid; grid-template-columns:1fr 270px; gap:0; flex:1; align-items:start; padding:16px 18px; gap:14px; }
.dv-main { display:flex; flex-direction:column; gap:12px; min-width:0; }
.dv-card { background:var(--s1); border:1px solid var(--border); border-radius:var(--rl); padding:16px; }

/* Récapitulatif latéral */
.dv-recap { background:var(--s1); border:1px solid var(--border); border-radius:var(--rl); padding:14px; position:sticky; top:60px; display:flex; flex-direction:column; gap:0; }
.dvr-title { font-size:9.5px; font-weight:800; text-transform:uppercase; letter-spacing:1.5px; color:var(--t3); margin-bottom:8px; }
.dvr-bloc { border-bottom:1px solid var(--border); padding-bottom:9px; margin-bottom:9px; display:flex; flex-direction:column; gap:3px; }
.dvr-bloc:last-of-type { border-bottom:none; }
.dvr-row { display:flex; justify-content:space-between; align-items:center; font-size:12px; padding:2px 0; }
.dvr-row span:first-child { color:var(--t2); }
.dvr-bold { font-weight:700; font-size:13px; }
.dvr-total { font-family:'DM Sans',sans-serif; font-size:15px; font-weight:700; }
.dvr-total span:last-child { color:var(--acc); }

/* En-tête colonnes lignes */
.dv-lignes-hd { display:grid; grid-template-columns:24px 52px 82px 1fr 68px 36px 86px 66px 96px 100px; align-items:center; padding:5px 0; border-bottom:2px solid var(--border); margin-bottom:0; font-size:9.5px; text-transform:uppercase; letter-spacing:0.8px; color:var(--t3); font-weight:700; }
.dv-lignes-hd > div { padding:0 5px; }

/* Ligne de devis */
.dv-ligne { display:grid; grid-template-columns:24px 52px 82px 1fr 68px 36px 86px 66px 96px 100px; align-items:center; border-bottom:1px solid var(--border); min-height:38px; transition:background 0.08s; }
.dv-ligne:last-child { border-bottom:none; }
.dv-ligne:hover { background:var(--s2); }
.dv-ligne:hover .dv-act-btns { opacity:1 !important; }
.dv-ligne.dv-dragging { opacity:0.45; background:var(--acc-dim); }
.dv-ligne.dv-drag-over { border-top:3px solid var(--acc); }
.dv-ligne-ch { background:var(--s3); font-weight:700; }
.dv-ligne-ch:hover { background:var(--s4); }
.dv-ligne-st { background:rgba(121,190,38,0.06); }
.dv-ligne-rem { background:rgba(204,47,47,0.04); }
.dv-ligne-txt { background:#fff; font-style:italic; }
.dv-ligne-opt { opacity:0.82; font-style:italic; background:rgba(15,143,154,0.04); }
.dv-ligne-optzone { background:rgba(15,143,154,0.06); }

/* Drag handle */
.dv-drag { display:flex; align-items:center; justify-content:center; color:var(--t3); cursor:grab; font-size:13px; letter-spacing:-1px; padding:0 3px; user-select:none; }
.dv-drag:active { cursor:grabbing; }

/* Badge type */
.dv-badge { display:inline-flex; align-items:center; justify-content:center; font-size:9px; font-weight:800; padding:2px 5px; border-radius:4px; letter-spacing:0.3px; white-space:nowrap; }
.dv-badge-ch { background:rgba(107,114,128,0.15); color:#4b5563; }

/* Inputs inline */
.dv-ch-inp { background:none; border:none; outline:none; font-weight:700; font-size:13px; color:var(--text); width:100%; padding:3px 5px; font-family:'DM Sans',sans-serif; }
.dv-ch-inp::placeholder { color:var(--t3); font-weight:400; }
.dv-ch-inp:focus { background:var(--s1); border-radius:4px; }
.dv-st-inp { background:none; border:none; outline:none; font-size:12px; color:var(--t2); width:100%; padding:2px 5px; font-family:'DM Sans',sans-serif; }
.dv-st-inp:focus { background:rgba(255,255,255,0.8); border-radius:4px; }
.dv-txt-inp { background:none; border:none; outline:none; font-size:12px; color:var(--t2); font-style:italic; width:100%; padding:3px 5px; font-family:'DM Sans',sans-serif; resize:none; overflow:hidden; }
.dv-txt-inp:focus { background:rgba(255,255,255,0.8); border-radius:4px; }
.dv-desig-inp { background:none; border:none; outline:none; font-size:12.5px; color:var(--text); width:100%; padding:3px 5px; font-family:'DM Sans',sans-serif; resize:none; overflow:hidden; min-height:32px; }
.dv-desig-inp:focus { background:rgba(255,255,255,0.9); border-radius:4px; }
.dv-num-inp { background:var(--s3); border:1px solid var(--border); border-radius:5px; padding:3px 5px; color:var(--text); font-size:12px; font-family:'DM Mono',monospace; outline:none; width:58px; text-align:right; }
.dv-num-inp:focus { border-color:var(--acc); box-shadow:0 0 0 2px rgba(121,190,38,0.12); }
.dv-num-r { text-align:right; }
.dv-ref-cell { font-family:'DM Mono',monospace; font-size:10px; color:var(--t3); padding:0 5px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }

/* Actions par ligne */
.dv-act { padding:0 6px; }
.dv-act-btns { display:flex; gap:2px; opacity:0; transition:opacity 0.1s; }
.dv-act-btn { width:22px; height:22px; border-radius:4px; background:none; border:none; cursor:pointer; color:var(--t2); display:flex; align-items:center; justify-content:center; font-size:11px; transition:all 0.1s; padding:0; }
.dv-act-btn:hover { background:var(--s3); color:var(--text); }
.dv-act-btn:disabled { opacity:0.3 !important; pointer-events:none; }
.dv-act-del:hover { background:rgba(204,47,47,0.1); color:var(--red); }

/* Picker devis rapide */
.dv-pick-row { display:flex; align-items:center; gap:10px; padding:9px 14px; border-bottom:1px solid var(--border); cursor:pointer; transition:background 0.09s; }
.dv-pick-row:hover { background:var(--acc-dim); }
.dv-pick-row:last-child { border-bottom:none; }

/* Barre de coller */
#dv-paste-bar { display:flex; align-items:center; gap:8px; }

/* Styles impression devis */
@media print {
  .sidebar, .topbar, .dv-topbar, .dv-recap, .dv-card .section-lbl + div > button,
  .dv-lignes-hd ~ div .dv-drag, .dv-act, .btn, .toolbar, #dv-paste-bar { display:none !important; }
  .dv-layout { grid-template-columns:1fr; padding:0; }
  .dv-page { margin:0; }
  .dv-main { gap:8px; }
  .dv-card { border:none; border-radius:0; padding:8px 0; }
  .dv-ligne { border-bottom:1px solid #ddd; }
  .dv-ligne-ch { background:#f0f0f0; }
  body { font-size:11px; color:#000; }
  @page { margin:1.5cm 2cm; }
}

/* FICHE CONTACT / FOURNISSEUR / DEPOT (commun) */
.fct-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;}
.fct-col{display:flex;flex-direction:column;gap:10px;}
.fct-deal{display:flex;align-items:center;justify-content:space-between;padding:8px 10px;background:var(--s2);border-radius:6px;border:1px solid var(--border);font-size:12px;}
.fct-deal-n{font-weight:600;}
.fct-deal-m{font-family:'DM Mono',monospace;font-size:12px;color:var(--acc);}
/* Hover générique pour les <tr> dans les fiches */
.tbr-hover:hover{background:var(--acc-dim);cursor:pointer;}

/* ══ AUTHENTIFICATION ══ */
#app-shell{display:none;}
#app-shell.visible{display:contents;}
.login-screen{position:relative;min-height:100vh;width:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--bg);padding:24px;overflow:hidden;}
/* Filigrane Noesia : la plateforme occupe le fond, la marque du client
   reste seule au premier plan. Opacité volontairement basse — il doit se
   deviner, jamais concurrencer le formulaire ni gêner sa lecture. */
.login-bg{position:absolute;inset:0;z-index:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2vmin;pointer-events:none;user-select:none;color:var(--text);}
.login-bg svg{width:min(46vmin,340px);height:auto;}
/* Densités séparées : les écailles et l'iris se devinent à peine, la
   pupille est assez marquée pour qu'on la voie bouger. */
.login-bg svg > g:not(#login-iris), .login-bg #login-ring{opacity:.07;}
.login-bg #login-pupil{opacity:.15;}
.login-bg-word{font-size:min(13vmin,96px);font-weight:700;letter-spacing:-.045em;line-height:1;opacity:.06;}
.login-card{position:relative;z-index:1;}

/* ── Mise en scène ──────────────────────────────────────────────
   L'œil s'ouvre, la carte se pose, la pensée arrive en dernier.
   Tout est terminé en moins d'une seconde : on ne fait jamais
   attendre quelqu'un qui vient travailler. */
@keyframes noesia-oeil-ouvre{from{opacity:0;transform:scale(.78)}to{opacity:1;transform:scale(1)}}
@keyframes noesia-monte{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}
@keyframes noesia-secousse{
  10%,90%{transform:translateX(-3px)} 20%,80%{transform:translateX(5px)}
  30%,50%,70%{transform:translateX(-7px)} 40%,60%{transform:translateX(7px)}
}
.login-bg{animation:noesia-oeil-ouvre .95s cubic-bezier(.2,.85,.25,1) both;}
.login-card{animation:noesia-monte .65s cubic-bezier(.2,.85,.25,1) .18s both;}
.login-quote{animation:noesia-monte .65s cubic-bezier(.2,.85,.25,1) .42s both;}

/* Clignement : l'iris s'écrase à la verticale un très court instant. */
#login-iris{transform-box:fill-box;transform-origin:center;transition:transform .13s ease;}
#login-iris.cligne{transform:scaleY(.06);}

/* Échec : la carte proteste, brièvement. */
.login-card.refus{animation:noesia-secousse .5s both;}

/* Réussite : l'iris prend la couleur de la maison et l'œil s'ouvre grand
   avant que l'application ne prenne la main. */
.login-screen.admis #login-ring{stroke:var(--acc);opacity:.55;transition:stroke .3s,opacity .3s;}
.login-screen.admis #login-pupil{opacity:.3;transition:opacity .3s;}
.login-screen.admis .login-bg{transform:scale(1.06);transition:transform .55s cubic-bezier(.2,.85,.25,1);}
.login-screen.admis .login-card,
.login-screen.admis .login-quote{opacity:0;transform:translateY(-8px);transition:opacity .35s,transform .35s;}

@media (prefers-reduced-motion:reduce){
  .login-bg,.login-card,.login-quote{animation:none;}
  #login-iris,.login-card.refus{transition:none;animation:none;}
}

/* Pensée du jour — change à minuit, la même pour toute l'équipe. */
.login-quote{position:relative;z-index:1;max-width:390px;margin-top:22px;text-align:center;}
.login-quote-lbl{font-size:9px;letter-spacing:2px;text-transform:uppercase;color:var(--t3);margin-bottom:7px;}
.login-quote-txt{font-size:13.5px;line-height:1.65;color:var(--t2);font-style:italic;text-wrap:pretty;}
.login-card{width:100%;max-width:360px;background:var(--s1);border:1px solid var(--border);border-radius:var(--rl);padding:32px 28px;box-shadow:0 8px 28px rgba(37,51,35,0.08);}
.login-logo{text-align:center;margin-bottom:22px;}
.login-logo img{height:56px;width:auto;}
.login-sub{font-size:9px;color:var(--t3);letter-spacing:2px;text-transform:uppercase;margin-top:4px;}
.login-err{background:rgba(204,47,47,0.08);color:var(--red);border:1px solid rgba(204,47,47,0.25);border-radius:7px;padding:8px 10px;font-size:12px;margin-bottom:12px;display:none;}
.login-card .btn{width:100%;justify-content:center;margin-top:6px;}

/* Menu masqué par permission (voir applyMenuPermissions dans auth.js) */
.ni[data-perm-hidden], .nav-grp[data-perm-hidden]{display:none !important;}

/* Bloc compte utilisateur (sidebar-foot) */
.user-pill{display:flex;align-items:center;gap:8px;padding:8px 10px;background:var(--s2);border-radius:7px;font-size:11px;margin-bottom:8px;}
.user-pill-av{width:26px;height:26px;border-radius:50%;background:var(--acc);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:11px;flex-shrink:0;}
.user-pill-info{flex:1;min-width:0;}
.user-pill-name{font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.user-pill-role{color:var(--t3);font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.user-pill-logout{background:none;border:none;cursor:pointer;color:var(--t3);padding:4px;flex-shrink:0;}
.user-pill-logout:hover{color:var(--red);}

/* Simulateur de rôle (Super Admin) */
.sim-box{background:rgba(103,68,204,0.08);border:1px solid rgba(103,68,204,0.25);border-radius:7px;padding:7px 9px;margin-bottom:8px;}
.sim-box .fl{color:var(--purple);}
.sim-box.active{background:rgba(103,68,204,0.14);}

/* Écran "accès non autorisé" (voir render() dans router.js) */
.denied{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:60px 20px;color:var(--t2);}
.denied-icon{font-size:38px;margin-bottom:12px;}
.denied-txt{font-size:13.5px;line-height:1.7;max-width:420px;}
