:root{color-scheme:light dark;--fond:#0b0f19;--carte:#141b2b;--texte:#e8ecf4;--texte-att:#a4adc4;--accent:#3b82f6;--danger:#ef4444;--avert:#f59e0b;--ok:#22c55e;--bordure:#232c42}*{box-sizing:border-box}body{margin:0;background:var(--fond);color:var(--texte);font-family:system-ui,-apple-system,Segoe UI,sans-serif;font-size:14px}main{max-width:1100px;margin:0 auto;padding:24px 16px}.bandeau{flex-wrap:wrap;gap:10px 16px;padding:12px 24px;background:var(--carte);border-bottom:1px solid var(--bordure)}.bandeau,.bandeau-logo{display:flex;align-items:center}.bandeau-logo{line-height:0}.bandeau-logo img{height:40px;width:auto}.bandeau-titre{color:var(--texte);font-weight:600;font-size:22px;border-left:1px solid var(--bordure);padding-left:16px}.bandeau-nav{display:flex;flex-wrap:wrap;gap:10px;flex-basis:100%}.bandeau-bouton{color:var(--texte);background:transparent;border:1px solid var(--bordure);border-radius:6px;padding:8px 16px;font-size:14px;font-weight:600;text-decoration:none;white-space:nowrap}button.bandeau-bouton{font-family:inherit;cursor:pointer}.bandeau-bouton:hover{background:rgba(255,255,255,.06)}a{color:var(--accent)}h1,h2,h3{line-height:1.25}.carte{background:var(--carte);border:1px solid var(--bordure);border-radius:10px;padding:16px;margin-bottom:12px}table{width:100%;border-collapse:collapse}td,th{text-align:left;padding:8px 10px;border-bottom:1px solid var(--bordure);vertical-align:top}th{color:var(--texte-att);font-weight:600;font-size:12px;text-transform:uppercase}.tableau-compact td{font-size:12.5px;padding:6px 8px}main:has(.tableau-bord){max-width:none}.tableau-bord{table-layout:fixed;width:100%}.tableau-bord td,.tableau-bord th{overflow-wrap:anywhere;padding-left:5px;padding-right:5px}.tableau-bord th{white-space:normal;line-height:1.25}.tableau-bord .col-centre{text-align:center}.tableau-bord .equipe-b{color:var(--texte-att)}.tableau-compact th{font-size:11px;padding:6px 8px}.tableau-compact td .badge,.tableau-compact td a{font-size:11.5px}.badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:12px;font-weight:600}.badge-traite{background:rgba(34,197,94,.15);color:var(--ok)}.badge-a_verifier_manuellement{background:rgba(245,158,11,.15);color:var(--avert)}.badge-forfait{background:rgba(164,173,196,.15);color:var(--texte-att)}.badge-a_configurer{background:rgba(59,130,246,.15);color:var(--accent)}.formulaire-inline{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:10px}.formulaire-inline input,.formulaire-inline select{background:#0d1220;color:var(--texte);border:1px solid var(--bordure);border-radius:6px;padding:6px 10px}.separateur-date{background:#0d1220;color:var(--texte-att);font-weight:700;font-size:13px;padding-top:14px!important;border-top:2px solid var(--bordure)}a.secondaire{color:var(--texte);border:1px solid var(--bordure);border-radius:6px;padding:8px 14px;text-decoration:none;font-size:14px;display:inline-block}a.secondaire:hover{background:rgba(255,255,255,.06)}a.secondaire-petit{color:var(--texte);border:1px solid var(--bordure);border-radius:5px;padding:3px 9px;text-decoration:none;font-size:12px;display:inline-block;white-space:nowrap}a.secondaire-petit:hover{background:rgba(255,255,255,.06)}.badge-infraction{background:rgba(239,68,68,.15);color:var(--danger);margin-right:6px}button{background:var(--accent);color:white;border:none;border-radius:6px;padding:8px 14px;font-size:14px;cursor:pointer}button:disabled{opacity:.6;cursor:default}input[type=file]{cursor:pointer}input[type=file]::-webkit-file-upload-button{background:transparent;color:var(--accent);border:1px solid var(--accent);border-radius:6px;padding:5px 12px;margin-right:10px;font:inherit;font-size:13px;cursor:pointer}input[type=file]::file-selector-button{background:transparent;color:var(--accent);border:1px solid var(--accent);border-radius:6px;padding:5px 12px;margin-right:10px;font:inherit;font-size:13px;cursor:pointer}input[type=file]::-webkit-file-upload-button:hover{background:rgba(59,130,246,.15)}input[type=file]::file-selector-button:hover{background:rgba(59,130,246,.15)}button.secondaire{color:var(--texte)}button.secondaire,button.secondaire-petit{background:transparent;border:1px solid var(--bordure)}button.secondaire-petit{border-radius:5px;padding:3px 9px;font-size:12px;white-space:nowrap}button.secondaire-petit:hover{background:rgba(255,255,255,.06)}textarea{width:100%;min-height:260px;background:#0d1220;color:var(--texte);border:1px solid var(--bordure);border-radius:8px;padding:12px;font-family:inherit;font-size:13px}input:not([type=checkbox]):not([type=radio]):not([type=submit]):not([type=button]),select{background:#0d1220;color:var(--texte);border:1px solid var(--bordure);border-radius:6px;padding:6px 10px}tr.ligne-infraction td{background:rgba(239,68,68,.12);color:var(--danger)}.incident{background:rgba(245,158,11,.1);border:1px solid rgba(245,158,11,.4);border-radius:8px;padding:12px;white-space:pre-wrap}.modale-fond{position:fixed;inset:0;background:rgba(5,8,15,.65);display:flex;align-items:center;justify-content:center;padding:16px;z-index:1000}.modale-boite{background:var(--carte);border:1px solid var(--bordure);border-radius:12px;padding:24px;width:100%;max-width:420px;box-shadow:0 20px 50px rgba(0,0,0,.45)}.modale-titre{margin:0 0 10px}.modale-message{margin:0 0 16px;white-space:pre-wrap;line-height:1.5}.modale-input{width:100%;margin-bottom:16px;box-sizing:border-box}.modale-actions{display:flex;justify-content:flex-end;gap:8px}.champ-date{position:relative;display:inline-flex;align-items:center;gap:4px}.champ-date-bouton{padding:4px 7px;line-height:1;background:transparent;border:1px solid var(--bordure);border-radius:6px;cursor:pointer;font-size:14px}.champ-date-bouton:hover{border-color:var(--accent)}.calendrier{position:absolute;top:calc(100% + 6px);left:0;z-index:50;width:252px;padding:10px;background:var(--carte);border:1px solid var(--bordure);border-radius:10px;box-shadow:0 12px 30px rgba(0,0,0,.45)}.calendrier-entete{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;font-weight:600;text-transform:capitalize}.calendrier-entete button{background:transparent;border:none;color:var(--texte);font-size:20px;line-height:1;padding:2px 10px;cursor:pointer;border-radius:6px}.calendrier-entete button:hover{background:var(--bordure)}.calendrier-grille{display:grid;grid-template-columns:repeat(7,1fr);grid-gap:2px;gap:2px}.calendrier-jour-semaine{text-align:center;font-size:11px;color:var(--texte-att);padding:2px 0 4px}.calendrier-jour{background:transparent;border:none;color:var(--texte);padding:6px 0;border-radius:6px;cursor:pointer;font-size:13px}.calendrier-jour:hover{background:var(--bordure)}.calendrier-jour.aujourdhui{box-shadow:inset 0 0 0 1px var(--accent)}.calendrier-jour.choisi{background:var(--accent);color:#fff;font-weight:700}.calendrier-pied{display:flex;justify-content:space-between;margin-top:8px}.calendrier-pied button{background:transparent;border:none;color:var(--accent);cursor:pointer;font-size:12.5px;padding:4px 6px}.infobulle{position:relative;display:inline-block}.infobulle:after{content:attr(data-infobulle);position:absolute;top:calc(100% + 8px);left:0;z-index:50;width:max-content;max-width:320px;padding:8px 10px;border-radius:6px;background:#1f2937;color:#fff;font-size:.85rem;font-weight:400;line-height:1.35;white-space:normal;border:1px solid #4b5563;box-shadow:0 4px 14px rgba(0,0,0,.35);opacity:0;visibility:hidden;transition:opacity .15s ease .25s;pointer-events:none}.infobulle:focus-within:after,.infobulle:hover:after{opacity:1;visibility:visible}.badge-alerte{background:rgba(245,158,11,.18);color:#d97706;margin-left:4px;cursor:help}.alerte-carte{border-left:4px solid #f59e0b}