/* ══════════════════════════════════════════════════════════════════
   Tennis Club de Montussan — charte issue du logo :
   bleu TCM, rose Montussan, jaune balle, rouge éclaboussure, noir.
   Mobile d'abord : la plupart des réservations se font au téléphone.
══════════════════════════════════════════════════════════════════ */
:root {
  --bleu:#1a7dc7; --bleu-f:#155f98; --bleu-c:#e3f0fa;
  --rose:#e8368f; --rose-f:#c21e72; --rose-c:#fde7f1;
  --jaune:#f5c518; --jaune-c:#fff6d1;
  --rouge:#e2001a; --rouge-c:#fde3e5;
  --vert:#1f9d55; --vert-c:#e0f5e9;
  --orange:#d97706; --orange-c:#fef3c7;
  --noir:#141821; --t1:#1c2431; --t2:#4f5b6b; --t3:#8a94a3;
  --bg:#f4f6f9; --s1:#ffffff; --s2:#f8fafc; --s3:#eef2f7;
  --bord:#e3e8ef; --bord2:#cbd3de;
  --r:10px; --rl:16px;
  --nav-w:240px; --top-h:56px; --bottom-h:60px;
  --ombre:0 1px 2px rgba(20,24,33,.05), 0 6px 20px -8px rgba(20,24,33,.12);
  color-scheme: light;
}
*, *::before, *::after { box-sizing:border-box; margin:0; padding:0; }
html { -webkit-text-size-adjust:100%; }
body { font-family:'Segoe UI', system-ui, -apple-system, Roboto, 'Helvetica Neue', sans-serif; background:var(--bg); color:var(--t1); font-size:14.5px; line-height:1.45; min-height:100vh; -webkit-font-smoothing:antialiased; }
a { color:var(--bleu); text-decoration:none; } a:hover { text-decoration:underline; }
h1 { font-size:22px; font-weight:800; letter-spacing:-.01em; }
h2 { font-size:17px; font-weight:700; }
h3 { font-size:14.5px; font-weight:700; }
small, .muted { color:var(--t2); } .t3 { color:var(--t3); }
.hidden, [hidden] { display:none !important; }
button, input, select, textarea { font:inherit; color:inherit; }
img { max-width:100%; }

/* ── Squelette ────────────────────────────────────────────────── */
.shell { display:flex; min-height:100vh; }
.sidebar { width:var(--nav-w); background:var(--s1); border-right:1px solid var(--bord); position:fixed; inset:0 auto 0 0; z-index:60; display:flex; flex-direction:column; transform:translateX(-100%); transition:transform .22s ease; }
.sidebar.ouverte { transform:none; box-shadow:0 0 0 100vmax rgba(20,24,33,.35); }
.sidebar-logo { padding:16px 14px 12px; border-bottom:1px solid var(--bord); display:flex; align-items:center; gap:10px; }
.sidebar-logo img { height:52px; width:auto; }
.sidebar-logo .titre { font-weight:800; font-size:15px; line-height:1.1; color:var(--bleu); }
.sidebar-logo .titre span { display:block; color:var(--rose); font-size:11px; font-weight:700; letter-spacing:.08em; text-transform:uppercase; }
.sidebar-nav { flex:1; overflow-y:auto; padding:10px 8px; }
.nav-groupe { font-size:10.5px; letter-spacing:.12em; text-transform:uppercase; color:var(--t3); padding:14px 10px 6px; font-weight:700; }
.nav-item { display:flex; align-items:center; gap:10px; padding:9px 10px; border-radius:8px; color:var(--t2); font-weight:600; font-size:13.5px; cursor:pointer; }
.nav-item:hover { background:var(--s3); color:var(--t1); text-decoration:none; }
.nav-item.actif { background:var(--bleu-c); color:var(--bleu-f); }
.nav-item .ico { width:22px; text-align:center; font-size:16px; }
.sidebar-pied { padding:12px; border-top:1px solid var(--bord); font-size:12.5px; }
.sidebar-pied .nom { font-weight:700; }
.sidebar-pied .role { color:var(--t3); font-size:11.5px; text-transform:capitalize; }

.main { flex:1; min-width:0; padding-bottom:calc(var(--bottom-h) + 12px); }
.topbar { height:var(--top-h); display:flex; align-items:center; gap:12px; padding:0 14px; background:var(--s1); border-bottom:1px solid var(--bord); position:sticky; top:0; z-index:50; }
.topbar .burger { width:38px; height:38px; border:1px solid var(--bord); background:var(--s1); border-radius:8px; font-size:18px; cursor:pointer; }
.topbar .titre-page { font-weight:800; font-size:16px; flex:1; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.topbar .logo-mini { height:34px; }
.contenu { padding:16px 14px 24px; max-width:1240px; margin:0 auto; }

.bottom-nav { position:fixed; bottom:0; left:0; right:0; height:var(--bottom-h); background:var(--s1); border-top:1px solid var(--bord); display:flex; z-index:55; padding-bottom:env(safe-area-inset-bottom); }
.bottom-nav a { flex:1; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:2px; font-size:10.5px; font-weight:600; color:var(--t3); }
.bottom-nav a .ico { font-size:20px; }
.bottom-nav a.actif { color:var(--bleu); }
.bottom-nav a:hover, .nav-item:hover { text-decoration:none; }

@media (min-width: 960px) {
  .sidebar { transform:none; box-shadow:none; }
  .main { margin-left:var(--nav-w); padding-bottom:24px; }
  .topbar .burger, .bottom-nav, .topbar .logo-mini { display:none; }
  .contenu { padding:24px 28px 40px; }
}

/* ── Composants ───────────────────────────────────────────────── */
.carte { background:var(--s1); border:1px solid var(--bord); border-radius:var(--rl); padding:16px; box-shadow:var(--ombre); }
.carte + .carte { margin-top:14px; }
.carte-titre { display:flex; align-items:center; justify-content:space-between; gap:10px; margin-bottom:12px; flex-wrap:wrap; }
.carte-titre h2 { flex:1; }
.grille { display:grid; gap:14px; }
.g2 { grid-template-columns:repeat(auto-fit, minmax(280px, 1fr)); }
.g3 { grid-template-columns:repeat(auto-fit, minmax(220px, 1fr)); }
.g4 { grid-template-columns:repeat(auto-fit, minmax(160px, 1fr)); }
.entete { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:16px; flex-wrap:wrap; }
.entete h1 { flex:1; }
.actions { display:flex; gap:8px; flex-wrap:wrap; align-items:center; }

.btn { display:inline-flex; align-items:center; justify-content:center; gap:6px; padding:9px 14px; border-radius:9px; border:1px solid var(--bord2); background:var(--s1); font-weight:600; font-size:13.5px; cursor:pointer; white-space:nowrap; transition:background .12s, transform .05s; text-decoration:none !important; color:var(--t1); }
.btn:hover { background:var(--s3); } .btn:active { transform:translateY(1px); }
.btn:disabled { opacity:.55; cursor:not-allowed; }
.btn-p { background:var(--bleu); border-color:var(--bleu); color:#fff; } .btn-p:hover { background:var(--bleu-f); }
.btn-rose { background:var(--rose); border-color:var(--rose); color:#fff; } .btn-rose:hover { background:var(--rose-f); }
.btn-danger { color:var(--rouge); border-color:#f3b4bb; } .btn-danger:hover { background:var(--rouge-c); }
.btn-sm { padding:5px 10px; font-size:12.5px; border-radius:7px; }
.btn-xs { padding:3px 8px; font-size:11.5px; border-radius:6px; }
.btn-ghost { border-color:transparent; background:transparent; }
.btn-ghost:hover { background:var(--s3); }

.badge { display:inline-flex; align-items:center; gap:4px; padding:2px 8px; border-radius:999px; font-size:11.5px; font-weight:700; background:var(--s3); color:var(--t2); white-space:nowrap; }
.badge.bleu { background:var(--bleu-c); color:var(--bleu-f); }
.badge.rose { background:var(--rose-c); color:var(--rose-f); }
.badge.vert { background:var(--vert-c); color:var(--vert); }
.badge.jaune { background:var(--jaune-c); color:#8a6d00; }
.badge.rouge { background:var(--rouge-c); color:var(--rouge); }
.badge.orange { background:var(--orange-c); color:var(--orange); }

.stat { padding:14px 16px; border-radius:var(--rl); background:var(--s1); border:1px solid var(--bord); box-shadow:var(--ombre); }
.stat .val { font-size:26px; font-weight:800; letter-spacing:-.02em; line-height:1.1; }
.stat .lib { color:var(--t2); font-size:12.5px; margin-top:4px; font-weight:600; }
.stat.bleu { border-top:3px solid var(--bleu); } .stat.rose { border-top:3px solid var(--rose); }
.stat.jaune { border-top:3px solid var(--jaune); } .stat.vert { border-top:3px solid var(--vert); } .stat.rouge { border-top:3px solid var(--rouge); }

/* Formulaires */
.form { display:grid; gap:12px; grid-template-columns:repeat(12, 1fr); }
.champ { display:flex; flex-direction:column; gap:5px; grid-column:span 12; }
.champ.c6 { grid-column:span 12; } .champ.c4 { grid-column:span 12; } .champ.c3 { grid-column:span 6; }
@media (min-width:640px) { .champ.c6 { grid-column:span 6; } .champ.c4 { grid-column:span 4; } .champ.c3 { grid-column:span 3; } }
.champ label { font-size:12.5px; font-weight:700; color:var(--t2); }
.champ label .req { color:var(--rose); }
.champ input, .champ select, .champ textarea, .input { width:100%; padding:9px 11px; border:1px solid var(--bord2); border-radius:8px; background:var(--s1); font-size:14px; min-height:40px; }
.champ input:focus, .champ select:focus, .champ textarea:focus, .input:focus { outline:2px solid var(--bleu-c); border-color:var(--bleu); }
.champ textarea { min-height:90px; resize:vertical; }
.champ .aide { font-size:11.5px; color:var(--t3); }
.champ.check { flex-direction:row; align-items:center; gap:8px; }
.champ.check input { width:18px; height:18px; min-height:0; accent-color:var(--bleu); }
.form-actions { grid-column:span 12; display:flex; gap:8px; justify-content:flex-end; margin-top:4px; flex-wrap:wrap; }
.erreur { color:var(--rouge); font-size:13px; font-weight:600; grid-column:span 12; }
.filtres { display:flex; gap:8px; flex-wrap:wrap; align-items:center; margin-bottom:12px; }
.filtres .input, .filtres select { width:auto; min-width:150px; }
.recherche { flex:1; min-width:180px; }

/* Tableaux */
.table-wrap { overflow-x:auto; -webkit-overflow-scrolling:touch; border:1px solid var(--bord); border-radius:var(--r); background:var(--s1); }
table.tab { width:100%; border-collapse:collapse; font-size:13.5px; }
.tab th { text-align:left; font-size:11.5px; text-transform:uppercase; letter-spacing:.06em; color:var(--t3); padding:10px 12px; border-bottom:1px solid var(--bord); background:var(--s2); white-space:nowrap; }
.tab td { padding:10px 12px; border-bottom:1px solid var(--bord); vertical-align:middle; }
.tab tr:last-child td { border-bottom:0; }
.tab tr.clic { cursor:pointer; } .tab tr.clic:hover td { background:var(--s2); }
.tab td.num, .tab th.num { text-align:right; font-variant-numeric:tabular-nums; }
.tab .act { text-align:right; white-space:nowrap; }
.vide { text-align:center; color:var(--t3); padding:28px 12px; font-style:italic; }

/* Modale */
.modal-fond { position:fixed; inset:0; background:rgba(20,24,33,.45); z-index:100; display:flex; align-items:flex-end; justify-content:center; padding:0; }
.modal { background:var(--s1); width:100%; max-width:640px; max-height:92vh; overflow:auto; border-radius:var(--rl) var(--rl) 0 0; padding:18px 16px 24px; animation:monte .18s ease; }
.modal.large { max-width:900px; }
@keyframes monte { from { transform:translateY(24px); opacity:.6 } to { transform:none; opacity:1 } }
.modal-titre { display:flex; align-items:center; justify-content:space-between; margin-bottom:14px; }
.modal-titre h2 { font-size:17px; }
.modal-titre .fermer { border:0; background:transparent; font-size:22px; cursor:pointer; color:var(--t3); line-height:1; padding:4px 8px; }
@media (min-width:640px) { .modal-fond { align-items:center; padding:20px; } .modal { border-radius:var(--rl); } }

/* Toasts */
.toasts { position:fixed; top:12px; right:12px; left:12px; z-index:200; display:flex; flex-direction:column; gap:8px; align-items:flex-end; pointer-events:none; }
.toast { background:var(--noir); color:#fff; padding:10px 14px; border-radius:10px; font-size:13.5px; font-weight:600; box-shadow:0 8px 24px rgba(0,0,0,.2); max-width:420px; animation:monte .2s ease; pointer-events:auto; }
.toast.ok { background:var(--vert); } .toast.err { background:var(--rouge); }

/* Onglets */
.onglets { display:flex; gap:4px; border-bottom:1px solid var(--bord); margin-bottom:14px; overflow-x:auto; }
.onglet { padding:9px 14px; font-weight:700; font-size:13.5px; color:var(--t2); border-bottom:2px solid transparent; cursor:pointer; white-space:nowrap; background:none; border-top:0; border-left:0; border-right:0; }
.onglet.actif { color:var(--bleu); border-bottom-color:var(--bleu); }

/* Planning des terrains */
.planning-nav { display:flex; align-items:center; gap:8px; margin-bottom:12px; flex-wrap:wrap; }
.planning-nav .date { font-weight:800; font-size:16px; flex:1; text-transform:capitalize; }
.planning-nav input[type=date] { padding:7px 10px; border:1px solid var(--bord2); border-radius:8px; }
.planning { display:grid; gap:2px; overflow-x:auto; border:1px solid var(--bord); border-radius:var(--r); background:var(--bord); }
.planning .cell { background:var(--s1); min-height:46px; padding:6px 8px; font-size:12.5px; display:flex; flex-direction:column; justify-content:center; }
.planning .entete-t { font-weight:800; text-align:center; background:var(--s2); }
.planning .entete-t small { display:block; font-weight:500; color:var(--t3); font-size:11px; }
.planning .heure { font-weight:700; color:var(--t2); background:var(--s2); text-align:center; justify-content:center; position:sticky; left:0; z-index:1; }
.planning .libre { cursor:pointer; color:var(--t3); align-items:center; }
.planning .libre:hover { background:var(--bleu-c); color:var(--bleu-f); font-weight:700; }
.planning .passe { background:var(--s3); color:var(--bord2); cursor:not-allowed; }
.planning .occ { background:var(--bleu-c); color:var(--bleu-f); font-weight:600; }
.planning .occ.mienne { background:var(--jaune-c); color:#7a5f00; border-left:3px solid var(--jaune); cursor:pointer; }
.planning .occ.cours { background:var(--vert-c); color:var(--vert); }
.planning .occ.competition { background:var(--rose-c); color:var(--rose-f); }
.planning .occ.entretien, .planning .occ.location, .planning .occ.evenement { background:var(--s3); color:var(--t2); }
.planning .occ.bureau { cursor:pointer; }
.planning .occ .qui { font-size:11.5px; font-weight:500; line-height:1.25; }
.legende { display:flex; gap:12px; flex-wrap:wrap; font-size:12px; color:var(--t2); margin-top:10px; }
.legende span::before { content:''; display:inline-block; width:12px; height:12px; border-radius:3px; margin-right:5px; vertical-align:-2px; background:var(--c); }

/* Tableau de tournoi */
.bracket { display:flex; gap:24px; overflow-x:auto; padding:8px 0; }
.tour { display:flex; flex-direction:column; justify-content:space-around; gap:14px; min-width:200px; }
.tour h4 { font-size:12px; text-transform:uppercase; letter-spacing:.08em; color:var(--t3); text-align:center; }
.match { border:1px solid var(--bord); border-radius:8px; background:var(--s1); overflow:hidden; font-size:13px; cursor:pointer; }
.match .j { padding:7px 10px; display:flex; justify-content:space-between; gap:8px; }
.match .j + .j { border-top:1px solid var(--bord); }
.match .j.g { font-weight:800; background:var(--vert-c); }
.match .j .sc { color:var(--t3); font-variant-numeric:tabular-nums; }
.match .j.vide { color:var(--t3); font-style:italic; }

/* Listes */
.liste { display:flex; flex-direction:column; gap:10px; }
.item { display:flex; gap:12px; align-items:flex-start; padding:12px 14px; border:1px solid var(--bord); border-radius:var(--r); background:var(--s1); }
.item .date-bloc { width:52px; flex:none; text-align:center; background:var(--bleu-c); color:var(--bleu-f); border-radius:8px; padding:6px 0; }
.item .date-bloc b { display:block; font-size:19px; line-height:1; }
.item .date-bloc small { font-size:10.5px; text-transform:uppercase; font-weight:700; color:var(--bleu-f); }
.item .corps { flex:1; min-width:0; }
.item .corps h3 { margin-bottom:2px; }
.item .corps p { color:var(--t2); font-size:13px; white-space:pre-line; }
.bandeau { padding:12px 14px; border-radius:var(--r); font-weight:600; font-size:13.5px; display:flex; gap:10px; align-items:center; margin-bottom:14px; }
.bandeau.info { background:var(--bleu-c); color:var(--bleu-f); }
.bandeau.warn { background:var(--jaune-c); color:#7a5f00; }
.bandeau.err { background:var(--rouge-c); color:var(--rouge); }
.bandeau.ok { background:var(--vert-c); color:var(--vert); }

/* Pages publiques */
.public { min-height:100vh; display:flex; align-items:center; justify-content:center; padding:20px; background:linear-gradient(160deg, #eaf3fb 0%, #fdf0f6 60%, #fff8dc 100%); }
.public .boite { background:var(--s1); border-radius:20px; padding:28px 24px; width:100%; max-width:440px; box-shadow:0 20px 60px -20px rgba(26,125,199,.35); border:1px solid var(--bord); }
.public .boite.large { max-width:720px; }
.public .logo { text-align:center; margin-bottom:18px; }
.public .logo img { height:120px; }
.public h1 { text-align:center; font-size:20px; margin-bottom:4px; }
.public .sous { text-align:center; color:var(--t2); font-size:13.5px; margin-bottom:20px; }
.public .liens { text-align:center; margin-top:16px; font-size:13px; display:flex; flex-direction:column; gap:6px; }
.barre-progression { height:6px; background:var(--s3); border-radius:99px; overflow:hidden; }
.barre-progression i { display:block; height:100%; background:var(--bleu); border-radius:99px; }
.pill-choix { display:grid; gap:8px; }
.pill-choix label { border:1px solid var(--bord2); border-radius:10px; padding:10px 12px; cursor:pointer; display:flex; gap:10px; align-items:center; }
.pill-choix label:has(input:checked) { border-color:var(--bleu); background:var(--bleu-c); }
.pill-choix input { accent-color:var(--bleu); }
.pill-choix .prix { margin-left:auto; font-weight:800; color:var(--bleu-f); }
.avatar { width:36px; height:36px; border-radius:50%; background:var(--bleu); color:#fff; font-weight:800; display:inline-flex; align-items:center; justify-content:center; font-size:13px; flex:none; }
.chargement { text-align:center; color:var(--t3); padding:40px; }
.chargement::after { content:''; display:block; width:26px; height:26px; margin:10px auto 0; border:3px solid var(--bord2); border-top-color:var(--bleu); border-radius:50%; animation:tourne .8s linear infinite; }
@keyframes tourne { to { transform:rotate(360deg) } }
.kv { display:grid; grid-template-columns:auto 1fr; gap:6px 14px; font-size:13.5px; }
.kv dt { color:var(--t3); font-weight:600; } .kv dd { font-weight:600; }
.progress-places { height:6px; background:var(--s3); border-radius:99px; overflow:hidden; margin-top:6px; }
.progress-places i { display:block; height:100%; background:var(--vert); }
.progress-places i.plein { background:var(--rouge); }
pre.contenu-txt { white-space:pre-wrap; font-family:inherit; }

/* ── Planning sur téléphone : 3 courts doivent tenir en largeur ─── */
@media (max-width: 640px) {
  .planning .cell { min-height:42px; padding:4px 5px; font-size:11.5px; }
  .planning .entete-t small { font-size:9.5px; }
  .planning .occ .qui { font-size:10.5px; }
  .planning-nav .date { font-size:14px; width:100%; order:5; }
  .planning-nav input[type=date] { margin-left:auto; }
  .bandeau { font-size:12.5px; padding:10px 12px; }
  h1 { font-size:20px; }
  .contenu { padding:12px 10px 24px; }
  .carte { padding:14px 12px; }
}

/* ── Cartes de courts ─────────────────────────────────────────── */
.courts-strip { display:grid; grid-template-columns:repeat(auto-fill, minmax(230px, 1fr)); gap:12px; margin-top:4px; }
@media (max-width:640px) { .courts-strip { grid-template-columns:repeat(2, 1fr); gap:10px; } }
.court-card { position:relative; text-align:left; border:2px solid var(--bord); border-radius:var(--rl); background:var(--s1); padding:0; overflow:hidden; cursor:pointer; box-shadow:var(--ombre); transition:transform .12s, border-color .12s, box-shadow .12s; display:flex; flex-direction:column; }
.court-card:hover { transform:translateY(-2px); border-color:var(--bord2); }
.court-card.active { border-color:var(--bleu); box-shadow:0 0 0 3px var(--bleu-c), var(--ombre); }
.court-svg { width:100%; height:auto; display:block; aspect-ratio:200/120; }
.court-info { padding:10px 12px 12px; }
.court-nom { font-weight:800; font-size:15px; line-height:1.2; }
.court-meta { color:var(--t2); font-size:12px; margin-top:2px; }
.court-dispo { margin-top:6px; font-size:12px; font-weight:700; color:var(--vert); }
.court-dispo.plein { color:var(--rouge); }
.court-sponsor { position:absolute; top:8px; right:8px; background:rgba(255,255,255,.94); border-radius:8px; padding:4px 6px; display:flex; flex-direction:column; align-items:center; gap:2px; max-width:46%; box-shadow:0 2px 8px rgba(0,0,0,.15); }
.court-sponsor img { height:30px; width:auto; max-width:100%; object-fit:contain; display:block; }
.court-sponsor small { font-size:9.5px; font-weight:700; color:var(--t2); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:100%; }
@media (max-width:640px) { .court-nom { font-size:13.5px; } .court-info { padding:8px 10px 10px; } .court-sponsor img { height:22px; } }

/* Créneaux d'un court (liste) */
.slots { display:grid; grid-template-columns:repeat(auto-fill, minmax(230px, 1fr)); gap:8px; }
@media (max-width:640px) { .slots { grid-template-columns:1fr; } }
.slot { display:flex; align-items:center; gap:10px; padding:10px 12px; border-radius:10px; border:1px solid var(--bord); background:var(--s1); font:inherit; text-align:left; min-height:48px; }
.slot b { min-width:46px; font-size:14px; }
.slot .slot-lib { flex:1; font-size:13px; color:var(--t2); }
.slot.libre { cursor:pointer; border-color:#bfe3cf; }
.slot.libre:hover { background:var(--vert-c); }
.slot.passe { background:var(--s3); color:var(--t3); border-style:dashed; }
.slot.occ { background:var(--bleu-c); border-color:transparent; color:var(--bleu-f); }
.slot.occ .slot-lib { color:inherit; font-weight:600; }
.slot.occ.mienne { background:var(--jaune-c); color:#7a5f00; border-left:4px solid var(--jaune); }
.slot.occ.cours { background:var(--vert-c); color:var(--vert); }
.slot.occ.competition { background:var(--rose-c); color:var(--rose-f); }
.slot.occ.entretien, .slot.occ.location, .slot.occ.evenement { background:var(--s3); color:var(--t2); }
.slot.clic { cursor:pointer; }
.resa-recap { display:flex; gap:12px; align-items:center; background:var(--s2); border-radius:10px; padding:10px; }
.resa-recap .court-svg { width:110px; flex:none; border-radius:8px; }

/* ── Bandeau des partenaires ──────────────────────────────────── */
.bandeau-partenaires { margin:28px auto 0; max-width:1240px; padding:14px 14px 8px; border-top:1px solid var(--bord); text-align:center; }
.bandeau-partenaires h4 { font-size:11px; letter-spacing:.14em; text-transform:uppercase; color:var(--t3); margin-bottom:10px; font-weight:700; }
.bandeau-partenaires .logos { display:flex; flex-wrap:wrap; justify-content:center; gap:10px 22px; align-items:center; }
.bandeau-partenaires .logos a, .bandeau-partenaires .logos span { display:inline-flex; align-items:center; justify-content:center; height:54px; padding:6px 10px; background:var(--s1); border:1px solid var(--bord); border-radius:10px; }
.bandeau-partenaires .logos img { height:40px; width:auto; max-width:130px; object-fit:contain; filter:saturate(.95); }
.public .bandeau-partenaires { border-top:0; margin-top:16px; padding:0; }
.public .bandeau-partenaires .logos a, .public .bandeau-partenaires .logos span { height:46px; background:rgba(255,255,255,.7); }
.public .bandeau-partenaires .logos img { height:32px; width:auto; max-width:100px; }
.logo-apercu { height:48px; max-width:160px; object-fit:contain; border:1px solid var(--bord); border-radius:8px; padding:4px; background:#fff; }

/* ── Sélecteur de semaines (cours) ─────────────────────────────── */
.semaines { display:flex; flex-wrap:wrap; gap:10px; }
.sem-mois { border:1px solid var(--bord); border-radius:8px; padding:6px 8px; min-width:120px; }
.sem-titre { font-size:11px; font-weight:700; text-transform:capitalize; color:var(--t3); margin-bottom:4px; }
.sem-case { display:inline-flex; margin:2px; }
.sem-case input { position:absolute; opacity:0; width:0; height:0; }
.sem-case span { display:inline-flex; align-items:center; justify-content:center; width:32px; height:30px; border-radius:6px; border:1px solid var(--bord2); font-size:12.5px; font-weight:700; color:var(--t3); background:var(--s3); text-decoration:line-through; cursor:pointer; }
.sem-case input:checked + span { background:var(--bleu-c); color:var(--bleu-f); border-color:var(--bleu); text-decoration:none; }
.paie-etat { display:flex; align-items:center; gap:10px; padding:12px 14px; border-radius:10px; font-weight:700; }
.paie-etat.ok { background:var(--vert-c); color:var(--vert); } .paie-etat.ko { background:var(--orange-c); color:var(--orange); }

/* ── Relevé des prestations ────────────────────────────────────── */
.releve { max-width:720px; }
.releve .ligne { display:flex; justify-content:space-between; gap:12px; padding:9px 0; border-bottom:1px dashed var(--bord); }
.releve .ligne small { display:block; color:var(--t3); }
.releve .total { display:flex; justify-content:space-between; padding:12px 0; font-size:17px; font-weight:800; border-top:2px solid var(--noir); margin-top:4px; }
.releve .montant { font-variant-numeric:tabular-nums; white-space:nowrap; font-weight:700; }
@media print { .sidebar, .topbar, .bottom-nav, .bandeau-partenaires, .actions, .no-print { display:none !important; } .main { margin:0 !important; } .carte { box-shadow:none; border:1px solid #ccc; page-break-inside:avoid; } body { background:#fff; } }
/* Éditeur d'email (Quill) */
.ql-toolbar.ql-snow { border-radius:8px 8px 0 0; border-color:var(--bord2); background:var(--s2); }
.ql-container.ql-snow { border-radius:0 0 8px 8px; border-color:var(--bord2); font-family:inherit; font-size:14.5px; }
.ql-editor { min-height:200px; }
#liste-adh input[type=checkbox] { width:18px; height:18px; min-height:0; accent-color:var(--bleu); flex:none; }
#liste-adh label { justify-content:flex-start; }
