:root{color-scheme:light;font-family:system-ui,sans-serif}body{margin:0;background:#f5f5f5;color:#1a1a1a}.conteneur-page{max-width:28rem;margin:4rem auto;padding:2rem;background:#fff;color:#1a1a1a;border-radius:.5rem;box-shadow:0 1px 3px #00000026}.conteneur-page h1{margin-top:0;font-size:1.5rem}.formulaire{display:flex;flex-direction:column;gap:1rem}.formulaire label{display:flex;flex-direction:column;gap:.25rem;font-size:.9rem}.formulaire input{padding:.5rem;font-size:1rem;border:1px solid var(--border, #ccc);border-radius:.25rem}.conteneur-page button{padding:.6rem;font-size:1rem;border:none;border-radius:.25rem;background:#27272a;color:#fff;cursor:pointer}.conteneur-page button:disabled{background:#27272a;opacity:.5;cursor:not-allowed}button.bouton-danger{padding:.6rem;font-size:1rem;border:none;border-radius:.25rem;background:#dc2626;color:#fff;cursor:pointer}.message-erreur{color:#ef4444;margin:0}.message-succes{color:#22c55e;margin:0}.message-avertissement{color:#f59e0b;margin:0}.ligne-desactivee{opacity:.5}.police-affiche{font-family:Bebas Neue,system-ui,sans-serif}.police-corps{font-family:Inter,system-ui,sans-serif}:root{--espacement-xs: .25rem;--espacement-sm: .5rem;--espacement-md: 1rem;--espacement-lg: 1.5rem;--espacement-xl: 2rem;--rayon-bordure: .5rem;--transition-standard: .15s ease;--z-nav: 100;--z-modale: 200;--fond-present: rgba(34, 197, 94, .15);--fond-absent: rgba(239, 68, 68, .15)}.theme-famille{--bg: #0a0a0a;--bg-elevated: #171717;--text: #f5f5f5;--text-muted: #a3a3a3;--accent: #d81e2c;--accent-contrast: #ffffff;--border: #2a2a2a;--nav-bg: #141414;--nav-text: #a3a3a3;--nav-active-bg: #d81e2c;--nav-active-text: #ffffff}.theme-admin{--bg: #ffffff;--bg-elevated: #f5f5f5;--text: #1a1a1a;--text-muted: #6b6b6b;--accent: #d81e2c;--accent-contrast: #ffffff;--border: #e0e0e0;--nav-bg: #ffffff;--nav-text: #6b6b6b;--nav-active-bg: #d81e2c;--nav-active-text: #ffffff}.theme-professeur{--bg: #52525b;--bg-elevated: #63636c;--text: #f5f5f5;--text-muted: #a3a3a3;--accent: #d81e2c;--accent-contrast: #ffffff;--border: #6b6b76;--nav-bg: #343438;--nav-text: #a3a3a3;--nav-active-bg: #d81e2c;--nav-active-text: #ffffff}.app-shell{min-height:100vh;display:flex;flex-direction:column;background:var(--bg)}.topbar{display:none;align-items:center;justify-content:space-between;gap:var(--espacement-md);padding:var(--espacement-sm) var(--espacement-lg);background:var(--nav-bg);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:var(--z-nav)}.logo-gus{font-family:Bebas Neue,system-ui,sans-serif;font-size:1.5rem;letter-spacing:.05em;color:var(--accent);text-decoration:none}.role-badge{font-family:Bebas Neue,system-ui,sans-serif;font-size:.75rem;letter-spacing:.05em;padding:var(--espacement-xs) var(--espacement-sm);border-radius:var(--rayon-bordure);background:var(--bg-elevated);color:var(--text-muted);border:1px solid var(--border)}.bouton-deconnexion{font-family:Bebas Neue,system-ui,sans-serif;font-size:.75rem;letter-spacing:.05em;padding:var(--espacement-xs) var(--espacement-md);border-radius:var(--rayon-bordure);border:1px solid var(--border);background:transparent;color:var(--text-muted);cursor:pointer;transition:background var(--transition-standard),color var(--transition-standard),border-color var(--transition-standard)}.bouton-deconnexion:hover{background:var(--bg-elevated);color:var(--accent);border-color:var(--accent)}.bottom-nav{position:fixed;bottom:0;left:0;right:0;background:var(--nav-bg);border-top:1px solid var(--border);z-index:var(--z-nav)}.nav-links{display:flex;list-style:none;margin:0;padding:0}.bottom-nav .nav-links{justify-content:space-around}.topbar .nav-links{gap:var(--espacement-sm)}.nav-link{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--espacement-xs);padding:var(--espacement-sm);font-family:Bebas Neue,system-ui,sans-serif;font-size:.7rem;letter-spacing:.03em;color:var(--nav-text);text-decoration:none;border-radius:var(--rayon-bordure);transition:background var(--transition-standard),color var(--transition-standard)}button.nav-link{border:none;background:none;cursor:pointer}.topbar .nav-link{flex-direction:row;padding:var(--espacement-xs) var(--espacement-md)}.nav-link.actif{background:var(--nav-active-bg);color:var(--nav-active-text)}main.conteneur-route{flex:1;padding:2rem 1rem calc(4.5rem + env(safe-area-inset-bottom))}@media(min-width:768px){.topbar{display:flex}.bottom-nav{display:none}main.conteneur-route{padding-bottom:var(--espacement-xl)}}.tableau-scroll{overflow-x:auto}.tableau-appel{width:100%;border-collapse:collapse}.tableau-appel th,.tableau-appel td{border:1px solid var(--border);padding:var(--espacement-xs) var(--espacement-sm);text-align:left}.tableau-appel tbody tr:where(:nth-child(2n)){background:var(--bg-elevated)}.tableau-appel .cellule-action{text-align:center}.tableau-appel tr.ligne-presente{background:var(--fond-present)}.tableau-appel tr.ligne-absente{background:var(--fond-absent)}button.lien-discret{background:none;border:none;padding:0;font-size:.9rem;color:var(--text-muted, #6b6b6b);text-decoration:underline;cursor:pointer}.badge-statut{display:inline-block;padding:var(--espacement-xs) var(--espacement-sm);border-radius:var(--rayon-bordure);font-size:.8rem;font-weight:600}.badge-statut-complet,.badge-statut-a_jour{background:var(--fond-present);color:#15803d}.badge-statut-a_verifier{background:#f59e0b26;color:#b45309}.badge-statut-incomplet,.badge-statut-impaye{background:var(--fond-absent);color:#b91c1c}.controle-statut,.controle-statut-edition{display:flex;align-items:center;gap:var(--espacement-sm);flex-wrap:wrap}.selecteur-statut{position:relative;display:inline-block}button.selecteur-statut-badge{cursor:pointer;border:none;background:none;padding:0}button.selecteur-statut-badge:disabled{cursor:default;background:none;opacity:1}.selecteur-statut-menu{position:absolute;top:calc(100% + var(--espacement-xs));left:0;z-index:var(--z-menu, 10);display:flex;flex-direction:column;min-width:9rem;background:#fff;color:#1a1a1a;border:1px solid var(--border, #e0e0e0);border-radius:var(--rayon-bordure);box-shadow:0 4px 12px #00000026;padding:var(--espacement-xs)}button.selecteur-statut-option{border:none;background:none;text-align:left;padding:var(--espacement-xs) var(--espacement-sm);border-radius:var(--rayon-bordure);cursor:pointer;font-size:.85rem;color:#1a1a1a}button.selecteur-statut-option:hover:not(:disabled){background:var(--bg-elevated, #f5f5f5)}button.selecteur-statut-option:disabled{cursor:default;opacity:.6}.selecteur-statut-erreur{font-size:.75rem;color:#b91c1c;padding:var(--espacement-xs) var(--espacement-sm)}button.bouton-lien{background:none;border:none;padding:0;font-size:.85rem;color:var(--text-muted, #6b6b6b);text-decoration:underline;cursor:pointer}.ligne-consultation{display:flex;justify-content:space-between;gap:var(--espacement-md);padding:var(--espacement-xs) 0;border-bottom:1px solid var(--border, #e0e0e0)}.libelle-consultation{color:var(--text-muted, #6b6b6b);font-size:.9rem}.conteneur-page-large{max-width:64rem}.onglets{display:flex;gap:var(--espacement-sm);margin-bottom:var(--espacement-md);border-bottom:1px solid var(--border, #e0e0e0)}button.onglet{padding:var(--espacement-sm) var(--espacement-md);border:none;background:none;font-size:1rem;cursor:pointer;color:#6b6b6b;border-bottom:2px solid transparent;border-radius:0}button.onglet.actif{color:#1a1a1a;border-bottom-color:var(--accent, #d81e2c);font-weight:600}.barre-filtres{display:flex;flex-wrap:wrap;gap:var(--espacement-md);margin-bottom:var(--espacement-md)}.barre-filtres label{display:flex;flex-direction:column;gap:var(--espacement-xs);font-size:.85rem}.barre-filtres select,.barre-filtres input{padding:var(--espacement-xs) var(--espacement-sm);border:1px solid var(--border, #ccc);border-radius:var(--rayon-bordure)}.filtre-indisponible{font-size:.75rem;color:var(--text-muted, #6b6b6b)}.formulaire-inline{display:flex;flex-wrap:wrap;gap:var(--espacement-sm);align-items:flex-end;margin-top:var(--espacement-sm)}.formulaire-inline label{display:flex;flex-direction:column;gap:var(--espacement-xs);font-size:.85rem}.formulaire-inline input,.formulaire-inline select{padding:var(--espacement-xs) var(--espacement-sm);border:1px solid var(--border, #ccc);border-radius:var(--rayon-bordure)}.solde-achat{margin-top:var(--espacement-sm);padding:var(--espacement-md);background:#f5f5f5;border-radius:var(--rayon-bordure)}.encadre{margin-bottom:var(--espacement-md);padding:var(--espacement-md);background:#f5f5f5;border:1px solid #e0e0e0;border-radius:var(--rayon-bordure)}button.th-triable{display:inline-flex;align-items:center;gap:var(--espacement-xs);padding:0;border:none;background:none;font:inherit;font-weight:600;color:inherit;cursor:pointer}.fleche-tri{font-size:.7rem}button.badge-etat-cliquable{display:inline-flex;align-items:center;gap:var(--espacement-xs);padding:0;border:none;background:none;cursor:pointer}.indicateur-supplement{font-size:.75rem;color:var(--text-muted, #6b6b6b)}.accordeon-etat{list-style:none;margin:var(--espacement-xs) 0 0;padding:0;display:flex;flex-direction:column;gap:var(--espacement-xs);font-size:.85rem}.badge-statut-confirmee{background:#22c55e26;color:#15803d}.badge-statut-attente_validation{background:#f59e0b26;color:#b45309}.badge-statut-liste_attente{background:#6b728026;color:#374151}.modale-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:var(--z-modale);padding:var(--espacement-md)}.modale-contenu{background:#fff;color:#1a1a1a;border-radius:var(--rayon-bordure);padding:var(--espacement-lg);max-width:28rem;width:100%;max-height:90vh;overflow-y:auto;box-shadow:0 4px 12px #00000040}.modale-contenu h2{margin-top:0}.colonne-paiement-fiche{width:12rem}.colonne-nom-fiche{width:14rem}.liste-cartes-cours{display:flex;flex-direction:column;gap:var(--espacement-sm);list-style:none;margin:0;padding:0}.carte-cours{display:flex;align-items:center;justify-content:space-between;gap:var(--espacement-md);padding:var(--espacement-md);background:#f5f5f5;border:1px solid #e0e0e0;border-radius:var(--rayon-bordure);flex-wrap:wrap}.carte-cours-info{display:flex;flex-direction:column;gap:var(--espacement-xs);min-width:12rem}.carte-cours-nom{font-weight:600}.carte-cours-detail{display:flex;gap:var(--espacement-sm);flex-wrap:wrap;align-items:center}.badge-horaire{display:inline-block;padding:var(--espacement-xs) var(--espacement-sm);border-radius:var(--rayon-bordure);font-size:.8rem;background:#6b728026;color:#374151}.carte-cours-meta{color:#6b6b6b;font-size:.85rem}.carte-cours-actions{display:flex;gap:var(--espacement-sm);align-items:center;flex-wrap:wrap}.carte-cours-message{flex-basis:100%;font-size:.85rem;color:#6b6b6b;margin:0}.carte-cours-panneau-seances{flex-basis:100%;margin-top:var(--espacement-sm);padding-top:var(--espacement-sm);border-top:1px solid #e0e0e0;display:flex;flex-direction:column;gap:var(--espacement-sm)}.liste-seances{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--espacement-xs)}.ligne-seance{display:flex;align-items:center;justify-content:space-between;gap:var(--espacement-sm);padding:var(--espacement-xs) 0;font-size:.9rem}.appel-double-selecteurs{display:flex;gap:var(--espacement-md);flex-wrap:wrap}.appel-double{display:flex;gap:var(--espacement-md);flex-wrap:wrap;align-items:flex-start}.appel-colonne{flex:1 1 380px;padding:var(--espacement-md);background:#f5f5f5;border:1px solid #e0e0e0;border-radius:var(--rayon-bordure)}.indicateur-annee{display:inline-flex;align-items:center;padding:var(--espacement-xs) var(--espacement-sm);border:1px solid #ccc;border-radius:var(--rayon-bordure);font-size:1rem}label.ligne-destinataire,button.entete-groupe-repliable{display:flex;flex-direction:row;align-items:center;gap:var(--espacement-xs);padding:var(--espacement-xs) var(--espacement-sm);font-size:.9rem}button.entete-groupe-repliable{width:100%;border:none;background:#d81e2c14;border-radius:var(--rayon-bordure);font:inherit;text-align:left;color:inherit;cursor:pointer}.ligne-destinataire-desactivee{opacity:.55}.contenu-groupe-repliable{display:flex;flex-direction:column;gap:var(--espacement-xs);padding-left:var(--espacement-md);margin-top:var(--espacement-xs)}.groupe-repliable+.groupe-repliable{margin-top:var(--espacement-sm)}
