:root{--b:#1d70b8;--b-dark:#145a96;--b-pale:#e8f1fa;--b-line:#d3e3f3;--ink:#1f2933;--mute:#6b7785;--bg:#f4f7fb;--card:#fff;--vert:#1a8a4a;--vert-bg:#e6f5ec;--noir:#1f2933;--noir-bg:#eef0f2;--rouge:#c0392b;--rouge-bg:#fbeaea;--orange:#e67e22;--r:14px}*{box-sizing:border-box}body,html{margin:0;background:var(--bg);color:var(--ink);font-family:Nunito,system-ui,sans-serif;font-size:15px}h1,h2,h3{font-family:Fredoka,Nunito,sans-serif;font-weight:600;margin:0}button{font-family:inherit;cursor:pointer}input,select,textarea{font-family:inherit;font-size:15px}.top{background:var(--b);color:#fff;padding:12px 16px;display:flex;align-items:center;gap:12px;position:-webkit-sticky;position:sticky;top:0;z-index:20}.top h1{font-size:20px}.top .who{margin-left:auto;font-size:13px;opacity:.9;display:flex;align-items:center;gap:10px}.top .who button{background:hsla(0,0%,100%,.18);color:#fff;border:0;border-radius:999px;padding:6px 12px;font-weight:700}.tabs{display:flex;gap:6px;padding:12px 16px 0;max-width:1200px;margin:0 auto;overflow-x:auto}.tab{border:0;background:#fff;color:var(--b);border-radius:999px;padding:8px 16px;font-weight:800;white-space:nowrap;box-shadow:0 1px 2px rgba(0,0,0,.06)}.tab.on{background:var(--b);color:#fff}.tab .pill{background:var(--orange);color:#fff;border-radius:999px;padding:1px 7px;margin-left:6px;font-size:12px}.wrap{max-width:1200px;margin:0 auto}.card,.wrap{padding:16px}.card{background:var(--card);border-radius:var(--r);box-shadow:0 1px 3px rgba(16,40,70,.08)}.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));grid-gap:12px;gap:12px;margin-bottom:16px}.kpi{background:#fff;border-radius:var(--r);padding:14px 16px;box-shadow:0 1px 3px rgba(16,40,70,.08);border-top:4px solid var(--b)}.kpi .l{font-size:12px;color:var(--mute);font-weight:700;text-transform:uppercase;letter-spacing:.3px}.kpi .v{font-family:Fredoka,sans-serif;font-size:26px;margin-top:4px}.kpi.vert{border-top-color:var(--vert)}.kpi.orange{border-top-color:var(--orange)}.filters{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px;align-items:center}.filters input[type=search]{flex:1 1 220px;padding:9px 14px}.chip,.filters input[type=search]{border:1px solid var(--b-line);border-radius:999px}.chip{background:#fff;color:var(--ink);padding:7px 12px;font-weight:700;font-size:13px}.chip.on{background:var(--b-pale);border-color:var(--b);color:var(--b)}table.list{width:100%;border-collapse:separate;border-spacing:0}table.list th{text-align:left;font-size:12px;color:var(--mute);font-weight:800;padding:8px 10px;border-bottom:2px solid var(--b-line);white-space:nowrap}table.list td{padding:10px;border-bottom:1px solid #edf1f6}table.list tr.row{cursor:pointer}table.list tr.row:hover td{background:var(--b-pale)}.num{text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;white-space:nowrap}.cf{color:var(--b)}.cf,.tag{font-weight:800}.tag{display:inline-block;border-radius:999px;padding:2px 9px;font-size:12px}.tag.bloq{background:var(--rouge-bg);color:var(--rouge)}.tag.att{background:var(--vert-bg)}.neg,.tag.att{color:var(--vert)}.pos{color:var(--rouge)}.s-vert{border-left:5px solid var(--vert);background:var(--vert-bg)}.s-noir{border-left:5px solid var(--noir);background:var(--noir-bg)}.s-rouge{border-left:5px solid var(--rouge);background:var(--rouge-bg)}.saisie{border-radius:10px;padding:10px 12px;margin-bottom:8px;display:flex;gap:10px;align-items:flex-start;flex-wrap:wrap}.saisie .main{flex:1 1 240px}.saisie .meta{font-size:12px;color:var(--mute);margin-top:2px}.saisie .amt{font-family:Fredoka,sans-serif;font-size:18px}.statut{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.4px}.statut.vert{color:var(--vert)}.statut.noir{color:var(--noir)}.statut.rouge{color:var(--rouge)}.btn{border:0;border-radius:999px;padding:9px 16px;font-weight:800;background:var(--b);color:#fff}.btn:disabled{opacity:.5;cursor:default}.btn.ghost{background:#fff;color:var(--b);border:1px solid var(--b-line)}.btn.green{background:var(--vert)}.btn.red{background:var(--rouge)}.btn.sm{padding:6px 12px;font-size:13px}.overlay{position:fixed;inset:0;background:rgba(15,30,50,.35);z-index:40;display:flex;justify-content:flex-end}.panel{background:var(--bg);width:min(760px,100%);height:100%;overflow-y:auto;padding:0 0 40px}.panel .head{background:#fff;padding:16px;position:-webkit-sticky;position:sticky;top:0;z-index:2;border-bottom:1px solid var(--b-line);display:flex;gap:12px;align-items:flex-start}.panel .head .x{margin-left:auto;border:0;background:var(--b-pale);color:var(--b);width:36px;height:36px;border-radius:50%;font-size:18px;font-weight:800}.panel section{margin:14px 16px 0}.panel h3{font-size:16px;color:var(--b);margin-bottom:8px}.months{display:grid;grid-template-columns:repeat(6,1fr);grid-gap:6px;gap:6px}.month{background:#fff;border-radius:10px;padding:6px 8px;text-align:center;border:1px solid #edf1f6}.month .m{font-size:11px;color:var(--mute);font-weight:800;text-transform:uppercase}.month .v{font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-weight:700}.month.prevu .v{color:var(--mute);font-style:italic;font-weight:600}.month input{width:100%;border:1px solid var(--b-line);border-radius:6px;padding:3px;text-align:center}@media (max-width:560px){.months{grid-template-columns:repeat(4,1fr)}.hide-sm{display:none}}.form{display:grid;grid-template-columns:repeat(2,1fr);grid-gap:10px;gap:10px}.form label{font-size:12px;font-weight:800;color:var(--mute);display:block;margin-bottom:3px}.form input,.form select,.form textarea{width:100%;border:1px solid var(--b-line);border-radius:10px;padding:9px 10px;background:#fff}.form .full{grid-column:1/-1}@media (max-width:560px){.form{grid-template-columns:1fr}}.comment{background:#fff;border-radius:12px;padding:8px 12px;margin-bottom:8px;max-width:85%}.comment.me{margin-left:auto;background:var(--b-pale)}.comment .meta{font-size:11px;color:var(--mute)}.login{max-width:420px;margin:10vh auto;padding:0 16px;text-align:center}.login .card{padding:28px 22px}.login input{width:100%;border:1px solid var(--b-line);border-radius:999px;padding:12px 16px;margin:16px 0 10px;text-align:center}.muted{font-size:13px}.empty,.muted{color:var(--mute)}.empty{text-align:center;padding:30px 10px}.toast{position:fixed;bottom:18px;left:50%;transform:translateX(-50%);background:var(--ink);color:#fff;padding:10px 18px;border-radius:999px;z-index:60;font-weight:700}.hist td{font-size:13px}.scroll-x{overflow-x:auto}