:root{
  --bg:#0f1216; --panel:#171b21; --panel2:#1e242c; --line:#2a323c;
  --text:#e8edf2; --muted:#8b97a6; --accent:#3b82f6; --accent2:#2563eb;
  --ok:#22c55e; --err:#ef4444; --warn:#f59e0b; --radius:12px;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  background:var(--bg); color:var(--text); font-size:15px; line-height:1.5;
}
a{color:var(--accent); text-decoration:none}
a:hover{text-decoration:underline}
.muted{color:var(--muted)}
.small{font-size:.85em}
.mono{font-variant-numeric:tabular-nums; font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
.right{text-align:right}
.nowrap{white-space:nowrap}

/* ---- Layout application : menu latéral + contenu ---- */
.app{min-height:100vh}
.sidebar{
  position:fixed; top:0; left:0; bottom:0; width:236px; background:var(--panel);
  border-right:1px solid var(--line); display:flex; flex-direction:column; z-index:20;
}
.side-top{display:flex; align-items:center; justify-content:space-between; height:62px; padding:0 18px; border-bottom:1px solid var(--line)}
.side-brand{font-weight:700; font-size:18px; color:var(--text)}
.side-brand span{color:var(--accent); font-weight:600}
.side-brand:hover{text-decoration:none}
.nav-burger{display:none; cursor:pointer; font-size:20px; color:var(--muted); padding:2px 8px; border-radius:8px}
.side-nav{flex:1; overflow-y:auto; padding:14px 12px}
.nav-group{margin-bottom:6px}
summary.nav-group-title{
  list-style:none; cursor:pointer; user-select:none;
  display:flex; align-items:center; justify-content:space-between; gap:8px;
  font-size:11.5px; text-transform:uppercase; letter-spacing:.05em; color:var(--muted);
  font-weight:700; padding:8px 10px; border-radius:8px;
}
summary.nav-group-title::-webkit-details-marker{display:none}
summary.nav-group-title:hover{background:var(--panel2); color:var(--text)}
summary.nav-group-title>span{display:flex; align-items:center; gap:8px}
summary.nav-group-title>span>svg{width:15px; height:15px; opacity:.9}
summary.nav-group-title>svg{width:14px; height:14px; transition:transform .18s ease; opacity:.7}
details.nav-group:not([open])>summary.nav-group-title>svg{transform:rotate(-90deg)}
.nav-group-body{padding:4px 0 2px}
.nav-item{display:flex; align-items:center; gap:11px; color:var(--muted); padding:9px 10px; border-radius:9px; font-weight:500; font-size:14.5px; margin-bottom:2px}
.nav-item:hover{color:var(--text); text-decoration:none; background:var(--panel2)}
.nav-item.on{color:#fff; background:var(--accent)}
.nav-item.on:hover{background:var(--accent2)}
.nav-item svg{width:19px; height:19px; flex:none}
.side-foot{border-top:1px solid var(--line); padding:14px 16px; display:flex; align-items:center; justify-content:space-between; gap:10px}
.side-user{color:var(--muted); font-size:13px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}

.app-main{margin-left:236px; min-height:100vh; display:flex; flex-direction:column}
.wrap{max-width:1080px; width:100%; margin:0 auto; padding:26px 28px 50px; flex:1}
.pagehead{display:flex; align-items:center; justify-content:space-between; margin-bottom:20px; gap:12px; flex-wrap:wrap}
.pagehead h1{font-size:24px; margin:0}
.pagefoot{text-align:center; padding:20px; font-size:13px}

/* Responsive : menu repliable en haut sur petit écran */
@media(max-width:820px){
  .sidebar{position:static; width:auto; border-right:none; border-bottom:1px solid var(--line)}
  .nav-burger{display:block}
  .side-nav{display:none; padding:10px 12px}
  .nav-toggle-cb:checked ~ .sidebar .side-nav{display:block}
  .side-foot{display:none}
  .nav-toggle-cb:checked ~ .sidebar .side-foot{display:flex}
  .nav-group{margin-bottom:12px}
  .app-main{margin-left:0}
  .wrap{padding:20px 16px 40px}
}

/* ---- Boutons ---- */
.btn{
  display:inline-flex; align-items:center; gap:6px; justify-content:center;
  background:var(--accent); color:#fff; border:1px solid var(--accent);
  padding:9px 16px; border-radius:9px; font-size:14px; font-weight:600;
  cursor:pointer; text-decoration:none; transition:.12s;
}
.btn:hover{background:var(--accent2); text-decoration:none}
.btn.ghost{background:transparent; color:var(--text); border-color:var(--line)}
.btn.ghost:hover{background:var(--panel2)}
.btn.small{padding:5px 10px; font-size:12.5px; border-radius:7px}
.btn.danger{color:#fca5a5; border-color:#4b2226}
.btn.danger:hover{background:#3a1a1d; color:#fecaca}

/* ---- Cartes & formulaires ---- */
.card{background:var(--panel); border:1px solid var(--line); border-radius:var(--radius); padding:20px; margin-bottom:18px}
.card h2{margin:0 0 14px; font-size:16px}
.card-form .card{margin-bottom:18px}
.split{display:grid; grid-template-columns:1fr 1fr; gap:18px}
@media(max-width:820px){ .split{grid-template-columns:1fr} }

label{display:block; margin-bottom:12px; font-size:13px; color:var(--muted); font-weight:500}
input[type=text],input[type=password],input[type=number],input[type=date],input[type=email],input[type=tel],input[type=month],input[type=search],input[type=url],select,textarea{
  width:100%; margin-top:5px; background:var(--panel2); border:1px solid var(--line);
  color:var(--text); border-radius:8px; padding:9px 11px; font-size:14px; font-family:inherit;
}
input:focus,select:focus,textarea:focus{outline:none; border-color:var(--accent)}
input[disabled],input[readonly]{opacity:.8; cursor:not-allowed; background:var(--panel)}
textarea{resize:vertical}
label.check{display:flex; align-items:center; gap:8px; color:var(--text); font-size:14px; margin-top:6px}
label.check input{width:auto; margin:0}
.grid{display:grid; gap:0 14px}
.grid-2{grid-template-columns:1fr 1fr}
.grid-3{grid-template-columns:1fr 1fr 1fr}
@media(max-width:640px){ .grid-2,.grid-3{grid-template-columns:1fr} }
.form-actions{display:flex; gap:10px; margin-top:6px; flex-wrap:wrap}
.preview{margin:6px 0 0; font-size:15px}
.preview strong{color:var(--accent); font-size:18px; font-family:ui-monospace,monospace}

/* ---- Tables ---- */
.table{width:100%; border-collapse:collapse; font-size:14px}
.table th{ text-align:left; color:var(--muted); font-weight:600; font-size:12px;
  text-transform:uppercase; letter-spacing:.03em; padding:8px 10px; border-bottom:1px solid var(--line)}
.table td{padding:10px; border-bottom:1px solid var(--line); vertical-align:middle}
.table tr:last-child td{border-bottom:none}
.table .right{text-align:right}
.table.lines input{margin-top:0}
.inline{display:inline}
.actions{display:flex; gap:6px; justify-content:flex-end; align-items:center}

/* Lignes de facture (édition) */
.totals{max-width:340px; margin-left:auto; margin-top:16px}
.totals>div{display:flex; justify-content:space-between; padding:6px 0; border-bottom:1px solid var(--line)}
.totals .grand{border-bottom:none; font-size:18px; padding-top:10px}
.totals .grand strong{color:var(--accent)}

/* ---- Badges / statuts ---- */
.badge{display:inline-block; padding:3px 9px; border-radius:20px; font-size:12px; font-weight:600}
.b-brouillon{background:#3a2e12; color:#fcd34d}
.b-validee{background:#123a1f; color:#86efac}
.b-annulee{background:#3a1a1d; color:#fca5a5}
.b-paid{background:#12303a; color:#7dd3fc; margin-left:4px}

/* ---- Stats ---- */
.stats{display:grid; grid-template-columns:repeat(3,1fr); gap:14px; margin-bottom:20px}
@media(max-width:640px){ .stats{grid-template-columns:1fr} }
.stat{background:var(--panel); border:1px solid var(--line); border-radius:var(--radius); padding:16px 18px}
.stat-val{display:block; font-size:22px; font-weight:700; font-variant-numeric:tabular-nums}
.stat-lbl{display:block; color:var(--muted); font-size:12.5px; margin-top:2px}

.empty{text-align:center; padding:44px 20px}
.empty p{color:var(--muted); margin:0 0 16px}

/* ---- Barre de recherche ---- */
.searchbar{display:flex; align-items:center; gap:8px; margin-bottom:14px; position:relative}
.searchbar .search-ic{position:absolute; left:13px; top:50%; transform:translateY(-50%); color:var(--muted); pointer-events:none}
.searchbar .search-ic svg{width:18px; height:18px; display:block}
.searchbar input[type=search]{flex:1; margin:0; padding:10px 12px 10px 40px; background:var(--panel); border:1px solid var(--line); border-radius:10px; color:var(--text); font-size:14.5px}
.searchbar input[type=search]:focus{outline:none; border-color:var(--accent)}
.searchbar .btn{margin:0; flex:none}
.search-info{margin:-4px 0 14px}
.search-info strong{color:var(--text)}

/* ---- Module Pare-brise ---- */
.head-actions{display:flex; align-items:center; gap:10px; flex-wrap:wrap}
.period-form{margin:0}
.period-form select{margin:0; padding:9px 12px; background:var(--panel); border:1px solid var(--line); color:var(--text); border-radius:9px; font-size:14px}
.table-scroll{overflow-x:auto; border:1px solid var(--line); border-radius:10px}
.pb-table{min-width:1480px; font-size:13px; border-collapse:separate; border-spacing:0}
.pb-table th,.pb-table td{padding:8px 10px; white-space:nowrap; border:none}
/* En-tête sur deux niveaux, figé */
.pb-table thead th{position:sticky; background:var(--panel); z-index:2}
.pb-table thead .grouphead th{top:0; height:24px; font-size:10.5px; letter-spacing:.04em; color:var(--muted); text-transform:uppercase; font-weight:700; text-align:left; border-bottom:1px solid var(--line)}
.pb-table thead tr:not(.grouphead) th{top:24px; font-size:11px; color:var(--muted); font-weight:600; border-bottom:1px solid var(--line)}
/* Séparateurs de blocs */
.pb-table .gsep{border-left:1px solid var(--line)}
/* Zébrage + survol */
.pb-table tbody tr:nth-child(even) td{background:rgba(255,255,255,.022)}
.pb-table tbody tr:hover td{background:var(--panel2)}
.pb-table tbody td{border-bottom:1px solid rgba(255,255,255,.05)}
/* Colonne véhicule figée à gauche */
.pb-table .c-veh{position:sticky; left:0; z-index:1; background:var(--panel); font-weight:600}
.pb-table tbody tr:nth-child(even) .c-veh{background:#1b2027}
.pb-table tbody tr:hover .c-veh{background:var(--panel2)}
.pb-table thead .c-veh{z-index:3}
.pb-table .c-by{display:block; font-weight:400; font-size:11px; color:var(--muted); margin-top:2px}
.pj-cur{display:flex; align-items:center; gap:12px; margin:5px 0 3px; font-size:13px}
.pj-cur a{color:var(--accent); text-decoration:none}
.pj-cur a:hover{text-decoration:underline}
.pj-rm{display:inline-flex; align-items:center; gap:5px; font-size:12px; color:var(--muted); margin:0}
.pj-rm input{width:auto; margin:0}
.filterbar{display:flex; gap:14px; align-items:flex-end; flex-wrap:wrap; margin:0 0 14px}
.filterbar label{display:flex; flex-direction:column; gap:4px; font-size:12px; color:var(--muted)}
.filterbar select{margin:0}
.table-wrap{overflow-x:auto}
.suivi-table{width:100%}
.suivi-table td,.suivi-table th{vertical-align:middle}
.suivi-table td .btn{vertical-align:middle}
.docenv-cell > *{vertical-align:middle}
.suivi-table tr.row-ready td{background:#20241a}
.suivi-table tr.row-cancel td{background:rgba(148,163,184,.05); color:var(--muted)}
.motif-txt{display:block; font-size:11px; color:var(--muted); margin-top:3px; font-style:italic}
.modal-back{position:fixed; inset:0; background:rgba(0,0,0,.6); display:flex; align-items:center; justify-content:center; z-index:200; padding:20px}
.modal-back[hidden]{display:none}
.modal-box{background:var(--panel); border:1px solid var(--line); border-radius:14px; padding:22px; width:100%; max-width:420px; box-shadow:0 20px 50px rgba(0,0,0,.5)}
.modal-box h3{margin:0 0 4px; font-size:17px}
.modal-act{display:flex; gap:10px; justify-content:flex-end; margin-top:16px}
.btn.danger{background:#b91c1c; border-color:#b91c1c; color:#fff}
.btn.danger:hover{background:#a01818}
.suivi-table tr.row-cancel .strong,.suivi-table tr.row-cancel td{text-decoration:none}
.suivi-table tr.row-ready td:first-child{box-shadow:inset 3px 0 0 #ff6b39}
.pjm{display:inline-block; font-size:10px; font-weight:700; background:var(--panel2); border:1px solid var(--line); border-radius:5px; padding:1px 4px; margin-right:3px; color:var(--muted)}
.pjm-cell{white-space:nowrap}
/* Un <td> ne doit pas être en flex : il sortirait de la mise en page du tableau
   (bordures et hauteurs de ligne décalées). On aligne les boutons en inline. */
.act-cell{white-space:nowrap; vertical-align:middle; text-align:right}
.act-cell > *{display:inline-block; vertical-align:middle; margin:0 0 0 5px}
.act-cell > *:first-child{margin-left:0}
.hrange{display:flex; gap:7px; align-items:center; margin-top:5px}
.hrange select{margin-top:0}
.hsep{color:var(--muted); flex:none}
.addr-ac{position:relative}
.addr-sug{position:absolute; left:0; right:0; top:100%; z-index:40; background:var(--panel2); border:1px solid var(--line); border-top:none; border-radius:0 0 8px 8px; max-height:230px; overflow:auto; box-shadow:0 8px 22px rgba(0,0,0,.35)}
.addr-sug-i{padding:8px 11px; font-size:13.5px; cursor:pointer; border-bottom:1px solid rgba(255,255,255,.05)}
.addr-sug-i:last-child{border-bottom:none}
.addr-sug-i:hover,.addr-sug-i.on{background:var(--panel)}
.docenv-cell{white-space:nowrap}
.docenv-cell form{display:inline-block; margin-left:5px; vertical-align:middle}
.sig-row{display:flex; gap:6px; align-items:center; margin-top:5px}
.sig-row input{flex:1; margin-top:0}
.sig-row .btn{flex:none}
.statut-list{list-style:none; padding:0; margin:0 0 12px}
.statut-row{display:flex; gap:8px; align-items:center; margin-bottom:7px}
.statut-ord{display:flex; flex-direction:column; gap:2px}
.statut-ord .icon-btn{padding:1px 6px; line-height:1.1; font-size:11px}
.statut-edit{flex:1; display:flex; gap:6px; align-items:center}
.statut-edit input[type=text]{flex:1; margin:0}
.statut-color{flex:none; width:38px; height:34px; padding:2px; margin:0; background:var(--panel2); border:1px solid var(--line); border-radius:8px; cursor:pointer}
.badge-dyn{font-weight:600}
.sub-h{font-size:14px; margin:18px 0 4px; padding-top:14px; border-top:1px solid var(--line)}
.st-form{display:inline-block; margin:0}
/* Même format qu'un .badge : la pastille reste identique, elle devient juste cliquable. */
.st-inline{display:inline-block; width:auto; margin:0; padding:3px 9px; border-radius:20px;
  font-size:12px; font-weight:600; font-family:inherit; line-height:normal;
  border:1px solid transparent; cursor:pointer; appearance:none; -webkit-appearance:none;
  background-image:none; text-align:left}
.st-inline:focus{outline:none; box-shadow:0 0 0 2px rgba(124,156,255,.25)}
.st-inline option{background:var(--panel); color:var(--text); font-weight:400}
.statut-add{display:flex; gap:8px; align-items:center; max-width:420px}
.statut-add input{margin:0}
.tabbar{display:flex; gap:4px; margin:0 0 18px; border-bottom:1px solid var(--line); flex-wrap:wrap}
.tab-btn{background:none; border:none; color:var(--muted); font:inherit; font-size:14px; font-weight:600; padding:10px 16px; cursor:pointer; border-bottom:2px solid transparent; margin-bottom:-1px; border-radius:8px 8px 0 0}
.tab-btn:hover{color:var(--text); background:var(--panel2)}
.tab-btn.on{color:var(--text); border-bottom-color:var(--accent)}
.opt-row{display:flex; gap:16px; align-items:flex-start; justify-content:space-between; flex-wrap:wrap}
.opt-txt{flex:1; min-width:240px}
.opt-title{font-weight:600; display:flex; align-items:center; gap:8px; margin-bottom:3px}
.opt-act{display:flex; align-items:center; gap:12px; flex:none}
.opt-act .check{margin:0}
.tech-fold > summary{list-style:none; cursor:pointer; display:flex; align-items:center; justify-content:space-between; gap:10px; padding:2px 0}
.tech-fold > summary::-webkit-details-marker{display:none}
.tech-fold > summary:hover{color:var(--accent)}
.tech-chev{color:var(--muted); transition:transform .15s}
.tech-fold[open] .tech-chev{transform:rotate(90deg)}
.tech-body{margin-top:12px}
#techFilter{max-width:320px; margin:0 0 10px}
.ai-card{border:1px solid #ff6b3955; background:linear-gradient(180deg,#20180f22,transparent)}
.ai-card textarea{width:100%; margin-top:6px}
.ai-row{display:flex; gap:10px; align-items:center; flex-wrap:wrap; margin-top:9px}
.ai-row input[type=file]{flex:1; min-width:200px; margin:0}
.ai-status{margin-left:2px}

/* --- Repérage visuel des sections du formulaire de dossier --- */
.sec{--sec-rgb:148,163,184;
  position:relative;
  border:1px solid rgba(var(--sec-rgb),.38);
  border-left:4px solid rgba(var(--sec-rgb),.85);
  background:linear-gradient(rgba(var(--sec-rgb),.06), rgba(var(--sec-rgb),.06)), var(--panel)}
.sec > h2{color:rgb(var(--sec-rgb)); display:flex; align-items:center; gap:8px;
  border-bottom:1px solid rgba(var(--sec-rgb),.22); padding-bottom:8px}
.sec > h2::before{content:""; width:8px; height:8px; border-radius:50%; background:rgb(var(--sec-rgb)); flex:none}
/* Teintes sourdes, bien séparées sur la roue chromatique (≥45° entre chaque). */
.sec-suivi{--sec-rgb:123,143,212}   /* indigo doux   ~230° */
.sec-client{--sec-rgb:212,136,107}  /* terracotta    ~22°  */
.sec-veh{--sec-rgb:95,168,168}      /* bleu-vert     ~180° */
.sec-couts{--sec-rgb:155,142,196}   /* mauve doux    ~275° */
.sec-fact{--sec-rgb:127,174,122}    /* vert sauge    ~130° */
.sec-note{--sec-rgb:148,163,184}    /* gris                */
.sec-inter{--sec-rgb:123,143,212}   /* indigo doux   ~230° */
.sec-doc{--sec-rgb:190,140,165}     /* rose poudré   ~330° */
.sec-dossier{--sec-rgb:148,163,184} /* gris                */
.sec-cadeau{--sec-rgb:168,178,112}  /* olive doux    ~72°  */
/* Commissions closer */
.com-inline{display:inline-flex; align-items:center; gap:4px}
.com-in{width:64px; margin:0; padding:4px 6px; font-size:12.5px; text-align:right}
.com-flag{display:inline-block; width:24px; height:24px; line-height:22px; text-align:center;
  border-radius:6px; font-size:12px; font-weight:700; margin-right:4px; vertical-align:middle;
  background:rgba(245,158,11,.15); border:1px solid rgba(245,158,11,.45); color:#f59e0b}
.com-flag.on{background:rgba(52,211,153,.15); border-color:rgba(52,211,153,.45); color:#34d399}
.same-addr{display:inline-flex; align-items:center; gap:6px; margin:4px 0 2px; font-size:12px; color:var(--muted); font-weight:400}
.same-addr input{width:auto; margin:0}
.lay-opts{display:grid; grid-template-columns:1fr 1fr; gap:12px; margin:10px 0}
.lay-opt{display:flex; gap:10px; align-items:flex-start; padding:12px 14px; border:1px solid var(--line);
  border-radius:10px; cursor:pointer; background:var(--panel2); margin:0}
.lay-opt:hover{border-color:var(--accent)}
.lay-opt.on{border-color:var(--accent); background:rgba(124,156,255,.08)}
.lay-opt input{width:auto; margin:3px 0 0; flex:none}
.lay-desc{display:block; margin-top:4px; line-height:1.45}
@media(max-width:720px){.lay-opts{grid-template-columns:1fr}}
.immat-check{display:flex; gap:10px; align-items:center; margin-top:8px; flex-wrap:wrap}
.immat-result{margin-top:10px; padding:12px; border:1px solid var(--line); border-radius:10px; background:var(--panel2)}
.immat-result .ir-grid{display:grid; grid-template-columns:1fr 1fr; gap:4px 18px; margin:6px 0 10px}
.immat-result .ir-row{display:flex; justify-content:space-between; gap:10px; font-size:13px; border-bottom:1px solid rgba(255,255,255,.05); padding:3px 0}
.immat-result .ir-k{color:var(--muted)}
.immat-result .ir-v{font-weight:600; text-align:right}
.immat-result .ir-title{font-weight:700; font-size:15px; margin-bottom:10px; color:var(--text)}
.ir-warn{color:#f4b942; font-weight:600; margin-bottom:6px}
.ir-ok{color:#34d399; font-weight:600; margin-bottom:6px}
@media(max-width:640px){.immat-result .ir-grid{grid-template-columns:1fr}}
.pb-table .c-by::before{content:"par "; opacity:.65}
/* Zéros estompés */
.pb-table .z{color:#556}
.pb-table .miss{color:#f87171; font-weight:700}
.pb-table .miss-ic{color:#f87171; font-weight:800}
.pb-table td.miss-veh{color:#f87171 !important; font-weight:700}
.pb-table tbody tr.row-incomplete .c-veh{box-shadow:inset 3px 0 0 #f87171}
.pb-table .strong{font-weight:700}
.pb-table tfoot .totrow td{border-top:2px solid var(--line); font-weight:700; background:var(--panel2)}
.pb-table tfoot .totrow .c-veh,.pb-table tfoot .totrow td:first-child{background:var(--panel2)}
/* Couleurs de fond par état (sobres) */
.pb-table tbody tr.row-ok td{background:rgba(34,197,94,.09)}
.pb-table tbody tr.row-ok .c-veh{background:#18251c}
.pb-table tbody tr.row-ok:hover td{background:rgba(34,197,94,.16)}
.pb-table tbody tr.row-ok:hover .c-veh{background:#1e3125}
.pb-table tbody tr.row-warn td{background:rgba(245,158,11,.11)}
.pb-table tbody tr.row-warn .c-veh{background:#29230f}
.pb-table tbody tr.row-warn:hover td{background:rgba(245,158,11,.18)}
.pb-table tbody tr.row-warn:hover .c-veh{background:#332c13}
.pb-table tbody tr.row-cancel td{background:rgba(148,163,184,.05); color:var(--muted)}
.pb-table tbody tr.row-cancel .c-veh{background:#1a1d22; color:var(--muted)}
/* Bouton icône (crayon) */
.btn.icon-btn{padding:5px 8px; display:inline-flex; align-items:center}
.btn.icon-btn svg{display:block}
.cancelled-card h2{color:var(--muted)}
.cancelled-card .pb-table{opacity:.85}
.badge.b-attente{background:#22303f; color:#93b4d8}
.pos{color:#4ade80}
.neg{color:#f87171}
.stat-val.pos{color:#4ade80}
.stat-val.neg{color:#f87171}
.note-dot{font-size:11px; opacity:.8}
.table.narrow{max-width:520px}
.annexe-form{display:flex; gap:8px; margin-top:12px; flex-wrap:wrap}
.annexe-form input[type=text]{margin:0; flex:1; min-width:140px}
.annexe-form .btn{flex:none}
.annexe-grid{display:grid; grid-template-columns:1fr 1fr; gap:6px 26px; margin-bottom:8px}
.annexe-item{display:flex; align-items:center; justify-content:space-between; gap:12px; margin:0; padding:4px 0; border-bottom:1px solid rgba(255,255,255,.04)}
.annexe-item .ai-label{color:var(--text); font-size:13.5px}
.annexe-item .amt{width:120px; margin:0; padding:6px 9px; text-align:right; flex:none}
.annexe-foot{display:flex; justify-content:space-between; align-items:center; border-top:2px solid var(--line); padding-top:9px; margin-top:2px; font-weight:700}
.annexe-foot strong{font-variant-numeric:tabular-nums}
@media(max-width:640px){ .annexe-grid{grid-template-columns:1fr} }
.labels-manager{margin-top:16px; border-top:1px solid var(--line); padding-top:8px}
.labels-manager summary{cursor:pointer; color:var(--muted); font-size:13px; padding:6px 0; user-select:none}
.labels-manager summary:hover{color:var(--text)}
.labels-manager .table{margin-top:8px}
.recap .recap-layout{display:flex; gap:32px; align-items:stretch; flex-wrap:wrap}
.recap .recap-grid{display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:0 28px; max-width:600px; flex:1 1 420px}
.recap-grid>div{display:flex; justify-content:space-between; gap:16px; padding:8px 0; border-bottom:1px solid var(--line)}
.recap-grid .recap-net{border-bottom:none; border-top:2px solid var(--line); font-size:17px; padding-top:10px}
.recap-grid strong{font-variant-numeric:tabular-nums}
.recap-grid strong.pos{color:#4ade80}
.recap-grid strong.neg{color:#f87171}
.recap .recap-prev-box{margin-left:auto; align-self:center; display:flex; flex-direction:column; justify-content:center; gap:8px; min-width:200px; padding:20px 24px; border:2px solid var(--accent); border-radius:12px; background:rgba(255,255,255,.03); text-align:center}
.recap-prev-box span{color:var(--muted); font-size:13px; text-transform:uppercase; letter-spacing:.04em}
.recap-prev-box strong{font-size:28px; font-variant-numeric:tabular-nums; color:var(--accent)}
.recap-prev-box strong.pos{color:var(--accent)}
.recap-prev-box strong.neg{color:#f87171}
.table tr.daysep td{border-top:2px solid var(--line)}
.field-err{color:#f87171; font-size:12px; margin-top:4px; display:block}
.input-err{border-color:#f87171 !important; box-shadow:0 0 0 1px #f87171}
.inline-edit{display:flex; gap:8px; flex-wrap:wrap; align-items:center}
.inline-edit input{flex:1; min-width:150px}
.perm-label{font-weight:600; margin:14px 0 8px; font-size:14px}
.perm-grid{display:grid; grid-template-columns:repeat(auto-fill,minmax(180px,1fr)); gap:12px 20px; margin-bottom:6px}
.perm-col{display:flex; flex-direction:column; gap:6px}
.perm-gtitle{font-size:11px; text-transform:uppercase; letter-spacing:.05em; color:var(--muted); font-weight:700}
.perm-item{display:flex; align-items:center; gap:8px; font-size:13.5px; cursor:pointer; font-weight:500}
.perm-item input{width:16px; height:16px; flex:none}
.adminrow{align-self:end; padding-bottom:8px}
.perm-details{margin:12px 0 4px; border:1px solid var(--line); border-radius:10px; background:rgba(255,255,255,.02)}
.perm-details>summary{cursor:pointer; padding:10px 14px; font-weight:600; font-size:13.5px; list-style:none; display:flex; align-items:center; gap:8px}
.perm-details>summary::-webkit-details-marker{display:none}
.perm-details>summary::before{content:'▸'; color:var(--muted); transition:transform .15s}
.perm-details[open]>summary::before{transform:rotate(90deg)}
.perm-details .perm-grid{padding:0 14px 14px}
.user-fiche{border:1px solid var(--line); border-radius:12px; margin-top:10px; background:rgba(255,255,255,.02); overflow:hidden}
.user-fiche>summary{list-style:none; cursor:pointer; display:flex; align-items:center; gap:12px; padding:11px 14px}
.user-fiche>summary::-webkit-details-marker{display:none}
.user-fiche>summary:hover{background:rgba(255,255,255,.035)}
.user-fiche[open]>summary{border-bottom:1px solid var(--line); background:rgba(255,255,255,.04)}
.user-ava{flex:none; width:38px; height:38px; border-radius:50%; color:#0b1220; font-weight:800; font-size:13px; display:flex; align-items:center; justify-content:center}
.user-id{display:flex; flex-direction:column; min-width:0}
.user-id b{font-size:14.5px; line-height:1.2}
.user-id small{color:var(--muted); font-size:12px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.user-role{margin-left:auto; font-size:12px; font-weight:600; color:#cfe0ff; background:rgba(124,156,255,.14); border:1px solid rgba(124,156,255,.3); padding:3px 11px; border-radius:20px; white-space:nowrap}
.user-chev{flex:none; color:var(--muted); transition:transform .15s}
.user-fiche[open] .user-chev{transform:rotate(90deg)}
.user-body{padding:16px 18px}
.role-card{border:1px solid var(--line); border-radius:12px; padding:16px 18px; margin-top:14px; background:rgba(255,255,255,.015)}
.role-card+.role-card{margin-top:14px}
.del-role{margin-top:10px; padding-top:10px; border-top:1px solid var(--line)}

/* ---- Tâches / planning ---- */
.week-nav{display:flex; gap:8px; flex-wrap:wrap}
.week-range{margin:-6px 0 12px}
.task-filters{display:flex; gap:8px; flex-wrap:wrap; margin-bottom:14px}
.task-filters .chip{display:inline-flex; align-items:center; gap:7px; padding:6px 12px; border-radius:20px;
    border:1px solid var(--line); color:var(--muted); text-decoration:none; font-size:13px; font-weight:600}
.task-filters .chip.on{background:var(--accent); color:#06210f; border-color:var(--accent)}
.task-filters .chip .dot{width:9px; height:9px; border-radius:50%; flex:none}
.new-task{margin-bottom:18px}
.tf-lbl{color:var(--muted); font-size:13px; font-weight:600; align-self:center; margin-right:2px}
.page-taches .wrap{max-width:1560px}
.week-block{margin-bottom:16px}
.week-block-head{font-weight:700; font-size:13px; color:var(--muted); margin:0 0 8px; padding-bottom:6px; border-bottom:1px solid var(--line)}
.week-grid{display:flex; gap:10px; overflow-x:auto; padding-bottom:8px}
.day-col{flex:1 1 0; min-width:172px; background:var(--panel); border:1px solid var(--line); border-radius:12px; display:flex; flex-direction:column; cursor:pointer}
.day-col.is-today{border-color:var(--accent); box-shadow:0 0 0 2px var(--accent)}
.day-col.selected{border-color:#ff6b39; box-shadow:0 0 0 2px #ff6b39}
.day-col.selected .day-head{color:#ff6b39}
.day-col .task-card{cursor:default}
.day-head{display:flex; align-items:center; justify-content:space-between; padding:9px 12px; border-bottom:1px solid var(--line); font-weight:800; font-size:13px}
.day-col.is-today .day-head{color:var(--accent)}
.day-add{cursor:pointer; border:none; background:rgba(255,255,255,.06); color:var(--ink); width:24px; height:24px; border-radius:7px; font-size:16px; line-height:1}
.day-add:hover{background:var(--accent); color:#06210f}
.day-body{display:flex; flex-direction:column; gap:7px; padding:9px; min-height:80px}
.task-card{background:var(--panel2); border:1px solid var(--line); border-left:3px solid var(--accent); border-radius:9px; padding:7px 9px}
.task-card.st-done{opacity:.5}
.task-card.st-done .task-title{text-decoration:line-through}
.task-title{font-weight:600; font-size:13px; line-height:1.3}
.task-detail{font-size:12px; color:var(--muted); margin-top:3px}
.task-note{margin-top:5px}
.task-note>summary{cursor:pointer; font-size:10.5px; color:var(--muted); font-weight:600; list-style:none;
    display:inline-flex; align-items:center; gap:4px; user-select:none; padding:1px 7px; border:1px solid var(--line);
    border-radius:20px; background:rgba(255,255,255,.03)}
.task-note>summary::-webkit-details-marker{display:none}
.task-note>summary:hover{color:var(--ink); border-color:var(--muted)}
.task-note[open]>summary{margin-bottom:4px}
.task-note-body{font-size:11.5px; color:var(--muted); line-height:1.4; background:rgba(255,255,255,.03);
    border-radius:7px; padding:5px 8px; white-space:normal; word-break:break-word}
.task-people{display:flex; align-items:center; gap:6px; flex-wrap:wrap; margin-top:6px}
.task-badge{font-size:10px; font-weight:700; padding:1px 8px; border-radius:20px; border:1px solid}
.task-from{font-size:10px; color:var(--muted); font-style:italic}
.task-foot{display:flex; align-items:center; justify-content:space-between; gap:6px; margin-top:6px}
.st-select{font-size:11px; padding:3px 5px; border-radius:7px; border:1px solid var(--line); background:var(--panel); color:var(--ink)}
.task-btns{display:flex; align-items:center; gap:2px}
.icon-mini{cursor:pointer; border:none; background:none; font-size:13px; padding:2px 4px; text-decoration:none; opacity:.7}
.icon-mini:hover{opacity:1}
.st-doing{border-left-style:dashed}
.tech-list{list-style:none; margin:12px 0 4px; padding:0; display:grid; grid-template-columns:repeat(auto-fill,minmax(230px,1fr)); gap:8px 18px}
.tech-list li{display:flex; align-items:center; gap:9px; padding:9px 12px; border:1px solid var(--line); border-radius:10px; background:rgba(255,255,255,.02)}
.tech-dot{flex:0 0 auto; width:9px; height:9px; border-radius:50%; background:#34d399; box-shadow:0 0 7px rgba(52,211,153,.6)}
.pb-results{display:flex; gap:28px; flex-wrap:wrap; margin-top:14px; padding-top:14px; border-top:1px solid var(--line)}
.pb-results>div{display:flex; flex-direction:column; gap:2px}
.pb-results span{color:var(--muted); font-size:12px}
.pb-results strong{font-size:16px; font-variant-numeric:tabular-nums}
.pb-results .big strong{font-size:22px}
.pb-results .big strong.pos{color:#4ade80}
.pb-results strong.neg{color:#f87171}
.hint{color:var(--muted); font-weight:400; font-size:11px}
@media(max-width:640px){ .recap .recap-grid{grid-template-columns:1fr} }

/* ---- Alertes ---- */
.alert{border-radius:10px; padding:12px 16px; margin-bottom:18px; font-size:14px}
.alert.ok{background:#0f2a18; border:1px solid #1c4a2c; color:#a7f3c0}
.alert.err{background:#2a1315; border:1px solid #4b2226; color:#fecaca}
.alert code{background:rgba(255,255,255,.08); padding:2px 5px; border-radius:5px}

/* ---- Pages d'authentification ---- */
.auth-body{display:flex; align-items:center; justify-content:center; min-height:100vh; padding:20px}
.auth-card{background:var(--panel); border:1px solid var(--line); border-radius:16px; padding:32px; width:100%; max-width:380px}
.auth-card .brand{font-size:22px; margin:0 0 6px; text-align:center}
.auth-card .brand span{color:var(--accent)}
.auth-card .muted{text-align:center; display:block; margin-bottom:18px}
.auth-card .btn{width:100%; margin-top:6px}
.auth-card .alert{margin-top:14px}

/* ---- Logo (paramètres) ---- */
.logo-current{background:#fff; border:1px solid var(--line); border-radius:10px; padding:10px; display:inline-block; margin-bottom:10px}
.logo-current img{max-height:80px; max-width:240px; display:block; object-fit:contain}
input[type=file]{width:100%; margin-top:5px; background:var(--panel2); border:1px solid var(--line); color:var(--text); border-radius:8px; padding:8px 10px; font-size:13px}
input[type=file]::file-selector-button{background:var(--panel); color:var(--text); border:1px solid var(--line); border-radius:6px; padding:5px 10px; margin-right:10px; cursor:pointer}
