:root{--fond:#f1f3f4;--carte:#fff;--texte:#202124;--gris:#5f6368;--bord:#dadce0;--bord-clair:#e8eaed;--bleu:#1a73e8;--bleu-clair:#e8f0fe;--vert:#188038;--vert-clair:#e6f4ea;--rouge:#d93025;--rouge-clair:#fce8e6;--orange:#b06000;--orange-clair:#fef7e0;--violet:#7b1fa2;--violet-clair:#f3e8fd;--lateral:#202124;--lateral-2:#303134;--lateral-3:#3c4043;--lateral-texte:#e8eaed;--lateral-gris:#9aa0a6}*{box-sizing:border-box}html,body{margin:0}body{color:var(--texte);background:var(--fond);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:14px}button{font:inherit;cursor:pointer}input,select,textarea{font:inherit;border:1px solid var(--bord);color:var(--texte);background:#fff;border-radius:4px;padding:5px 7px}input[type=checkbox]{vertical-align:middle;width:16px;height:16px;margin:0}a{color:var(--bleu)}h2{margin:0;font-size:20px;font-weight:600}h3{color:var(--gris);text-transform:uppercase;letter-spacing:.05em;margin:14px 0 8px;font-size:12px}h3:first-child{margin-top:0}.chargement{text-align:center;color:var(--gris);padding:40px}.app{grid-template-columns:224px minmax(0,1fr);min-height:100vh;display:grid}.lateral{background:var(--lateral);color:var(--lateral-texte);flex-direction:column;gap:16px;height:100vh;padding:16px 12px;display:flex;position:sticky;top:0;overflow-y:auto}.lateral .marque{align-items:center;gap:8px;padding:0 6px;font-size:15px;font-weight:600;display:flex}.lateral .marque .logo{background:var(--vert);color:#fff;border-radius:6px;justify-content:center;align-items:center;width:26px;height:26px;font-size:13px;display:inline-flex}.lateral .section{text-transform:uppercase;letter-spacing:.06em;color:var(--lateral-gris);margin-bottom:6px;padding:0 6px;font-size:11px}.lateral .activites{grid-template-columns:repeat(2,1fr);gap:6px;display:grid}.lateral .activites button{background:var(--lateral-2);color:#bdc1c6;border:1px solid var(--lateral-3);border-radius:6px;padding:7px 4px;font-weight:600}.lateral .activites button.actif{background:var(--bleu);color:#fff;border-color:var(--bleu)}.lateral nav.pages{flex-direction:column;gap:2px;display:flex}.lateral nav.pages a{color:#bdc1c6;border-radius:6px;align-items:center;gap:10px;padding:8px 10px;text-decoration:none;display:flex}.lateral nav.pages a:hover{background:var(--lateral-2)}.lateral nav.pages a.active{background:var(--lateral-3);color:#fff}.lateral nav.pages a .ico{text-align:center;width:18px;color:var(--lateral-gris)}.lateral nav.pages a.active .ico{color:#8ab4f8}.lateral .automate{color:#bdc1c6;background:var(--lateral-2);border-radius:8px;padding:10px 12px;font-size:12px;line-height:1.5}.lateral .automate .point{background:var(--lateral-gris);border-radius:50%;width:8px;height:8px;margin-right:6px;display:inline-block}.lateral .automate .point.ok{background:#34a853}.lateral .automate .point.encours{background:#fbbc04;animation:1s infinite alternate pulse}.lateral .automate .point.arret{background:#ea4335}.lateral .automate a{color:#8ab4f8}.lateral .compte{color:var(--lateral-gris);word-break:break-all;flex-direction:column;gap:4px;margin-top:auto;padding:0 6px;font-size:12px;display:flex}.lateral .badge.demo{color:#202124;background:#fbbc04;margin:0;font-weight:600}.lien{color:var(--bleu);text-align:left;background:0 0;border:none;padding:0}.lateral .lien{color:#8ab4f8}@keyframes pulse{to{opacity:.3}}main{min-width:0;padding:18px 22px 40px}.entete-page{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:12px;display:flex}.entete-page .droite{flex-wrap:wrap;align-items:center;gap:8px;margin-left:auto;display:flex}.sous-titre{color:var(--gris);font-size:13px}.carte{background:var(--carte);border:1px solid var(--bord);border-radius:8px;margin-bottom:14px;padding:12px 14px}.feuille{background:var(--carte);border:1px solid var(--bord);border-radius:8px;margin-bottom:14px;overflow:hidden}.feuille>.contenu{padding:12px 14px}.feuille>.contenu.plein{padding:0}.onglets{border-bottom:1px solid var(--bord);background:#f8f9fa;padding:0 6px;display:flex;overflow-x:auto}.onglets button{color:var(--gris);white-space:nowrap;background:0 0;border:none;border-bottom:3px solid #0000;align-items:center;gap:6px;padding:9px 14px;font-weight:500;display:inline-flex}.onglets button:hover{color:var(--texte)}.onglets button.actif{color:var(--bleu);border-bottom-color:var(--bleu);background:#fff}.onglets .compte{background:var(--bord-clair);color:var(--gris);border-radius:10px;padding:0 7px;font-size:11px;line-height:18px}.onglets button.actif .compte{background:var(--bleu-clair);color:var(--bleu)}.ligne{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.ligne.espace{justify-content:space-between}.ligne.bas{align-items:flex-end}.barre{flex-wrap:wrap;align-items:center;gap:8px;margin:8px 0;display:flex}.colonnes{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:14px;display:grid}.bouton{border:1px solid var(--bleu);background:var(--bleu);color:#fff;border-radius:4px;align-items:center;gap:6px;padding:6px 12px;line-height:18px;display:inline-flex}.bouton:disabled{opacity:.55;cursor:default}.bouton.secondaire{color:var(--bleu);background:#fff}.bouton.danger{color:var(--rouge);border-color:var(--rouge);background:#fff}.bouton.principal{font-weight:600}.bouton.petit{padding:3px 8px;font-size:12px}.spinner{border:2px solid #ffffff80;border-top-color:currentColor;border-radius:50%;width:12px;height:12px;animation:.8s linear infinite tourne;display:inline-block}.secondaire .spinner,.danger .spinner,.gris .spinner{border-color:currentColor #00000026 #00000026}@keyframes tourne{to{transform:rotate(360deg)}}.chiffres{flex-wrap:wrap;gap:8px;display:flex}.chiffre{border:1px solid var(--bord);background:#fff;border-radius:8px;min-width:116px;padding:8px 14px}.chiffre .valeur{font-size:22px;font-weight:600;line-height:1.2}.chiffre .libelle{color:var(--gris);font-size:12px}.chiffre.accent{border-color:var(--bleu);background:var(--bleu-clair)}.badge{background:var(--bord-clair);color:var(--texte);border-radius:10px;margin-right:4px;padding:1px 8px;font-size:12px;line-height:18px;display:inline-block}.badge.ok{background:var(--vert-clair);color:var(--vert)}.badge.alerte{background:var(--orange-clair);color:var(--orange)}.badge.erreur{background:var(--rouge-clair);color:var(--rouge)}.badge.info{background:var(--bleu-clair);color:var(--bleu)}.badge.violet{background:var(--violet-clair);color:var(--violet)}.erreur-texte{color:var(--rouge)}.gris{color:var(--gris)}.petit{font-size:12px}.vide{color:var(--gris);margin:0;padding:12px 14px;font-style:italic}.puces{flex-wrap:wrap;gap:6px;display:flex}.puce{border:1px solid var(--bord);color:var(--gris);background:#fff;border-radius:14px;padding:2px 10px;font-size:12px}.puce.actif{background:var(--bleu);color:#fff;border-color:var(--bleu)}.messages{z-index:50;flex-direction:column;gap:6px;max-width:480px;display:flex;position:fixed;top:10px;right:10px}.message{color:#fff;cursor:pointer;white-space:pre-wrap;background:#202124;border-radius:6px;padding:10px 14px;box-shadow:0 4px 12px #0003}.message.ok{background:var(--vert)}.message.erreur{background:var(--rouge)}.grille-scroll{max-height:72vh;overflow:auto}.grille{border-collapse:separate;border-spacing:0;min-width:100%;font-size:13px}.grille th,.grille td{border-right:1px solid var(--bord-clair);border-bottom:1px solid var(--bord-clair);white-space:nowrap;height:28px;padding:0 8px}.grille th{z-index:2;color:#3c4043;text-align:left;border-bottom:1px solid var(--bord);background:#f8f9fa;font-weight:600;position:sticky;top:0}.grille th.num,.grille td.num{text-align:right;font-variant-numeric:tabular-nums}.grille th.centre,.grille td.centre{text-align:center}.grille .no{color:var(--gris);text-align:center;z-index:1;background:#f8f9fa;width:40px;min-width:40px;padding:0 4px;font-size:11px;position:sticky;left:0}.grille th.no{z-index:3}.grille tbody tr:hover td{background:#f8fbff}.grille tbody tr:hover td.no{background:#eef3fb}.grille td.modifiable{background:#fffdf5;padding:0}.grille .cellule{background:0 0;border:none;border-radius:0;width:100%;min-width:150px;height:28px;padding:0 8px;font-size:13px}.grille select.cellule{padding:0 4px}.grille .cellule:focus{outline:2px solid var(--bleu);outline-offset:-2px;background:#fff}.grille input[type=number].cellule{text-align:right;width:84px;min-width:70px}.grille tfoot td{border-top:1px solid var(--bord);background:#f8f9fa;font-weight:600;position:sticky;bottom:0}.grille tr.rejet-M td{background:var(--rouge-clair)}.grille tr.rejet-D td{background:var(--orange-clair)}.grille tr.livree td{background:var(--vert-clair)}.grille tr.groupe td{background:var(--bleu-clair);font-weight:600}.grille tr.sous-total td{background:#f8f9fa;font-weight:600}.grille tr.negatif td.reste{color:var(--rouge);font-weight:600}.grille tr.courante td{background:var(--vert-clair)}.grille input[type=number].court{width:64px}.grille input.mails{width:240px}.grille .progression{background:var(--bord);vertical-align:middle;border-radius:4px;width:40px;height:8px;display:inline-block;overflow:hidden}.grille .progression i{background:var(--vert);height:100%;display:block}.grille td.src{font-weight:600}.grille .mono{font-family:ui-monospace,Menlo,monospace;font-size:12px}.journal ul{margin:0;padding:0;list-style:none}.journal li{border-bottom:1px dashed var(--bord);flex-wrap:wrap;gap:10px;padding:4px 0;font-size:12px;display:flex}.journal .date{color:var(--gris);min-width:110px}.journal .action{min-width:150px;font-weight:600}.journal .detail{flex:260px}.journal .qui{color:var(--gris);margin-left:auto}textarea.code{width:100%;min-height:420px;font-family:ui-monospace,Menlo,monospace;font-size:12px}textarea.liste{width:100%;min-height:160px;font-family:ui-monospace,Menlo,monospace}.login{max-width:360px;margin:80px auto}.login form{flex-direction:column;gap:10px;display:flex}.login input{padding:8px}label.champ{color:var(--gris);flex-direction:column;gap:3px;font-size:12px;display:flex}label.champ input,label.champ select{color:var(--texte);font-size:14px}label.coche{align-items:center;gap:6px;display:inline-flex}details summary{cursor:pointer;color:var(--gris)}.automate-carte{flex-wrap:wrap;align-items:center;gap:14px;display:flex}.automate-carte .etat{flex-direction:column;gap:2px;display:flex}.automate-carte .etat b{font-size:14px}.interrupteur{background:var(--bord);border:none;border-radius:11px;width:38px;height:22px;padding:0;transition:background .15s;position:relative}.interrupteur:after{content:"";background:#fff;border-radius:50%;width:16px;height:16px;transition:left .15s;position:absolute;top:3px;left:3px;box-shadow:0 1px 2px #0000004d}.interrupteur.on{background:var(--vert)}.interrupteur.on:after{left:19px}.rapport-src{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px;display:grid}.rapport-src .bloc{border:1px solid var(--bord);border-radius:8px;overflow:hidden}.rapport-src .bloc .tete{background:var(--bleu-clair);justify-content:space-between;padding:6px 10px;font-weight:600;display:flex}.rapport-src .bloc .item{border-top:1px solid var(--bord-clair);justify-content:space-between;padding:3px 10px;font-size:13px;display:flex}@media (width<=900px){.app{grid-template-columns:1fr}.lateral{flex-flow:wrap;align-items:center;gap:10px;height:auto;position:static}.lateral .section{display:none}.lateral .activites{grid-template-columns:repeat(4,auto)}.lateral nav.pages{flex-flow:wrap}.lateral .compte{margin-top:0}.lateral .automate{flex:100%}main{padding:12px 16px 40px}}
