:root{--bg:#f6f7fb;--carte:#fff;--texte:#1b1f2a;--muet:#6b7280;--bord:#e3e6ee;--accent:#4f46e5;--accent-2:#4338ca;
 --ok:#15803d;--warn:#b45309;--err:#b91c1c;--radius:10px;color-scheme:light dark}
@media (prefers-color-scheme:dark){:root{--bg:#0f1218;--carte:#171b24;--texte:#e6e8ef;--muet:#9aa1b1;--bord:#2a3040}}
*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--texte);font:15px/1.45 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif}
a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}
header.nav{display:flex;align-items:center;gap:14px;padding:10px 16px;background:var(--carte);border-bottom:1px solid var(--bord);position:sticky;top:0;z-index:20}
header.nav .logo{font-weight:700;letter-spacing:.2px}
header.nav nav{display:flex;gap:4px;flex-wrap:wrap}
header.nav nav a{padding:6px 10px;border-radius:8px;color:var(--texte)}
header.nav nav a.actif,header.nav nav a:hover{background:var(--bg);text-decoration:none}
header.nav .droite{margin-left:auto;display:flex;gap:8px;align-items:center}
main{max-width:1180px;margin:0 auto;padding:16px}
h1{font-size:1.4rem;margin:6px 0 14px}h2{font-size:1.1rem;margin:18px 0 8px}h3{font-size:1rem;margin:12px 0 6px}
.carte{background:var(--carte);border:1px solid var(--bord);border-radius:var(--radius);padding:14px;margin-bottom:14px}
.grille{display:grid;gap:14px;grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}
.ligne{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.muet{color:var(--muet)}.petit{font-size:.86rem}.droite{text-align:right}
.btn{display:inline-block;border:1px solid var(--bord);background:var(--carte);color:var(--texte);padding:8px 13px;border-radius:8px;cursor:pointer;font:inherit}
.btn:hover{border-color:var(--accent)}
.btn.primaire{background:var(--accent);border-color:var(--accent);color:#fff}.btn.primaire:hover{background:var(--accent-2)}
.btn.danger{color:var(--err);border-color:var(--err)}.btn.petit{padding:4px 9px;font-size:.85rem}
input,select,textarea{font:inherit;color:var(--texte);background:var(--bg);border:1px solid var(--bord);border-radius:8px;padding:8px 10px;width:100%}
textarea{min-height:120px;resize:vertical}label{display:block;font-weight:600;margin:10px 0 4px}
label.inline{display:inline-flex;gap:6px;align-items:center;font-weight:500;margin:4px 10px 4px 0}
.champ-court{max-width:320px}
.msg{padding:10px 14px;border-radius:8px;margin-bottom:12px}.msg.ok{background:#dcfce7;color:#14532d}.msg.err{background:#fee2e2;color:#7f1d1d}
@media (prefers-color-scheme:dark){.msg.ok{background:#14341f;color:#bbf7d0}.msg.err{background:#3b1414;color:#fecaca}}
table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:8px 6px;border-bottom:1px solid var(--bord);vertical-align:top}
th{font-size:.82rem;text-transform:uppercase;letter-spacing:.4px;color:var(--muet)}
.badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:.78rem;font-weight:600;background:var(--bg);border:1px solid var(--bord)}
.badge.planifie{background:#dbeafe;color:#1e3a8a}.badge.publie{background:#dcfce7;color:#14532d}.badge.echec{background:#fee2e2;color:#7f1d1d}
.badge.manuel,.badge.a_valider{background:#fef3c7;color:#78350f}.badge.en_cours{background:#e0e7ff;color:#3730a3}
.badge.annule{opacity:.6}.badge.reseau{background:var(--carte)}
.pastille{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:6px;vertical-align:middle}
.compteur{font-variant-numeric:tabular-nums;font-size:.85rem;color:var(--muet)}.compteur.depasse{color:var(--err);font-weight:700}
.onglets{display:flex;gap:4px;flex-wrap:wrap;margin:8px 0}.onglets button{border:1px solid var(--bord);background:var(--bg);padding:6px 10px;border-radius:8px;cursor:pointer;font:inherit;color:var(--texte)}
.onglets button.actif{background:var(--accent);color:#fff;border-color:var(--accent)}
.variante{display:none}.variante.actif{display:block}
.vignettes{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px}
.vignette{border:1px solid var(--bord);border-radius:8px;overflow:hidden;background:var(--bg);position:relative}
.vignette img,.vignette video{width:100%;height:100px;object-fit:cover;display:block}
.vignette .pdf{height:100px;display:flex;align-items:center;justify-content:center;font-weight:700;color:var(--muet)}
.vignette .nom{font-size:.75rem;padding:4px 6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.vignette.choisi{outline:3px solid var(--accent)}.vignette .ordre{position:absolute;top:4px;left:4px;background:var(--accent);color:#fff;border-radius:999px;width:22px;height:22px;display:flex;align-items:center;justify-content:center;font-size:.8rem;font-weight:700}
.vignette .actions{position:absolute;top:4px;right:4px;display:flex;gap:2px}.vignette .actions button{border:0;background:rgba(0,0,0,.55);color:#fff;border-radius:4px;cursor:pointer;padding:2px 5px}
.rapport li{margin:3px 0}.rapport .err{color:var(--err)}.rapport .warn{color:var(--warn)}
.liste-pubs .item{display:flex;gap:12px;padding:10px 0;border-bottom:1px solid var(--bord);align-items:flex-start}
.liste-pubs .item:last-child{border-bottom:0}.liste-pubs .date{min-width:120px;color:var(--muet);font-size:.9rem}
.liste-pubs .titre{font-weight:600}
#calendrier{background:var(--carte);border:1px solid var(--bord);border-radius:var(--radius);padding:8px}
.fc .fc-toolbar-title{font-size:1.1rem}.fc-event{cursor:pointer;font-size:.8rem}
code,pre{font:.85rem ui-monospace,SFMono-Regular,Menlo,monospace}pre{background:var(--bg);padding:10px;border-radius:8px;overflow:auto}
.connexion{max-width:380px;margin:60px auto}
.kpi{font-size:1.8rem;font-weight:700}
@media (max-width:720px){header.nav{padding:8px 10px}header.nav nav{position:fixed;bottom:0;left:0;right:0;background:var(--carte);border-top:1px solid var(--bord);justify-content:space-around;padding:6px 4px;z-index:30}
 header.nav nav a{font-size:.78rem;padding:6px 6px}main{padding:12px 12px 70px}.liste-pubs .item{flex-direction:column;gap:4px}
 table{display:block;overflow-x:auto;white-space:nowrap}.fc .fc-toolbar{flex-direction:column;gap:6px}}
