.admin-page{padding:130px 0 100px;min-height:80vh;background:var(--gray)}.admin-subnav{display:flex;align-items:center;gap:10px;margin-bottom:24px;flex-wrap:wrap}.back-btn{display:inline-flex;align-items:center;gap:8px;background:#fff;border:1px solid var(--border);border-radius:100px;padding:8px 16px 8px 12px;color:var(--ink);font-size:13px;font-weight:500;text-decoration:none;transition:all .15s}.back-btn:hover{background:var(--navy);color:#fff;border-color:var(--navy)}.back-btn svg{width:16px;height:16px}.subnav-sep{color:var(--mid)}.subnav-current{font-size:13px;color:var(--mid);font-weight:500}.admin-loading{text-align:center;padding:80px 20px}.admin-spinner{width:40px;height:40px;margin:0 auto 20px;border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.admin-login{max-width:480px;margin:40px auto}.admin-card{background:#fff;border:1px solid var(--border);border-radius:var(--r);padding:40px}.admin-card h1{font-family:var(--font-display);font-size:1.6rem;margin:8px 0 12px}.admin-card .muted{font-size:14px;line-height:1.6;margin-bottom:24px}.maintenance-banner{display:flex;align-items:center;gap:12px;background:#fff7ed;border:1px solid #fed7aa;color:#9a3412;border-radius:12px;padding:14px 18px;margin-bottom:20px;font-size:14px;flex-wrap:wrap}.maintenance-banner svg{color:#c2410c;flex-shrink:0}.maintenance-banner strong{color:#7c2d12}.maintenance-banner-sub{color:#9a3412;font-size:13px;opacity:.9}.maintenance-banner-sub a{color:#c2410c;text-decoration:underline;font-weight:600}#maintenance-toggle-btn.btn-danger{background:#dc2626;color:#fff;border-color:#dc2626}#maintenance-toggle-btn.btn-danger:hover{background:#b91c1c;border-color:#b91c1c}.admin-header{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:32px;gap:16px;flex-wrap:wrap}.admin-header h1{font-family:var(--font-display);font-size:clamp(1.4rem,3vw,2rem);margin:4px 0 0}.admin-header h1 span{color:var(--accent);font-weight:500;font-size:.85em}.admin-header-actions{display:flex;gap:8px;flex-wrap:wrap}@media(max-width:768px){.admin-header-actions{width:100%;gap:6px}.admin-header-actions .btn{font-size:12px;padding:8px 12px}}.admin-tabs{display:flex;gap:4px;border-bottom:1px solid var(--border);margin-bottom:24px;flex-wrap:wrap}.admin-tabs .tab{background:none;border:none;padding:12px 18px;font-family:var(--font-body);font-size:14px;font-weight:500;color:var(--mid);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px}.admin-tabs .tab.active{color:var(--ink);border-bottom-color:var(--accent)}.tab-badge{background:var(--accent);color:#fff;font-size:11px;padding:2px 7px;border-radius:10px;margin-left:4px}.tab-panel{display:none}.tab-panel.active{display:block}.filter-bar{display:flex;gap:6px;margin-bottom:16px}.filter{background:#fff;border:1px solid var(--border);padding:6px 14px;border-radius:100px;font-size:13px;cursor:pointer}.filter.active{background:var(--navy);color:#fff;border-color:var(--navy)}.msg-row{background:#fff;border:1px solid var(--border);border-radius:var(--r);padding:16px 20px;margin-bottom:10px}.msg-row.msg-done{opacity:.55}.msg-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px;font-size:14px}.msg-row p{font-size:14px;line-height:1.6;margin:8px 0 0;color:var(--ink)}.msg-tag{font-size:12px;color:var(--mid);margin-top:4px}.msg-actions{margin-top:10px}.btn-sm{padding:6px 14px;font-size:12px}.panel-toolbar{margin-bottom:16px}.table-scroll{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;border-radius:var(--r);background:linear-gradient(to right,#fff 30%,#fff0),linear-gradient(to right,#0000,#00000014 80%) 0 100% / 100% 100% no-repeat,#fff;background-attachment:local,scroll}.admin-table{width:100%;min-width:640px;background:#fff;border:1px solid var(--border);border-radius:var(--r);border-collapse:separate;border-spacing:0;overflow:hidden}.admin-table th,.admin-table td{padding:12px 14px;text-align:left;font-size:14px;border-bottom:1px solid var(--border)}.admin-table th{background:var(--gray);font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--mid);font-weight:600}.admin-table tbody tr:last-child td{border-bottom:none}@media(max-width:768px){.admin-table th,.admin-table td{padding:10px 12px;font-size:13px}}.admin-form{background:#fff;border:1px solid var(--border);border-radius:var(--r);padding:28px;max-width:640px}.admin-form .form-group{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}.admin-form label{font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--mid)}.admin-form input,.admin-form select,.admin-form textarea{background:var(--gray);border:1px solid var(--border);border-radius:var(--r);padding:11px 14px;font-family:var(--font-body);font-size:14px;outline:none}.admin-form input:focus,.admin-form select:focus,.admin-form textarea:focus{border-color:var(--accent);background:#fff}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}@media(max-width:600px){.form-row{grid-template-columns:1fr}}.admin-dialog{border:none;border-radius:var(--r);padding:0;max-width:520px;width:calc(100% - 32px);box-shadow:0 24px 60px #0003}.admin-dialog::backdrop{background:#0006}.admin-dialog form{padding:28px}.admin-dialog h2{font-family:var(--font-display);font-size:1.3rem;margin:0 0 20px}.admin-dialog .form-group{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}.admin-dialog label{font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--mid)}.admin-dialog input,.admin-dialog select{background:var(--gray);border:1px solid var(--border);border-radius:var(--r);padding:11px 14px;font-size:14px;outline:none}.dlg-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:8px}.muted{color:var(--mid);font-size:13px}.mfa-steps{padding-left:20px;margin:16px 0;font-size:14px;line-height:1.7;color:var(--ink)}.mfa-steps li{margin-bottom:4px}.mfa-qr{display:flex;justify-content:center;align-items:center;min-height:200px;padding:16px;background:var(--gray);border-radius:var(--r);margin:12px 0}.mfa-qr img,.mfa-qr svg{width:200px;height:200px}.mfa-secret{margin:12px 0 16px;font-size:13px}.mfa-secret summary{cursor:pointer;color:var(--mid)}.mfa-secret code{display:block;margin-top:8px;padding:10px 14px;background:var(--gray);border-radius:var(--r);font-family:monospace;font-size:13px;word-break:break-all;user-select:all}#mfa-enroll-code,#mfa-challenge-code{font-size:24px;letter-spacing:8px;text-align:center;padding:14px;font-family:monospace}#mfa-enroll-form,#mfa-challenge-form{display:flex;flex-direction:column;gap:10px}.mfa-err{margin-top:12px;padding:10px 14px;background:#fee;border:1px solid #fcc;border-radius:var(--r);color:#c33;font-size:13px}.eleves-toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.eleves-toolbar input[type=search]{flex:1;min-width:220px;background:#fff;border:1px solid var(--border);border-radius:var(--r);padding:10px 14px;font-size:14px}.audit-pager{display:flex;align-items:center;gap:12px;justify-content:center;margin-top:20px}.stats-grid{display:flex;flex-direction:column;gap:24px}.kpi-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px}.kpi{background:#fff;border:1px solid var(--border);border-radius:var(--r);padding:18px 20px}.kpi-label{font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--mid);margin-bottom:6px}.kpi-value{font-family:var(--font-display);font-size:1.6rem;color:var(--ink)}.kpi-sub{font-size:.8rem;color:var(--mid);font-weight:400}.stats-h3{font-family:var(--font-display);font-size:1.05rem;margin:8px 0 12px}.bar-chart{display:grid;grid-template-columns:repeat(12,1fr);gap:6px;align-items:end;height:160px;background:#fff;border:1px solid var(--border);border-radius:var(--r);padding:16px 16px 8px}.bar-col{display:flex;flex-direction:column;justify-content:flex-end;align-items:center;gap:4px;height:100%}.bar-fill{width:100%;background:var(--accent);border-radius:4px 4px 0 0;min-height:2px}.bar-label{font-size:10px;color:var(--mid);font-family:monospace}.stats-export{background:#fff;border:1px solid var(--border);border-radius:var(--r);padding:20px 24px;margin-top:20px}.stats-export h3{font-family:var(--font-display);font-size:1rem;margin:0 0 12px}.export-row{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.export-row label{font-size:13px;color:var(--mid);display:inline-flex;align-items:center;gap:6px}.export-row input[type=date]{background:var(--gray);border:1px solid var(--border);border-radius:var(--r);padding:8px 12px;font-size:13px}.role-badge{display:inline-block;padding:4px 12px;border-radius:100px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:#fff;align-self:center;margin-right:6px}.role-gerant{background:#f09020}.role-secretaire{background:#3b82f6}.role-moniteur{background:#8b5cf6}
