/* TennisWeb — feuille de style unique : légère, mobile d'abord, mode sombre automatique. */
:root{
  --ink:#16201b;--muted:#6b7871;--faint:#9aa6a0;--bg:#f7f8f6;--card:#fff;--line:#e8ece9;
  --brand:#15513c;--brand-ink:#fff;--accent:#d4ee5a;--soft:#eef3ef;
  --libre:#f2f7f3;--libre-ink:#2f8a55;--occupe:#f1f3f5;--occupe-ink:#5c6670;--moi:#15513c;--moi-ink:#fff;
  --special:#eef2ff;--special-ink:#3c56b4;--indispo:#fdf0ef;--indispo-ink:#b2453f;--attente:#fff6e2;--attente-ink:#946100;
  --danger:#c2413b;--radius:18px;--ombre:0 1px 2px rgba(20,40,30,.04),0 8px 24px rgba(20,40,30,.06)
}
@media (prefers-color-scheme:dark){:root{
  --ink:#e9efeb;--muted:#9eaca5;--faint:#6f7d76;--bg:#0d1411;--card:#141d19;--line:#232f29;
  --brand:#d4ee5a;--brand-ink:#11190f;--soft:#1a2520;
  --libre:#15211b;--libre-ink:#86d7a4;--occupe:#1b2420;--occupe-ink:#aab6b0;--moi:#d4ee5a;--moi-ink:#11190f;
  --special:#1b2140;--special-ink:#aebcff;--indispo:#2e1a19;--indispo-ink:#ffa9a3;--attente:#2f2612;--attente-ink:#ffd27a;
  --danger:#ff8a83;--ombre:none}}
[hidden]{display:none!important}
*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}
body{margin:0;font:400 16px/1.5 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;color:var(--ink);background:var(--bg);min-height:100dvh;display:flex;flex-direction:column;-webkit-font-smoothing:antialiased}
a{color:inherit}
.ico{width:20px;height:20px;flex:none;vertical-align:-4px}
.conteneur{width:min(1080px,100%);margin:0 auto;padding:0 16px}

/* En-tête */
header.haut{position:sticky;top:0;z-index:20;background:color-mix(in srgb,var(--bg) 82%,transparent);backdrop-filter:saturate(1.4) blur(12px);-webkit-backdrop-filter:saturate(1.4) blur(12px);border-bottom:1px solid color-mix(in srgb,var(--line) 70%,transparent)}
header.haut .conteneur{display:flex;align-items:center;gap:12px;min-height:58px}
.marque{display:flex;align-items:center;gap:10px;font-weight:700;font-size:17px;text-decoration:none;letter-spacing:-.01em;min-width:0}
.marque .balle{width:26px;height:26px;color:var(--brand)}
.marque .nom{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
nav.menu{margin-left:auto;display:flex;gap:2px;align-items:center}
nav.menu a,nav.menu button{display:inline-flex;align-items:center;gap:6px;font:inherit;font-size:14.5px;font-weight:600;text-decoration:none;padding:8px 11px;border-radius:999px;border:0;background:none;color:var(--muted);cursor:pointer}
nav.menu a[aria-current=page]{color:var(--ink);background:var(--soft)}
nav.menu a:hover,nav.menu button:hover{color:var(--ink)}
@media (max-width:640px){nav.menu span:not(.moi){display:none}nav.menu a,nav.menu button{padding:9px}}

main{flex:1;padding:18px 0 56px}
h1{font-size:clamp(24px,5vw,32px);line-height:1.15;letter-spacing:-.02em;margin:6px 0 8px;font-weight:700}
h2{font-size:17px;margin:28px 0 10px;font-weight:650}
.sous{color:var(--muted);margin:0 0 20px}
.aide{color:var(--muted);font-size:14px}
.carte{background:var(--card);border-radius:var(--radius);padding:clamp(16px,4vw,24px);box-shadow:var(--ombre);border:1px solid var(--line)}
@media (prefers-color-scheme:light){.carte{border-color:transparent}}
.grille-cartes{display:grid;gap:14px;grid-template-columns:repeat(auto-fill,minmax(250px,1fr))}
.actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:20px}

/* Boutons */
.bouton{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:50px;padding:0 22px;border-radius:14px;border:0;font:inherit;font-weight:650;text-decoration:none;cursor:pointer;background:var(--brand);color:var(--brand-ink);transition:transform .1s}
.bouton:active{transform:scale(.98)}
.bouton.secondaire{background:var(--soft);color:var(--ink)}
.bouton.discret{background:none;color:var(--muted)}
.bouton.danger{background:var(--danger);color:#fff}
.bouton.plein{width:100%;margin-top:10px}
.rond{display:inline-grid;place-items:center;width:40px;height:40px;border-radius:50%;border:0;background:var(--soft);color:var(--ink);cursor:pointer;text-decoration:none;flex:none}
.rond.inactif{opacity:.3;pointer-events:none}

/* Formulaires */
.formulaire{width:min(420px,100%);margin:0 auto}
.formulaire label{display:block;font-weight:600;margin:16px 0 6px;font-size:15px}
.champ,.formulaire input[type=text],.formulaire input[type=password],.formulaire input[type=email]{width:100%;min-height:50px;padding:0 14px;font:inherit;border:1.5px solid var(--line);border-radius:14px;background:var(--card);color:var(--ink)}
.champ:focus,.formulaire input:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 4px color-mix(in srgb,var(--accent) 45%,transparent)}
.champ+.champ{margin-top:8px}
.case-a-cocher{display:flex!important;align-items:center;gap:10px;font-weight:500!important}
.case-a-cocher input{width:20px;height:20px;accent-color:var(--brand)}

/* Messages */
.alerte{display:flex;gap:12px;align-items:flex-start;background:var(--indispo);color:var(--indispo-ink);border-radius:16px;padding:14px 16px;margin:0 0 16px}
.alerte p{margin:0 0 4px}.alerte .aide{color:inherit;opacity:.8}
.erreur{background:var(--indispo);color:var(--indispo-ink);border-radius:14px;padding:12px 14px;margin:12px 0}
.info,.bandeau{background:var(--soft);border-radius:14px;padding:12px 14px;margin:12px 0}
.toast{position:fixed;left:50%;bottom:calc(20px + env(safe-area-inset-bottom));transform:translateX(-50%);z-index:50;display:flex;gap:10px;align-items:center;max-width:min(520px,calc(100% - 32px));background:var(--ink);color:var(--bg);padding:12px 18px;border-radius:16px;box-shadow:0 10px 30px rgba(0,0,0,.2);font-weight:550;transition:opacity .4s,transform .4s}
.toast .ico{color:var(--accent)}
.toast.parti{opacity:0;transform:translate(-50%,20px);pointer-events:none}

/* Planning : jour, jours, groupes */
.planning-tete{display:flex;align-items:center;gap:12px;margin:4px 0 12px}
.date-du-jour{flex:1;text-align:center;line-height:1.2}
.date-du-jour strong{display:block;font-size:20px;letter-spacing:-.01em}
.date-du-jour span{color:var(--muted);font-size:14px}
.jours{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;margin:0 -16px 12px;padding:0 16px}
.jours::-webkit-scrollbar{display:none}
.jours a{flex:1 0 44px;display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 0;border-radius:14px;text-decoration:none;font-weight:650;font-size:16px;color:var(--ink)}
.jours a small{font-size:11.5px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}
.jours a[aria-current=page]{background:var(--brand);color:var(--brand-ink)}
.jours a[aria-current=page] small{color:inherit;opacity:.8}
.segments{display:flex;gap:4px;padding:4px;background:var(--soft);border-radius:14px;margin-bottom:14px;overflow-x:auto;scrollbar-width:none}
.segments a{flex:1;text-align:center;white-space:nowrap;padding:9px 14px;border-radius:11px;text-decoration:none;font-weight:600;font-size:14.5px;color:var(--muted)}
.segments a[aria-current=page]{background:var(--card);color:var(--ink);box-shadow:0 1px 3px rgba(0,0,0,.08)}

/* Planning : grille */
.planning-cadre{overflow-x:auto;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch;margin:0 -16px;padding:0 16px}
table.planning{border-collapse:separate;border-spacing:5px;table-layout:fixed;width:100%;min-width:calc(48px + var(--nb) * 96px)}
table.planning th{font-size:13px;font-weight:650;color:var(--muted);padding:2px 2px 6px;background:var(--bg);text-align:center}
table.planning th.heure,table.planning td.heure{position:sticky;left:0;background:var(--bg);width:44px;font-variant-numeric:tabular-nums;color:var(--faint);font-weight:600;font-size:13px;text-align:right;padding-right:6px;z-index:1}
table.planning td{padding:0;height:50px;overflow:hidden}
.c span{min-width:0;word-break:break-word}
.c{display:flex;align-items:center;justify-content:center;gap:6px;width:100%;height:100%;min-height:50px;padding:4px 8px;border-radius:12px;border:0;font:inherit;font-size:12.5px;line-height:1.2;text-align:center;text-decoration:none;overflow:hidden}
.c span{overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.c .ico{width:18px;height:18px}
.c.libre{background:var(--libre);color:var(--libre-ink);transition:background .15s,transform .1s}
.c.libre .ico{opacity:.55}
.c.libre:hover,.c.libre:focus-visible{background:color-mix(in srgb,var(--libre-ink) 18%,var(--libre));outline:none}
.c.libre:hover .ico{opacity:1}
.c.libre:active{transform:scale(.96)}
.c.moi{background:var(--moi);color:var(--moi-ink);font-weight:600;cursor:pointer}
.c.occupe{background:var(--occupe);color:var(--occupe-ink)}
.c.occupe .lecteur{font-size:12px}
.c.special{background:var(--special);color:var(--special-ink);font-weight:600}
.c.indispo{background:var(--indispo);color:var(--indispo-ink);font-weight:600}
.c.attente{background:var(--attente);color:var(--attente-ink)}
.c.passe{background:repeating-linear-gradient(-45deg,transparent 0 6px,color-mix(in srgb,var(--line) 60%,transparent) 6px 7px)}
.astuce{display:flex;flex-wrap:wrap;align-items:center;gap:4px;color:var(--muted);font-size:13.5px;margin:14px 0 0}
.astuce .ico{width:16px;height:16px}
.vide{display:flex;flex-direction:column;align-items:center;gap:10px;color:var(--muted);padding:48px 16px;text-align:center}
.vide .ico{width:36px;height:36px;opacity:.5}
body.glisse-gauche main{animation:sortieG .18s ease-in forwards}
body.glisse-droite main{animation:sortieD .18s ease-in forwards}
@keyframes sortieG{to{opacity:0;transform:translateX(-24px)}}
@keyframes sortieD{to{opacity:0;transform:translateX(24px)}}

/* Feuilles d'action (en bas de l'écran sur téléphone, au centre sur ordinateur) */
dialog.feuille{border:0;padding:0;width:min(460px,100%);max-height:88dvh;background:var(--card);color:var(--ink);border-radius:24px;box-shadow:0 20px 60px rgba(0,0,0,.25)}
dialog.feuille::backdrop{background:rgba(10,20,15,.35);backdrop-filter:blur(2px)}
dialog.feuille form{padding:18px 18px calc(18px + env(safe-area-inset-bottom))}
@media (max-width:640px){dialog.feuille{margin:auto 0 0;max-width:100%;width:100%;border-radius:24px 24px 0 0}dialog.feuille[open]{animation:monte .22s ease-out}}
@keyframes monte{from{transform:translateY(40px);opacity:.4}}
.feuille-tete{display:flex;align-items:center;gap:12px;margin-bottom:6px}
.feuille-tete strong{flex:1;font-size:17px}
.feuille-question{color:var(--muted);margin:4px 0 10px;font-weight:600}
.puces{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 12px}
.puce{position:relative;display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:0 14px 0 6px;border-radius:999px;background:var(--soft);font-weight:600;font-size:15px;cursor:pointer;user-select:none}
.puce .initiales{display:inline-grid;place-items:center;width:32px;height:32px;border-radius:50%;background:var(--card);font-size:12.5px;font-weight:700;color:var(--muted)}
.puce:has(input:checked){background:var(--brand);color:var(--brand-ink)}
.puce:has(input:checked) .initiales{background:var(--accent);color:#11190f}
.puce input{position:absolute;opacity:0;pointer-events:none}
details.invites{margin:12px 0 4px}
details.invites summary{display:flex;align-items:center;gap:8px;cursor:pointer;color:var(--muted);font-weight:600;min-height:40px;list-style:none}
details.invites summary::-webkit-details-marker{display:none}
details.invites .champ{margin-top:6px}

/* Mes réservations */
.liste-resa{display:grid;gap:10px}
.resa{display:flex;align-items:center;justify-content:space-between;gap:12px}
.resa .quand{display:flex;flex-direction:column;align-items:center;justify-content:center;width:56px;height:56px;border-radius:14px;background:var(--soft);flex:none;line-height:1.1}
.resa .quand strong{font-size:19px}.resa .quand small{font-size:11px;color:var(--muted);text-transform:uppercase}
.resa .detail{flex:1;min-width:0}
.resa.passee{opacity:.65}
.etiquette{display:inline-block;margin-top:4px;padding:2px 10px;border-radius:999px;font-size:12.5px;font-weight:600}
.etiquette.attente{background:var(--attente);color:var(--attente-ink)}
.resume{font-size:17px}
footer.bas{color:var(--faint);font-size:13px;padding:18px 0;text-align:center}

/* Espace admin */
.admin-nav{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;margin:0 -16px 14px;padding:2px 16px}
.admin-nav::-webkit-scrollbar{display:none}
.admin-nav a{display:inline-flex;align-items:center;gap:7px;white-space:nowrap;padding:9px 14px;border-radius:999px;background:var(--soft);text-decoration:none;font-weight:600;font-size:14.5px;color:var(--muted)}
.admin-nav a[aria-current=page]{background:var(--brand);color:var(--brand-ink)}
.admin-nav .ico{width:18px;height:18px}
.titre-actions{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.titre-actions .bouton{min-height:44px;padding:0 16px}
h2 .ico{vertical-align:-3px;color:var(--muted)}
.tuiles{display:grid;gap:12px;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));margin-top:18px}
.tuile{display:flex;flex-direction:column;gap:2px;padding:18px;border-radius:var(--radius);background:var(--card);border:1px solid var(--line);box-shadow:var(--ombre);text-decoration:none;transition:transform .1s}
.tuile:active{transform:scale(.98)}
.tuile .ico{width:28px;height:28px;color:var(--brand);margin-bottom:10px}
.tuile strong{font-size:17px}.tuile span{color:var(--muted);font-size:14px}
.rond.plein{background:var(--brand);color:var(--brand-ink)}
.resa form{margin:0}

/* Listes (courts, horaires, membres, journal) */
.carte.lignes,.carte.groupe{padding:6px}
.carte.groupe{margin-bottom:14px}
.groupe-tete{display:flex;align-items:center;justify-content:space-between;padding:8px 10px 4px}
.groupe-tete h2{margin:0}
.ligne{display:flex;align-items:center;gap:12px;width:100%;min-height:60px;padding:8px 10px;border:0;border-radius:14px;background:none;font:inherit;color:inherit;text-align:left;text-decoration:none;cursor:pointer}
button.ligne:hover,a.ligne:hover{background:var(--soft)}
.ligne+.ligne{border-top:1px solid var(--line);border-radius:0}
.ligne>.ico{color:var(--muted)}
.ligne .fleche{width:16px;height:16px;color:var(--faint)}
.ligne-texte{flex:1;min-width:0;display:flex;flex-direction:column}
.ligne-texte small{color:var(--muted);font-size:13.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ligne.masque{opacity:.55}
.ligne.ajout{color:var(--libre-ink);font-weight:600}
.ligne.ajout .ico{color:inherit}
.journal .ligne{cursor:default}
.avatar{display:inline-grid;place-items:center;width:40px;height:40px;border-radius:50%;background:var(--soft);font-weight:700;font-size:13.5px;color:var(--muted);flex:none}
.etiquette{background:var(--soft);color:var(--muted)}
.etiquette.role{background:color-mix(in srgb,var(--accent) 40%,var(--card));color:var(--ink)}
.etiquette.suspendu{background:var(--indispo);color:var(--indispo-ink)}
.mini-jours{display:flex;gap:3px;margin-top:4px}
.mini-jours i{font-style:normal;font-size:11px;font-weight:700;width:22px;text-align:center;padding:1px 0;border-radius:6px;color:var(--faint)}
.mini-jours i.on{background:var(--soft);color:var(--ink)}
.segments small{opacity:.6;font-weight:600;margin-left:3px}
.recherche{position:relative;margin:10px 0}
.recherche .ico{position:absolute;left:14px;top:15px;color:var(--faint)}
.recherche .champ{padding-left:44px}
.pages{display:flex;align-items:center;justify-content:center;gap:14px;margin:16px 0;color:var(--muted)}
.retour{display:inline-flex;align-items:center;gap:4px;color:var(--muted);text-decoration:none;font-weight:600;font-size:14.5px}

/* Formulaires de l'admin */
.form label{display:block;font-weight:600;font-size:14.5px;margin:0}
.form label small{font-weight:500;color:var(--muted)}
.form label .champ{margin-top:6px}
.form>label,.form .feuille-tete+label{margin-top:12px}
.form .case-a-cocher{margin:12px 0 0}
.champs{display:grid;gap:14px;grid-template-columns:repeat(auto-fill,minmax(220px,1fr))}
.champs .large{grid-column:1/-1}
select.champ{appearance:none;-webkit-appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--muted) 50%),linear-gradient(135deg,var(--muted) 50%,transparent 50%);background-position:calc(100% - 20px) 50%,calc(100% - 15px) 50%;background-size:5px 5px;background-repeat:no-repeat;padding-right:36px}
textarea.champ{padding:12px 14px;min-height:90px;resize:vertical}
.champ.nombre{width:110px;text-align:center}
.jours-choix .puce{padding:0 16px;min-width:52px;justify-content:center}
.bouton.discret[data-arme]{background:var(--danger);color:#fff}
.mdp{display:flex;gap:14px;align-items:center;margin-bottom:16px;border:2px dashed var(--accent)}
.mdp>.ico{width:30px;height:30px;color:var(--brand)}
.mdp div{display:flex;flex-direction:column;gap:2px}
.mdp .secret{font-size:24px;letter-spacing:.06em;font-family:ui-monospace,Menlo,monospace;user-select:all}
.info{display:flex;gap:10px;align-items:flex-start}

/* Règles */
.carte.regles{padding:4px 18px}
.regle{display:flex;align-items:center;gap:16px;padding:14px 0}
.regle+.regle{border-top:1px solid var(--line)}
.regle-texte{flex:1;display:flex;flex-direction:column;gap:2px}
.regle-texte strong{font-size:15.5px}
.regle-valeur{flex:none;max-width:55%}
.case-a-cocher.petit{font-size:14px;margin-top:6px}
.case-a-cocher.petit input{width:18px;height:18px}
.regle[data-suit-le-club] .regle-valeur{opacity:.4;pointer-events:none}
@media (max-width:640px){.regle{flex-wrap:wrap}.regle-valeur{max-width:100%}.regle-valeur select.champ{width:100%}}
.interrupteur{position:relative;display:inline-block;width:52px;height:32px;cursor:pointer}
.interrupteur input{position:absolute;opacity:0;width:100%;height:100%;margin:0;cursor:pointer}
.interrupteur span{position:absolute;inset:0;border-radius:999px;background:var(--line);transition:background .15s;pointer-events:none}
.interrupteur span::after{content:"";position:absolute;top:3px;left:3px;width:26px;height:26px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.2);transition:transform .15s}
.interrupteur input:checked+span{background:var(--brand)}
.interrupteur input:checked+span::after{transform:translateX(20px)}
.interrupteur input:focus-visible+span{box-shadow:0 0 0 4px color-mix(in srgb,var(--accent) 45%,transparent)}
.puce.sans-initiales{padding:0 16px}
.feuille-question small{font-weight:500}
