/* OneCourt — application club (thème sombre). La couleur d'accent pourra devenir un réglage par club. */
:root{
  --bg:#0B0E14; --bg-2:#11151F; --card:#161B26; --card-2:#1D2330; --line:#ffffff17; --line-2:#ffffff29;
  --text:#F3F4F6; --muted:#9CA3AF; --faint:#6B7280;
  --accent:rgb(var(--c-accent)); --accent-2:rgb(var(--c-accent2)); --accent-bg:rgb(var(--c-accent) / .141);
  --ok:#3DD68C; --ok-bg:#3DD68C1f; --ko:#FF6B6B; --ko-bg:#FF6B6B1f; --warn:#F5B547;
  --radius:16px; --font-title:Montserrat,Inter,system-ui,sans-serif; --font:Inter,system-ui,-apple-system,"Segoe UI",sans-serif;
  --top-h:60px; --tabs-h:64px; --safe-b:env(safe-area-inset-bottom,0px); --safe-t:env(safe-area-inset-top,0px);
  /* Couleurs du club en R V B (13 nov. 2026) : un autre club les remplace (frontend/clubs/<club>/club.json). */
  --c-accent:229 72 77; --c-accent2:255 138 142; --c-line:255 106 110; --c-glow:227 23 30; --c-dark:204 51 68; --c-glow2:255 90 96; --c-light:242 102 107; --c-court:42 15 20;
  /* Deuxième couleur des halos (violet pour l'ASLMA). */
  --c-alt:110 86 207; --c-alt2:142 124 255; --c-alt3:62 99 221; --c-alt4:123 92 255;
}
*{box-sizing:border-box}
/* Fond noir porté par html seulement : un fond sur body passerait par-dessus le terrain et les halos (z-index -1). */
html{background:var(--bg)}
/* Comme une appli : rien ne dépasse sur les côtés, pas de zoom ni de rebond horizontal. */
/* clip (et non hidden) : coupe le débordement horizontal sans faire de body un conteneur de défilement,
   sinon l'en-tête et les filtres « sticky » ne restent plus en haut. hidden : repli des vieux navigateurs. */
html,body{overflow-x:hidden;overflow-x:clip;overscroll-behavior-x:none;max-width:100%}
body{touch-action:pan-y}
.chips,.sy-steps,.stats-card,.sheet{touch-action:pan-x pan-y}
button,a,.chip{touch-action:manipulation}
/* iPhone : un champ en dessous de 16 px déclenche un zoom automatique quand on le touche. */
input,select,textarea{font-size:16px!important}
html,body{margin:0;color:var(--text);font:15px/1.45 var(--font);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer}
a{color:var(--accent-2)}
[hidden]{display:none!important}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}

/* --- En-tête : écusson du club | logo OneCourt au centre | compte --- */
/* En haut de page, l'en-tête se fond dans le fond (pas de bandeau sous l'heure de l'iPhone) ;
   le fond flouté n'apparaît qu'une fois la page défilée (classe « scrolled », posée par app.js). */
.topbar{position:sticky;top:0;z-index:20;padding-top:var(--safe-t);border-bottom:1px solid transparent;transition:background-color .2s,border-color .2s}
.topbar.scrolled{background:#07070A;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom-color:var(--line)}
.topbar-inner{max-width:1100px;margin:0 auto;height:var(--top-h);display:grid;grid-template-columns:1fr auto 1fr;align-items:center;padding:0 16px}
.crest{justify-self:start;display:flex;align-items:center;gap:10px;background:none;border:0;padding:0}
.crest img{width:40px;height:40px;object-fit:contain;filter:drop-shadow(0 2px 6px #000a)}
.crest-name{font:800 16px var(--font-title);letter-spacing:.02em}
.oc-center{display:flex;align-items:center;gap:9px;text-decoration:none;color:var(--text)}
.oc-center img{height:34px;width:auto}
.oc-wordmark{font-family:var(--font-title);font-size:18px;letter-spacing:.03em;white-space:nowrap}
.oc-one{font-weight:800}.oc-court{font-weight:300}
.account{justify-self:end;width:40px;height:40px;border-radius:12px;border:1px solid var(--line-2);background:var(--card);display:grid;place-items:center}
.account svg,.tabs svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}

/* --- Navigation : barre du bas sur mobile, onglets sous l'en-tête sur ordinateur --- */
.tabs{position:sticky;top:calc(var(--top-h) + var(--safe-t));z-index:19;display:flex;justify-content:center;gap:4px;padding:6px 16px 8px;background:#0B0E14f2;border-bottom:1px solid var(--line)}
.tabs button{display:flex;align-items:center;gap:8px;padding:9px 16px;border-radius:12px;border:0;background:none;color:var(--muted);font-weight:600}
.tabs button.on{background:var(--accent-bg);color:var(--accent)}
@media (max-width:720px){
  .crest-name{display:none}
  .oc-center img{height:30px}.oc-wordmark{font-size:16px}
  :root{--top-h:52px}
  .crest img{width:36px;height:36px}
  .account{width:36px;height:36px;border-radius:11px}
  .tabs{position:fixed;top:auto;left:0;right:0;bottom:0;z-index:20;margin:0;max-width:none;border-bottom:0;padding:6px 6px calc(6px + var(--safe-b));background:#0B0E14f7;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-top:1px solid var(--line);justify-content:space-around}
  .tabs button{flex-direction:column;gap:3px;padding:6px 4px;font-size:11px;flex:1;border-radius:10px}
  .tabs button.on{background:none}
  .main{padding-bottom:calc(var(--tabs-h) + var(--safe-b) + 20px)!important}
}
@media (max-width:340px){.oc-wordmark{display:none}}

.main{max-width:760px;margin:0 auto;padding:14px 16px 40px;outline:none}
.view{display:none}.view.on{display:block}
h1,h2,h3{font-family:var(--font-title);margin:0}
.section-title{font:800 13px var(--font-title);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:22px 4px 10px}

/* --- Filtres --- */
.filters{position:sticky;top:calc(var(--top-h) + var(--safe-t) + 57px);z-index:10;background:#0B0E14e6;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);padding:6px 0 10px;margin:0 -16px;padding-left:16px;padding-right:16px}
@media (max-width:720px){.filters{top:calc(var(--top-h) + var(--safe-t))}}
.seg{display:flex;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:3px;gap:3px}
.seg button{flex:1;border:0;background:none;color:var(--muted);padding:8px 6px;border-radius:9px;font-weight:600;font-size:14px}
.seg button.on{background:var(--card-2);color:var(--text);box-shadow:0 1px 0 #ffffff10 inset}
.chips{display:flex;gap:8px;overflow-x:auto;padding:10px 0 2px;scrollbar-width:none}
.chips::-webkit-scrollbar{display:none}
.chip{flex:0 0 auto;border:1px solid var(--line-2);background:none;color:var(--muted);padding:7px 13px;border-radius:999px;font-weight:600;font-size:13px;white-space:nowrap}
.chip.on{background:var(--accent);border-color:var(--accent);color:#0B0E14}

/* --- Cartes de match --- */
.day{margin-top:16px}
.day-head{display:flex;align-items:baseline;justify-content:space-between;margin:0 4px 8px}
.day-head h2{font-size:14px;font-weight:800;letter-spacing:.05em;text-transform:uppercase}
.day-head .rel{font-size:12px;color:var(--accent-2);font-weight:600}
.card{background:linear-gradient(180deg,#1D2330d9,#161B26cc);border:1px solid var(--line);border-radius:var(--radius)}
.match{display:block;width:100%;text-align:left;padding:13px 14px;margin-bottom:10px;transition:transform .12s,border-color .12s}
.match{cursor:pointer;color:inherit}
.match:active{transform:scale(.985)}
.match:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.quick-dispo{margin-top:10px;padding-top:10px;border-top:1px solid var(--line);display:grid;gap:8px}
.qd-row{display:flex;align-items:center;gap:8px}.qd-who{flex:1;font-size:13px;font-weight:600}
.btn.danger.on{background:var(--ko-bg)}
.match:hover{border-color:var(--line-2)}
.match-date{font:700 12px var(--font-title);letter-spacing:.06em;text-transform:uppercase;color:var(--accent);margin-bottom:6px}
.match-top{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--muted)}
.time{font:800 15px var(--font-title);color:var(--text)}
.cat{font-weight:700;color:var(--text);background:var(--card-2);padding:2px 8px;border-radius:7px;font-size:12px}
.pill{margin-left:auto;font-size:11px;font-weight:700;padding:3px 9px;border-radius:999px;letter-spacing:.02em}
.pill.home{background:var(--accent-bg);color:var(--accent-2)}
.pill.away{background:#ffffff12;color:var(--muted)}
.match-title{display:flex;align-items:center;gap:10px;margin:9px 0 4px}
.logo{width:30px;height:30px;border-radius:50%;background:#fff;object-fit:contain;flex:0 0 30px}
.logo.ph{display:grid;place-items:center;background:var(--card-2);color:var(--muted);font:700 11px var(--font-title)}
.opp{font-weight:600;font-size:16px;line-height:1.25}
.opp small{display:block;font-weight:500;font-size:12px;color:var(--muted)}
.venue{font-size:12.5px;color:var(--muted);display:flex;gap:6px;align-items:center}
.slots{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-top:11px}
.slot{font-size:11.5px;font-weight:700;text-align:center;padding:5px 2px;border-radius:8px}
.slot.ok{background:var(--ok-bg);color:var(--ok)}
.slot.ko{background:var(--ko-bg);color:var(--ko)}
.score{margin-left:auto;display:flex;align-items:center;gap:8px;font:800 18px var(--font-title)}
.res{font:800 12px var(--font-title);padding:3px 8px;border-radius:7px}
.res.win{background:var(--ok-bg);color:var(--ok)}.res.loss{background:var(--ko-bg);color:var(--ko)}.res.draw{background:#ffffff14;color:var(--muted)}

/* --- Fiche équipe --- */
.team-card{padding:16px;margin-top:6px}
/* Fiche équipe en carte détail : la carte commence sous la croix de fermeture (sinon l'étoile la touche) */
#sheetBody > .team-card:first-child{margin-top:40px}
.team-card h2{font-size:18px;font-weight:800}
.team-card .meta{color:var(--muted);font-size:13px;margin-top:2px}
.stats3{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:14px}
.stat{background:var(--card-2);border-radius:12px;padding:10px}
.stat b{display:block;font:800 18px var(--font-title)}
.stat span{font-size:12px;color:var(--muted)}

/* --- Classements --- */
.standings{width:100%;border-collapse:collapse;font-size:14px}
.standings th{font-size:11px;font-weight:700;color:var(--faint);text-transform:uppercase;letter-spacing:.06em;text-align:right;padding:6px 6px}
.standings th:nth-child(2){text-align:left}
.standings td{padding:9px 6px;border-top:1px solid var(--line);text-align:right}
.standings td:first-child{text-align:center;color:var(--muted);width:30px}
.standings td:nth-child(2){text-align:left;font-weight:500}
.standings tr.club td{color:var(--accent-2);font-weight:700}
.standings tr.club td:nth-child(2){font-weight:800}
.board{padding:14px 14px 6px;margin-bottom:12px}
.board-head{display:flex;justify-content:space-between;align-items:baseline;gap:10px}
.board-head h3{font-size:15px;font-weight:800}
.board-head span{font-size:12px;color:var(--muted)}

/* --- Panneau (bottom sheet) --- */
.sheet-backdrop{position:fixed;inset:0;z-index:50;overscroll-behavior:contain;background:#000a;display:flex;align-items:flex-end;justify-content:center;animation:fade .15s}
.sheet{position:relative;width:100%;max-width:560px;max-height:88vh;overflow:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;background:var(--bg-2);border:1px solid var(--line-2);border-bottom:0;border-radius:22px 22px 0 0;padding:10px 18px calc(22px + var(--safe-b));animation:up .2s ease-out}
@media (min-width:721px){.sheet-backdrop{align-items:center}.sheet{border-radius:22px;border-bottom:1px solid var(--line-2)}}
.sheet-grab{width:40px;height:4px;border-radius:2px;background:var(--line-2);margin:0 auto 12px}
.sheet-close{position:absolute;top:12px;right:14px;width:34px;height:34px;border-radius:50%;border:0;background:var(--card);color:var(--muted);font-size:22px;line-height:1}
.sheet h2{font-size:20px;font-weight:800;padding-right:40px}
.sheet .sub{color:var(--muted);font-size:13px}
.rows{margin-top:14px;border-top:1px solid var(--line)}
.rowline{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:11px 0;border-bottom:1px solid var(--line)}
.rowline label,.rowline .k{font-weight:600}
.rowline select{max-width:60%;background:var(--card);border:1px solid var(--line-2);border-radius:10px;padding:8px 10px}
.who{color:var(--ok);font-weight:600}.who.none{color:var(--ko)}.who.me{color:var(--accent)}
.slot-right{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end}
.btn.small{padding:6px 12px;font-size:13px;min-height:0}
.slot.me{background:var(--accent);color:#0B0E14}
.code{font:700 18px ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.12em;background:#000;border:1px solid var(--line-2);padding:8px 12px;border-radius:10px}
.code.none{font:600 12px var(--font);letter-spacing:0;color:var(--muted);background:none}
.actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}
.btn{border:1px solid var(--line-2);background:var(--card);color:var(--text);padding:10px 14px;border-radius:12px;font-weight:600;text-decoration:none;display:inline-flex;align-items:center;gap:8px}
.btn.primary{background:var(--accent);border-color:var(--accent);color:#0B0E14}
.btn.block{width:100%;justify-content:center}
.field{display:block;margin-top:12px}
.field span{display:block;font-size:12px;color:var(--muted);margin-bottom:5px}
.field input,.field select,.field textarea{width:100%;background:var(--card);border:1px solid var(--line-2);border-radius:12px;padding:11px 12px;outline:none;color:inherit;font:inherit}
.field textarea{resize:vertical}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--accent)}
.team-row{display:flex;align-items:center;gap:12px;width:100%;padding:13px 14px;margin-bottom:8px;text-align:left;color:inherit;cursor:pointer}
.team-row .name{font-weight:700}.team-row .sub{font-size:12px;color:var(--muted)}
.team-row .rank{font:800 18px var(--font-title);color:var(--accent)}.team-row .rank small{font-size:11px}
.chev{color:var(--muted);font-size:22px;line-height:1}
.back{background:none;border:0;color:var(--accent);font-weight:700;padding:6px 2px;cursor:pointer}
.avatar.num{color:var(--text);font-size:14px}
select.btn{appearance:auto}
.badge.yes{background:var(--ok-bg);color:var(--ok)}
.list-head{padding:8px 14px 2px;font-size:11px;text-transform:uppercase;letter-spacing:.06em}
details summary{list-style:revert}
.err{color:var(--ko);font-size:13px;margin-top:10px;min-height:1em}

/* --- Compte --- */
.account .initial{font:800 17px var(--font-title)}
.account.logged{background:var(--accent);color:#0B0E14;border-color:var(--accent)}
.check{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;margin-top:8px;border:1px solid var(--line-2);border-radius:12px;background:var(--card);cursor:pointer}
.check input{margin-top:3px;accent-color:var(--accent);width:18px;height:18px;flex:0 0 18px}
.check b{display:block;font-weight:600;color:var(--text)}
.check small{display:block;color:var(--muted);font-size:12px}
.profile-head{display:flex;align-items:center;gap:14px}
.avatar.big{width:54px;height:54px;flex:0 0 54px;font-size:22px;background:var(--accent);color:#0B0E14}
.badges{display:flex;flex-wrap:wrap;gap:6px;margin-top:14px}
.badge{font-size:12px;font-weight:700;padding:4px 10px;border-radius:999px;background:var(--accent-bg);color:var(--accent-2)}
.badge.wait{background:#ffffff12;color:var(--muted)}

/* --- Administration --- */
.tabs button{position:relative}
.tab-badge{position:absolute;top:2px;right:calc(50% - 22px);min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:var(--ko);color:#fff;font:800 11px/18px var(--font);text-align:center}
@media (min-width:721px){.tab-badge{position:static;margin-left:4px}}
.search{width:100%;background:var(--card);border:1px solid var(--line-2);border-radius:12px;padding:11px 12px;outline:none;margin-bottom:10px}
.search:focus{border-color:var(--accent)}
.search-wrap{position:relative;display:block}
.search-wrap .ic{position:absolute;left:12px;top:12px;width:18px;height:18px;color:var(--muted);pointer-events:none}
.search-wrap .search{padding-left:38px}
.member-badges{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}
.member-badges .badge{font-size:11px;padding:2px 8px}
.badge.no{background:var(--ko-bg);color:var(--ko)}
.pending-card{padding:14px;margin-bottom:10px}
.pending-card .actions{margin-top:10px}
.switch{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 0;border-bottom:1px solid var(--line)}
.switch .k{font-weight:600}.switch small{display:block;color:var(--muted);font-size:12px;font-weight:400}
.switch select{background:var(--card);border:1px solid var(--line-2);border-radius:10px;padding:8px 10px}
.btn.danger{border-color:#FF6B6B66;color:var(--ko)}

/* --- Officiels --- */
.person{display:flex;align-items:center;gap:12px;padding:11px 14px;border-top:1px solid var(--line)}
.person:first-child{border-top:0}
.avatar{width:36px;height:36px;border-radius:50%;background:var(--card-2);display:grid;place-items:center;font:800 13px var(--font-title);color:var(--accent-2);flex:0 0 36px}
.person .name{font-weight:600}
.person .sub{font-size:12px;color:var(--muted)}
.person .pts{margin-left:auto;text-align:right;font:800 16px var(--font-title)}
.person .pts small{display:block;font:500 11px var(--font);color:var(--muted)}
.person.off{opacity:.55}

/* --- e-Marque --- */
.em-row{display:flex;align-items:center;gap:12px;padding:12px 14px;margin-bottom:8px}
.em-row .info{min-width:0;flex:1}
.em-row .t{font-weight:600}
.em-row .sub{font-size:12px;color:var(--muted)}

/* --- Divers --- */
.empty{text-align:center;color:var(--muted);padding:32px 16px}
.skel{height:108px;border-radius:var(--radius);background:linear-gradient(90deg,var(--card) 0%,var(--card-2) 50%,var(--card) 100%);background-size:200% 100%;animation:shine 1.2s infinite;margin-bottom:10px}
.banner{display:flex;align-items:center;gap:12px;padding:12px 14px;margin-bottom:12px;border-color:rgb(var(--c-accent) / 0.333);background:rgb(var(--c-accent) / 0.071)}
.footer{margin-top:34px;text-align:center;color:var(--faint);font-size:12px}
.footer a{color:var(--muted)}
.footer .links{display:flex;justify-content:center;gap:10px;margin-bottom:10px;flex-wrap:wrap}
.footer .legal{margin-top:8px}
.footer .oc-brand{display:flex;justify-content:center;align-items:center;gap:9px;margin-top:22px;color:var(--text)}
.footer .oc-brand img{height:28px;width:auto}
.footer .oc-brand .oc-wordmark{font-size:16px}
.toast{position:fixed;left:50%;bottom:calc(var(--tabs-h) + var(--safe-b) + 16px);transform:translateX(-50%);z-index:60;background:var(--card-2);border:1px solid var(--line-2);padding:10px 16px;border-radius:12px;font-weight:600;max-width:90vw}
@keyframes up{from{transform:translateY(30px);opacity:0}}
@keyframes fade{from{opacity:0}}
@keyframes shine{to{background-position:-200% 0}}
.pill.flag{background:var(--accent);color:#0B0E14}.pill.flag + .pill{margin-left:0}
.pill.flag.ask{background:#FFC94D26;color:#FFC94D}
.check .badge{margin-left:auto;align-self:center}
button.badge{border:0;font-family:inherit;cursor:pointer}
.saved-ok{width:56px;height:56px;margin:4px auto 10px;border-radius:50%;background:var(--ok-bg);color:var(--ok);display:grid;place-items:center;font:800 28px var(--font-title)}
.share-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:16px}
.share-grid .btn{flex-direction:column;gap:6px;padding:16px 10px;height:auto}.share-grid .big{font-size:26px;line-height:1}
.member-badges button.badge{font-size:12px;padding:5px 10px}

/* Liens du club (pied de page) */
.btn.social{gap:8px}.btn.social svg{width:20px;height:20px;flex:0 0 20px;fill:currentColor}
.btn.social.wa svg{fill:#25D366}.btn.social.ig svg{fill:#E1306C}

/* Statistiques */
.stats-card{overflow-x:auto}
table.stats{width:100%;border-collapse:collapse;font-size:13px}
table.stats th{font:700 11px var(--font);color:var(--muted);text-transform:uppercase;letter-spacing:.04em;padding:8px 6px;text-align:right}
table.stats td{padding:8px 6px;border-top:1px solid var(--line);text-align:right;white-space:nowrap}
table.stats th:first-child,table.stats td:first-child{text-align:left;white-space:normal}
table.stats tfoot td{color:var(--muted);font-weight:600}
.stats-match{margin-top:8px;padding:10px 12px}.stats-match summary{cursor:pointer;font-size:14px}
.stats-match .res{margin-left:6px}

/* Systèmes de jeu */
.sy-entry .avatar{background:var(--accent-bg);font-size:18px}
.sy-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px}
.sy-card{background:var(--card);border:1px solid var(--line);border-radius:16px;overflow:hidden;text-align:left;padding:0;color:inherit;cursor:pointer}
.sy-card svg{display:block;width:100%;height:210px;background:radial-gradient(80% 60% at 50% 50%,rgb(var(--c-court)),#0C0C11)}
.sy-card .info{padding:10px 12px}.sy-card b{display:block;font-size:15px;margin-top:4px}.sy-card small{color:var(--muted);font-size:12px}
.sy-top{display:flex;justify-content:space-between;align-items:center;gap:8px}
.sy-title{font:800 21px/1.2 var(--font-title);margin:6px 0 4px}
.sy-court{margin-top:10px;background:radial-gradient(80% 60% at 50% 50%,rgb(var(--c-court)),#0C0C11);border:1px solid #ffffff14;border-radius:16px;overflow:hidden;touch-action:none;user-select:none;-webkit-user-select:none}
.sy-court svg{display:block;width:100%;height:auto;max-height:68vh}
.sy-caption{min-height:44px;margin-top:10px;padding:10px 12px;border-radius:12px;background:var(--card);border:1px solid var(--line)}
.sy-caption .n{color:var(--accent);font-weight:800;margin-right:6px}
.sy-controls{display:flex;align-items:center;gap:8px;margin-top:10px;flex-wrap:wrap}.sy-grow{flex:1}
.sy-steps{display:flex;gap:6px;overflow-x:auto;padding:8px 0;scrollbar-width:none}.sy-steps::-webkit-scrollbar{display:none}
.sy-step{flex:0 0 auto;min-width:38px;height:38px;padding:0 10px;border-radius:10px;border:1px solid var(--line-2);background:var(--card);font-weight:700;color:inherit;cursor:pointer}
.sy-step.on{background:var(--accent);border-color:var(--accent);color:#0B0E14}
.sy-step.sy-undo{margin-left:auto}.sy-step:disabled{opacity:.35;cursor:default}
.sy-steps{position:relative}
.sy-step-actions{display:flex;gap:6px;flex-wrap:wrap;margin:0 0 8px}
/* Options d'un système (bifurcation : 3a / 3b…) */
.sy-fork{flex:0 0 auto;align-self:center;color:var(--accent);font-weight:800;font-size:18px;padding:0 2px}
.sy-opts-title{margin-top:12px;font-size:13px;font-weight:700;color:var(--muted)}
.sy-opts{display:flex;gap:8px;margin-top:6px;overflow-x:auto;scrollbar-width:none}.sy-opts::-webkit-scrollbar{display:none}
.sy-opt{flex:1 1 0;min-width:120px;text-align:left;padding:9px 12px;border-radius:12px;border:1px solid var(--line-2);background:var(--card);color:inherit;cursor:pointer}
.sy-opt b{display:block;font-size:14px}.sy-opt small{display:block;margin-top:2px;font-size:12px;color:var(--muted);line-height:1.3}
.sy-opt.on{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset;background:color-mix(in srgb,var(--accent) 12%,var(--card))}
.sy-opt.on b{color:var(--accent)}.sy-opt-add{flex:0 0 auto;min-width:0;border-style:dashed}
.sy-optbox{margin-top:6px;padding:4px 12px 12px;border-radius:14px;border:1px solid var(--line);background:color-mix(in srgb,var(--card) 60%,transparent)}
.sy-opt-tag{display:table;margin-bottom:6px;padding:2px 8px;border-radius:999px;background:color-mix(in srgb,var(--accent) 16%,transparent);color:var(--accent);font-size:12px;font-weight:700}
.sy-opt-badge{color:var(--accent)}
.sy-legend{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:10px;font-size:12px;color:var(--muted)}.sy-legend b{color:var(--text)}
.sy-legend i{display:inline-block;width:22px;vertical-align:middle;margin-right:4px}
.sy-row2{display:grid;grid-template-columns:1fr 1fr;gap:10px;align-items:end}
.sy-tools{display:grid;grid-template-columns:repeat(auto-fit,minmax(56px,1fr));gap:8px;margin-top:10px}
.sy-tools .btn{flex-direction:column;gap:2px;min-height:56px;font-size:12px}.sy-tools .btn span{font-size:18px;line-height:1}
.sy-hint{font-size:13px;color:var(--muted);margin-top:8px}.sy-hint b{color:var(--accent)}
.btn.on{border-color:var(--accent);color:var(--accent);background:var(--accent-bg)}
.sy-help-step{display:flex;gap:12px;padding:12px 0;border-top:1px solid var(--line)}.sy-help-step > div > b:first-child{display:block}
.sy-help-step .sub b{display:inline;color:var(--text)}
.sy-help-step .sub{font-size:13px;color:var(--muted)}.sy-help-ic{width:66px;height:21px;display:block}

/* Accueil */
.hello{padding:10px 2px 4px}.hello h1{font:800 26px/1.15 var(--font-title);margin:4px 0 0}.hello .sub{color:var(--muted)}
.section-title.row{display:flex;justify-content:space-between;align-items:center;gap:10px}
.link{background:none;border:0;color:var(--accent);font:700 12px var(--font);text-transform:none;letter-spacing:0;cursor:pointer;padding:4px 0}
.todos{padding:4px 14px}
.todo{display:flex;gap:12px;padding:12px 0;border-top:1px solid var(--line)}.todo:first-child{border-top:0}
/* Icônes au trait : tuile arrondie pour les « à faire », en ligne ailleurs (lieu, badges). */
.ic{width:1em;height:1em;flex:none;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;vertical-align:-.15em}
.todo .ico{width:38px;height:38px;flex:0 0 38px;border-radius:12px;display:grid;place-items:center;color:var(--accent);
  background:linear-gradient(160deg,#ffffff12,#ffffff06);border:1px solid #ffffff14}
.todo .ico .ic{width:19px;height:19px}
.venue .ic{width:14px;height:14px;color:var(--accent)}
.badge .ic,.pill .ic{width:12px;height:12px;margin-right:4px}
a.sub .ic{width:13px;height:13px;margin-right:3px}
.todo.highlight{margin:6px -6px;padding:12px 6px;border-radius:12px;background:rgb(var(--c-accent) / 0.078);border-top:0}
.onb-step{display:flex;gap:12px;padding:14px;margin-top:12px}.onb-step b{display:block}.onb-step .sub{font-size:13px;color:var(--muted)}
.onb-num{width:30px;height:30px;flex:0 0 30px;border-radius:50%;background:var(--accent);color:#0B0E14;display:grid;place-items:center;font:800 14px var(--font-title)}
.onb-step.done .onb-num{background:var(--ok)}.todo .sub{font-size:13px;color:var(--muted)}
.session{display:flex;align-items:center;gap:12px;padding:11px 14px;border-top:1px solid var(--line)}.session:first-child{border-top:0}
.session .when{width:92px;flex:0 0 92px;display:flex;flex-direction:column}.session .when b{font-size:13px}.session .when span{font-size:13px;color:var(--muted)}
.session .what{flex:1;min-width:0}.session .name{font-weight:600}.session a.sub{font-size:12px;color:var(--muted);text-decoration:none}
.session.off .when,.session.off .what{opacity:.5;text-decoration:line-through}
.news{overflow:hidden;margin-bottom:10px}.news img{display:block;width:100%;max-height:320px;object-fit:cover}
.news-body{padding:14px}.news-meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.news-meta .sub{font-size:12px;color:var(--muted)}
.news h3{font:800 18px/1.25 var(--font-title);margin:8px 0 0}.news p{margin:6px 0 0;color:#C9CED6;white-space:pre-line}.news p a{color:var(--accent);font-weight:600;word-break:break-word}
.birthday{display:flex;align-items:center;gap:12px;padding:14px 16px;margin:8px 0 12px;background:linear-gradient(135deg,rgb(var(--c-accent) / 0.161),var(--card) 65%);border-color:rgb(var(--c-accent) / 0.333)}
.birthday .ico{width:42px;height:42px;flex:0 0 42px;border-radius:14px;display:grid;place-items:center;color:#fff;background:var(--grad,var(--accent));box-shadow:0 8px 20px -8px rgb(var(--c-accent) / 0.8)}
.birthday .ico .ic{width:22px;height:22px}.birthday p{margin:0;font-size:15px;line-height:1.45}
.news-link .ico{width:38px;height:38px;flex:0 0 38px;border-radius:12px;display:grid;place-items:center;color:var(--accent);
  background:linear-gradient(160deg,#ffffff12,#ffffff06);border:1px solid #ffffff14}
.news-link .ico .ic{width:19px;height:19px}
.tabs button span{white-space:nowrap}
@media (max-width:420px){.tabs button{font-size:10.5px;padding-left:2px;padding-right:2px}}
.admin-links{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:8px;margin-bottom:6px}
button.news-link{width:100%;text-align:left;font:inherit;cursor:pointer}
.news-links{display:grid;gap:8px;margin-top:12px}.news-links + p{margin-top:16px}
.news-link{display:flex;align-items:center;gap:12px;padding:12px 14px;border-radius:14px;background:var(--card-2);border:1px solid var(--line-2);color:var(--text);text-decoration:none;transition:border-color .15s}
.news-link:hover,.news-link:focus-visible{border-color:var(--accent);outline:none}
.news-link .lbl{flex:1;min-width:0;font-weight:700;font-size:15px}
.news-link small{display:block;margin-top:2px;font-weight:500;font-size:12.5px;color:var(--muted)}
.news-link .chev{color:var(--accent);font-size:22px;line-height:1}
.news-link.wa svg{width:20px;height:20px;flex:0 0 20px;fill:#25D366}
.wa-logo{display:inline-grid;place-items:center;width:30px;height:30px;border-radius:50%;background:#25D366;vertical-align:middle;margin:0 2px}
.wa-logo svg{width:19px;height:19px;fill:#fff}
.news-preview{display:block;width:100%;max-height:220px;object-fit:cover;border-radius:12px;margin-top:6px}
.team-chips{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px}
.team-chip{display:flex;flex-direction:column;gap:2px;padding:14px;text-align:left;color:inherit;cursor:pointer}.team-chip .sub{font-size:12px;color:var(--muted)}
.star{color:var(--muted);font-size:18px}.star.on{color:#FFC94D}.name .star{font-size:14px}
.fav-btn{width:42px;height:42px;border-radius:12px;border:1px solid var(--line-2);background:var(--card);color:var(--muted);font-size:20px;cursor:pointer}
.fav-btn.on{color:#FFC94D;border-color:#FFC94D66}
.plan-team{padding:12px 0;border-top:1px solid var(--line)}.plan-head{display:flex;justify-content:space-between;gap:8px;margin-bottom:6px}
.plan-head .sub{font-size:12px;color:var(--muted)}
.plan-row{display:grid;grid-template-columns:90px 110px 1fr;gap:8px;font-size:14px;padding:3px 0}.plan-row a{color:var(--accent);text-decoration:none}
.plan-gym{display:flex;flex-direction:column;padding:10px 0;border-top:1px solid var(--line);text-decoration:none;color:inherit}.plan-gym .sub{font-size:13px;color:var(--muted)}
.account{position:relative}
/* Pastille « à faire » sur l'onglet Accueil, en haut à droite de l'icône. */
.tabs button{position:relative}
.tabs button[data-badge]:not([data-badge=""])::after{content:attr(data-badge);position:absolute;top:2px;left:calc(16px + 14px);min-width:17px;height:17px;padding:0 4px;
  border-radius:9px;background:var(--accent);color:#fff;font:800 10.5px/17px var(--font);text-align:center;box-shadow:0 0 0 2px #07070A}
@media (max-width:720px){.tabs button[data-badge]:not([data-badge=""])::after{top:1px;left:calc(50% + 4px)}}
.account[data-badge]:not([data-badge=""])::after{content:attr(data-badge);position:absolute;top:-6px;right:-6px;min-width:18px;height:18px;padding:0 5px;
  border-radius:9px;background:var(--ko);color:#fff;font:800 11px/18px var(--font);text-align:center}

/* Fond : terrain de basket stylisé et halos orange (comme la page d'annonce). */
.bg-court{position:fixed;inset:0;z-index:-1;pointer-events:none;overflow:hidden}
.bg-court svg{position:absolute;left:50%;top:50%;width:min(1400px,180vw);transform:translate(-50%,-50%) rotate(-8deg);opacity:.09}
.bg-court svg *{fill:none;stroke:#fff;stroke-width:3}
@media (orientation:portrait){.bg-court svg{width:min(1400px,125vh);transform:translate(-50%,-50%) rotate(82deg)}}
.bg-glow{position:absolute;width:720px;height:720px;border-radius:50%;background:radial-gradient(circle,rgb(var(--c-accent) / 0.22) 0%,rgb(var(--c-accent) / 0.0) 65%);
  top:-180px;right:-260px;z-index:-1;pointer-events:none;animation:bg-float 12s ease-in-out infinite}
.bg-glow.b{top:auto;bottom:-340px;left:-260px;right:auto;animation-delay:-6s;opacity:.7}
@keyframes bg-float{50%{transform:translate(-40px,40px) scale(1.08)}}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* ==== Style « Aurora » : surcharge le thème de base ci-dessus ====
   Noir profond, aurores et accent rouge doux (couleurs du club), terrain en néon discret avec l'écusson,
   cartes en verre dépoli, titres en minuscules (Bricolage Grotesque), boutons pilule, onglets flottants.
   Le logo OneCourt (svg) garde son orange. */
:root{
  --bg:#07070A; --bg-2:#0E0E13; --card:#ffffff0b; --card-2:#ffffff14; --line:#ffffff12; --line-2:#ffffff21;
  --text:#F6F5F2; --muted:#A6A3A0; --faint:#6F6C69;
  --accent:rgb(var(--c-accent)); --accent-2:rgb(var(--c-accent2)); --accent-bg:rgb(var(--c-accent) / 0.122);
  --grad:linear-gradient(120deg,rgb(var(--c-light)) 0%,rgb(var(--c-accent)) 50%,rgb(var(--c-dark)) 100%);
  --radius:22px; --font-title:"Bricolage Grotesque",Inter,system-ui,sans-serif;
}
html{background:var(--bg)}

/* Fond : plus de terrain, des aurores qui dérivent lentement */
/* Lignes du terrain en néon rouge discret, écusson du club en filigrane dans le rond central
   (même centre et même échelle que le terrain : 1/10 de sa largeur). */
.bg-court svg{opacity:.14;filter:drop-shadow(0 0 4px rgb(var(--c-accent))) drop-shadow(0 0 12px rgb(var(--c-accent) / 0.6))}
.bg-court svg *{stroke:rgb(var(--c-line));stroke-width:2.5}
.bg-court::before{content:"";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
  width:calc(min(1400px,180vw) * .1);aspect-ratio:1;border-radius:50%;
  background:var(--club-blason,url(/aslma-blanc.png)) center/contain no-repeat;filter:grayscale(1) contrast(1.1);mix-blend-mode:screen;opacity:.16}
@media (orientation:portrait){.bg-court::before{width:calc(min(1400px,125vh) * .1)}}
.bg-glow{width:560px;height:560px;filter:blur(30px);opacity:.9;
  background:radial-gradient(circle,rgb(var(--c-glow) / 0.333) 0%,rgb(var(--c-glow) / 0.0) 62%)}
.bg-glow.b{background:radial-gradient(circle,rgb(var(--c-glow) / 0.251) 0%,rgb(var(--c-glow) / 0.0) 62%);opacity:1}
.bg-court::after{content:"";position:absolute;inset:0;
  background:radial-gradient(60% 40% at 50% 120%,rgb(var(--c-glow) / 0.133),transparent 70%),
             radial-gradient(1px 1px at 20% 30%,#ffffff22 50%,transparent 51%),
             radial-gradient(1px 1px at 70% 60%,#ffffff18 50%,transparent 51%)}

/* Titres : grands, en minuscules, serrés */
.hello{padding:18px 2px 6px}
.hello .sub{font-size:14px;letter-spacing:.01em}
.hello h1{font:800 34px/1.05 var(--font-title);letter-spacing:-.025em;color:#fff}
.section-title{font:700 20px/1.2 var(--font-title);letter-spacing:-.01em;text-transform:none;color:var(--text);margin:30px 4px 12px}
.section-title .link{font-size:13px}
.day-head h2{font:700 18px var(--font-title);letter-spacing:-.01em;text-transform:none}
.match-date{text-transform:none;letter-spacing:0;font:700 13px var(--font);
  background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
h1,h2,h3{letter-spacing:-.015em}

/* Cartes en verre dépoli */
.card{background:linear-gradient(160deg,#ffffff10,#ffffff05);border:1px solid #ffffff14;border-radius:var(--radius);
  backdrop-filter:blur(18px) saturate(140%);-webkit-backdrop-filter:blur(18px) saturate(140%);
  box-shadow:0 1px 0 #ffffff14 inset,0 20px 40px -24px #000c}
.match{padding:16px 16px 14px;margin-bottom:12px}
.match:hover{border-color:#ffffff2a}
.time{font:800 22px var(--font-title);letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.match-top{gap:10px}
.match-top .cat{background:#ffffff10;border-radius:999px;padding:3px 10px;font-weight:700;color:var(--text);font-size:12px}
.opp{font:700 17px/1.25 var(--font-title);letter-spacing:-.01em}
.pill{border-radius:999px;padding:4px 10px}
.pill.home{background:none;border:1px solid rgb(var(--c-accent) / 0.4);color:var(--accent-2)}
.pill.away{background:none;border:1px solid var(--line-2)}
.score{font:800 24px var(--font-title);letter-spacing:-.02em}
.slot{border-radius:999px;font-size:11px;padding:5px 2px}

/* Boutons et filtres en pilule */
.btn{border-radius:999px;padding:11px 18px;background:#ffffff0d;border-color:#ffffff1c;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
.btn.small{padding:7px 14px}
.btn.primary{background:var(--grad);border:0;color:#fff;box-shadow:0 10px 24px -10px rgb(var(--c-accent) / 0.8)}
.chip{border-radius:999px;background:#ffffff08;border-color:#ffffff1a;color:var(--muted)}
.chip.on{background:#F6F5F2;border-color:#F6F5F2;color:#07070A}
.seg{border-radius:999px;background:#ffffff0a;border-color:#ffffff14;padding:4px}
.seg button{border-radius:999px}
.seg button.on{background:#F6F5F2;color:#07070A;box-shadow:none}
.filters{background:linear-gradient(180deg,#07070Af2 70%,#07070A00)}
.account{border-radius:999px;background:#ffffff0d}
.account.logged{background:var(--grad);color:#fff;border:0}
.badge{background:#ffffff10;color:var(--text)}

/* Accueil : à faire, anniversaire, actualité, équipes */
.todo.highlight{background:linear-gradient(120deg,rgb(var(--c-accent) / 0.133),rgb(var(--c-dark) / 0.078));border-radius:16px}
.birthday{background:linear-gradient(120deg,rgb(var(--c-accent) / 0.188),rgb(var(--c-dark) / 0.133) 60%,#ffffff06);border-color:rgb(var(--c-accent) / 0.251)}
.news h3{font:800 22px/1.15 var(--font-title);letter-spacing:-.02em}
.news-link{border-radius:18px;background:#ffffff08}
.team-chip b{font:700 16px var(--font-title)}

/* Classements : ligne du club en dégradé */
.standings tr.club{background:linear-gradient(90deg,rgb(var(--c-glow) / 0.2),rgb(var(--c-glow) / 0.071) 70%,transparent)}
.standings tr.club td{color:#fff}
.standings tr.club td:first-child{box-shadow:inset 3px 0 0 rgb(var(--c-glow))}

/* Feuilles (fenêtres du bas) */
.sheet{background:#111116f2;backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);border-radius:28px 28px 0 0}
.sheet h2{font:800 24px var(--font-title);letter-spacing:-.02em}

/* Onglets : barre flottante en verre sur mobile, pilule centrée sur ordinateur */
.tabs{background:none;border:0}
.tabs button{border-radius:999px}
.tabs button.on{background:#F6F5F2;color:#07070A}
@media (max-width:720px){
  .tabs{left:12px;right:12px;bottom:calc(10px + var(--safe-b));padding:6px;border-radius:28px;
    background:#16161cd9;border:1px solid #ffffff1a;backdrop-filter:blur(20px) saturate(150%);-webkit-backdrop-filter:blur(20px) saturate(150%);
    box-shadow:0 18px 40px -12px #000e}
  .tabs button{border-radius:22px;padding:7px 2px}
  .tabs button.on{background:#ffffff14;color:#fff}
  .tabs button.on svg{stroke:var(--accent);filter:drop-shadow(0 0 8px rgb(var(--c-accent) / 0.667))}
  .main{padding-bottom:calc(var(--tabs-h) + var(--safe-b) + 40px)!important}
  .toast{bottom:calc(var(--tabs-h) + var(--safe-b) + 30px)}
}
.topbar.scrolled{background:#07070Acc}
@media (prefers-reduced-motion:reduce){.bg-glow{animation:none}}

/* Convocation : postes 1 à 5 et capitaine dans le formulaire, joueurs placés sur un demi-terrain */
.conv-row{border-bottom:1px solid var(--line);padding-bottom:6px;margin-bottom:4px}
.conv-row .check{border:0;margin:0}
.poste-chips{display:flex;gap:6px;padding:0 0 4px 30px;flex-wrap:wrap}
.poste-chips button{width:32px;height:32px;border-radius:50%;border:1px solid var(--line-2);background:transparent;color:var(--muted);font:700 13px var(--font);cursor:pointer}
.poste-chips .pc.p1{background:var(--accent);border-color:var(--accent);color:#fff}
.poste-chips .pc.p2{border:2px solid var(--accent);color:var(--accent-2)}
.poste-chips .pcap{margin-left:8px}
.poste-chips .pcap.on{background:#F6F5F2;border-color:#F6F5F2;color:#07070A}
.half-court{position:relative;margin:12px 0 4px;aspect-ratio:15.8/14.8;border-radius:16px;overflow:hidden;
  background:radial-gradient(70% 60% at 50% 20%,rgb(var(--c-court)),#0C0C11);border:1px solid #ffffff14}
.half-court svg{position:absolute;inset:0;width:100%;height:100%}
.half-court path{fill:none;stroke:rgb(var(--c-line));stroke-width:.07;opacity:.55;filter:drop-shadow(0 0 .12px rgb(var(--c-accent)))}
.hc-spot{position:absolute;transform:translate(-50%,-14px);display:flex;flex-direction:column;align-items:center;gap:1px;max-width:34%}
.hc-num{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;background:var(--accent);color:#fff;font:800 13px var(--font-title);
  box-shadow:0 0 12px rgb(var(--c-accent) / 0.6);margin-bottom:2px}
.hc-name{font:600 12px/1.25 var(--font);color:var(--text);white-space:nowrap;text-shadow:0 1px 3px #000}
.hc-name.second{color:var(--faint);font-weight:500}
.hc-cap{display:inline-grid;place-items:center;width:15px;height:15px;border-radius:50%;background:#F6F5F2;color:#07070A;font:800 9px var(--font)}

/* Officiels du match : licence sous le nom (bénévoles, coachs, admins), pour l'e-Marque */
.who-lic{display:block;font:500 11px var(--font);color:var(--muted);letter-spacing:.02em;text-align:right}

/* Classement dans la liste des équipes : « 5e/11 » */
.team-row .rank small.rank-of{font:600 13px var(--font);color:var(--muted);margin-left:1px}

/* Trombinoscope FBI affiché dans l'appli */
.trombi-pages{display:flex;flex-direction:column;gap:10px;margin-top:10px;overflow-x:auto}.trombi-pages canvas.pdf-zoom{width:250%!important;max-width:none}.trombi-pages canvas{border-radius:10px;background:#fff;box-shadow:0 6px 18px #0008}

/* Score des résultats sur une seule ligne (équipe qui reçoit en premier) */
.score{white-space:nowrap;flex-shrink:0}

/* Carte de match : un seul indicateur pour les officiels (détail des postes dans la fiche du match) */
.need{display:inline-flex;align-items:center;gap:6px;margin-top:10px;padding:5px 11px;border-radius:999px;font:600 12px var(--font)}
.need .ic{width:14px;height:14px}
.need.ko{background:#F5A52419;color:#F5B44A}.need.ok{color:var(--muted);padding-left:0}.need.me{background:var(--accent-bg);color:var(--accent-2)}

/* --- Onglets : pastille en verre qui glisse vers l'onglet actif (et suit le doigt quand on glisse entre les écrans) --- */
.tabs{isolation:isolate}
.tabs button{position:relative;z-index:1;transition:color .25s ease}
.tabs button.on,.tabs button.on:hover{background:none!important}
.tab-glass{position:absolute;left:0;top:0;z-index:0;opacity:0;pointer-events:none;border-radius:999px;
  transition:transform .42s cubic-bezier(.34,1.32,.5,1),width .42s cubic-bezier(.34,1.32,.5,1),opacity .2s ease}
.tab-glass.no-anim{transition:none}
.tab-glass::before{content:"";position:absolute;inset:0;border-radius:inherit;
  background:linear-gradient(180deg,#ffffff2e 0%,#ffffff12 55%,#ffffff1c 100%);
  border:1px solid #ffffff38;box-shadow:inset 0 1px 0 #ffffff59,inset 0 -1px 0 #ffffff14,0 6px 18px -6px #000c,0 0 16px -4px rgb(var(--c-accent) / 0.333);
  backdrop-filter:blur(10px) saturate(180%);-webkit-backdrop-filter:blur(10px) saturate(180%)}
.tab-glass.stretch::before{animation:glass-stretch .42s cubic-bezier(.34,1.32,.5,1)}
@keyframes glass-stretch{0%{transform:scale(1)}35%{transform:scale(1.18,.86)}70%{transform:scale(.97,1.04)}100%{transform:scale(1)}}
.tabs button.on{color:#fff}
@media (min-width:721px){.tabs button.on{color:#fff}
  /* Barre d'onglets collée sous l'en-tête : fond opaque, sinon les listes défilent derrière et restent visibles */
  .tabs{background:#07070Af5;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid #ffffff14}
  .topbar{background:#07070Af5}}
/* Écran qui arrive du côté de son onglet */
.view.enter-right{animation:view-in-right .32s cubic-bezier(.2,.8,.25,1)}
.view.enter-left{animation:view-in-left .32s cubic-bezier(.2,.8,.25,1)}
@keyframes view-in-right{from{opacity:0;transform:translateX(28px)}to{opacity:1;transform:none}}
@keyframes view-in-left{from{opacity:0;transform:translateX(-28px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.tab-glass,.tab-glass.stretch::before,.view.enter-right,.view.enter-left{transition:none;animation:none}}

/* Post Instagram d'un match : icône discrète à côté du score, bouton dans le détail */
.insta-link{display:inline-grid;place-items:center;width:28px;height:28px;margin-left:2px;border-radius:9px;color:var(--muted);
  transition:color .2s ease,background .2s ease}
.insta-link:hover,.insta-link:active{color:#fff;background:linear-gradient(135deg,#F58529,#DD2A7B 55%,#8134AF)}
.insta-link .ic{width:17px;height:17px;margin:0}
.insta-btn{display:inline-flex;align-items:center;gap:8px}
.insta-btn .ic{width:18px;height:18px;margin:0;color:#DD2A7B}

/* Bouton Instagram en haut au centre de la carte de match, avec une étincelle (remplace l'icône discrète) */
.card.match{position:relative}
.card.match .insta-link{position:absolute;left:50%;top:10px;transform:translateX(-50%);z-index:2;width:36px;height:36px;margin:0;border-radius:12px;
  color:#fff;background:linear-gradient(135deg,#FEDA75 0%,#FA7E1E 25%,#D62976 55%,#962FBF 80%,#4F5BD5 100%);
  box-shadow:0 6px 16px -4px #D6297699,inset 0 1px 0 #ffffff55;animation:insta-glow 2.8s ease-in-out infinite}
.card.match .insta-link:hover,.card.match .insta-link:active{color:#fff;transform:translateX(-50%) scale(1.08)}
.card.match .insta-link .ic{width:21px;height:21px;stroke-width:1.9}
.insta-spark{position:absolute;top:-7px;right:-7px;font-size:13px;line-height:1;color:#FFF3B0;text-shadow:0 0 6px #FFD54A,0 0 12px #FA7E1E;
  animation:insta-spark 2.8s ease-in-out infinite;pointer-events:none}
@keyframes insta-spark{0%,100%{opacity:.25;transform:scale(.6) rotate(0)}45%{opacity:1;transform:scale(1.15) rotate(25deg)}60%{opacity:.9;transform:scale(.95) rotate(40deg)}}
@keyframes insta-glow{0%,100%{box-shadow:0 6px 16px -4px #D6297699,inset 0 1px 0 #ffffff55}50%{box-shadow:0 6px 22px -2px #FA7E1Ecc,inset 0 1px 0 #ffffff55}}
@media (prefers-reduced-motion:reduce){.card.match .insta-link,.insta-spark{animation:none}}

/* Convocation : compteur de joueurs cochés (10 au maximum) */
.conv-count{font:700 13px var(--font);color:var(--muted);margin-right:8px}.conv-count.full{color:var(--accent-2)}

/* Accueil : podium des 3 bénévoles qui assurent le plus de matchs */
.podium-row{display:flex;align-items:center;gap:12px;padding:9px 0;border-top:1px solid var(--line)}
.podium-row:first-of-type{border-top:0}
.podium-rank{flex:none;width:34px;height:34px;border-radius:50%;display:grid;place-items:center;font:800 15px var(--font-title);color:#1a1206}
.podium-rank.r1{background:linear-gradient(135deg,#FFE27A,#E8B020);box-shadow:0 0 14px -2px #E8B02099}
.podium-rank.r2{background:linear-gradient(135deg,#F1F3F6,#B7BDC6)}
.podium-rank.r3{background:linear-gradient(135deg,#F2B58A,#C0743F)}
.podium .pts{font:800 20px var(--font-title);text-align:right}.podium .pts small{display:block;font:600 11px var(--font);color:var(--muted)}
.card.podium{padding:14px 16px}

/* Profil du bénévole (Coach, Joueur U15 M, Bénévole) dans le podium et le classement */
.sub .profil{font-weight:700;color:var(--accent-2)}

/* Accueil : bouton Planning des entraînements (remplace la liste des séances) */
.plan-btn{display:flex;align-items:center;justify-content:center;gap:8px;margin-top:12px}.plan-btn .ic{width:18px;height:18px;margin:0}

/* Adhésions / Tenues intégrées dans l'appli (onglets admins) : page de gestion en plein écran sous l'en-tête */
.view-frame.on{margin:0 -16px}
/* Mobile : le menu est en haut à droite (plus de barre en bas) : le tableau descend jusqu'en bas de l'écran */
@media (max-width:720px){.main:has(.view-frame.on){padding-bottom:0!important}}
.gestion-frame{display:block;width:100%;border:0;background:transparent;
  height:calc(100dvh - var(--top-h) - var(--safe-t) - 15px)}  /* 14px de marge + 1px de bordure de l'en-tête */
@media (min-width:721px){.view-frame.on{margin:0}.gestion-frame{height:calc(100dvh - var(--top-h) - 110px);border-radius:16px}}

/* Code e-Marque en haut au centre de la carte (coachs, admins, personnes autorisées) */
.card.match .em-code{position:absolute;left:50%;top:10px;transform:translateX(-50%);z-index:2;display:inline-flex;align-items:center;gap:6px;
  padding:4px 10px;border-radius:999px;background:#ffffff10;border:1px solid #ffffff24;font:600 10.5px var(--font);color:var(--muted);
  letter-spacing:.04em;text-transform:uppercase;user-select:all;-webkit-user-select:all}
.card.match .em-code b{font:800 13px var(--font);letter-spacing:.08em;color:#fff;text-transform:none}
.card.match .em-code.none b{color:var(--faint);font-weight:600;font-size:11px;letter-spacing:0}
@media (max-width:380px){.card.match .em-code{font-size:9.5px;padding:3px 8px}.card.match .em-code b{font-size:12px}}

/* Ligne du haut de la carte (code e-Marque, post Instagram) : centrée, dans le flux */
.match-topline{display:flex;justify-content:center;margin:-4px 0 8px}
.card.match .match-topline .em-code,.card.match .match-topline .insta-link{position:relative;left:auto;top:auto;transform:none}
.card.match .match-topline .insta-link:hover,.card.match .match-topline .insta-link:active{transform:scale(1.08)}

/* Bouton Aide (livre) en verre, juste au-dessus du menu à droite */
.help-fab{position:fixed;right:16px;bottom:calc(var(--tabs-h) + var(--safe-b) + 26px);z-index:21;width:48px;height:48px;border-radius:50%;
  display:grid;place-items:center;padding:0;cursor:pointer;color:#fff;border:1px solid #ffffff38;
  background:linear-gradient(180deg,#ffffff2e 0%,#ffffff12 55%,#ffffff1c 100%);
  box-shadow:inset 0 1px 0 #ffffff59,0 10px 24px -8px #000e,0 0 16px -4px rgb(var(--c-accent) / 0.333);backdrop-filter:blur(14px) saturate(180%);-webkit-backdrop-filter:blur(14px) saturate(180%)}
.help-fab svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.help-fab[hidden]{display:none}
/* Recherche dans une fenêtre (ajout de joueurs) : loupe en bas à droite, zone de saisie collée en haut, liste noire */
.sheet-fab-row{position:sticky;bottom:0;display:flex;justify-content:flex-end;pointer-events:none;margin-top:-48px;height:48px}
.sheet-fab-row[hidden]{display:none}
.sheet-fab{pointer-events:auto;width:48px;height:48px;border-radius:50%;display:grid;place-items:center;padding:0;cursor:pointer;color:#fff;border:1px solid #ffffff38;
  background:linear-gradient(180deg,#ffffff2e 0%,#ffffff12 55%,#ffffff1c 100%);
  box-shadow:inset 0 1px 0 #ffffff59,0 10px 24px -8px #000e,0 0 16px -4px rgb(var(--c-accent) / 0.333);backdrop-filter:blur(14px) saturate(180%);-webkit-backdrop-filter:blur(14px) saturate(180%)}
.sheet-fab svg,.sheet-search-x svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.sheet-search{position:sticky;top:0;z-index:5;display:flex;align-items:center;gap:8px;margin:12px -8px 0;padding:10px;border-radius:18px;
  background:#101016f2;border:1px solid #ffffff1f;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}
.sheet-search[hidden]{display:none}
.sheet-search .search{flex:1;min-width:0;margin:0}
.sheet-search-x{flex:none;width:40px;height:40px;border-radius:12px;display:grid;place-items:center;padding:0;color:var(--text);background:#ffffff0d;border:1px solid var(--line-2)}
.card.search-list{background:#07070A;border-color:#ffffff14}
@media (min-width:721px){.help-fab{bottom:24px;right:24px}}
/* Notifications : cloche en verre au-dessus de l'aide (même style), pastille rouge des non lues, aperçu au-dessus */
.notif-fab{--fab-b:calc(var(--tabs-h) + var(--safe-b) + 84px);position:fixed;right:16px;bottom:var(--fab-b);z-index:21;width:48px;height:48px;border-radius:50%;
  display:grid;place-items:center;padding:0;cursor:pointer;color:#fff;border:1px solid #ffffff38;
  background:linear-gradient(180deg,#ffffff2e 0%,#ffffff12 55%,#ffffff1c 100%);
  box-shadow:inset 0 1px 0 #ffffff59,0 10px 24px -8px #000e,0 0 16px -4px rgb(var(--c-accent) / 0.333);backdrop-filter:blur(14px) saturate(180%);-webkit-backdrop-filter:blur(14px) saturate(180%)}
.notif-fab svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.notif-fab[hidden],.notif-peek[hidden]{display:none}
.notif-fab[data-badge]:not([data-badge=""])::after{content:attr(data-badge);position:absolute;top:-4px;right:-4px;min-width:18px;height:18px;padding:0 5px;
  border-radius:9px;background:var(--ko);color:#fff;font:800 11px/18px var(--font);text-align:center}
.notif-fab[data-badge]:not([data-badge=""]) svg{animation:bell-ring 2.4s ease-in-out infinite;transform-origin:50% 15%}
@keyframes bell-ring{0%,70%,100%{transform:none}75%{transform:rotate(14deg)}80%{transform:rotate(-12deg)}85%{transform:rotate(8deg)}90%{transform:rotate(-5deg)}}
@media (prefers-reduced-motion:reduce){.notif-fab svg{animation:none!important}}
.notif-peek{position:fixed;right:16px;bottom:calc(var(--tabs-h) + var(--safe-b) + 142px);z-index:22;width:min(320px,calc(100vw - 32px));
  border-radius:18px;border:1px solid #ffffff2e;background:#16161cf2;box-shadow:0 18px 40px -12px #000e;
  backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);animation:peek-in .35s var(--ease-ios,ease) both}
@keyframes peek-in{from{opacity:0;transform:translateY(8px) scale(.97)}to{opacity:1;transform:none}}
.notif-peek .np-body{display:flex;flex-direction:column;gap:2px;width:100%;text-align:left;padding:12px 40px 12px 14px;border:0;background:none;color:inherit;cursor:pointer;
  box-shadow:inset 3px 0 0 var(--accent);border-radius:18px}
.notif-peek .np-x{position:absolute;top:6px;right:6px;width:30px;height:30px;border-radius:50%;border:0;background:transparent;color:var(--muted);font-size:20px;line-height:1;cursor:pointer}
.np-from,.notif-from{font-size:12px;color:var(--muted)}
.np-msg,.notif-msg{font-size:13px;color:#C9CDD5;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
@media (min-width:721px){.notif-fab{bottom:84px;right:24px}.notif-peek{bottom:142px;right:24px}}
.card.notif-list{padding:0;margin-top:12px;overflow:hidden}
.notif-row{display:flex;align-items:center;gap:10px;width:100%;text-align:left;padding:12px 14px;border:0;border-top:1px solid var(--line);background:none;color:inherit;cursor:pointer}
.notif-item{position:relative;border-top:1px solid var(--line)}
.notif-item:first-child{border-top:0}
.notif-item .notif-row{border-top:0}
.notif-item:has(.notif-x) .notif-row{padding-right:52px}
.notif-x{position:absolute;top:50%;right:8px;transform:translateY(-50%);width:36px;height:36px;border-radius:50%;border:0;background:transparent;
  color:var(--muted);font-size:22px;line-height:1;cursor:pointer}
.notif-x:hover{background:#ffffff14;color:#fff}
.notif-row:hover{background:#ffffff0a}
.notif-txt{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.notif-txt b{font-weight:600;color:#D5D9E0}
.notif-dot{flex:none;width:8px;height:8px;border-radius:50%;background:transparent}
.notif-row.unread .notif-dot{background:var(--ko)}
.notif-row.unread b{color:#fff;font-weight:800}
.card.notif-detail{margin-top:12px;padding:16px;white-space:pre-wrap;line-height:1.5}
.notif-pick{max-height:260px;overflow:auto;margin-top:8px}
.card.profile-card{padding:16px}
.card.profile-card .badges{margin-top:12px}
.pseudo-form{margin-top:14px}
.pseudo-form .field{margin:0}
.pseudo-form .field small{color:var(--muted);font-weight:400}
.field .pseudo-row{display:flex;gap:8px;margin:0;font-size:inherit;color:inherit}
.pseudo-row input{flex:1;min-width:0}
.pseudo-row .btn{flex:none}
/* « À faire » : croix pour masquer un élément */
.todo{position:relative}
.todo-x{position:absolute;top:6px;right:6px;width:28px;height:28px;border-radius:50%;border:0;background:transparent;color:var(--muted);font-size:20px;line-height:1;cursor:pointer}
.todo-x:hover{background:#ffffff12;color:#fff}
/* Accueil visiteur : présentation du club et de l'appli (welcomeHtml) */
.card.welcome{position:relative;padding:16px 18px}
.card.welcome > p{margin:0 28px 0 0;color:#D5D9E0}
.welcome-list{list-style:none;padding:0;margin:12px 0 4px;display:grid;gap:9px}
.welcome-list li{display:flex;gap:10px;align-items:flex-start;font-size:14px;color:#D5D9E0}
.welcome-list .ic{flex:none;width:18px;height:18px;margin-top:1px;color:var(--accent-2)}
.card.welcome .actions{flex-wrap:wrap}

/* Post Instagram : plus petit, centré dans la ligne du haut de la carte (catégorie … Domicile) */
.match-top{position:relative}
.card.match .match-top .insta-link{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:30px;height:30px;border-radius:10px}
.card.match .match-top .insta-link:hover,.card.match .match-top .insta-link:active{transform:translate(-50%,-50%) scale(1.08)}
.card.match .match-top .insta-link .ic{width:17px;height:17px}
.card.match .match-top .insta-spark{font-size:11px;top:-6px;right:-6px}

/* Aide : texte d'accueil puis guides ; un guide s'ouvre dans la même fenêtre, agrandie */
.help-intro .help-title{font:700 18px var(--font-title);margin:8px 0 6px}
.help-intro p{margin:0 0 8px;color:var(--text);line-height:1.45}
/* Aide de l'écran : sections par profil (coach, joueur ou parent, bénévole) */
.help-sec{margin-top:12px;padding:12px 14px;border-radius:14px;background:var(--card);border:1px solid var(--line)}
.help-sec h3{margin:0 0 8px;font:700 13px var(--font);text-transform:uppercase;letter-spacing:.06em;color:var(--accent)}
.help-item{display:flex;gap:10px;align-items:flex-start;padding:5px 0}
.help-item .help-ic{flex:none;width:22px;text-align:center;font-size:16px;line-height:1.35}
.help-item p{margin:0;line-height:1.45;font-size:14px}
.week-next{margin:2px 4px 10px;font-size:12.5px}
.sheet-full .sheet{height:94vh;height:94dvh;max-height:none;display:flex;flex-direction:column}
.sheet-tall .sheet{height:88vh;height:88dvh}
.sheet-full #sheetBody{flex:1;display:flex;flex-direction:column;min-height:0}
.guide-head{padding:2px 0 8px}
.guide-frame{flex:1;width:100%;min-height:0;border:0;border-radius:14px;background:#fff}
.more-btn{margin:-2px 0 6px}

/* Présence aux entraînements (page équipe, coach) */
.pres-row{display:grid;grid-template-columns:minmax(0,1fr) 70px auto;align-items:center;gap:10px;padding:7px 0;border-top:1px solid var(--line)}
.pres-row:first-of-type{border-top:0}.pres-row .name{font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pres-bar{height:6px;border-radius:3px;background:#ffffff14;overflow:hidden}.pres-bar i{display:block;height:100%;background:linear-gradient(90deg,#3DD68C,#2BB673);border-radius:3px}
.pres-n{font:700 12.5px var(--font);white-space:nowrap}.pres-n small{color:var(--muted);font-weight:500}
.card.pres-card{padding:12px 16px}

/* Code e-Marque à droite de la date (cartes avec date), sinon seul en haut à droite */
.match-dateline{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px}
.match-dateline .match-date{margin:0;min-width:0}
.card.match .match-dateline .em-code,.card.match .match-topline .em-code{position:static;transform:none;flex:none}
.match-topline{justify-content:flex-end!important;margin:-6px 0 6px!important}

/* Lexique basket */
.lx-lv{display:inline-block;vertical-align:middle;font-size:13px;font-weight:700;padding:3px 10px;border-radius:999px;background:var(--accent);color:#0B0E14;margin-left:4px}
.lx-progress{padding:14px}
.lx-bar{height:10px;border-radius:999px;background:#ffffff12;overflow:hidden}
.lx-bar i{display:block;height:100%;border-radius:999px;background:linear-gradient(90deg,var(--accent),var(--warn));transition:width .4s ease}
.lx-prog-row{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:10px;flex-wrap:wrap;font-size:14px}
.lx-tabs{margin:14px 0 12px}
.lx-chips{display:flex;gap:6px;overflow-x:auto;padding-bottom:6px;margin-bottom:8px;scrollbar-width:none}
.lx-chips::-webkit-scrollbar{display:none}
.lx-list{padding:4px 0}
.lx-word{border-left:3px solid var(--c);margin:6px 8px;border-radius:12px;background:#ffffff06}
.lx-hd{display:flex;align-items:center;gap:10px;width:100%;background:none;border:0;color:var(--text);padding:11px 12px;text-align:left;font:inherit}
.lx-em{font-size:20px;width:26px;text-align:center;flex:0 0 auto}
.lx-t{flex:1;font-weight:600}
.lx-tick{color:var(--ok);font-weight:800}
.lx-word .chev{transition:transform .2s}
.lx-word.open .chev{transform:rotate(90deg)}
.lx-bd{padding:0 12px 12px 48px}
.lx-bd p{margin:0 0 10px;color:var(--muted);line-height:1.45}
/* Règles du basket (regles.js) : mêmes fiches dépliables que le lexique */
.rg-version{padding:14px;margin-bottom:12px;font-size:14px;line-height:1.45}
.rg-version p{margin:8px 0 0}
.rg-version a{color:var(--accent-2)}
.rg-count{padding:8px 14px 2px;font-size:13px}
.rg-rule .lx-t{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px}
.rg-flags{display:inline-flex;gap:4px;flex-wrap:wrap}
.rg-flag{font-size:11px;font-weight:700;padding:2px 7px;border-radius:999px;white-space:nowrap}
.rg-flag.new{background:#3DD68C22;color:var(--ok)}
.rg-flag.hn{background:#F5B54722;color:var(--warn)}
.rg-flag.fr{background:#7FA6FF22;color:#7FA6FF}
.rg-rule .lx-bd p.rg-txt{color:var(--text);opacity:.88}
.rg-ex{border-radius:10px;background:#ffffff08;padding:9px 11px;margin:0 0 10px;font-size:14px;line-height:1.4;display:grid;gap:4px}
.rg-ex b{color:var(--accent-2);margin-right:4px}
.rg-art{font-size:12px;color:var(--muted)}
.rg-rule mark{background:#F5B54755;color:inherit;border-radius:3px;padding:0 1px}
.rg-gnote{font-size:13px;margin:0 2px 10px;line-height:1.4}
.rg-gestes{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:10px}
.rg-geste{display:flex;gap:12px;align-items:center;background:var(--card);border:1px solid var(--line-2);border-radius:14px;padding:10px 12px}
.rg-fig{flex:0 0 112px;width:112px;height:123px}
.rg-gn{font-weight:700;margin-bottom:3px}
.rg-gd{color:var(--muted);font-size:14px;line-height:1.4;margin-bottom:5px}
.rg-geste mark{background:#F5B54755;color:inherit;border-radius:3px;padding:0 1px}
.rg-shirt{fill:#2b2f3a;stroke:#d7dae0;stroke-width:1.4;stroke-linejoin:round}
.rg-stripe{stroke:#d7dae0;stroke-width:2;opacity:.5}
.rg-pants{fill:#1a1d24;stroke:#d7dae0;stroke-width:1.2}
.rg-leg{stroke:#1a1d24;stroke-width:8;stroke-linecap:round;fill:none}
.rg-shoe{stroke:#d7dae0;stroke-width:4;stroke-linecap:round}
.rg-head,.rg-neck{fill:#c9b29b}
.rg-arm{stroke:#c9b29b;stroke-width:6.5;stroke-linecap:round;stroke-linejoin:round;fill:none}
.rg-sleeve{stroke:#2b2f3a;stroke-width:8;stroke-linecap:round}
.rg-palm{fill:#d9c3ab;stroke:#0b0e14;stroke-width:.7}
.rg-fgo{stroke:#0b0e14;stroke-width:2.6;stroke-linecap:round}
.rg-fg{stroke:#d9c3ab;stroke-width:1.75;stroke-linecap:round}
.rg-fold{stroke:#8a735d;stroke-width:.8;fill:none;stroke-linecap:round}
.rg-badge circle{fill:var(--accent)}
.rg-eye{fill:#3a2a1c}
.rg-head.red{fill:rgb(var(--c-accent))}
.rg-sweat{fill:#7FA6FF}
.rg-steam{stroke:#cfd3da;stroke-width:1.6;fill:none;stroke-linecap:round;opacity:.7}
.rg-smile{stroke:#3a2a1c;stroke-width:1.4;fill:none;stroke-linecap:round}
.rg-badge text{fill:#fff;font:800 10px Inter,sans-serif;text-anchor:middle;dominant-baseline:central}
.rg-mv{stroke:rgb(var(--c-accent2));stroke-width:2;fill:none;stroke-linecap:round;stroke-dasharray:3 2.5}
.lx-card{padding:12px}
.lx-court{display:block;width:100%;max-width:420px;margin:0 auto;border-radius:14px;background:radial-gradient(120% 90% at 50% 100%,#2a0d10,#0b0b10)}
.lx-lines{fill:none;stroke:rgb(var(--c-line));stroke-width:1.6}
.lx-tok{cursor:pointer}
.lx-tok circle{fill:#16161d;stroke:var(--accent-2);stroke-width:2}
.lx-tok text{fill:var(--text);font:700 13px Inter,sans-serif;text-anchor:middle;dominant-baseline:central;pointer-events:none}
.lx-tok.on circle{fill:var(--accent);stroke:#fff}
.lx-tok.on text{fill:#0B0E14}
.lx-tok:focus{outline:none}.lx-tok:focus-visible circle{stroke:#fff;stroke-width:3}
.lx-mid{stroke:#ffffff55;stroke-dasharray:4 4}
.lx-zone{fill:var(--text);font:800 11px Inter,sans-serif;text-anchor:middle;letter-spacing:.5px}
.lx-lane{cursor:pointer}
.lx-lane rect{fill-opacity:.16;transition:fill-opacity .2s}
.lx-lane.on rect{fill-opacity:.55}
.lx-lane-t{fill:#ffffffb0;font:700 10px Inter,sans-serif;text-anchor:middle;dominant-baseline:central;pointer-events:none;paint-order:stroke;stroke:#0b0b10;stroke-width:3px}
.lx-lane-t.on{fill:#fff}
.lx-info{margin-top:10px;padding:10px 12px;border-radius:12px;background:#ffffff08;line-height:1.45}
.lx-info p{margin:6px 0 0;color:var(--muted)}
.lx-note{margin:10px 2px 0;font-size:13px}
.lx-sig{text-align:center;color:var(--muted);font-size:13px;margin:22px 0 8px}
.lx-q{padding:14px;margin:12px 0;font-size:16px;line-height:1.45}
.lx-opts{display:flex;flex-direction:column;gap:8px}
.lx-opts .btn{justify-content:flex-start;text-align:left}
.lx-opts .btn:disabled{opacity:1}
.lx-good{background:var(--ok)!important;border-color:var(--ok)!important;color:#07130C!important}
.lx-bad{background:var(--ko)!important;border-color:var(--ko)!important;color:#fff!important}
.lx-score{text-align:center;font:800 54px var(--font-title);margin:6px 0}
.lx-score b{color:var(--accent)}
/* Équipes à l'entraînement : couleur de chaque équipe (--g), noms modifiables, choix de l'équipe par joueur */
.grp-dot{flex:none;width:14px;height:14px;border-radius:50%;background:var(--g);border:1px solid #ffffff55}
.grp-heads{display:grid;grid-template-columns:repeat(auto-fit,minmax(96px,1fr));gap:8px;margin-top:12px}
.grp-head{display:flex;align-items:center;gap:6px;padding:8px 10px;border-radius:12px;background:var(--card);border:1px solid var(--line-2)}
.grp-head .grp-dot{background:var(--g)}
.grp-head input{flex:1;min-width:0;background:none;border:0;color:var(--text);font:600 14px var(--font-body,inherit);padding:0;outline:none}
.grp-head b{font-size:13px;color:var(--muted)}
.grp-row.dim{opacity:.5}
.grp-picks{display:flex;gap:6px;flex:none}
.grp-pick{width:34px;height:34px;border-radius:50%;padding:0;font:800 13px var(--font-title);color:var(--text);background:transparent;border:2px solid var(--g);cursor:pointer}
.grp-pick.on{background:var(--g);color:#0B0E14;box-shadow:0 0 0 2px #0B0E14,0 0 0 4px var(--g)}
.grp-pick.on[style*="#6B7080"]{background:#0B0E14;color:#fff}
.grp-summary{padding:6px 12px}
.grp-sum-row{display:flex;gap:10px;align-items:flex-start;padding:8px 0;border-bottom:1px solid var(--line)}
.grp-sum-row:last-child{border-bottom:0}
.grp-sum-row .grp-dot{margin-top:3px}
/* Lexique : rang et badges (version V3 de Coach O.R) */
.lx-rank{margin-top:6px;font-size:14px;color:var(--muted)}
.lx-rank b{color:var(--text)}
.lx-badges{display:grid;grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:8px}
.lx-badge{padding:10px 6px;border-radius:12px;background:#ffffff06;border:1px solid var(--line);text-align:center;font-size:13px;line-height:1.2;opacity:.55}
.lx-badge .e{display:block;font-size:26px;margin-bottom:4px;filter:grayscale(1)}
.lx-badge small{display:block;margin-top:4px;font-size:11px;color:var(--muted)}
.lx-badge.on{opacity:1;background:rgb(var(--c-accent) / 0.122);border-color:var(--accent)}
.lx-badge.on .e{filter:none}

/* --- Mobile : menu en un seul bouton en haut à droite (à la place du profil), qui déplie la liste des pages et
   « Mon compte » (façon Apple Sports). Ordinateur : onglets et bouton profil habituels. --- */
.tabs .tab-current,.tabs .tab-account{display:none}
/* En-tête (mobile et ordinateur) : en haut à gauche, logo OneCourt blanc / mot ASLMA ; le centre reste libre */
.topbar-inner{grid-template-columns:auto 1fr}
/* Logo OneCourt à la hauteur --logo-h, « / » à égale distance (--logo-gap) du logo et des lettres ASLMA */
.topbar{--logo-h:30px;--logo-gap:10px}
.crest{gap:var(--logo-gap)}
.crest .oc-mark{width:auto;height:var(--logo-h);filter:none}
.crest-sep{font:300 22px/1 var(--font-title);color:#ffffff59}
/* Image ASLMA : les contours blanc et gris l'entourent, les lettres seules font à peu près la hauteur du logo */
.crest .aslma-word{width:auto;height:calc(var(--logo-h) * 1.45);margin-left:calc(var(--logo-h) * -.12);filter:drop-shadow(0 2px 6px #0008)}
.tabs-shade{display:none}
@media (max-width:720px){
  .topbar .account{visibility:hidden}
  .topbar{--logo-h:26px;--logo-gap:8px}
  .tabs{left:auto;right:12px;top:calc(var(--safe-t) + (var(--top-h) - 40px) / 2);bottom:auto;z-index:32;padding:0;gap:2px;border-radius:20px;
    flex-direction:column;align-items:stretch;transform-origin:top right;
    /* Verre façon Apple : fond presque transparent, flou saturé, reflet clair sur le bord haut */
    background:linear-gradient(180deg,#ffffff26 0%,#ffffff0d 55%,#ffffff17 100%);border:1px solid #ffffff38;
    box-shadow:inset 0 1px 0 #ffffff59,inset 0 -1px 0 #ffffff14,0 14px 34px -10px #000e;
    backdrop-filter:blur(24px) saturate(190%);-webkit-backdrop-filter:blur(24px) saturate(190%)}
  .tabs.open{border-radius:26px;padding:8px;min-width:230px}
  .tabs:not(.open) .tab-glass{display:none}
  .tabs.open .tab-glass{border-radius:16px}  /* pastille en verre : sur la page en cours, suit le doigt */
  .tabs.open{touch-action:none}
  .tabs button[data-view]{display:none}
  .tabs .tab-current{display:flex;flex-direction:row;align-items:center;gap:6px;flex:none;height:40px;padding:0 10px 0 12px;border-radius:20px;
    font:700 15px var(--font);color:#fff}
  .tabs .tab-current .tc-label{white-space:nowrap}
  .tabs .tab-current .tc-icon{display:grid;place-items:center}
  .tabs .tab-current .tc-icon svg{stroke:var(--accent);filter:drop-shadow(0 0 8px rgb(var(--c-accent) / 0.667))}
  /* Changement d'écran : l'icône arrive du côté du glissé, le bouton s'étire comme une goutte */
  .tabs .tab-current.move-r .tc-icon{animation:tc-in-r .45s var(--ease-ios) both}
  .tabs .tab-current.move-l .tc-icon{animation:tc-in-l .45s var(--ease-ios) both}
  .tabs.nudge:not(.open){animation:nav-nudge .5s var(--ease-ios)}
  .tabs .tab-current .tc-chev{width:16px;height:16px;opacity:.6;transform:rotate(180deg);transition:transform .25s ease}
  .tabs .tab-current[data-badge]:not([data-badge=""])::after{top:-5px;left:auto;right:-5px}
  .tabs.open button[data-view]:not([hidden]),.tabs.open .tab-account{display:flex;flex-direction:row;align-items:center;justify-content:flex-start;
    gap:14px;flex:none;padding:12px 14px;border-radius:16px;font:600 16px var(--font);color:var(--muted);animation:tab-item-in .32s var(--ease-ios) both}
  .tabs.open button[data-view].on,.tabs.open button.glass-on{color:#fff}
  .tabs.open button[data-view].on svg,.tabs.open button.glass-on svg{stroke:var(--accent)}
  .tabs.open button[data-view].on.glass-off{color:var(--muted)}
  .tabs.open button[data-view].on.glass-off svg{stroke:currentColor}
  .tabs.open button[data-badge]:not([data-badge=""])::after{top:50%;left:auto;right:12px;transform:translateY(-50%)}
  .tabs.open .tab-current{order:-1;height:44px;border-bottom:1px solid #ffffff1f;border-radius:18px 18px 0 0;margin-bottom:4px}
  .tabs.open .tab-current .tc-chev{transform:none;margin-left:auto}
  .tabs.open .tab-current[data-badge]::after{display:none}
  .tabs.open .tab-account{margin-top:4px;border-top:1px solid #ffffff1f;border-radius:0 0 16px 16px;color:#fff}
  .tabs-shade{display:block;position:fixed;inset:0;z-index:30;background:#0005;backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);
    animation:menu-fade .3s ease both}
  .tabs-shade[hidden]{display:none}
  .tabs-shade.closing{animation:menu-fade .24s ease reverse both}
  /* Ouverture : le bouton se déploie jusqu'à la taille de la liste (--sx/--sy : bouton / liste), sans rebond ;
     les lignes apparaissent l'une après l'autre en passant du flou au net. Fermeture : l'inverse, plus rapide. */
  .tabs.open{animation:menu-open .42s var(--ease-ios) both}
  .tabs.open.closing{animation:menu-close .24s cubic-bezier(.4,0,.8,.2) both}
  .tabs.closing button[data-view],.tabs.closing .tab-account,.tabs.closing .tab-glass{animation:tab-item-out .14s ease both}
  .tabs.open > :nth-child(3){animation-delay:.03s}.tabs.open > :nth-child(4){animation-delay:.06s}
  .tabs.open > :nth-child(5){animation-delay:.09s}.tabs.open > :nth-child(6){animation-delay:.12s}
  .tabs.open > :nth-child(7){animation-delay:.15s}.tabs.open > :nth-child(8){animation-delay:.18s}
  .tabs.open > :nth-child(n+9){animation-delay:.21s}
  /* Plus de barre en bas : Aide seule en bas à droite */
  .help-fab{bottom:calc(16px + var(--safe-b))}
  .notif-fab{bottom:calc(74px + var(--safe-b))}
  .notif-peek{bottom:calc(132px + var(--safe-b))}
  .main{padding-bottom:calc(var(--safe-b) + 84px)!important}
  .toast{bottom:calc(80px + var(--safe-b))}
}
:root{--ease-ios:cubic-bezier(.32,.72,0,1)}
@keyframes tab-item-in{from{opacity:0;transform:translateY(-6px) scale(.97);filter:blur(5px)}to{opacity:1;transform:none;filter:none}}
@keyframes tab-item-out{to{opacity:0;filter:blur(4px)}}
@keyframes menu-open{from{transform:scale(var(--sx,.3),var(--sy,.15));border-radius:20px}to{transform:none}}
@keyframes menu-close{to{transform:scale(var(--sx,.3),var(--sy,.15));opacity:0}}
/* Petits téléphones : le bouton fermé n'affiche que l'icône pour ne pas toucher les logos */
/* Nom de la page caché seulement s'il toucherait les logos (fitTabCurrent dans app.js) */
.tabs:not(.open) .tab-current.compact .tc-label{display:none}
@keyframes menu-fade{from{opacity:0}to{opacity:1}}
@keyframes tc-in-r{from{opacity:0;transform:translateX(16px);filter:blur(3px)}to{opacity:1;transform:none;filter:none}}
@keyframes tc-in-l{from{opacity:0;transform:translateX(-16px);filter:blur(3px)}to{opacity:1;transform:none;filter:none}}
@keyframes nav-nudge{0%{transform:none}30%{transform:scale(1.14,.9)}65%{transform:scale(.98,1.03)}100%{transform:none}}
@media (prefers-reduced-motion:reduce){.tabs.open,.tabs.open button,.tabs.closing,.tabs.closing button,.tabs-shade,.tabs.nudge,.tc-icon{animation:none!important}}
/* --- Sections façon Apple Sports : titre + éléments dans un seul bloc, séparés par des lignes ; titre collé en haut
   tant qu'on est dans la section (groupSections dans app.js) --- */
.grp{position:relative}
.grp > .section-title,.grp > .day-head{position:sticky;top:var(--stick-top,60px);z-index:6;margin:22px -16px 0;padding:10px 20px 10px;
  background:linear-gradient(180deg,#07070Af0 0%,#07070Ad9 75%,#07070A00 100%);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}
.grp > .day-head{margin-top:14px}
#view-matchs .grp > .day-head,#view-matchs .grp > .section-title{top:calc(var(--stick-top,60px) + var(--filters-h,0px) - 1px);z-index:9}
.day{margin-top:0}
.grp-body{margin-top:4px;border-radius:var(--radius);overflow:hidden;
  background:linear-gradient(160deg,#ffffff10,#ffffff05);border:1px solid #ffffff14;
  box-shadow:0 1px 0 #ffffff14 inset,0 20px 40px -24px #000c}
.grp-body > *{margin:0!important;border:0!important;border-radius:0!important;background:none!important;box-shadow:none!important;
  backdrop-filter:none!important;-webkit-backdrop-filter:none!important}
.grp-body > * + *{border-top:1px solid #ffffff17!important}
.grp-body > .week-next{padding:10px 16px 8px}
.grp-body > .more-btn{width:100%;padding:13px 16px;color:var(--accent-2);font-weight:700}
.grp-body > .match:hover,.grp-body > .team-row:hover{background:#ffffff08!important}
@media (min-width:721px){.grp > .section-title,.grp > .day-head{margin-left:-4px;margin-right:-4px;padding-left:8px;padding-right:8px}}
/* --- Détail ouvert depuis une section : carte presque plein écran (jusqu'en haut, avec un espace), bords des cartes
   voisines visibles sur les côtés et points de position ; glisser passe à l'élément voisin (app.js : sheetNav) --- */
.sheet-peek,.sheet-dots{display:none}
.sheet-backdrop.detail{overflow:hidden;align-items:flex-end;gap:6px;background:#000c}
.sheet-backdrop.detail .sheet{flex:none;width:calc(100% - 36px);max-width:560px;height:calc(100dvh - var(--safe-t) - 14px);max-height:none;
  border-radius:28px 28px 0 0;border:1px solid #ffffff1f;border-bottom:0;will-change:transform}
.sheet-backdrop.detail .sheet-peek{display:block;visibility:hidden;flex:none;width:12px;height:calc(100dvh - var(--safe-t) - 44px);padding:0;
  border:1px solid #ffffff38;border-bottom:0;background:linear-gradient(160deg,#2a2a33,#18181e);cursor:pointer;
  backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px)}
.sheet-backdrop.detail .sheet-peek.prev{border-radius:0 22px 0 0;border-left:0}
.sheet-backdrop.detail .sheet-peek.next{border-radius:22px 0 0 0;border-right:0}
.sheet-backdrop.detail.has-prev .sheet-peek.prev,.sheet-backdrop.detail.has-next .sheet-peek.next{visibility:visible}
.sheet-backdrop.detail .sheet-dots{display:flex;justify-content:center;gap:6px;margin:-4px 0 10px}
.sheet-dots:empty{display:none!important}
.sheet-dots i{width:6px;height:6px;border-radius:50%;background:#ffffff40;transition:background .2s,width .2s}
.sheet-dots i.on{width:18px;border-radius:3px;background:#fff}
.sheet-dots span{font:600 12px var(--font);color:var(--muted)}
@media (min-width:721px){
  .sheet-backdrop.detail{align-items:center;gap:18px}
  .sheet-backdrop.detail .sheet{height:min(90dvh,880px);border-radius:28px;border-bottom:1px solid #ffffff1f}
  .sheet-backdrop.detail .sheet-peek{width:28px;height:min(80dvh,780px);border-radius:22px;border:1px solid #ffffff1f}
}
/* --- Carte de match épurée (.mc) : une ligne date · heure · catégorie, domicile / extérieur à droite avec l'icône des
   officiels (jaune : postes à pourvoir, vert : complet), puis l'adversaire --- */
.card.match.mc{padding:13px 16px}
.mc-top{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font:500 13px var(--font);color:var(--muted)}
.mc-when{color:var(--accent-2);font-weight:600}
.mc-when b{color:#fff;font-weight:700;font-variant-numeric:tabular-nums}
.mc-right{margin-left:auto;display:inline-flex;align-items:center;gap:6px}
.mc-right .pill{margin-left:0}
.need-dot{display:inline-grid;place-items:center;width:24px;height:24px;border-radius:50%}
.need-dot .ic{width:14px;height:14px;margin:0}
.need-dot.ko{color:#F5B44A;background:#F5A52414}
.need-dot.ok{color:#3DD68C;background:#3DD68C14}
.card.match.mc .match-title{margin:8px 0 0;gap:9px}
.card.match.mc .logo{width:24px;height:24px;flex-basis:24px}
.card.match.mc .opp{font:600 15px/1.25 var(--font);letter-spacing:0}
.card.match.mc .insta-link{position:relative;left:auto;top:auto;transform:none;width:26px;height:26px}
.card.match.mc .insta-spark{font-size:10px;top:-5px;right:-5px}  /* petite étincelle sur l'icône Instagram */
.card.match.mc .insta-link:hover,.card.match.mc .insta-link:active{transform:scale(1.08)}
/* --- Page Planning : une carte par équipe dans « Planning complet du club », nom de l'équipe = lien vers sa fiche --- */
.team-link{background:none;border:0;padding:0;font:700 15px var(--font);color:var(--text);cursor:pointer;text-align:left}
.team-link:hover,.team-link:active{color:var(--accent-2)}
.session .team-link{font-size:14px;font-weight:600}
.card.plan-team{padding:12px 16px}
.card.plan-team .plan-head{margin-bottom:6px}
.card.plan-gym{padding:12px 16px}
/* Réponse à une séance d'entraînement (planning, fiche équipe) : modifiable tant que l'appel est ouvert. */
.seance-answer{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:8px}
.seance-answer .qd-who{flex:1 0 100%;font-size:12px;color:var(--muted)}

/* Fiche d'un bénévole : total des points et participations, puis ses matchs. */
.benevole-total{display:flex;gap:10px;margin:12px 0 4px}
.benevole-total>div{flex:1;padding:12px 14px;border-radius:16px;background:var(--glass,rgba(255,255,255,.06));border:1px solid var(--line)}
.benevole-total b{display:block;font:800 26px var(--font-title)}.benevole-total small{color:var(--muted);font-size:12px}
.podium-row .chev,.card.nav-list .chev{color:var(--muted)}

/* --- Section = un seul objet : le titre est l'en-tête du bloc (même rectangle), un peu démarqué, et reste collé en
   haut tant qu'on est dans la section --- */
.grp{margin-top:18px;border-radius:var(--radius);background:linear-gradient(160deg,#ffffff10,#ffffff05);border:1px solid #ffffff14;
  box-shadow:0 1px 0 #ffffff14 inset,0 20px 40px -24px #000c}
.grp > .section-title,.grp > .day-head{margin:0!important;padding:13px 16px 11px!important;border-radius:var(--radius) var(--radius) 0 0;
  background:#17171c;border-bottom:1px solid #ffffff17;backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);
  font-size:15px;letter-spacing:.01em}
.grp > .section-title:last-child,.grp > .day-head:last-child{border-radius:var(--radius);border-bottom:0}
.grp-body{margin-top:0;border:0;background:none;box-shadow:none;border-radius:0 0 var(--radius) var(--radius)}
.grp > .day-head{margin-top:0}
.grp + .grp{margin-top:14px}
@media (min-width:721px){.grp > .section-title,.grp > .day-head{margin:0!important}}
/* Repères en faisant défiler : chaque section est une carte bien détachée du fond (bord visible, espace entre deux
   sections), son titre porte un trait rouge à gauche, et les éléments alternent un fond très léger / un peu plus marqué. */
.grp{background:linear-gradient(160deg,#18181ee6,#111116e6);border-color:#ffffff24}
.grp + .grp,.day + .day .grp{margin-top:24px}
.grp > .section-title,.grp > .day-head{box-shadow:inset 3px 0 0 var(--accent)}
.grp-body > :nth-child(even){background:#ffffff09!important}
.grp-body > .match:hover,.grp-body > .team-row:hover{background:#ffffff12!important}

/* Aide : mêmes icônes que les écrans */
.help-item .help-ic .ic{width:18px;height:18px;color:var(--accent);vertical-align:-.25em}.help-item .help-ic b{color:var(--accent);font-size:15px}

/* Anniversaires à venir dans mon équipe : discret, sous ceux du jour */
.birthday-soon{display:flex;align-items:flex-start;gap:10px;padding:11px 14px;margin:0 0 12px;font-size:13px;line-height:1.45;color:var(--muted)}
.birthday-soon .ico{flex:none;color:var(--accent);padding-top:1px}.birthday-soon .ico .ic{width:17px;height:17px}
.birthday-soon p{margin:0}.birthday-soon p + p{margin-top:3px}.birthday-soon b{color:var(--text,#fff);font-weight:600}.birthday-soon .sub{font-size:12px;margin-top:4px}

/* Installer l'appli : smartphone dans le navigateur, en bas au milieu (même verre que le bouton d'aide) */
.install-btn{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(16px + var(--safe-b));z-index:20;height:46px;padding:0 20px;
  display:flex;align-items:center;gap:8px;white-space:nowrap;border-radius:999px;cursor:pointer;color:#fff;font:700 14px var(--font);
  border:1px solid #ffffff38;background:linear-gradient(180deg,rgb(var(--c-accent) / 0.902),rgb(var(--c-dark) / 0.902));
  box-shadow:inset 0 1px 0 #ffffff59,0 10px 24px -8px #000e,0 0 18px -4px rgb(var(--c-accent) / 0.533);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}
.install-btn svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
.install-btn[hidden]{display:none}
body:has(#installBtn:not([hidden])) .main{padding-bottom:calc(80px + var(--safe-b))}

.help-item .ios-ic{width:20px;height:20px;padding:2px;margin:0 2px;vertical-align:-.35em;border-radius:6px;background:#ffffff14;color:#fff}

/* Appli installée sur iPhone : iOS floute une bande sous l'heure, plus haute que la zone réservée.
   On descend l'en-tête (et le menu) pour qu'il sorte de ce flou. -webkit-touch-callout n'existe que sur iOS : Android ne change pas. */
@media (display-mode:standalone){
  @supports (-webkit-touch-callout:none){
    :root{--safe-t:calc(env(safe-area-inset-top,0px) + 18px)}
  }
}

/* Notifications sur le téléphone : invitation à activer (centre de notifications, Mon compte) */
.push-box{margin:12px 0;padding:14px 16px;border-radius:16px;background:#ffffff0a;border:1px solid #ffffff17}
.card .push-box{margin:10px 0 0;background:none;border:0;padding:6px 0 0}

/* --- Dérogations --- */
.derog-card{display:block;width:100%;text-align:left;color:inherit;padding:12px 14px;margin-bottom:8px;cursor:pointer}
.derog-top{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}
.derog-top .badge{flex:0 0 auto}
.derog-card .sub{font-size:12px;color:var(--muted);margin-top:3px}
.derog-msg{margin-top:6px;font-size:14px}

/* Champs date et heure sur iPhone : Safari leur donne une largeur minimale (ils débordaient de leur colonne et se
   chevauchaient) et une hauteur nulle quand ils sont vides. */
.field input[type="date"],.field input[type="time"]{-webkit-appearance:none;appearance:none;min-width:0;max-width:100%;
  min-height:46px;display:block;text-align:left}
.field input::-webkit-date-and-time-value{text-align:left;min-height:1.2em}
.sy-row2 > *{min-width:0}
/* En-tête « Sur FBI » : titre et Actualiser, puis les trois filtres (toujours visibles en entier), puis la lecture. */
.derog-head-top{display:flex;justify-content:space-between;align-items:center;gap:10px}
.derog-filters{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-top:10px}
.derog-filters .chip{padding:6px 4px;font-size:12px;text-align:center;font-family:var(--font);letter-spacing:0;text-transform:none;min-width:0;
  overflow:hidden;text-overflow:ellipsis}
.derog-lu{margin-top:8px;font:400 12px var(--font);letter-spacing:0;text-transform:none;color:var(--muted)}

/* Anniversaires compacts (accueil) : « Anniversaire : … » et « À venir : … » dans une seule carte. */
.bday{padding:10px 14px;margin:8px 0 12px;display:grid;gap:8px}
.bday.has-now{background:linear-gradient(120deg,rgb(var(--c-accent) / 0.188),rgb(var(--c-dark) / 0.133) 60%,#ffffff06);border-color:rgb(var(--c-accent) / 0.251)}
.bday-row{display:flex;align-items:flex-start;gap:10px}
.bday-row p{margin:0;font-size:14px;line-height:1.45}
.bday-row .k{font-weight:700}
.bday-ic{flex:none;width:26px;height:26px;border-radius:9px;display:grid;place-items:center}
.bday-ic .ic{width:16px;height:16px}
.bday-row.now .bday-ic{color:#fff;background:var(--grad,var(--accent))}
.bday-row.soon .bday-ic{color:var(--accent)}
.bday-row.soon p{font-size:13px;color:var(--muted)}
.bday-row.soon b,.bday-row.soon .k{color:var(--text,#fff);font-weight:600}

/* Écran Admin : lignes courtes « Gestion » (la liste s'ouvre dans une fenêtre). */
.admin-menu{padding:2px 16px}
.admin-menu .rowline{width:100%;background:none;border:0;border-bottom:1px solid var(--line);color:inherit;font:inherit;text-align:left;cursor:pointer}
.admin-menu .rowline:last-child{border-bottom:0}
.admin-menu .rowline .sub{white-space:nowrap}

/* Accueil : le week-end en un coup d'œil (tuiles heure + logo + catégorie). */
.we-switch{display:flex;gap:6px}.we-switch .chip{padding:5px 10px;font-size:12px}
.card.we{padding:6px 10px;display:grid;gap:6px}
.we-day{display:flex;align-items:flex-start;gap:10px}
.we-day + .we-day{border-top:1px solid var(--line);padding-top:6px}
.we-label{flex:0 0 52px;white-space:nowrap;font-weight:700;font-size:12px;padding-top:5px;color:var(--accent)}
.we-tiles{flex:1;display:flex;flex-wrap:wrap;gap:5px}
.we-tile{width:72px;display:flex;flex-direction:column;align-items:center;gap:2px;padding:5px 3px;border-radius:12px;background:#ffffff0a;border:1px solid var(--line);color:inherit;font:inherit;cursor:pointer}
.we-tile .logo{width:20px;height:20px;flex:0 0 20px;font-size:8px}
.we-time{font-weight:800;font-size:13px}
.we-cat{font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.we-nav{display:flex;align-items:center;justify-content:space-between;gap:8px}
.we-when{flex:1;text-align:center;font-size:12px;color:var(--muted)}.we-when b{color:var(--text,#fff)}
.we-arrow{width:28px;height:28px;flex:none;border-radius:50%;border:1px solid var(--line);background:none;color:inherit;font-size:17px;line-height:1;cursor:pointer;display:grid;place-items:center;padding:0}
.we-arrow .ic{width:14px;height:14px}
.we-tools{display:flex;gap:4px}
.we-arrow.spin{animation:spin 1s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.we-tile{position:relative}
.we-tile.mine{border-color:#F5C54266}
.we-star{color:#F5C542;margin-right:2px;font-size:10px}
.we-res{font-weight:900;font-size:10px;width:15px;height:15px;border-radius:4px;display:grid;place-items:center}
.we-res.win{background:var(--ok-bg);color:var(--ok)}.we-res.loss{background:var(--ko-bg);color:var(--ko)}.we-res.draw{background:#ffffff14;color:var(--muted)}
.we-top{display:flex;align-items:center;gap:3px;height:18px}
.we-score{font-size:10px;font-weight:700;color:var(--muted)}
.we-need.need-dot{position:absolute;top:2px;right:2px;width:13px;height:13px;padding:0;margin:0;display:grid;place-items:center;border-radius:50%}
.we-need.need-dot .ic{width:9px;height:9px}
.who.off{color:var(--ok);font-weight:700}
.rowline .k small{display:block;font-weight:400;font-size:11px;color:var(--muted)}
/* Horaire à confirmer (dérogation acceptée par les deux clubs, en attente du comité) : grisé. */
.pill.tbc{background:#ffffff12;color:var(--muted);border:1px dashed #ffffff40;font-size:11px;padding:2px 8px;border-radius:999px;margin-left:6px}
.mc-when.tbc{opacity:.6;font-style:italic}
.we-tile.tbc{border-style:dashed;opacity:.75}.we-tile.tbc .we-time{font-style:italic;color:var(--muted)}
.tbc-note{font-size:13px;color:var(--muted);margin:8px 0 0}.tbc-note .pill{margin:0 6px 0 0}
/* Fiche d'un match : logo de l'adversaire à côté du titre, classement dans la poule. */
.match-head{display:flex;align-items:center;gap:12px;margin-top:6px}
.match-head .logo{width:44px;height:44px;flex:0 0 44px;font-size:14px}
.match-head h2{margin:0;min-width:0}
.match-rank{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:6px;font-size:13px;color:var(--muted)}
.match-rank b{color:var(--text,#fff)}.match-rank small{font-size:9px;vertical-align:super}
/* Logo du championnat de l'équipe (écran Équipes), à la place des initiales. */
.avatar.team-logo{object-fit:contain;background:#fff;padding:2px;border-radius:10px}
.team-card-logo{width:44px;height:52px;object-fit:contain;background:#fff;border-radius:10px;padding:3px;flex:none}
/* --- Fiche équipe à onglets (app.js : teamPage) --- */
.tm-top{position:sticky;top:0;z-index:6;margin:0 -18px;padding:6px 18px 0;background:#111116;overflow:hidden;isolation:isolate;transition:padding-top .25s var(--ease-ios,ease)}
/* Halo : lueur rouge du club derrière le logo, avec un reflet très léger des couleurs du logo */
.tm-top::before{content:"";position:absolute;z-index:-1;inset:-40% -10% 20% -30%;background:var(--tm-logo) 18% 50%/40% no-repeat;filter:blur(34px) saturate(2);opacity:.5}
.tm-top::after{content:"";position:absolute;z-index:-1;inset:0;pointer-events:none;
  background:radial-gradient(80% 150% at 10% 35%,var(--tm-h1,rgb(var(--c-accent) / 0.549)),var(--tm-h1b,rgb(var(--c-accent) / 0.149)) 50%,transparent 78%),radial-gradient(55% 110% at 100% 0%,var(--tm-h2,rgb(var(--c-accent2) / 0.239)),transparent 72%),linear-gradient(180deg,#ffffff0a,transparent)}
.tm-head{display:flex;align-items:center;gap:12px;padding:10px 0 4px}
.tm-head h2{font-size:22px;padding-right:0;overflow-wrap:anywhere}
.tm-logo-wrap{position:relative;flex:none;display:grid}
.tm-logo-wrap::before{content:"";position:absolute;inset:-16px;border-radius:50%;background:radial-gradient(closest-side,var(--tm-glow,rgb(var(--c-glow2) / 0.867)),var(--tm-h1b,rgb(var(--c-accent) / 0.333)) 60%,transparent);filter:blur(8px);z-index:-1;animation:tm-glow 3.2s ease-in-out infinite}
@keyframes tm-glow{0%,100%{opacity:.75;transform:scale(.95)}50%{opacity:1;transform:scale(1.08)}}
@media (prefers-reduced-motion:reduce){.tm-logo-wrap::before{animation:none}}
.tm-logo-wrap .team-card-logo{box-shadow:0 0 0 1px #ffffff40,0 0 26px var(--tm-h1,rgb(var(--c-accent) / 0.6)),0 6px 18px #0008}
.tm-close{flex:none;width:40px;height:40px;border-radius:50%;border:1px solid #ffffff40;background:#ffffff26;color:#fff;font-size:26px;font-weight:300;line-height:1;padding:0 0 2px;cursor:pointer;
  backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);box-shadow:0 4px 14px #0006}
.tm-close:active{background:#ffffff40}
#sheet.team .sheet-close{display:none}
/* Gros caractères (réglage du téléphone) : les onglets gardent leur largeur et défilent au lieu de se chevaucher. */
.tm-tabs{display:flex;justify-content:space-between;gap:2px;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;touch-action:pan-x;margin:6px -18px 0;padding:0 10px;
  border-bottom:1px solid transparent;border-image:linear-gradient(90deg,transparent,var(--tm-c1,rgb(var(--c-accent))) 20%,var(--tm-h2,rgb(var(--c-accent2) / 0.502)) 55%,transparent) 1}
.tm-tabs::-webkit-scrollbar{display:none}
.tm-tabs button{flex:1 0 auto;min-width:max-content;white-space:nowrap;background:none;border:0;color:var(--muted);font:700 14px var(--font-title);padding:10px 4px 11px;position:relative;cursor:pointer;touch-action:manipulation}
.tm-tabs button.on{color:var(--text,#fff)}
.tm-tabs button.on::after{content:"";position:absolute;left:18%;right:18%;bottom:-1px;height:3px;border-radius:3px;background:var(--tm-c1,var(--accent));box-shadow:0 0 10px var(--tm-glow,rgb(var(--c-accent) / 0.667))}
.tm-body{padding-bottom:8px}
.tm-next{display:flex;flex-direction:column;gap:12px;width:100%;padding:14px 16px;text-align:left;color:inherit;font:inherit;cursor:pointer}
.tm-next.tbc{border-style:dashed}
.tm-next-top{display:flex;justify-content:space-between;align-items:center;font-size:13px;color:var(--muted)}
.tm-comp{font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;padding:4px 9px;border-radius:999px;background:#ffffff0d}
.tm-next-row{display:flex;align-items:center;gap:8px}
.tm-side{flex:1;min-width:0;display:flex;align-items:center;gap:8px}
.tm-side.home{justify-content:flex-end;text-align:right}
.tm-side:not(.home){flex-direction:row-reverse;justify-content:flex-end}
.tm-name{font-weight:600;font-size:14px;line-height:1.2;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.tm-side .logo{width:30px;height:30px;flex:0 0 30px}
.tm-time{flex:none;font:800 17px var(--font-title);color:var(--muted)}
.tm-next.tbc .tm-time{font-style:italic}
.tm-next-conv{display:flex}
.tm-last{display:flex;justify-content:space-around;gap:4px;padding:14px 8px}
.tm-res{flex:1;max-width:72px;display:flex;flex-direction:column;align-items:center;gap:8px;background:none;border:0;color:inherit;padding:0 0 6px;cursor:pointer;position:relative}
.tm-res .logo{width:30px;height:30px;flex:0 0 30px}
.tm-score{font:800 14px var(--font-title);padding:4px 8px;border-radius:7px;white-space:nowrap;color:#fff}
.tm-score.win{background:#1f9d5c}.tm-score.loss{background:#c8383d}.tm-score.draw{background:#5a5f6b}
.tm-res.latest::after{content:"";position:absolute;bottom:0;left:22%;right:22%;height:3px;border-radius:3px;background:var(--ok)}
.tm-sys{display:flex;gap:8px}
.tm-sy{flex:1;min-width:0;max-width:150px;display:flex;flex-direction:column;background:var(--card);border:1px solid var(--line);border-radius:14px;overflow:hidden;padding:0;color:inherit;cursor:pointer;text-align:left}
.tm-sy-court svg{display:block;width:100%;height:70px;background:radial-gradient(80% 60% at 50% 50%,rgb(var(--c-court)),#0C0C11)}
.tm-sy-name{font-size:12px;font-weight:700;padding:6px 8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tm-sy.more{flex:0 0 74px}
.tm-sy-more{height:70px;display:grid;place-items:center;font:800 18px var(--font-title);color:var(--muted);background:#ffffff08}
.tm-sy-big svg{display:block;width:100%;height:min(52vh,360px);margin-top:12px;border-radius:16px;background:radial-gradient(80% 60% at 50% 50%,rgb(var(--c-court)),#0C0C11)}
.tm-sy-nav{display:flex;align-items:center;justify-content:center;gap:16px;margin-top:10px}
/* Fiche d'équipe : toujours en plein écran (app.js : sheetExpand) */
.sheet-backdrop.detail .sheet{transition:width .25s var(--ease-ios,ease),height .25s var(--ease-ios,ease),border-radius .25s,padding-top .25s}
.sheet-backdrop.detail.expanded{gap:0}
.sheet-backdrop.detail.expanded .sheet-peek,.sheet-backdrop.detail.expanded .sheet-dots{display:none}
.sheet-backdrop.detail.expanded .sheet{width:100%;height:100dvh;border-radius:0;border:0}
#sheet.team .sheet{padding-top:0}#sheet.team .sheet-grab{display:none}
.sheet-backdrop.detail.expanded .tm-top{padding-top:calc(6px + var(--safe-t))}
/* Fiche d'équipe : pas de rebond vertical de la carte (l'en-tête reste immobile) */
#sheet.team .sheet{overscroll-behavior:none}
@media (min-width:721px){.sheet-backdrop.detail.expanded .sheet{max-width:560px;border-radius:28px 28px 0 0}}
/* Matchs d'une équipe dans une fenêtre (app.js : showTeamMatches) : mêmes cartes que l'écran Matchs */
.tm-seg{margin:12px 0 4px}.tm-seg button{flex:1}
.sheet .day{margin-top:16px}
.sheet .day-head h2{font:700 16px var(--font-title);letter-spacing:-.01em;padding-right:0}
.sheet .day .card.match + .card.match{margin-top:8px}
/* --- Fiche d'un match à onglets (app.js : openMatch), même principe que la fiche équipe ; halo « aurore » :
   rouge du club de notre côté, bleu-violet froid du côté de l'adversaire, reflet flouté du logo adverse --- */
.mt-top::before{inset:-30% -20% 10%;background:var(--tm-logo) var(--them-x) 45%/34% no-repeat;filter:blur(34px) saturate(2);opacity:.38}
.mt-top::after{background:radial-gradient(55% 90% at var(--us-x) 42%,var(--us-h,rgb(var(--c-accent) / 0.6)),var(--us-h2,rgb(var(--c-accent) / 0.141)) 50%,transparent 75%),
  radial-gradient(55% 90% at var(--them-x) 36%,rgb(var(--c-alt) / 0.651),rgb(var(--c-alt3) / 0.188) 50%,transparent 75%),
  radial-gradient(45% 50% at 50% 0%,rgb(var(--c-accent2) / 0.18),transparent 70%),linear-gradient(180deg,#ffffff08,transparent);
  animation:mt-aurora 6s ease-in-out infinite}
@keyframes mt-aurora{0%,100%{opacity:.85;transform:scale(1)}50%{opacity:1;transform:scale(1.06)}}
@media (prefers-reduced-motion:reduce){.mt-top::after{animation:none}}
.mt-top .tm-tabs{border-image:linear-gradient(90deg,transparent,rgb(var(--c-accent)) 20%,rgb(var(--c-alt2)) 70%,transparent) 1}
.mt-top .tm-tabs button{font-size:13px;padding-left:2px;padding-right:2px}
.mt-bar{display:flex;align-items:center;justify-content:space-between;padding:6px 0 0}
.mt-pad{width:40px}
.mt-more{font-size:20px;letter-spacing:1px;padding-bottom:6px}
.mt-insta{position:relative;width:40px;height:40px;border-radius:14px;display:grid;place-items:center;color:#fff;
  background:linear-gradient(135deg,#F58529,#DD2A7B 55%,#8134AF);box-shadow:0 0 0 1px #ffffff30,0 0 22px #DD2A7B88}
.mt-insta .ic{width:21px;height:21px;margin:0}
.mt-score{display:flex;align-items:flex-start;gap:6px;padding:2px 0 12px}
.mt-team{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center;font-weight:700;font-size:14px;line-height:1.2}
.mt-team > span{overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow-wrap:anywhere}
.mt-team small{display:block;font-size:11px;color:var(--muted);font-weight:600;margin-top:2px}
.mt-team .logo{width:58px;height:58px;flex:none;box-shadow:0 0 0 1px #ffffff30,0 8px 22px #0009}
.mt-team.us .logo{box-shadow:0 0 0 1px #ffffff40,0 0 26px rgb(var(--c-accent) / 0.667),0 8px 22px #0009}
.mt-mid{flex:none;min-width:108px;text-align:center;padding-top:8px}
.mt-big{font:800 40px/1 var(--font-title);letter-spacing:-.02em;white-space:nowrap;text-shadow:0 0 28px #ffffff38}
.mt-big.tbc{font-style:italic;color:var(--muted)}
.mt-when{font-size:13px;color:var(--muted);margin-top:8px}
.mt-res{display:inline-block;margin-top:8px;font:800 12px var(--font-title);padding:3px 10px;border-radius:999px}
.mt-res.win{background:var(--ok-bg);color:var(--ok)}.mt-res.loss{background:var(--ko-bg);color:var(--ko)}.mt-res.draw{background:#ffffff14;color:var(--muted)}
.mt-info{padding:10px 0 0}
.mt-gym{display:flex;align-items:center;justify-content:center;gap:5px;margin:0 auto 2px;max-width:100%;font-size:11.5px;color:var(--muted);text-decoration:none}
.mt-gym span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mt-gym b{color:var(--accent-2);font-weight:700;flex:none}.mt-gym b::before{content:"·";color:var(--muted);margin-right:5px}
.mt-gym .ic{width:12px;height:12px;flex:none}
.mt-comp{text-align:center;font:700 11px var(--font-title);letter-spacing:.08em;text-transform:uppercase;color:#ffffffb3;margin:2px 0 8px}
.mt-team .logo.mt-aslma{background:none;object-fit:contain;border-radius:0;box-shadow:none;filter:drop-shadow(0 0 14px rgb(var(--c-accent) / 0.667)) drop-shadow(0 6px 14px #0009)}
.mt-tbc{display:inline-block;margin-top:6px}
.mt-info:empty{display:none}
.mt-menu{display:flex;flex-direction:column;gap:8px;margin-top:14px}
.mt-kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:14px}
.mt-kpis div{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:12px 6px;text-align:center}
.mt-kpis b{display:block;font:800 24px var(--font-title)}
.mt-kpis span{font-size:11px;color:var(--muted)}
.mt-rank{font-size:11px;color:#ffffffb3;padding:3px 9px;border-radius:999px;background:#ffffff14;border:1px solid #ffffff24;white-space:nowrap;
  backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
.mt-rank b{font:800 13px var(--font-title);color:#fff}.mt-rank sup{font-size:8px}
.mt-team.us .mt-rank{border-color:rgb(var(--c-accent) / 0.502);background:rgb(var(--c-accent) / 0.18)}
.tm-side .logo.mt-aslma{background:none;object-fit:contain;border-radius:0;filter:drop-shadow(0 0 10px rgb(var(--c-accent) / 0.6))}
/* Fiche d'un match : actions réservées en petites pastilles, en haut à gauche de l'en-tête */
.mt-bar{display:grid;grid-template-columns:1fr auto 1fr;gap:8px}
.mt-acts{grid-column:1;min-width:0;display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.mt-bar .mt-insta,.mt-bar .mt-links{grid-column:2}.mt-links{display:flex;gap:8px}
.mt-video{background:#fff;box-shadow:0 0 0 1px #ffffff30,0 0 22px #FF003388}
.mt-video .ic.yt{width:26px;height:26px}.mt-act .ic.yt{width:18px;height:18px}.mt-bar > .tm-close{grid-column:3;justify-self:end}
.mt-act{display:inline-flex;align-items:center;gap:5px;height:30px;padding:0 11px;border-radius:999px;border:1px solid #ffffff2e;background:#ffffff14;
  color:#ffffffd9;font:600 12px var(--font-body,inherit);white-space:nowrap;cursor:pointer;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
.mt-act:active{background:#ffffff2e}
.mt-act .ic{width:14px;height:14px;margin:0}
/* --- Page « Le club » (app.js : renderClub) : en-tête à halos animés, cartes vitrées, apparition en cascade --- */
#view-club{padding-bottom:20px}
.cl-hero{position:relative;overflow:hidden;isolation:isolate;margin:8px 0 14px;padding:34px 20px 24px;border-radius:28px;text-align:center;
  background:#0c0c12;border:1px solid #ffffff17}
.cl-aura{position:absolute;inset:0;z-index:-1;pointer-events:none}
.cl-aura i{position:absolute;border-radius:50%;filter:blur(48px);opacity:.75;mix-blend-mode:screen}
.cl-aura i:nth-child(1){width:70%;height:55%;left:-15%;top:-10%;background:rgb(var(--c-accent));animation:cl-drift1 14s ease-in-out infinite}
.cl-aura i:nth-child(2){width:65%;height:50%;right:-20%;top:5%;background:rgb(var(--c-alt));animation:cl-drift2 17s ease-in-out infinite}
.cl-aura i:nth-child(3){width:55%;height:45%;left:20%;bottom:-20%;background:rgb(var(--c-accent2));opacity:.45;animation:cl-drift3 19s ease-in-out infinite}
.cl-aura i:nth-child(4){width:40%;height:35%;right:5%;bottom:-5%;background:rgb(var(--c-alt3));opacity:.4;animation:cl-drift1 23s ease-in-out infinite reverse}
@keyframes cl-drift1{0%,100%{transform:translate(0,0) scale(1)}50%{transform:translate(18%,12%) scale(1.15)}}
@keyframes cl-drift2{0%,100%{transform:translate(0,0) scale(1)}50%{transform:translate(-20%,15%) scale(1.1)}}
@keyframes cl-drift3{0%,100%{transform:translate(0,0) scale(1)}50%{transform:translate(-12%,-18%) scale(1.2)}}
.cl-hero::after{content:"";position:absolute;inset:0;z-index:-1;background:radial-gradient(120% 80% at 50% 110%,#0c0c12 20%,transparent 70%),linear-gradient(180deg,#ffffff0a,transparent 40%)}
.cl-crest{position:relative;display:inline-grid;place-items:center;margin-bottom:10px}
.cl-crest::before{content:"";position:absolute;inset:-22px;border-radius:50%;background:radial-gradient(closest-side,rgb(var(--c-glow2) / 0.667),rgb(var(--c-accent) / 0.2) 60%,transparent);filter:blur(10px);animation:tm-glow 3.6s ease-in-out infinite}
.cl-crest img{position:relative;width:104px;height:auto;filter:drop-shadow(0 8px 22px #000a)}
.cl-kicker{font:700 12px var(--font-title);letter-spacing:.14em;text-transform:uppercase;color:#FFB4B6;margin:4px 0 6px}
.cl-hero h1{font:800 34px/1.05 var(--font-title);letter-spacing:-.02em;margin:0;background:linear-gradient(180deg,#fff 30%,#FFC9CB);-webkit-background-clip:text;background-clip:text;color:transparent}
.cl-lead{max-width:420px;margin:12px auto 0;color:#ffffffc7;font-size:15px;line-height:1.45}
.cl-stats{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin:20px 0 0}
@media (min-width:560px){.cl-stats{grid-template-columns:repeat(4,1fr)}}
.cl-stats div{padding:12px 6px;border-radius:16px;background:#ffffff0f;border:1px solid #ffffff1c;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}
.cl-stats b{display:block;font:800 26px var(--font-title);color:#fff}
.cl-stats span{font-size:11.5px;color:#ffffffb3}
.cl-cta{margin-top:18px}.cl-cta .btn{box-shadow:0 0 28px rgb(var(--c-accent) / 0.4)}.cl-cta .btn .ic,.cl-card .btn .ic{width:16px;height:16px;margin:0 6px -3px 0}
.cl-card{position:relative;margin:14px 0 0;padding:20px 18px;border-radius:24px;background:linear-gradient(160deg,#ffffff0d,#ffffff04);border:1px solid #ffffff17}
.cl-card::before{content:"";position:absolute;inset:-1px;border-radius:inherit;padding:1px;pointer-events:none;
  background:linear-gradient(135deg,rgb(var(--c-accent) / 0.502),transparent 35%,transparent 65%,rgb(var(--c-alt2) / 0.4));-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude}
.cl-label{font:700 11px var(--font-title);letter-spacing:.14em;text-transform:uppercase;color:var(--accent-2);margin:0 0 6px}
.cl-card h2{font:800 21px/1.2 var(--font-title);letter-spacing:-.01em;margin:0 0 10px}
.cl-card p{color:#ffffffc7;line-height:1.55;margin:0 0 10px;font-size:14.5px}.cl-card p b{color:#fff}
.cl-values{display:grid;gap:10px;margin-top:14px}
@media (min-width:600px){.cl-values{grid-template-columns:1fr 1fr}}
.cl-value{position:relative;overflow:hidden;padding:18px 16px;border-radius:22px;background:#ffffff08;border:1px solid #ffffff14}
.cl-value::after{content:"";position:absolute;width:140px;height:140px;right:-50px;top:-60px;border-radius:50%;background:radial-gradient(closest-side,rgb(var(--c-accent) / 0.251),transparent);pointer-events:none}
.cl-value:nth-child(even)::after{background:radial-gradient(closest-side,rgb(var(--c-alt2) / 0.251),transparent)}
.cl-value-ic{display:grid;place-items:center;width:44px;height:44px;border-radius:14px;font-size:22px;background:#ffffff12;border:1px solid #ffffff1f;box-shadow:0 0 22px rgb(var(--c-accent) / 0.2)}
.cl-value h3{font:800 17px var(--font-title);margin:12px 0 6px}
.cl-value p{margin:0;color:#ffffffbf;font-size:14px;line-height:1.5}
.cl-teams{display:flex;flex-wrap:wrap;gap:6px}
.cl-main-gym{padding:4px 0 2px}
.cl-badge{display:inline-block;font:700 11px var(--font-title);letter-spacing:.06em;text-transform:uppercase;padding:4px 10px;border-radius:999px;background:rgb(var(--c-accent) / 0.18);color:#FFB4B6;border:1px solid rgb(var(--c-accent) / 0.4);margin-bottom:8px}
.cl-gyms{display:grid;gap:8px;margin-top:8px}
.cl-gym{display:flex;align-items:center;gap:12px;padding:12px;border-radius:16px;background:#ffffff08;border:1px solid #ffffff14;color:inherit;text-decoration:none}
.cl-main-gym .cl-gym{background:linear-gradient(135deg,rgb(var(--c-accent) / 0.122),#ffffff06);border-color:rgb(var(--c-accent) / 0.302)}
.cl-gym-ic{flex:none;width:38px;height:38px;border-radius:12px;display:grid;place-items:center;background:#ffffff12}
.cl-gym-ic .ic{width:18px;height:18px;margin:0}
.cl-gym-txt{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.cl-gym-txt small{color:var(--muted);font-size:12.5px}
.cl-gym-go{flex:none;font-size:12px;font-weight:700;color:var(--accent-2)}
.cl-social{display:grid;gap:10px;margin-top:14px}
@media (min-width:600px){.cl-social{grid-template-columns:1fr 1fr}}
.cl-social-card{position:relative;overflow:hidden;display:block;padding:20px 18px;border-radius:24px;color:inherit;text-decoration:none;border:1px solid #ffffff17;background:#ffffff06}
.cl-social-card::before{content:"";position:absolute;inset:-40% -30% auto auto;width:220px;height:220px;border-radius:50%;filter:blur(40px);opacity:.55;pointer-events:none}
.cl-social-card.ig::before{background:conic-gradient(from 200deg,#F58529,#DD2A7B,#8134AF,#F58529)}
.cl-social-card.wa::before{background:radial-gradient(closest-side,#25D366,#128C7E)}
.cl-social-ic{position:relative;display:grid;place-items:center;width:46px;height:46px;border-radius:15px;color:#fff}
.cl-social-card.ig .cl-social-ic{background:linear-gradient(135deg,#F58529,#DD2A7B 55%,#8134AF)}
.cl-social-card.wa .cl-social-ic{background:#25D366}
.cl-social-ic svg,.cl-social-ic .ic{width:24px;height:24px;margin:0}.cl-social-card.wa .cl-social-ic svg{fill:#fff}
.cl-social-card h3{position:relative;font:800 17px var(--font-title);margin:12px 0 6px}
.cl-social-card p{position:relative;margin:0 0 10px;color:#ffffffbf;font-size:14px;line-height:1.5}
.cl-social-go{position:relative;font-weight:700;font-size:13px;color:#fff}
.cl-join{text-align:center}.cl-join .actions{justify-content:center}
#view-club > section{animation:cl-in .6s var(--ease-ios,ease) both}
#view-club > section:nth-child(2){animation-delay:.08s}#view-club > section:nth-child(3){animation-delay:.16s}
#view-club > section:nth-child(4){animation-delay:.24s}#view-club > section:nth-child(5){animation-delay:.32s}
#view-club > section:nth-child(n+6){animation-delay:.4s}
@keyframes cl-in{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.cl-aura i,.cl-crest::before,#view-club > section{animation:none}}
.cl-plan-team{padding:10px 0;border-top:1px solid var(--line)}.cl-plan-team:first-of-type{border-top:0}
.cl-plan-head{font:800 15px var(--font-title);margin-bottom:6px}
.cl-plan-row{display:grid;grid-template-columns:84px 104px 1fr;gap:6px;font-size:13.5px;padding:3px 0}
.cl-plan-row .d{color:var(--muted)}.cl-plan-row .h{font-weight:700}
.cl-plan-row a{color:var(--accent-2);text-decoration:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* Accueil : lien vers « Le club » (app.js : clubLinkHtml), halo et étincelles comme le bouton Instagram */
.cl-link{position:relative;overflow:hidden;isolation:isolate;display:flex;align-items:center;gap:14px;width:100%;margin:10px 0 4px;padding:14px 16px;
  border-radius:22px;border:1px solid rgb(var(--c-accent) / 0.349);background:#101016;color:inherit;font:inherit;text-align:left;cursor:pointer}
.cl-link:active{transform:scale(.99)}
.cl-link-aura{position:absolute;inset:0;z-index:-1;pointer-events:none;
  background:radial-gradient(50% 120% at 8% 50%,rgb(var(--c-accent) / 0.4),transparent 70%),radial-gradient(45% 110% at 100% 0%,rgb(var(--c-alt) / 0.349),transparent 70%);
  animation:mt-aurora 6s ease-in-out infinite}
.cl-link-crest{position:relative;flex:none;display:grid;place-items:center;width:52px;height:52px}
.cl-link-crest::before{content:"";position:absolute;inset:-6px;border-radius:50%;background:radial-gradient(closest-side,rgb(var(--c-glow2) / 0.667),transparent);filter:blur(6px);animation:tm-glow 3.2s ease-in-out infinite}
.cl-link-crest img{position:relative;width:48px;height:auto;filter:drop-shadow(0 4px 10px #000a)}
.cl-link-crest .insta-spark{top:-4px;right:-6px;font-size:14px}
.cl-link-txt{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.cl-link-txt b{font:800 17px var(--font-title)}
.cl-link-txt small{font-size:12.5px;color:#ffffffb3;line-height:1.35}
.cl-link-new{align-self:flex-start;display:inline-flex;align-items:center;gap:4px;font:800 10px var(--font-title);letter-spacing:.1em;text-transform:uppercase;
  padding:3px 8px;border-radius:999px;color:#fff;background:linear-gradient(135deg,rgb(var(--c-accent)),rgb(var(--c-alt2)));box-shadow:0 0 14px rgb(var(--c-accent) / 0.533)}
.cl-link-spark{color:#FFF3B0;text-shadow:0 0 6px #FFD54A;animation:insta-spark 2.8s ease-in-out infinite .6s}
.cl-link .chev{flex:none;font-size:22px;color:#ffffffb3}
@media (prefers-reduced-motion:reduce){.cl-link-aura,.cl-link-crest::before,.cl-link-spark{animation:none}}
/* Logos dessinés pour le club (frontend/logos) : déjà sur fond, sans le cadre blanc des logos FFBB */
.avatar.team-logo.own,.team-card-logo.own{background:none;padding:0;border-radius:12px;object-fit:cover}
.team-card-logo.own{width:52px;height:52px;border-radius:14px}
/* Le club : les équipes avec leur logo */
.cl-teams{display:grid;grid-template-columns:repeat(auto-fill,minmax(88px,1fr));gap:12px 8px}
.cl-team{display:flex;flex-direction:column;align-items:center;gap:6px;padding:4px 2px;background:none;border:0;color:inherit;font:600 11.5px var(--font,inherit);text-align:center;cursor:pointer;line-height:1.25}
.cl-team .avatar.team-logo{width:56px;height:56px;border-radius:16px;box-shadow:0 6px 16px #0007}
.cl-team:active .avatar{transform:scale(.95)}
/* Pastille d'une équipe du club aux couleurs de son logo (app.js : teamTag, teamStyle) */
.tag{display:inline-flex;align-items:center;gap:4px;max-width:100%;padding:2px 9px;border-radius:999px;font:700 11.5px/1.35 var(--font-title);letter-spacing:.01em;
  white-space:nowrap;vertical-align:baseline;color:var(--tc,var(--text));background:linear-gradient(135deg,var(--c1,#2a2a33),var(--c2,#1d1d24));
  box-shadow:inset 0 0 0 1px #ffffff2e,inset 0 1px 0 #ffffff40,0 3px 12px -3px var(--c1,transparent);text-shadow:0 1px 2px #0000004d}
.tag[style=""]{text-shadow:none}
.cat.tag,.match-top .cat.tag{padding:3px 10px;font-size:12px;border-radius:999px;color:var(--tc,var(--text));background:linear-gradient(135deg,var(--c1,#ffffff14),var(--c2,#ffffff0a))}
.sub .tag{font-size:11px;padding:1px 8px}
.mt-team small .tag{margin-top:4px;font-size:11.5px}
.tm-name .tag{font-size:13px;padding:3px 10px;white-space:normal}
.section-title .tag{font-size:13px;padding:3px 11px}
.cl-plan-head .tag{font-size:13.5px;padding:3px 11px}
.team-link{background:none;border:0;padding:0;cursor:pointer}
/* Tuiles de la semaine : cadre neutre, halo aux couleurs de l'équipe, pastille de l'équipe (6 nov. 2026) */
.we-tile.tc{background:radial-gradient(120% 80% at 50% 0%,color-mix(in srgb,var(--c1) 30%,transparent),transparent 70%),#ffffff0a;
  box-shadow:0 6px 18px -8px var(--c1)}
.we-cat.we-pill{display:block;padding:1px 6px;border-radius:999px;font:700 9.5px/1.4 var(--font-title);color:var(--tc,var(--text));
  background:linear-gradient(135deg,var(--c1),var(--c2));box-shadow:inset 0 0 0 1px #ffffff2e,0 2px 8px -2px var(--c1);text-shadow:0 1px 2px #0000004d}
.we-pill .we-star{font-size:8px;margin-right:1px;color:#F5C542}
/* Cartes de match et lignes de la liste des équipes : halo aux couleurs de l'équipe, comme les tuiles de la semaine
   (6 nov. 2026 ; avant : liseré coloré à gauche des cartes de match) */
.card.match.mc.tc{background:radial-gradient(90% 120% at 0% 0%,color-mix(in srgb,var(--c1) 24%,transparent),transparent 65%),linear-gradient(160deg,#ffffff10,#ffffff05);
  box-shadow:0 8px 22px -12px var(--c1)}
.card.team-row.tc{background:radial-gradient(70% 140% at 0% 50%,color-mix(in srgb,var(--c1) 26%,transparent),transparent 70%),linear-gradient(160deg,#ffffff10,#ffffff05);
  box-shadow:0 8px 22px -12px var(--c1)}
/* Domicile / extérieur (app.js : haIcon) : maison sur pastille pleine, avion en contour, aux couleurs de l'équipe */
.ha{flex:none;display:inline-grid;place-items:center;width:30px;height:30px;border-radius:50%;margin-left:auto}
.ha .ha-svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2.1;stroke-linecap:round;stroke-linejoin:round}
.ha.home{color:var(--tc,#fff);background:linear-gradient(135deg,var(--c1,rgb(var(--c-glow2))),var(--c2,#B3121C));
  box-shadow:0 0 14px -2px var(--c1,rgb(var(--c-accent))),inset 0 1px 0 #ffffff55,inset 0 0 0 1px #ffffff26}
.ha.away{color:var(--c1,rgb(var(--c-accent2)));background:radial-gradient(circle at 30% 25%,#ffffff12,#ffffff05);
  box-shadow:inset 0 0 0 1.6px var(--c1,rgb(var(--c-accent))),0 0 12px -4px var(--c1,rgb(var(--c-accent)))}
.ha.away .ha-svg{filter:brightness(1.2)}
.mc-right .ha{margin-left:0}
.we-switch .ha-svg{width:13px;height:13px;margin:0 4px -2px 0;fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
/* Accueil : podium des 3 bénévoles (app.js : topBenevolesHtml) */
.card.pod{position:relative;overflow:hidden;isolation:isolate;padding:18px 12px 12px;border-radius:24px;background:linear-gradient(180deg,#16161d,#101015)}
.pod-aura{position:absolute;inset:0;z-index:-1;pointer-events:none;
  background:radial-gradient(40% 55% at 50% 38%,#F5C54240,transparent 70%),radial-gradient(30% 40% at 18% 60%,#C9D3E01f,transparent 70%),radial-gradient(30% 40% at 82% 66%,#E0915533,transparent 70%)}
.pod-thanks{text-align:center;margin:0 0 6px;font:700 11px var(--font-title);letter-spacing:.12em;text-transform:uppercase;color:#ffffff99}
.pod-stage{display:flex;align-items:flex-end;justify-content:center;gap:8px;padding-top:6px}
.pod-col{--m1:#FFE27A;--m2:#D99A12;--glow:#F5C542;flex:1;max-width:120px;min-width:0;display:flex;flex-direction:column;align-items:center;gap:4px;cursor:pointer;position:relative;text-align:center}
.pod-col.r1{order:2}.pod-col.r2{order:1;--m1:#F4F6FA;--m2:#9AA3B0;--glow:#C9D3E0}.pod-col.r3{order:3;--m1:#F6BF92;--m2:#B0612C;--glow:#E09155}
.pod-crown{font-size:20px;line-height:1;filter:drop-shadow(0 2px 6px #F5C54299);animation:pod-float 3s ease-in-out infinite}
@keyframes pod-float{0%,100%{transform:translateY(0)}50%{transform:translateY(-3px)}}
.pod-avatar{position:relative;width:54px;height:54px;border-radius:50%;padding:3px;background:conic-gradient(from 210deg,var(--m1),var(--m2),var(--m1),var(--m2),var(--m1));
  box-shadow:0 0 22px -4px var(--glow)}
.pod-col.r1 .pod-avatar{width:68px;height:68px}
.pod-avatar span{display:grid;place-items:center;width:100%;height:100%;border-radius:50%;background:#15151c;font:800 17px var(--font-title);color:#fff}
.pod-col.r1 .pod-avatar span{font-size:21px}
.pod-name{margin-top:4px;font:800 13.5px/1.2 var(--font-title);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pod-profil{font-size:10.5px;font-weight:700;color:var(--muted);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pod-step{position:relative;overflow:hidden;width:100%;margin-top:6px;padding:10px 4px 26px;border-radius:14px 14px 6px 6px;display:flex;flex-direction:column;align-items:center;
  background:linear-gradient(180deg,color-mix(in srgb,var(--glow) 30%,#1d1d25),#15151b 85%);box-shadow:inset 0 1px 0 #ffffff33,inset 0 0 0 1px #ffffff14}
.pod-col.r1 .pod-step{padding-bottom:46px}.pod-col.r3 .pod-step{padding-bottom:14px}
.pod-step b{font:800 22px var(--font-title);color:#fff}
.pod-col.r1 .pod-step b{font-size:26px;background:linear-gradient(180deg,#FFF3B0,#F5C542);-webkit-background-clip:text;background-clip:text;color:transparent}
.pod-step small{font-size:10.5px;color:#ffffffa6;font-weight:600}
.pod-step i{position:absolute;bottom:-14px;right:6px;font:900 italic 46px/1 var(--font-title);color:#ffffff10;font-style:normal}
.pod-col:active .pod-avatar{transform:scale(.95)}
.pod-all{display:block;margin:12px auto 0}
@media (prefers-reduced-motion:reduce){.pod-crown{animation:none}}

/* Inscription au club depuis l'appli */
.ins-cta{margin-top:10px;padding:14px;border-color:var(--accent)}
.ins-warn{margin-top:12px;padding:12px 14px;border-radius:12px;border:1px solid var(--warn);background:color-mix(in srgb,var(--warn) 12%,transparent);font-size:14px;line-height:1.45}
.ins-warn b{display:block;color:var(--warn);margin-bottom:2px}
.ins-warn.ok{border-color:var(--ok);background:var(--ok-bg)}
.ins-warn.ok b{color:var(--ok)}
.ins-2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.ins-total{display:flex;justify-content:space-between;align-items:center;margin-top:12px;padding:12px 14px;border-radius:12px;background:var(--accent-bg);border:1px solid var(--accent)}
.ins-total b{font-size:20px;font-family:var(--font-title)}
.ins-total.ok{background:var(--ok-bg);border-color:var(--ok)}
.ins-total.ko{background:var(--ko-bg);border-color:var(--ko)}
.ins-charte{margin-top:14px;font-size:13px;color:var(--muted);line-height:1.45}
.ins-charte summary{cursor:pointer;color:var(--accent);font-weight:600;font-size:14px}
.ins-charte p{margin:8px 0}
.ins-charte b{color:var(--text)}
.field .seg{margin-top:0}

/* Nouvelle version publiée pendant qu'une fenêtre est ouverte */
.upd-banner{position:fixed;left:50%;transform:translateX(-50%);top:calc(var(--safe-t,0px) + 10px);z-index:200;display:flex;align-items:center;gap:12px;padding:10px 12px 10px 16px;border:1px solid var(--accent);border-radius:999px;background:var(--card-2);color:var(--text);font:inherit;font-size:14px;box-shadow:0 8px 30px #0008;max-width:calc(100% - 32px);white-space:nowrap}
.upd-banner span{background:var(--accent);color:#fff;border-radius:999px;padding:6px 12px;font-weight:700;font-size:13px}

/* Matchs de la semaine : une ligne par jour qui défile au doigt (6 nov. 2026) */
.card.we,.we-day{min-width:0;max-width:100%}
.we-row{position:relative;flex:1;min-width:0}
.we-row .we-tiles{flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;scroll-snap-type:x proximity;
  scrollbar-width:none;-webkit-overflow-scrolling:touch;padding:2px 2px 12px;margin:-2px 0 -10px}
.we-row .we-tiles::-webkit-scrollbar{display:none}
.we-row .we-tile{flex:0 0 72px;scroll-snap-align:start}
.we-row.more-r .we-tiles{-webkit-mask-image:linear-gradient(to right,#000 calc(100% - 46px),transparent);mask-image:linear-gradient(to right,#000 calc(100% - 46px),transparent)}
.we-row.more-l .we-tiles{-webkit-mask-image:linear-gradient(to right,transparent,#000 22px);mask-image:linear-gradient(to right,transparent,#000 22px)}
.we-row.more-l.more-r .we-tiles{-webkit-mask-image:linear-gradient(to right,transparent,#000 22px,#000 calc(100% - 46px),transparent);mask-image:linear-gradient(to right,transparent,#000 22px,#000 calc(100% - 46px),transparent)}
.we-more{display:none;position:absolute;right:0;top:calc(50% - 5px);align-items:center;gap:5px;height:28px;min-width:28px;padding:0 9px;
  border-radius:999px;border:1px solid var(--accent);background:var(--card-2);color:var(--text);font:800 12px/1 var(--font-title);
  box-shadow:0 4px 14px #0009;cursor:pointer;animation:weNudge 1.6s ease-in-out infinite;transform:translateY(-50%)}
.we-row.more-r .we-more{display:flex}
.we-more::before{content:attr(data-n)}
.we-more::after{content:"›";font-size:17px;line-height:1;margin-top:-2px}
@keyframes weNudge{0%,100%{transform:translate(0,-50%)}50%{transform:translate(3px,-50%)}}
@media (prefers-reduced-motion:reduce){.we-more{animation:none}}
/* Dans les listes groupées (fond retiré à chaque ligne) : le halo de l'équipe reste, depuis la gauche de la ligne */
.grp-body > .card.match.mc.tc,.grp-body > .card.team-row.tc{
  background:radial-gradient(55% 140% at 0% 50%,color-mix(in srgb,var(--c1) 30%,transparent),color-mix(in srgb,var(--c1) 8%,transparent) 60%,transparent 100%)!important}
.grp-body > .card.match.mc.tc:hover,.grp-body > .card.team-row.tc:hover{
  background:radial-gradient(55% 140% at 0% 50%,color-mix(in srgb,var(--c1) 38%,transparent),color-mix(in srgb,var(--c1) 10%,transparent) 60%,transparent 100%)!important}
/* Planning des entraînements : chaque équipe dans un bloc avec le halo de ses couleurs */
.cl-plan-team.tc{border:1px solid #ffffff12;border-radius:14px;padding:10px 12px;margin:8px 0;
  background:radial-gradient(70% 120% at 0% 0%,color-mix(in srgb,var(--c1) 26%,transparent),transparent 70%),#ffffff06;
  box-shadow:0 8px 22px -14px var(--c1)}
.cl-plan-team.tc:first-of-type{border-top:1px solid #ffffff12}
/* Aperçu de l'image de convocation (avant le partage) */
.conv-preview{margin:12px auto 0;max-width:340px;aspect-ratio:1080/1350;border-radius:16px;overflow:hidden;background:#07070A;box-shadow:0 10px 30px #0008,0 0 0 1px var(--line)}
.conv-preview img{display:block;width:100%;height:100%}
.conv-preview .skel{height:100%;margin:0;border-radius:0}

/* Compte rendu du week-end / de la semaine (rapport.js) */
.rp-kpis{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.rp-kpis div{border-radius:14px;padding:10px 12px;border:1px solid var(--line-2);background:var(--card)}
.rp-kpis b{display:block;font-size:26px;line-height:1.1}
.rp-kpis span{font-size:13px;color:var(--muted)}
.rp-kpis .ko{border-color:rgb(var(--c-accent) / 0.533);background:rgb(var(--c-accent) / 0.078)}.rp-kpis .ko b{color:var(--ko)}
.rp-kpis .ok b{color:var(--ok)}
.rp-match{border:1px solid var(--line-2);border-left:4px solid var(--c1,var(--accent));border-radius:14px;padding:10px 12px;margin:8px 0;background:var(--card);cursor:pointer}
.rp-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.rp-time{font-weight:800;font-size:17px}
.rp-vs{color:var(--muted);font-size:14px}
.rp-gym{font-size:13px;margin-top:2px}
.rp-rows{margin-top:6px}
.rp-row{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:6px 0;border-top:1px solid var(--line);font-size:14px}
.rp-row>span:first-child{color:var(--muted)}
.rp-row b{text-align:right}
.rp-pill{font-size:12px;font-weight:800;padding:3px 9px;border-radius:999px;white-space:nowrap}
.rp-pill.ko{background:var(--ko);color:#fff}
.rp-note{font-size:12px;padding-top:4px}
.rp-imgs{display:grid;gap:10px}
.rp-imgs img{width:100%;border-radius:14px;display:block}

.mt-adv-logo{background:none;border:0;padding:0;cursor:pointer;border-radius:50%}.mt-adv-logo:active{transform:scale(.94)}
.mt-adv-link{background:#ffffff14;border:1px solid #ffffff26;border-radius:999px;padding:4px 10px;font:700 12px var(--font);color:var(--text);cursor:pointer;margin-top:-2px}.mt-adv-link:active{background:#ffffff26}
/* Résultats d'un adversaire : cartes de match comme ailleurs, sans clic ; « Contre nous » mis en avant. */
.adv-match{cursor:default}.adv-match .match-title{gap:10px}.adv-match .opp{flex:1;min-width:0}
.adv-match .score{white-space:nowrap;flex-shrink:0}
.adv-nous{border-color:var(--accent-2)}
.adv-forme{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin:12px 2px 2px}
.adv-forme>span:first-child{font:700 13px var(--font);color:var(--muted);margin-right:2px}
.adv-forme small{flex-basis:100%;color:var(--muted);font-size:11.5px}
/* Classement : une ligne touchée ouvre les derniers résultats de l'équipe. */
.standings tr.st-go{cursor:pointer}.standings tr.st-go:active td{background:#ffffff10}
.standings .st-chev{color:var(--muted);font-weight:700;margin-left:2px}
/* ---- Messages (reçus, envoyés, à traiter) ---- */
.msg-head{display:flex;align-items:center;gap:10px;padding-right:50px}.msg-head h2{flex:1;min-width:0}
.msg-new{flex:none;width:36px;height:36px;border-radius:50%;border:0;background:var(--accent);color:#fff;font:600 24px/1 var(--font);display:grid;place-items:center;cursor:pointer;box-shadow:0 4px 14px rgb(var(--c-accent) / 0.4)}
.msg-seg{margin:12px 0 4px}.msg-seg button{display:inline-flex;align-items:center;justify-content:center;gap:6px}
.msg-count{min-width:20px;height:20px;padding:0 6px;border-radius:10px;background:var(--accent);color:#fff;font:800 11px/20px var(--font)}
.msg-tools{display:flex;align-items:center;justify-content:space-between;margin:12px 2px 4px;color:var(--muted);font-size:13px;font-weight:600}
.msg-list{display:flex;flex-direction:column;gap:8px;margin-top:10px}
.msg-empty{margin-top:14px;padding:28px 16px;text-align:center;color:var(--muted);background:var(--card);border:1px dashed var(--line-2);border-radius:18px}
.msg-hint{font-size:12px;margin:10px 4px 0;text-align:center}
.swipe-wrap{position:relative;border-radius:18px;overflow:hidden;transition:max-height .2s ease,opacity .2s ease,margin .2s ease;max-height:400px}
.swipe-wrap.swipe-out{max-height:0;opacity:0;margin-top:-8px}
.swipe-bg{position:absolute;inset:0;display:flex;align-items:center;justify-content:flex-end;padding-right:22px;font:800 14px var(--font);color:#fff;border-radius:18px}
.swipe-bg.ko{background:linear-gradient(90deg,rgb(var(--c-accent) / 0.333),rgb(var(--c-accent)))}.swipe-bg.ok{background:linear-gradient(90deg,#30A46C55,#30A46C)}
.swipe-bg span{opacity:.75;transition:transform .15s,opacity .15s}.swipe-wrap.armed .swipe-bg span{opacity:1;transform:scale(1.12)}
.swipe{position:relative;touch-action:pan-y;will-change:transform}
.msg-row,.msg-sent,.msg-todo{width:100%;display:flex;gap:12px;align-items:flex-start;text-align:left;background:var(--bg-2);border:1px solid var(--line);
  border-radius:18px;padding:13px 44px 13px 14px;color:var(--text);font:inherit;cursor:pointer}
.msg-sent,.msg-todo{flex-direction:column;gap:5px;padding-right:14px}.msg-todo{cursor:default}.msg-todo[role=button]{cursor:pointer}
.msg-row.unread{background:linear-gradient(90deg,var(--accent-bg),var(--bg-2) 60%);border-color:rgb(var(--c-accent) / 0.333)}
.msg-avatar{flex:none;width:38px;height:38px;border-radius:50%;display:grid;place-items:center;background:var(--card-2);font:800 16px var(--font-title);color:var(--text)}
.msg-row.unread .msg-avatar{background:var(--accent);color:#fff;box-shadow:0 0 0 3px var(--accent-bg)}
.msg-txt{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.msg-top{display:flex;justify-content:space-between;align-items:baseline;gap:10px;width:100%}
.msg-top b{font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.msg-top time{flex:none;font-size:12px;color:var(--muted)}
.msg-row.unread .msg-top time{color:var(--accent-2);font-weight:700}
.msg-title{font-weight:700;font-size:14.5px}.msg-row:not(.unread) .msg-title{font-weight:600;color:#ffffffcc}
.msg-prev{color:var(--muted);font-size:13px;line-height:1.35;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.msg-x{position:absolute;top:8px;right:8px;width:30px;height:30px;border-radius:50%;border:0;background:#ffffff0d;color:var(--muted);font-size:18px;line-height:1;cursor:pointer}
.msg-bar{display:block;width:100%;height:6px;border-radius:3px;background:#ffffff14;overflow:hidden;margin-top:4px}
.msg-bar i{display:block;height:100%;border-radius:3px;background:linear-gradient(90deg,var(--accent),#30A46C)}
.msg-read{display:flex;align-items:center;width:100%;font-size:13px;color:var(--muted)}.msg-read b{color:var(--text);margin:0 3px}.msg-read .chev{margin-left:auto}
.msg-acts{display:flex;gap:8px;margin-top:6px}
.lec-sum{display:flex;align-items:center;gap:16px;margin:16px 2px 4px}.lec-sum>div:last-child{display:flex;flex-direction:column;gap:2px}
.lec-ring{--p:0;flex:none;width:74px;height:74px;border-radius:50%;display:grid;place-content:center;text-align:center;
  background:radial-gradient(closest-side,var(--bg-2) 78%,transparent 80%),conic-gradient(#30A46C calc(var(--p)*1%),#ffffff1a 0)}
.lec-ring b{font:800 22px/1 var(--font-title)}.lec-ring small{font-size:11px;color:var(--muted)}
.lec-chips{display:flex;flex-wrap:wrap;gap:6px}.lec-chip{padding:6px 10px;border-radius:999px;background:var(--card-2);border:1px solid var(--line);font-size:13px;font-weight:600}
/* ---- Accueil : tuiles des équipes favorites ---- */
.fav-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.fav-tile{--c1:rgb(var(--c-accent));--c2:rgb(var(--c-alt4));position:relative;display:flex;flex-direction:column;gap:10px;min-width:0;padding:12px;border-radius:22px;cursor:pointer;overflow:hidden;
  background:linear-gradient(155deg,color-mix(in srgb,var(--c1) 42%,#0E0E13) 0%,color-mix(in srgb,var(--c2) 22%,#0E0E13) 55%,#0E0E13 100%);
  border:1px solid color-mix(in srgb,var(--c1) 50%,transparent);box-shadow:0 10px 24px #0007}
.fav-tile:active{transform:scale(.98)}
.ft-head{display:flex;align-items:center;gap:8px;min-width:0}
.fav-tile .avatar.team-logo{width:38px;height:38px;flex:none;border-radius:11px}
.ft-name{font:800 15px/1.15 var(--font-title);overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.ft-mid{display:flex;align-items:flex-end;justify-content:space-between;gap:6px}
.ft-rank{display:flex;align-items:flex-end;gap:5px}.ft-rank b{font:900 34px/0.9 var(--font-title);letter-spacing:-.03em}
.ft-rank sup{font-size:13px;margin-left:1px}.ft-rank small{font-size:11px;line-height:1.2;color:#ffffffb3;font-weight:600}
.ft-rank.none{color:#ffffff66;font-size:22px}
.ft-last{display:flex;flex-direction:column;align-items:flex-end;gap:2px}.ft-last small{font-size:11px;color:#ffffffb3;font-weight:700}
.ft-last .res{font-size:11px;padding:2px 7px}
.ft-next{display:flex;flex-direction:column;gap:6px;width:100%;text-align:left;font:inherit;color:var(--text);cursor:pointer;
  background:#00000059;border:1px solid #ffffff1f;border-radius:14px;padding:8px 9px;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
.ft-next.none{color:#ffffff8c;font-size:12px;font-weight:600;cursor:default}
.ft-when{display:flex;align-items:center;gap:6px;font-size:12px}.ft-when .ha{flex:none}
.ft-vs{display:flex;align-items:center;gap:7px;min-width:0;font-size:12px;color:#ffffffcc}
.ft-vs .logo{width:28px;height:28px;flex:none}
.ft-vs>span{min-width:0;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.25}
.ft-vs b{color:var(--text)}
.pod-reward{position:relative;margin:4px auto 10px;max-width:440px;text-align:center;font-size:13px;font-weight:600;line-height:1.4;
  padding:8px 12px;border-radius:12px;background:linear-gradient(90deg,#F5C54222,#F5C54208);border:1px solid #F5C54255;color:#F8E3A1}
/* Accueil : « Mes équipes favorites » (des tuiles, sans carte autour) a son propre cadre ; les autres sections
   gardent leur carte, avec le liseré .deco. */
.home-sec{position:relative;margin:22px 0 6px;padding:14px 12px 12px;border-radius:26px;
  background:linear-gradient(180deg,#ffffff12,#ffffff06);border:1px solid #ffffff2e;box-shadow:0 0 0 1px #00000080,0 14px 34px #0008,inset 0 1px 0 #ffffff17}
/* Liseré « design » sur un cadre existant (pas de cadre en plus) : rouge fort dans les coins haut-gauche et
   bas-droite, qui s'efface le long des bords presque jusqu'au bout. */
.deco{position:relative}
.deco::before,.deco::after{content:"";position:absolute;inset:-1px;border-radius:inherit;border:1.5px solid rgb(var(--c-accent) / 0.902);pointer-events:none;z-index:3;
  filter:drop-shadow(0 0 3px rgb(var(--c-accent) / 0.451))}
.deco::before{
  -webkit-mask:linear-gradient(to right,#000 0,#000 4%,#0008 35%,transparent 92%) top left/100% 40px no-repeat,linear-gradient(to bottom,#000 0,#000 6%,#0008 40%,transparent 92%) top left/40px 100% no-repeat;
  mask:linear-gradient(to right,#000 0,#000 4%,#0008 35%,transparent 92%) top left/100% 40px no-repeat,linear-gradient(to bottom,#000 0,#000 6%,#0008 40%,transparent 92%) top left/40px 100% no-repeat}
.deco::after{
  -webkit-mask:linear-gradient(to left,#000 0,#000 4%,#0008 35%,transparent 92%) bottom right/100% 40px no-repeat,linear-gradient(to top,#000 0,#000 6%,#0008 40%,transparent 92%) bottom right/40px 100% no-repeat;
  mask:linear-gradient(to left,#000 0,#000 4%,#0008 35%,transparent 92%) bottom right/100% 40px no-repeat,linear-gradient(to top,#000 0,#000 6%,#0008 40%,transparent 92%) bottom right/40px 100% no-repeat}
.home-sec>.section-title:first-child{margin-top:0}
.home-sec>.card:last-child,.home-sec>.cl-link:last-child{margin-bottom:0}
.fav-section-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:0 4px 12px}
.fav-section-head h2{display:flex;align-items:center;gap:8px;font:800 18px var(--font-title);margin:0}
.fav-section-head h2 svg{width:19px;height:19px;fill:#F5C542;stroke:#F5C542;stroke-width:1.5;stroke-linejoin:round}
.grp.deco > .section-title,.grp.deco > .day-head{box-shadow:none}
.msg-to{font-size:12px;color:var(--muted);font-weight:600}.msg-sent .msg-prev{color:#ffffffb8}
.msg-sent{padding-right:44px}
/* La croix « Fermer » reste en haut de la fenêtre même quand on fait défiler (grands textes, longues listes). */
.sheet-close{position:sticky;top:8px;display:block;margin:0 -4px -34px auto;z-index:20;background:var(--card-2);color:var(--text);
  box-shadow:0 2px 10px #0009;border:1px solid var(--line-2)}
.derog-reply{padding:12px 14px}.derog-reply-acts{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:6px}
/* Stats en direct : saisie sur le téléphone pendant le match (joueur, puis action ; grandes touches). */
.live-head{display:flex;align-items:flex-end;justify-content:space-between;gap:10px;padding-right:44px}
.live-score{text-align:center;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:6px 12px}
.live-score b{display:block;font:800 26px var(--font-title)}
.live-score small{font-size:10px;color:var(--muted)}
.live-wait{margin:8px 0 0;font-size:12px;color:var(--warn)}
.live-players{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:12px}
.live-p{display:flex;flex-direction:column;align-items:center;gap:2px;min-height:64px;padding:8px 4px;border-radius:14px;
  border:1px solid var(--line-2);background:var(--card);color:var(--text);font:600 14px var(--font);cursor:pointer;touch-action:manipulation}
.live-p .n{font:800 24px var(--font-title);line-height:1.1}
.live-p .nm{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.live-p .pt{font-size:11px;color:var(--muted)}
.live-p.on{border-color:var(--accent);background:var(--accent-bg);box-shadow:0 0 0 2px var(--accent)}
.live-hint{margin:12px 2px 6px;font-size:13px;color:var(--muted)}
.live-hint b{color:var(--text)}
.live-numbtn{margin-left:6px;padding:2px 10px;min-height:0}
.live-numedit{display:flex;align-items:center;gap:8px;margin:0 2px 8px;font-size:13px}.live-numedit span{flex:1}
.live-acts{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.live-acts.off{opacity:.45}
.live-a{min-height:56px;border-radius:14px;border:1px solid var(--line-2);background:var(--card-2);color:var(--text);
  font:700 14px var(--font);cursor:pointer;touch-action:manipulation}
.live-a.ok{background:var(--ok-bg);border-color:var(--ok);color:var(--ok);font-size:19px}
.live-a.ko{background:var(--ko-bg);border-color:#FF6B6B66;color:var(--ko)}
.live-a:active{transform:scale(.96)}
.live-last{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:12px;padding:8px 10px;
  border-radius:12px;background:var(--card);border:1px solid var(--line);font-size:13px}
.live-pick{display:grid;grid-template-columns:1fr;gap:6px;margin-top:10px}
.live-chk{display:flex;align-items:center;gap:8px;padding:10px;border-radius:12px;background:var(--card);border:1px solid var(--line);font-size:14px}
.live-chk input[type=checkbox]{width:20px;height:20px;accent-color:var(--accent);flex:none}
.live-chk span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.live-num{width:52px;flex:none;padding:6px;border-radius:10px;border:1px solid var(--line-2);background:var(--card-2);color:var(--text);
  font:700 16px var(--font-title);text-align:center}
/* Actions d'un joueur : fenêtre en bas de l'écran, ouverte en touchant le joueur (pas besoin de faire défiler). */
.live-pop-bg{position:fixed;inset:0;background:#0009;z-index:90}
.live-pop{position:fixed;left:8px;right:8px;bottom:calc(8px + var(--safe-b));z-index:91;max-width:520px;margin:0 auto;
  padding:12px;border-radius:20px;background:var(--bg-2);border:1px solid var(--line-2);box-shadow:0 -10px 40px #000a;
  animation:livePop .12s ease-out}
@keyframes livePop{from{transform:translateY(20px);opacity:0}to{transform:none;opacity:1}}
.live-pop-head{display:flex;align-items:center;gap:8px;margin-bottom:10px;font-size:16px}
.live-pop-head .n{font:800 26px var(--font-title);line-height:1}
.live-pop-head b{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.live-pop-x{position:static;flex:none}
.live-pop .live-a{min-height:60px}
.live-a{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:6px 4px;line-height:1.1}
.live-ic{width:30px;height:30px;flex:none}
.live-a.ok .live-ic{width:32px;height:32px}
.live-pop .live-a{min-height:74px}

/* Listes déroulantes : sous Windows, les choix s'affichaient blanc sur blanc */
select option{background:var(--card);color:var(--text)}
