:root{--marine:#1B2A4A;--vert:#2EBD6B;--fond:#F4F6FA;--carte:#fff;--texte:#1d2433;--muted:#6b7487;--ligne:#e3e7ef;--rouge:#d64545;--orange:#e08a1e;--bleu:#2f6fdb;--violet:#7a4fd6}
*{box-sizing:border-box}
body{margin:0;font-family:system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;background:var(--fond);color:var(--texte);font-size:15px;line-height:1.45}
a{color:var(--bleu)}
main{max-width:1250px;margin:0 auto;padding:24px 22px 60px}
h1{font-size:24px;margin:0 0 16px}h2{font-size:18px;margin:24px 0 10px}
.carte{background:var(--carte);border:1px solid var(--ligne);border-radius:12px;padding:18px;margin-bottom:16px}
.grille{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(190px,1fr))}
.stat{background:#fff;border:1px solid var(--ligne);border-radius:12px;padding:16px}
.stat .v{font-size:22px;font-weight:700;margin-top:4px}.stat .l{color:var(--muted);font-size:13px}
.entete{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:14px}
.entete h1{margin:0}
.btn{display:inline-block;background:var(--marine);color:#fff;border:0;border-radius:8px;padding:9px 15px;font-size:14px;cursor:pointer;text-decoration:none;font-family:inherit}
.btn.vert{background:var(--vert)}.btn.gris{background:#e9edf4;color:var(--texte)}.btn.rouge{background:var(--rouge)}.btn.petit{padding:5px 10px;font-size:13px}
.actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.actions form{margin:0}
table.liste{width:100%;border-collapse:collapse;background:#fff;border:1px solid var(--ligne);border-radius:12px;overflow:hidden}
.liste th,.liste td{padding:10px 12px;border-bottom:1px solid var(--ligne);text-align:left;font-size:14px;vertical-align:top}
.liste th{background:#f8fafc;font-weight:600;color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.03em}
.liste tr:last-child td{border-bottom:0}
.table-wrap{overflow-x:auto}
.r{text-align:right!important}.muted{color:var(--muted)}.petit{font-size:13px}
label{display:block;font-size:13px;font-weight:600;margin:10px 0 4px;color:#3a4255}
input[type=text],input[type=email],input[type=password],input[type=number],input[type=date],input[type=color],input[type=file],select,textarea{width:100%;padding:9px 10px;border:1px solid #cfd6e2;border-radius:8px;font:inherit;background:#fff}
input[type=color]{height:40px;padding:3px}
textarea{min-height:70px}
.chk{display:flex;align-items:center;gap:8px;font-weight:400;margin:10px 0}
.chk input{width:auto}
.cols{display:grid;gap:0 16px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}
.flash{padding:11px 14px;border-radius:8px;margin-bottom:14px;background:#e6f7ee;border:1px solid #b8e8cd}
.flash.err{background:#fdecec;border-color:#f3c3c3}
.badge{display:inline-block;padding:2px 9px;border-radius:20px;font-size:12px;font-weight:600;background:#eef1f6;color:#555}
.badge.vert{background:#e3f6ec;color:#1b7f47}.badge.bleu{background:#e6eefc;color:#2556b0}.badge.violet{background:#efe8fc;color:#5b36a8}
.badge.orange{background:#fdf0dd;color:#9a5a08}.badge.rouge{background:#fde6e6;color:#b03030}
.filtres{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px}
.filtres a{padding:6px 12px;border-radius:20px;background:#fff;border:1px solid var(--ligne);text-decoration:none;color:var(--texte);font-size:13px}
.filtres a.on{background:var(--marine);color:#fff;border-color:var(--marine)}
#lignes td{padding:6px 4px}#lignes input{padding:7px}
#lignes .c-qte{width:80px}#lignes .c-prix{width:110px}#lignes .c-tx{width:60px;text-align:center}#lignes .c-mt{width:110px}
.totaux{margin-left:auto;max-width:320px}.totaux div{display:flex;justify-content:space-between;padding:4px 0}.totaux .g{font-weight:700;font-size:17px;border-top:2px solid var(--ligne);padding-top:8px}
.chrono{font-size:30px;font-weight:700;font-variant-numeric:tabular-nums;color:var(--vert)}
.login{max-width:380px;margin:60px auto}.login img{display:block;height:46px;margin:0 auto 22px}
.cle{font-family:ui-monospace,Consolas,monospace;background:#f4f6fa;padding:10px;border-radius:8px;word-break:break-all;border:1px dashed #b9c2d3}
/* Document (facture / devis) */
.doc{background:#fff;max-width:820px;margin:0 auto;padding:44px;border-radius:12px;border:1px solid var(--ligne);border-top:6px solid var(--c)}
.doc-top{display:flex;justify-content:space-between;gap:24px;flex-wrap:wrap}
.doc-logo{max-height:80px;max-width:240px;display:block;margin-bottom:8px}
.doc-entnom{font-size:22px;font-weight:700;color:var(--c);margin-bottom:6px}
.doc-meta h1{color:var(--c);font-size:30px;margin:0 0 8px;text-align:right}
.doc-meta td{padding:2px 0 2px 16px;font-size:14px}.doc-meta td:first-child{color:var(--muted)}
.doc-client{margin:28px 0 22px}
.doc-label{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:700;margin-bottom:4px}
.doc-lignes{width:100%;border-collapse:collapse}
.doc-lignes th{background:var(--c);color:#fff;padding:9px 10px;font-size:13px;text-align:left}
.doc-lignes td{padding:9px 10px;border-bottom:1px solid var(--ligne);font-size:14px;vertical-align:top}
.doc-tot{margin:16px 0 0 auto;min-width:300px;border-collapse:collapse}
.doc-tot td{padding:5px 10px;font-size:14px}.doc-tot .grand td{font-weight:700;font-size:16px;border-top:2px solid var(--c)}
.doc-depot{text-align:right;font-weight:600;color:var(--c)}
.doc-notes{margin-top:22px;font-size:14px}
.doc-pied{margin-top:30px;padding-top:12px;border-top:1px solid var(--ligne);font-size:12px;color:var(--muted);text-align:center}
.public-barre{max-width:820px;margin:0 auto 14px;display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap}
@media (max-width:640px){.doc{padding:22px}.doc-meta h1{text-align:left}.doc-tot{min-width:0;width:100%}}
@media print{body{background:#fff}.avec-menu .page{margin-left:0}.side,.barre,.voile,.no-print,.public-barre,.flash{display:none!important}main{padding:0;max-width:none}.doc{border:0;border-top:6px solid var(--c);padding:0;max-width:none}}

/* Structure : menu latéral + barre du haut */
.ico{width:20px;height:20px;flex:none}
.avec-menu .page{margin-left:240px;min-height:100vh}
.side{position:fixed;top:0;left:0;bottom:0;width:240px;background:var(--marine);color:#cfd6e6;display:flex;flex-direction:column;overflow-y:auto;z-index:30}
.side-marque{display:flex;align-items:center;height:58px;padding:0 18px;border-bottom:1px solid rgba(255,255,255,.08)}
.side-marque img{height:40px;max-width:100%}
.side-ent{text-align:center;padding:22px 16px 18px;border-bottom:1px solid rgba(255,255,255,.08)}
.side-logo{display:flex;align-items:center;justify-content:center;margin:0 auto 12px;width:100%;max-width:200px;height:100px}
.side-logo img{max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;display:block}
.side-init{width:64px;height:64px;border-radius:16px;background:var(--vert);color:#fff;font-size:30px;font-weight:700;display:flex;align-items:center;justify-content:center;margin:0 auto 10px}
.side-nom{color:#fff;font-weight:600;font-size:15px}
.side-user{font-size:12px;opacity:.7;margin-top:2px}
.side-nav{padding:10px 0 24px}
.side-nav a{display:flex;align-items:center;gap:12px;padding:10px 20px;color:#cfd6e6;text-decoration:none;font-size:14px;border-left:3px solid transparent}
.side-nav a:hover{background:rgba(255,255,255,.06);color:#fff}
.side-nav a.on{background:rgba(46,189,107,.14);color:#fff;border-left-color:var(--vert);font-weight:600}
.side-nav a.on .ico{color:var(--vert)}
.side-nav a.sous{padding-left:34px;font-size:13px}
.side-nav a.sous .ico{width:16px;height:16px}
.side-sep{height:1px;background:rgba(255,255,255,.08);margin:8px 20px}
.barre{position:sticky;top:0;z-index:20;height:58px;background:#fff;border-bottom:1px solid var(--ligne);display:flex;align-items:center;padding:0 10px 0 22px;gap:10px}
.barre-titre{font-size:19px;font-weight:600;color:var(--marine);flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.barre-droite{display:flex;align-items:center;gap:4px}
.barre-btn{display:flex;align-items:center;justify-content:center;width:42px;height:42px;border-radius:10px;border:0;background:none;color:#5b6478;cursor:pointer}
.barre-btn:hover,.barre-btn.on{background:#eef1f6;color:var(--marine)}
.barre-btn.plus{background:var(--vert);color:#fff}
.barre-btn.plus:hover{background:#27a65d;color:#fff}
.ajout{position:relative}
.ajout-menu{display:none;position:absolute;right:0;top:48px;background:#fff;border:1px solid var(--ligne);border-radius:12px;box-shadow:0 10px 30px rgba(20,30,60,.15);padding:6px;min-width:190px}
.ajout-menu.ouvert{display:block}
.ajout-menu a{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:8px;color:var(--texte);text-decoration:none;font-size:14px}
.ajout-menu a:hover{background:#f2f5f9}
.ajout-menu .ico{width:18px;height:18px;color:var(--marine)}
.mobile-seul{display:none}
.voile{display:none}
.avec-menu main>h1,.avec-menu .entete>h1:not(.garder){display:none}
.avec-menu .entete{justify-content:flex-end}
.avec-menu .entete:has(h1.garder),.avec-menu .entete:has(h2){justify-content:space-between}
@media (max-width:900px){
 .avec-menu .page{margin-left:0}
 .side{transform:translateX(-100%);transition:transform .2s}
 .side.ouvert{transform:none}
 .voile.ouvert{display:block;position:fixed;inset:0;background:rgba(10,20,40,.4);z-index:25}
 .mobile-seul{display:flex}
 .barre{padding-left:6px}
}
/* Indicateurs du tableau de bord */
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));background:#fff;border:1px solid var(--ligne);border-radius:14px;margin-bottom:22px;overflow:hidden}
.kpi{padding:18px 16px;text-align:center;text-decoration:none;color:inherit;border-right:1px solid var(--ligne)}
.kpi:last-child{border-right:0}
.kpi:hover{background:#f8fafc}
.kpi .v{font-size:25px;font-weight:700;color:var(--marine)}
.kpi .l{font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin-top:4px}
.kpi.alerte .v{color:var(--rouge)}
/* Calendrier */
.cal-tete{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:12px}
.cal-nav{display:flex;align-items:center;gap:6px}
.cal-nav a{display:flex;width:36px;height:36px;align-items:center;justify-content:center;border-radius:8px;color:var(--marine);background:#fff;border:1px solid var(--ligne)}
.cal-mois{font-weight:700;color:var(--marine);text-transform:uppercase;letter-spacing:.04em;min-width:170px;text-align:center}
.cal-legende{display:flex;gap:12px;flex-wrap:wrap;font-size:13px}
.cal-legende label{display:flex;align-items:center;gap:6px;font-weight:400;margin:0;cursor:pointer}
.pt{width:9px;height:9px;border-radius:50%;display:inline-block;flex:none}
.cal{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));background:#fff;border:1px solid var(--ligne);border-radius:14px;overflow:hidden}
.cal-j{padding:8px;text-align:center;font-size:12px;font-weight:600;color:var(--muted);text-transform:uppercase;background:#f8fafc;border-bottom:1px solid var(--ligne)}
.cal-c{min-height:108px;border-right:1px solid var(--ligne);border-bottom:1px solid var(--ligne);padding:6px;font-size:12px;min-width:0}
.cal-c:nth-child(7n){border-right:0}
.cal-c.hors{background:#f8f9fb}.cal-c.hors .cal-n{opacity:.45}
.cal-c.auj .cal-n{background:var(--vert);color:#fff;border-radius:50%;width:24px;height:24px;display:inline-flex;align-items:center;justify-content:center}
.cal-n{font-weight:600;color:#556;margin-bottom:4px;display:inline-block}
.ev{display:flex;align-items:center;gap:5px;padding:2px 4px;border-radius:5px;text-decoration:none;color:var(--texte);margin-bottom:2px}
.ev:hover{background:#f1f4f9}
.ev .nm{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ev .mt{font-weight:600;white-space:nowrap;color:#1b7f47}
.ev.cache{display:none}
.cal-plus{font-size:11px;color:var(--muted);padding-left:4px}
@media (max-width:700px){.cal-c{min-height:70px;padding:3px}.ev .nm{display:none}.ev{justify-content:center}.ev .mt{font-size:10px}.cal-j{font-size:10px;padding:6px 2px}}
.cal-legende label:has(input:not(:checked)){opacity:.4;text-decoration:line-through}
@media (max-width:700px){main{padding:16px 12px 50px}.kpis{grid-template-columns:1fr 1fr}.kpi{padding:12px 8px;border-bottom:1px solid var(--ligne)}.kpi .v{font-size:17px}.kpi .l{font-size:10px}.barre-titre{font-size:16px}}

/* Catalogue sur les lignes de facture */
#lignes .c-art { width: 100%; margin-bottom: 4px; font-size: 13px; padding: 4px 6px; color: #6B7487; }
#lignes .c-un select { min-width: 92px; }
