:root{--bg:#f4f6f9;--surface:#fff;--ink:#16213f;--ink-soft:#5d6e82;--line:#e4e9f0;--navy:#0c1f6b;--navy-dark:#081451;--sky:#5fb0e6;--sky-soft:#eaf4fc;--brand:#0c1f6b;--brand-dark:#081451;--accent:#5fb0e6;--ok:#1f8a4c;--ok-bg:#e7f6ed;--warn:#b9770d;--warn-bg:#fcf2dc;--bad:#c5372f;--bad-bg:#fbe7e5;--radius:14px;color:var(--ink);background:var(--bg);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:17px;line-height:1.5}*{box-sizing:border-box}body{margin:0}a{color:var(--brand);text-decoration:none}a:hover{text-decoration:underline}.layout{min-height:100vh;display:flex}.sidebar{background:var(--surface);border-right:1px solid var(--line);flex-direction:column;flex-shrink:0;gap:3px;width:250px;padding:0 0 18px;display:flex}.sidebar .brand{margin-bottom:8px;padding:26px 24px 20px}.sidebar .brand img{width:100%;max-width:158px;display:block}.sidebar .brand .subtitle{letter-spacing:1.5px;text-transform:uppercase;color:var(--ink-soft);margin-top:14px;font-size:11.5px;font-weight:600}.sidebar h1{display:none}.sidebar a{color:#3f5066;border-radius:11px;align-items:center;gap:12px;margin:0 14px;padding:11px 16px;font-size:15.5px;font-weight:500;display:flex}.sidebar a:hover{color:var(--navy);background:#f0f4f9;text-decoration:none}.sidebar a.active{background:var(--sky-soft);color:var(--navy);box-shadow:inset 3px 0 0 var(--sky);font-weight:650}.sidebar .spacer{flex:1}.sidebar a.logout{color:var(--ink-soft);font-weight:500}.sidebar a.logout:hover{background:var(--bad-bg);color:var(--bad)}.main{flex:1;max-width:1180px;padding:34px 40px}h2{letter-spacing:-.3px;margin:0 0 22px;font-size:27px;font-weight:700}h3{margin:26px 0 12px;font-size:18px;font-weight:650}h4{margin:18px 0 8px;font-size:16px;font-weight:600}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);margin-bottom:18px;padding:22px 24px;box-shadow:0 1px 2px #14253c0a}.cards{flex-wrap:wrap;gap:16px;margin-bottom:20px;display:flex}.kpi{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);min-width:168px;padding:18px 24px;box-shadow:0 1px 2px #14253c0a}.kpi .label{color:var(--ink-soft);font-size:13.5px}.kpi .value{letter-spacing:-.5px;margin-top:4px;font-size:30px;font-weight:700}table{border-collapse:collapse;background:var(--surface);width:100%;font-size:16px}th,td{border-bottom:1px solid var(--line);text-align:left;padding:12px 14px}th{color:var(--ink-soft);text-transform:none;background:#f0f4f9;font-size:14px;font-weight:600}tr:last-child td{border-bottom:none}tr:hover td{background:#f7faff}td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}button{font:inherit;border:1.5px solid var(--line);background:var(--surface);cursor:pointer;border-radius:9px;padding:9px 16px;font-size:15px;font-weight:500;transition:all .12s}button:hover{background:#eef3f9;border-color:#cdd8e5}button.primary{background:var(--brand);border-color:var(--brand);color:#fff}button.primary:hover{background:var(--brand-dark);border-color:var(--brand-dark)}button.ok{border-color:var(--ok);color:var(--ok)}button.ok:hover{background:var(--ok-bg)}button.ko{border-color:var(--bad);color:var(--bad)}button.ko:hover{background:var(--bad-bg)}button.wait{border-color:var(--warn);color:var(--warn)}button.wait:hover{background:var(--warn-bg)}button:disabled{opacity:.45;cursor:default}input,select{font:inherit;background:var(--surface);color:var(--ink);border:1.5px solid #cdd8e5;border-radius:9px;padding:9px 12px;font-size:16px}input:focus,select:focus{border-color:var(--brand);outline:none;box-shadow:0 0 0 3px #0c1f6b2e}.badge{border-radius:999px;padding:3px 11px;font-size:13px;font-weight:600;display:inline-block}.badge.BLOQUANT{background:var(--bad-bg);color:var(--bad)}.badge.AVERTISSEMENT{background:var(--warn-bg);color:var(--warn)}.badge.INFO{background:var(--sky-soft);color:var(--brand-dark)}.badge.NOUVELLE{color:#4a5b70;background:#eaeef3}.badge.VALIDEE{background:var(--ok-bg);color:var(--ok)}.badge.REJETEE{color:#8c3b34;background:#f0e3e2}.badge.EN_ATTENTE{background:var(--warn-bg);color:var(--warn)}.status{align-items:center;gap:7px;font-size:15px;font-weight:600;display:inline-flex}.status .dot{border-radius:50%;flex-shrink:0;width:11px;height:11px}.status.ok{color:var(--ok)}.status.ok .dot{background:var(--ok)}.status.warn{color:var(--warn)}.status.warn .dot{background:var(--warn)}.status.bad{color:var(--bad)}.status.bad .dot{background:var(--bad)}.status.neutral{color:var(--ink-soft)}.status.neutral .dot{background:#c2cdda}.dropzone{border-radius:var(--radius);text-align:center;color:var(--ink-soft);background:var(--surface);cursor:pointer;border:2.5px dashed #b9c6d6;padding:40px;font-size:16px}.dropzone.over{border-color:var(--brand);background:var(--sky-soft)}.login-box{max-width:380px;margin:13vh auto}.muted{color:var(--ink-soft);font-size:14px}.error{color:var(--bad);font-size:15px}.toolbar{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:18px;display:flex}.toasts{z-index:100;flex-direction:column;align-items:center;gap:9px;display:flex;position:fixed;bottom:26px;left:50%;transform:translate(-50%)}.toast{color:#fff;border-radius:11px;padding:13px 22px;font-size:15.5px;font-weight:500;animation:.2s ease-out toast-in;box-shadow:0 6px 20px #00000038}.toast.ok{background:var(--ok)}.toast.error{background:var(--bad)}@keyframes toast-in{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}.tabs{border-bottom:2px solid var(--line);gap:4px;margin-bottom:20px;display:flex}.tabs button{color:var(--ink-soft);background:0 0;border:none;border-bottom:3px solid #0000;border-radius:0;margin-bottom:-2px;padding:11px 20px;font-size:16px}.tabs button:hover{background:#eef3f9}.tabs button.active{color:var(--brand);border-bottom-color:var(--brand);font-weight:650}.tabs button .pill{background:var(--bad);color:#fff;border-radius:999px;margin-left:8px;padding:2px 9px;font-size:12.5px;font-weight:700}td.clickable{cursor:pointer}td.clickable:hover{color:var(--brand);background:var(--sky-soft)!important}.empty-state{background:var(--surface);border-radius:var(--radius);text-align:center;color:var(--ink-soft);border:2px dashed #b9c6d6;padding:48px;font-size:17px;line-height:1.7}.client-cards{flex-wrap:wrap;gap:18px;margin-top:8px;display:flex}.client-card{border-radius:var(--radius);background:var(--surface);border:1.5px solid var(--line);text-align:left;cursor:pointer;flex-direction:column;width:210px;min-height:138px;padding:20px;transition:all .14s;display:flex;box-shadow:0 1px 3px #14253c0d}.client-card:hover{border-color:var(--brand);transform:translateY(-3px);box-shadow:0 6px 18px #0c1f6b29}.client-card.active{border-color:var(--brand);background:var(--sky-soft)}.client-card .cc-name{margin-bottom:10px;font-size:17px;font-weight:650}.client-card .cc-count{color:var(--brand);letter-spacing:-1px;font-size:40px;font-weight:800;line-height:1}.client-card .cc-label{color:var(--ink-soft);margin-bottom:12px;font-size:13.5px}.client-card .cc-status{margin-top:auto}.modal-overlay{z-index:200;background:#12203680;justify-content:center;align-items:flex-start;padding:40px 20px;display:flex;position:fixed;inset:0;overflow-y:auto}.modal{background:var(--surface);border-radius:var(--radius);width:100%;max-width:1100px;padding:24px;animation:.15s ease-out toast-in;box-shadow:0 20px 60px #0000004d}.dl-btn{background:var(--ok);color:#fff;border-radius:9px;padding:8px 15px;font-size:14.5px;font-weight:600;text-decoration:none}.dl-btn:hover{background:#166e3d;text-decoration:none}
