:root{--violet: #2D2F8F;--gold: #D4A017;--green: #1B6B3A;--bg: #f4f5fb;--card: #ffffff;--text: #1d2030;--muted: #6b7088;--border: #e2e4f0;--danger: #c0392b}*{box-sizing:border-box}body{margin:0;font-family:Segoe UI,system-ui,sans-serif;background:var(--bg);color:var(--text)}.topbar{display:flex;align-items:center;gap:12px;padding:12px 18px;background:var(--violet);color:#fff}.topbar .brand{font-weight:700;font-size:16px}.topbar .sub{font-size:12px;opacity:.8}.topbar .spacer{flex:1}.topbar button{background:#ffffff26;color:#fff;border:0}.wrap{max-width:1100px;margin:0 auto;padding:18px}.card{background:var(--card);border:1px solid var(--border);border-radius:14px;padding:18px;margin-bottom:16px;box-shadow:0 1px 3px #14143c0a}h1{font-size:20px;margin:0 0 4px}h2{font-size:16px;margin:0 0 12px;color:var(--violet)}label{display:block;font-size:13px;color:var(--muted);margin:10px 0 4px}input,select,textarea{width:100%;padding:9px 11px;border:1px solid var(--border);border-radius:9px;font-size:14px;background:#fff;color:var(--text)}input:focus,select:focus,textarea:focus{outline:2px solid var(--violet);border-color:var(--violet)}button{cursor:pointer;border:0;border-radius:9px;padding:10px 16px;font-size:14px;font-weight:600;background:var(--violet);color:#fff}button.gold{background:var(--gold)}button.green{background:var(--green)}button.ghost{background:transparent;color:var(--violet);border:1px solid var(--violet)}button.danger{background:var(--danger)}button:disabled{opacity:.5;cursor:not-allowed}.row{display:grid;grid-template-columns:1fr 1fr;gap:14px}.filieres{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}@media (max-width: 640px){.row,.filieres{grid-template-columns:1fr}}.badge{display:inline-block;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:700}.badge.en_attente{background:#fff4d6;color:#8a6d00}.badge.valide{background:#d9f3e3;color:var(--green)}.badge.rejete{background:#fde2de;color:var(--danger)}.tag{padding:2px 8px;border-radius:6px;font-size:12px}.tag.public{background:#e7e8fb;color:var(--violet)}.tag.prive{background:#fbeede;color:var(--gold)}.table-scroll{overflow-x:auto}table.data{width:100%;border-collapse:collapse;font-size:13px}table.data th,table.data td{padding:9px 10px;border-bottom:1px solid var(--border);text-align:left;white-space:nowrap}table.data th{color:var(--muted);font-weight:600}.kpi-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:16px}.kpi{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:14px;text-align:center}.kpi .v{font-size:24px;font-weight:800;color:var(--violet)}.kpi .l{font-size:12px;color:var(--muted)}.toolbar{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-bottom:14px}.toolbar .spacer{flex:1}.muted{color:var(--muted);font-size:13px}.empty{text-align:center;color:var(--muted);padding:30px}.notice{font-size:13px;padding:10px 12px;border-radius:9px;background:#fff4d6;color:#8a6d00;margin-bottom:12px}.login-box{max-width:380px;margin:8vh auto}.login-box .logo{text-align:center;font-size:22px;font-weight:800;color:var(--violet);margin-bottom:4px}.login-box .logo span{color:var(--gold)}.center{text-align:center}.link{background:none;color:var(--violet);padding:6px;font-weight:500}.err{color:var(--danger);font-size:13px;margin-top:8px}.langtoggle{background:#ffffff26;padding:6px 10px;font-size:12px}
