:root{
  --bg:#0a1628;--bg2:#0f1f3d;--bg3:#162847;--bg4:#1a3055;
  --border:rgba(255,255,255,0.08);--border2:rgba(255,255,255,0.15);
  --text:#e8f0fe;--text2:#8ba4c8;--text3:#4d6a94;
  --green:#00d68f;--green-bg:rgba(0,214,143,0.12);--green-border:rgba(0,214,143,0.3);
  --amber:#ffb830;--amber-bg:rgba(255,184,48,0.12);--amber-border:rgba(255,184,48,0.3);
  --red:#ff5c7c;--red-bg:rgba(255,92,124,0.12);--red-border:rgba(255,92,124,0.3);
  --blue:#4d9fff;--blue-bg:rgba(77,159,255,0.12);--blue-border:rgba(77,159,255,0.3);
  --r:14px;--rsm:8px;--rlg:20px;
  --font:'DM Sans',sans-serif;--mono:'DM Mono',monospace;
  --st:env(safe-area-inset-top,0px);--sb:env(safe-area-inset-bottom,0px);
}
*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent;touch-action:manipulation}
@keyframes fc-pulse{0%,100%{opacity:1}50%{opacity:.35}}
html,body{height:100%;overflow:hidden;background:var(--bg);color:var(--text);font-family:var(--font);font-size:16px}
.screen{display:none;height:100dvh;flex-direction:column;overflow:hidden}
.screen.active{display:flex}

/* AUTH */
#screen-auth{justify-content:center;align-items:center;padding:24px}
.auth-logo{width:68px;height:68px;background:var(--green);border-radius:20px;display:flex;align-items:center;justify-content:center;margin:0 auto 20px;font-size:34px}
.auth-box{width:100%;max-width:380px;background:var(--bg2);border:1px solid var(--border);border-radius:var(--rlg);padding:24px 20px}
.fl{font-size:12px;font-weight:500;color:var(--text2);letter-spacing:.06em;text-transform:uppercase;margin-bottom:7px;display:block}
.fi{width:100%;background:var(--bg3);border:1px solid var(--border);border-radius:var(--rsm);padding:11px 13px;color:var(--text);font-family:var(--font);font-size:15px;outline:none;transition:border-color .2s}
.fi:focus{border-color:var(--green)}
.fg{margin-bottom:14px}
.frow{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.bp{width:100%;background:var(--green);color:#0a1628;border:none;border-radius:var(--rsm);padding:13px;font-family:var(--font);font-size:15px;font-weight:600;cursor:pointer;margin-top:6px}
.bp:active{opacity:.9;transform:scale(.99)}
.bp:disabled{opacity:.5}
.auth-sw{text-align:center;margin-top:18px;color:var(--text2);font-size:14px}
.auth-sw a{color:var(--green);text-decoration:none;font-weight:500}
.aerr{background:var(--red-bg);border:1px solid var(--red-border);border-radius:var(--rsm);padding:9px 13px;color:var(--red);font-size:13px;margin-bottom:14px;display:none}
.aerr.show{display:block}

/* SHELL */
.app-hdr{padding:calc(var(--st) + 12px) 14px 12px;display:flex;align-items:center;gap:8px;border-bottom:1px solid var(--border);background:var(--bg);flex-shrink:0}
.team-sel{flex:1;display:flex;align-items:center;gap:11px;background:none;border:none;padding:3px 0;cursor:pointer;min-width:0;min-height:44px;text-align:left;font-family:var(--font);color:var(--text)}
.team-sq{width:38px;height:38px;border-radius:11px;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-family:var(--mono);font-weight:500;font-size:13px;color:#0a1628;letter-spacing:-.02em}
.team-txt{flex:1;min-width:0}
.team-name{display:flex;align-items:center;gap:6px;min-width:0}
.team-caret{color:#4d6a94;font-size:13px;flex-shrink:0}
.team-sub{font-size:12px;font-weight:500;color:var(--text2);margin-top:1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tdot{width:9px;height:9px;border-radius:50%;flex-shrink:0}
.tname{font-size:18px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.avatar{width:38px;height:38px;border-radius:50%;flex-shrink:0;background:var(--bg3);border:1px solid var(--border2);color:var(--text);font-family:var(--font);font-size:13px;font-weight:600;cursor:pointer;display:flex;align-items:center;justify-content:center;position:relative}
.avatar::before{content:'';position:absolute;inset:-4px}
/* MENU COMPTE */
.umenu-ov{display:none;position:absolute;inset:0;z-index:60}
.umenu-ov.open{display:block}
.umenu{position:absolute;top:calc(var(--st) + 60px);right:12px;width:240px;background:var(--bg2);border:1px solid var(--border2);border-radius:14px;box-shadow:0 16px 40px rgba(0,0,0,.45);padding:6px;display:flex;flex-direction:column}
.umenu-head{padding:10px 12px 10px;border-bottom:1px solid var(--border);margin-bottom:4px}
.umenu-name{font-size:14px;font-weight:600}
.umenu-role{font-size:12px;color:var(--text2);margin-top:2px}
.umenu-item{display:flex;align-items:center;gap:10px;min-height:44px;padding:0 12px;border:none;background:none;border-radius:10px;color:var(--text);font-family:var(--font);font-size:14px;font-weight:500;cursor:pointer;text-align:left}
.umenu-item:active{background:var(--bg3)}
.umenu-item span:first-child{width:20px;text-align:center}
.umenu-out{color:var(--red)}
.mode-btn{background:var(--bg2);border:1px solid var(--border);border-radius:var(--rsm);padding:7px 10px;color:var(--text2);font-family:var(--font);font-size:12px;font-weight:500;cursor:pointer;white-space:nowrap;flex-shrink:0}
.mode-btn.on{background:var(--green-bg);border-color:var(--green-border);color:var(--green)}
.kiosk-screen{position:fixed;inset:0;background:rgba(10,22,40,0.96);z-index:300;display:flex;align-items:center;justify-content:center;padding:20px}
.kiosk-panel{width:min(980px,100%);max-width:980px;background:rgba(13,26,51,0.98);border:1px solid rgba(255,255,255,0.08);border-radius:22px;padding:24px;display:flex;flex-direction:column;gap:20px;box-shadow:0 24px 60px rgba(0,0,0,0.35)}
.kiosk-top{display:flex;align-items:flex-start;justify-content:space-between;gap:20px}
.kiosk-title{font-size:24px;font-weight:700}
.kiosk-sub{font-size:14px;color:var(--text2);margin-top:6px}
.kiosk-close{background:var(--bg3);border:1px solid var(--border);border-radius:12px;color:var(--text);font-size:16px;padding:10px 14px;cursor:pointer}
.kiosk-score{display:flex;align-items:center;justify-content:center;gap:20px;padding:18px 0;border-top:1px solid rgba(255,255,255,0.08);border-bottom:1px solid rgba(255,255,255,0.08)}
.kiosk-team{display:flex;flex-direction:column;align-items:center;gap:10px}
.kiosk-team span{display:block}
.kiosk-team:first-child span:first-child,
.kiosk-team:last-child span:last-child{font-size:14px;color:var(--text2)}
#kiosk-score-nous,#kiosk-score-eux{font-size:54px;font-weight:800;line-height:1}
.kiosk-vs{font-size:32px;color:var(--text2);letter-spacing:.2em}
.kiosk-meta{display:flex;flex-wrap:wrap;gap:10px;color:var(--text2);font-size:13px}
.kiosk-goals{display:grid;gap:10px}
.kiosk-goals .but-row{background:rgba(255,255,255,0.04);border:1px solid rgba(255,255,255,0.08);border-radius:12px;padding:12px;display:flex;align-items:center;gap:10px}
.kiosk-goals .but-min{font-size:14px;font-weight:700;color:var(--text)}
.kiosk-goals .pill{font-size:11px}

/* NAV */
.bnav{display:flex;background:var(--bg2);border-top:1px solid var(--border);padding-bottom:var(--sb);flex-shrink:0}
.bnav{z-index:40}
.ni{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;padding:7px 4px 8px;min-height:56px;cursor:pointer;color:var(--text3);font-size:11px;font-weight:600;border:none;background:none;font-family:var(--font)}
.ni.active{color:var(--text)}
.ni-icon{font-size:19px;line-height:1;width:40px;height:26px;border-radius:99px;display:flex;align-items:center;justify-content:center;filter:grayscale(.6) opacity(.7)}
.ni.active .ni-icon{background:rgba(0,214,143,.18);filter:none}

/* PAGES */
.page{display:none;flex:1;overflow-y:auto;overflow-x:hidden}
.page.active{display:block}
.pc{padding:14px 14px 24px}
.sh{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.st{font-size:17px;font-weight:600}
.badd{background:var(--green);color:#0a1628;border:none;border-radius:var(--rsm);padding:7px 13px;font-family:var(--font);font-size:13px;font-weight:600;cursor:pointer}
.bsec{background:var(--bg3);color:var(--text2);border:1px solid var(--border);border-radius:var(--rsm);padding:7px 13px;font-family:var(--font);font-size:13px;cursor:pointer}
.bred{background:var(--red-bg);color:var(--red);border:1px solid var(--red-border);border-radius:var(--rsm);padding:7px 13px;font-family:var(--font);font-size:13px;cursor:pointer}

/* CARDS */
.card{background:var(--bg2);border:1px solid var(--border);border-radius:var(--r);padding:13px;margin-bottom:9px;cursor:pointer}
.card:active{border-color:var(--border2)}
.admin-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 14px;background:var(--bg2);border:1px solid var(--border);border-radius:var(--rsm);margin-bottom:8px}
.admin-info{flex:1;min-width:0}
.admin-name{font-size:14px;font-weight:600}
.admin-role{font-size:11px;color:var(--text2);margin-top:4px}
.admin-actions{display:flex;gap:6px;flex-shrink:0;flex-wrap:wrap}
.admin-actions button{font-size:11px;padding:6px 9px}
/* Membres & accès : une fiche par personne, un choix Aucun/Membre/Admin par équipe */
.tm-new-toggle{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--text2);margin:-4px 0 14px;cursor:pointer;min-height:36px}
.tm-new-toggle input{width:18px;height:18px;accent-color:var(--green)}
#confirm-message{white-space:pre-line}
.acc-help{font-size:12px;color:var(--text2);margin-bottom:12px;line-height:1.45}
.acc-card{background:var(--bg2);border:1px solid var(--border);border-radius:var(--r);padding:12px;margin-bottom:10px}
.acc-head{display:flex;align-items:center;gap:10px;margin-bottom:8px}
.acc-head .avatar{cursor:default}
.acc-pwd{flex-shrink:0;min-height:36px;padding:0 10px;font-size:12px}
.acc-row{display:flex;align-items:center;gap:10px;padding:8px 0;border-top:1px solid var(--border)}
.acc-sq{width:30px;height:30px;border-radius:8px;font-size:10px}
.acc-team{flex:1;min-width:0;font-size:13px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.acc-seg{display:flex;background:var(--bg3);border-radius:10px;padding:3px;gap:2px;flex-shrink:0}
.acc-seg button{min-height:34px;padding:0 10px;border:none;background:none;border-radius:8px;font-family:var(--font);font-size:12px;font-weight:600;color:var(--text3);cursor:pointer}
.acc-seg button.on{background:var(--bg2);color:var(--text)}
.acc-seg button.on-member{color:var(--blue)}
.acc-seg button.on-admin{color:var(--green)}
.acc-seg button:disabled{cursor:default;opacity:.7}
.pill{font-size:10px;font-weight:600;padding:3px 8px;border-radius:99px}
.pg{background:var(--green-bg);color:var(--green)}
.pa{background:var(--amber-bg);color:var(--amber)}
.pb{background:var(--blue-bg);color:var(--blue)}
.pr{background:var(--red-bg);color:var(--red)}
.pgr{background:rgba(255,255,255,.06);color:var(--text2)}

/* STATS */
.srow{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin-bottom:13px}
.sc{background:var(--bg2);border:1px solid var(--border);border-radius:var(--rsm);padding:11px;text-align:center}
.sn{font-size:22px;font-weight:600;color:var(--green);font-family:var(--mono)}
.sl{font-size:11px;color:var(--text2);margin-top:2px}

/* PLAYER ROW */
.pr-row{display:flex;align-items:center;gap:9px;padding:9px 11px;background:var(--bg2);border:1px solid var(--border);border-radius:var(--rsm);margin-bottom:5px}
.pinit{width:32px;height:32px;border-radius:9px;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;flex-shrink:0;font-family:var(--mono)}
.pnum{width:26px;height:26px;background:var(--bg3);border-radius:7px;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:600;color:var(--text2);font-family:var(--mono);flex-shrink:0}
.pn{font-size:13px;font-weight:500}
.ps{font-size:11px;color:var(--text3)}
.bico{width:28px;height:28px;background:var(--bg3);border:1px solid var(--border);border-radius:var(--rsm);display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:13px;color:var(--text2);flex-shrink:0}

/* MODAL */
.mo{display:none;position:absolute;inset:0;background:rgba(0,0,0,.75);z-index:100;align-items:flex-end;justify-content:center}
.mo.open{display:flex}
.modal{width:100%;max-width:480px;background:var(--bg2);border:1px solid var(--border);border-radius:var(--rlg) var(--rlg) 0 0;padding:18px 15px calc(18px + var(--sb));max-height:92dvh;overflow-y:auto}
.mh{width:34px;height:4px;background:var(--border2);border-radius:99px;margin:0 auto 16px}
.mt{font-size:16px;font-weight:600;margin-bottom:16px}
.mfoot{display:flex;gap:9px;margin-top:16px}
.mfoot .bp{flex:1;margin-top:0}
.bcan{background:var(--bg3);color:var(--text2);border:1px solid var(--border);border-radius:var(--rsm);padding:12px 16px;font-family:var(--font);font-size:14px;cursor:pointer}
.sel{width:100%;background:var(--bg3);border:1px solid var(--border);border-radius:var(--rsm);padding:10px 11px;color:var(--text);font-family:var(--font);font-size:14px;outline:none;appearance:none}
.sel:focus{border-color:var(--green)}

/* POSTES MAP */
.pm{display:grid;grid-template-columns:repeat(3,1fr);gap:4px;margin-top:5px}
.pb-btn{background:var(--bg3);border:1px solid var(--border);border-radius:var(--rsm);padding:6px 3px;text-align:center;cursor:pointer;font-family:var(--font);color:var(--text2);font-size:11px}
.pb-btn.on{background:var(--green-bg);border-color:var(--green);color:var(--green)}
.pbn{font-size:14px;font-weight:600;font-family:var(--mono);display:block}

/* TEAM SWITCHER */
.tsw{display:none;position:absolute;inset:0;background:rgba(0,0,0,.7);z-index:50}
.tsw.open{display:flex;flex-direction:column;justify-content:flex-end;align-items:center}
.tsw-sheet{width:100%;max-width:520px;background:var(--bg2);border:1px solid var(--border);border-bottom:none;border-radius:24px 24px 0 0;padding:10px 16px calc(var(--sb) + 16px);display:flex;flex-direction:column;max-height:80dvh}
.tsw-handle{width:36px;height:4px;border-radius:99px;background:var(--border2);margin:0 auto 14px;flex-shrink:0}
.tsw-title{font-size:18px;font-weight:700;margin-bottom:12px;flex-shrink:0}
.tsw-box{overflow-y:auto;display:flex;flex-direction:column;gap:8px}
.topt{display:flex;align-items:center;gap:12px;padding:11px 12px;min-height:60px;border-radius:14px;cursor:pointer;border:1px solid var(--border);background:var(--bg2)}
.topt.active{background:var(--bg3)}
.topt .team-sq{font-size:12px}
.topt-name{font-size:15px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.topt-sub{font-size:12px;color:var(--text2);margin-top:2px}
.topt-check{color:var(--green);font-size:18px;font-weight:700;flex-shrink:0}
.tsw-foot{display:flex;gap:8px;margin-top:14px;flex-shrink:0}
.tsw-add,.tsw-manage{min-height:46px;border-radius:12px;font-family:var(--font);font-size:14px;font-weight:600;cursor:pointer}
.tsw-add{flex:1;background:var(--green-bg);color:var(--green);border:1px solid var(--green-border)}
.tsw-manage{padding:0 18px;background:var(--bg3);color:var(--text);border:1px solid var(--border)}

/* COLOR PICKER */
.crow{display:flex;gap:9px;flex-wrap:wrap;margin-top:5px}
.copt{width:28px;height:28px;border-radius:50%;cursor:pointer;border:3px solid transparent}
.copt.on{border-color:white}

/* TOAST */
.toast{position:absolute;bottom:calc(72px + var(--sb));left:50%;transform:translateX(-50%) translateY(14px);background:var(--bg2);border:1px solid var(--border2);border-radius:var(--rsm);padding:8px 15px;font-size:13px;font-weight:500;white-space:nowrap;opacity:0;transition:all .3s;z-index:200;pointer-events:none}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
.toast.ok{border-color:var(--green-border);color:var(--green)}
.toast.err{border-color:var(--red-border);color:var(--red)}

/* LOADER */
.spin{width:24px;height:24px;border:2px solid var(--border);border-top-color:var(--green);border-radius:50%;animation:sp .7s linear infinite;margin:40px auto;display:block}
@keyframes sp{to{transform:rotate(360deg)}}

/* HOME */
.wbanner{background:linear-gradient(135deg,var(--bg2),var(--bg3));border:1px solid var(--border);border-radius:var(--r);padding:16px;margin-bottom:13px;position:relative;overflow:hidden}
.wbanner::after{content:'⚽';position:absolute;right:16px;top:50%;transform:translateY(-50%);font-size:40px;opacity:.12}
.qgrid{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-bottom:13px}
.qb{background:var(--bg2);border:1px solid var(--border);border-radius:var(--r);padding:13px;cursor:pointer;text-align:left;font-family:var(--font);color:var(--text)}
.qb:active{transform:scale(.98)}

/* MATCH CARDS */
.mc{background:var(--bg2);border:1px solid var(--border);border-radius:var(--r);padding:16px 18px;margin-bottom:12px;cursor:pointer;transition:border-color .2s,transform .2s;display:flex;flex-direction:column;gap:10px}
.mc:hover{transform:translateY(-1px)}
.mc-live{border-color:var(--green-bg);box-shadow:0 0 0 1px rgba(0,214,143,.12)}
.mc:active{border-color:var(--green)}
.mc-top{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:8px}
.mc-vs{font-size:15px;font-weight:700}
.mc-sc{background:var(--bg3);border-radius:10px;padding:4px 10px;font-family:var(--mono);font-size:13px;font-weight:700}
.mc-live-info{display:flex;align-items:center;gap:10px;margin-bottom:8px}
.mc-chrono{font-size:12px;font-family:var(--mono);color:var(--green);font-weight:700}
.mc-sc.win{background:var(--green-bg);color:var(--green)}
.mc-sc.lose{background:var(--red-bg);color:var(--red)}
.mc-sc.draw{background:var(--amber-bg);color:var(--amber)}
.mc-meta{font-size:11px;color:var(--text3);display:flex;gap:10px;flex-wrap:wrap;align-items:center}

.stats-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:14px}
.stat-card{background:var(--bg2);border:1px solid var(--border);border-radius:var(--rsm);padding:14px}
.stat-num{font-size:24px;font-weight:700;color:var(--green);margin-bottom:4px}
.stat-label{font-size:12px;color:var(--text2);text-transform:uppercase;letter-spacing:.05em}
.recent-list{display:grid;gap:8px}
.recent-item{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 14px;background:var(--bg2);border:1px solid var(--border);border-radius:var(--rsm)}
.recent-item .result{font-size:14px;font-weight:700}
.recent-item .result.pg{color:var(--green)}
.recent-item .result.pr{color:var(--red)}
.recent-item .result.pb{color:var(--blue)}

/* MATCH DETAIL */
/* Nav v2 : fil en 3 étapes (barre 4px + libellé) */
.mtabs{display:flex;gap:8px;flex-shrink:0;padding-bottom:4px}
.mtab{flex:1;display:flex;flex-direction:column;gap:7px;padding:6px 0 4px;min-height:44px;font-size:12px;font-weight:600;cursor:pointer;text-align:left;border:none;background:none;font-family:var(--font);color:var(--text3)}
.mstep-bar{display:block;height:4px;border-radius:99px;background:var(--bg3)}
.mtab.active,.mtab.done{color:var(--green)}
.mtab.active{color:var(--text)}
.mtab.active .mstep-bar,.mtab.done .mstep-bar{background:var(--green)}
.tl-link{display:block;width:100%;min-height:44px;margin-bottom:12px;padding:0 14px;background:var(--bg2);border:1px solid var(--border);border-radius:var(--rsm);color:var(--text2);font-family:var(--font);font-size:13px;font-weight:600;text-align:left;cursor:pointer}

/* CONVOC */
.cv{display:flex;align-items:center;gap:7px;padding:8px 10px;background:var(--bg2);border:1px solid var(--border);border-radius:var(--rsm);margin-bottom:4px}
.cvb{padding:5px 8px;border-radius:6px;font-size:11px;font-weight:600;cursor:pointer;border:1px solid transparent;font-family:var(--font);background:var(--bg3);color:var(--text3)}
.cvb.ap{background:var(--green-bg);color:var(--green);border-color:var(--green-border)}
.cvb.aa{background:var(--red-bg);color:var(--red);border-color:var(--red-border)}
.cvb.ai{background:var(--amber-bg);color:var(--amber);border-color:var(--amber-border)}

/* CHRONO STICKY — une seule ligne compacte pendant le Live */
.chrono-sticky{position:sticky;top:0;z-index:10;background:var(--bg);border-bottom:1px solid var(--border);padding:8px 10px}
.chrono-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.chrono-time{font-size:20px;font-weight:600;font-family:var(--mono);line-height:1;flex-shrink:0}
.chrono-half{font-size:11px;color:var(--text2)}
.score-row{display:flex;align-items:center;gap:6px;flex-shrink:0}
.score-side{text-align:center}
.score-lbl{font-size:9px;color:var(--text2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:60px}
.score-val{font-size:15px;font-weight:700;font-family:var(--mono);line-height:1}
.score-sep{font-size:13px;color:var(--text3)}
.sbtn{width:30px;height:30px;border-radius:50%;border:none;font-size:18px;cursor:pointer;font-weight:600;line-height:1;font-family:var(--font)}
.sbtn.p{background:var(--green);color:#0a1628}
.sbtn.m{background:var(--bg3);border:1px solid var(--border);color:var(--text2)}
.qbtn{background:var(--bg3);border:1px solid var(--border);border-radius:var(--rsm);padding:6px 9px;font-family:var(--font);font-size:11.5px;font-weight:600;color:var(--text2);cursor:pointer;white-space:nowrap}
.qbtn-goal{background:var(--green-bg);color:var(--green);border-color:var(--green-border)}
.qbtn-conc{background:var(--red-bg);color:var(--red);border-color:var(--red-border);padding:6px 10px}
.qbtn-chrono{background:var(--green);color:#0a1628;border:none}
#screen-app.live-active .app-hdr,#screen-app.live-active .md-banner{display:none}
/* Nav v2 — Live = focus : la classe live-active (posée par setLiveActive) masque aussi
   la barre du bas sur iPhone ; sur iPad/PC la barre latérale se réduit (voir ≥900px). */
@media (max-width:899px),(max-height:500px){#screen-app.live-active .bnav{display:none}}

/* bench bubble small time */
/* bulle banc = même forme que sur le terrain (voir .player-bubble) */
.player-bubble .bench-time{display:block;font-size:11px;color:var(--text2);margin-top:4px;font-family:var(--mono)}

/* TERRAIN — la boîte a un rapport largeur/hauteur fixe (aspect-ratio) et le SVG
   remplit cette boîte à 100%/100% ; le SVG préserve son ratio interne tout seul
   (comportement natif "xMidYMid meet"). Plus robuste qu'une largeur dérivée
   d'un calcul de hauteur, qui peut se faire mal résoudre dans une grille "auto". */
.terrain-wrap{position:relative;margin:8px auto;user-select:none;width:100%;max-width:420px;aspect-ratio:300/420}
.terrain-svg{display:block;width:100%;height:100%;border-radius:12px}
.terrain-wrap.landscape{margin:8px 0;width:auto;max-width:100%;aspect-ratio:420/300;height:calc(100dvh - 150px)}
.player-bubble{position:absolute;transform:translate(-50%,-50%);background:var(--bg2);border:2px solid var(--green);border-radius:12px;padding:5px 9px;font-size:12px;font-weight:600;color:var(--text);white-space:nowrap;z-index:5;text-align:center;min-width:64px}
.player-bubble.bench{cursor:pointer}
.player-bubble .bb-since.bb-bench{color:var(--amber)}
.player-bubble[data-type="field"]{cursor:pointer}
.player-bubble.selected{border-color:var(--amber) !important;background:var(--amber-bg) !important;box-shadow:0 0 0 3px var(--amber-bg),0 2px 10px rgba(0,0,0,.35);transform:translate(-50%,-50%) scale(1.08);z-index:8}
.player-bubble.bench.selected{transform:none;scale:1.04}
.player-bubble.most-played{border-color:var(--blue);box-shadow:0 0 0 2px var(--blue-bg)}
.player-bubble .bb-out{position:absolute;top:-9px;right:-9px;width:19px;height:19px;border-radius:50%;background:var(--bg3);border:1.5px solid var(--border2);color:var(--text2);display:flex;align-items:center;justify-content:center;font-size:11px;cursor:pointer}
.player-bubble .bb-subcount{position:absolute;top:-9px;left:-9px;width:19px;height:19px;border-radius:50%;background:var(--amber);border:1.5px solid var(--amber);color:var(--bg);display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:700;font-family:var(--mono);pointer-events:none}
.player-bubble .bb-starter{position:absolute;bottom:-9px;right:-9px;width:19px;height:19px;border-radius:50%;background:var(--green);border:1.5px solid var(--green);color:var(--bg);display:flex;align-items:center;justify-content:center;font-size:10px;pointer-events:none}
.player-bubble .bb-timers{display:flex;flex-direction:column;gap:1px;margin-top:2px}
.player-bubble .bb-since{font-size:11px;font-weight:700;color:var(--green);font-family:var(--mono)}
.player-bubble .bb-total{font-size:9px;color:var(--text2);font-family:var(--mono)}
.poste-marker{position:absolute;transform:translate(-50%,calc(-50% - 30px));width:24px;height:24px;border-radius:7px;border:2px solid rgba(255,255,255,.5);color:var(--text);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;font-family:var(--mono);cursor:grab;touch-action:none;z-index:6;box-shadow:0 2px 6px rgba(0,0,0,.4)}
.poste-marker:active{cursor:grabbing}
.live-hint{font-size:10.5px;color:var(--text3);text-align:center;padding:6px 10px}
.bench-area{padding:8px 14px 14px;border-top:1px solid var(--border)}
.live-body{display:grid;grid-template-columns:1fr;gap:14px;margin:0 14px 12px}
.live-sidebar{display:flex;flex-direction:column;gap:14px}
.live-field{min-width:0}
@media(min-width:760px){
  .live-body:not(.landscape){grid-template-columns:minmax(340px,2fr) minmax(280px,1fr);}
  .live-body:not(.landscape) .live-field{order:1;}
  .live-body:not(.landscape) .live-sidebar{order:2;overflow-y:auto;max-height:calc(100dvh - 190px);}
  .terrain-wrap:not(.landscape){width:auto;max-width:100%;height:min(calc(100dvh - 190px),640px)}
}
.live-body.landscape{grid-template-columns:minmax(300px,62%) minmax(240px,1fr);align-items:flex-start}
.live-body.landscape .live-field{order:1}
.live-body.landscape .live-sidebar{order:2;overflow-y:auto;max-height:calc(100dvh - 160px)}
.bench-title{font-size:11px;color:var(--text2);text-transform:uppercase;letter-spacing:.04em;font-weight:500;margin-bottom:7px}
.bench-row{display:flex;flex-wrap:wrap;gap:6px}

/* HISTORIQUE DES REMPLACEMENTS (banc <-> terrain uniquement, pas les échanges de postes) */
.sublog-section{padding:8px 14px 0;border-top:1px solid var(--border)}
.sublog-row{display:flex;align-items:center;gap:6px;padding:5px 0;border-bottom:1px solid var(--border);font-size:11px}
.sublog-row:last-child{border-bottom:none}
.sublog-t{font-weight:600;color:var(--green);font-family:var(--mono);min-width:26px;flex-shrink:0}
.sublog-out{color:var(--red);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sublog-in{color:var(--green);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* FORMATIONS */
.formations-section{padding:10px 14px 0}
.fs-head{display:flex;align-items:center;gap:6px;margin-bottom:8px}
.bico-sm{background:var(--bg3);border:1px solid var(--border);border-radius:6px;width:24px;height:24px;display:flex;align-items:center;justify-content:center;font-size:12px;cursor:pointer;color:var(--text2)}
.formations-bar{display:flex;flex-wrap:wrap;gap:6px}
.form-chip{display:flex;align-items:center;gap:5px;background:var(--bg3);border:1px solid var(--border);border-radius:99px;padding:4px 4px 4px 9px;font-size:11px}

/* BUTS */
.buts-section{padding:0 14px 14px}
.but-btns{display:flex;gap:8px;margin-bottom:10px}
.but-btn{flex:1;padding:9px 10px;border-radius:var(--rsm);font-family:var(--font);font-size:13px;font-weight:600;cursor:pointer;border:none;display:flex;align-items:center;justify-content:center;gap:6px}
.but-btn.mk{background:var(--green-bg);color:var(--green);border:1px solid var(--green-border)}
.but-btn.cd{background:var(--red-bg);color:var(--red);border:1px solid var(--red-border)}
.but-row{display:flex;align-items:center;gap:7px;padding:7px 0;border-bottom:1px solid var(--border);font-size:12px}
.but-row:last-child{border-bottom:none}
.but-min{font-size:11px;font-weight:600;color:var(--green);font-family:var(--mono);min-width:26px}

/* QUICK GOAL PICKER */
.qg-list{display:flex;flex-direction:column;gap:7px}
.qg-opt{background:var(--bg3);border:1.5px solid var(--border);border-radius:var(--rsm);padding:11px 13px;font-family:var(--font);font-size:14px;font-weight:600;text-align:left;cursor:pointer;color:var(--text)}
.qg-opt.qg-none{color:var(--text2);font-weight:500;border-style:dashed}

/* TIMELINE */
.tl-wrap{padding:12px 14px;font-size:13px;line-height:1.4;max-width:740px;margin:0 auto;}
.tl-wrap #tl-chart{overflow-x:auto;}
.tl-wrap svg{width:100%;height:auto;display:block;}
.tl-wrap text{font-family:'DM Sans',sans-serif;}
/* Sélecteur d'équipes : en-tête de club */
.tsw-club{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:700;color:var(--text2);text-transform:uppercase;letter-spacing:.04em;padding:8px 2px 2px}
.tsw-club img,.tsw-club span:first-child{width:20px;height:20px;object-fit:contain;display:inline-flex;align-items:center;justify-content:center}
/* Page Mon club */
.club-head{display:flex;align-items:center;gap:14px}
.club-logo{width:60px;height:60px;border-radius:14px;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:26px;overflow:hidden}
.club-sec{font-size:12px;font-weight:700;color:var(--text2);text-transform:uppercase;letter-spacing:.04em;margin-bottom:10px}
.club-mem{display:flex;align-items:center;gap:10px;padding:9px 0;border-top:1px solid var(--border)}
.club-del{font-size:12px;padding:6px 10px;min-height:34px}
.club-add{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap}
.club-add .fi{flex:1;min-width:160px}
.club-add .sel{width:auto}
.club-team{display:flex;align-items:center;gap:10px;padding:9px 0;border-top:1px solid var(--border);cursor:pointer}
.club-color{height:44px;padding:4px}
.club-chooser{display:flex;gap:6px;margin-bottom:10px;overflow-x:auto}
.club-chooser button{flex-shrink:0;min-height:36px;padding:0 12px;border-radius:99px;border:1px solid var(--border);background:var(--bg2);color:var(--text2);font-family:var(--font);font-size:13px;font-weight:600;cursor:pointer}
.club-chooser button.on{background:var(--green-bg);border-color:var(--green-border);color:var(--green)}
#club-content .card+.card{margin-top:10px}
/* Logo d'équipe (remplace le carré coloré quand il existe) */
.team-logo{width:100%;height:100%;object-fit:contain;display:block}
.logo-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.logo-prev{width:56px;height:56px;border-radius:12px;background:var(--bg3);border:1px solid var(--border);display:flex;align-items:center;justify-content:center;font-size:11px;color:var(--text3);padding:4px;flex-shrink:0}
.logo-btn{display:inline-flex;align-items:center;min-height:40px;padding:0 12px;cursor:pointer;font-size:13px}
.tl-filter{width:100%;min-height:44px;margin-bottom:12px}
.tl-sub{padding:8px 0;border-bottom:1px solid var(--border);font-size:13px}
.tl-sub:last-child{border-bottom:none}
.tl-sub-head{display:flex;align-items:center;gap:7px;margin-bottom:4px}
.tl-sub-t{font-size:12px;font-weight:600;color:var(--green);font-family:var(--mono);min-width:40px}
.tl-sub-line{padding:2px 0 2px 47px;font-weight:500}
.tl-wrap .timeline-note{font-size:12px;color:var(--text2);margin-top:8px;}

/* READONLY MATCH */
.ro-banner{background:var(--bg3);border:1px solid var(--border);border-radius:var(--r);padding:14px;margin:12px 14px;text-align:center}
.ro-score{font-size:40px;font-weight:700;font-family:var(--mono);margin:8px 0}

/* EMPTY */
.empty{text-align:center;padding:48px 20px;color:var(--text2)}
.empty-i{font-size:42px;margin-bottom:12px}
.empty-t{font-size:16px;font-weight:600;color:var(--text);margin-bottom:6px}
.empty-s{font-size:13px;line-height:1.6}

::-webkit-scrollbar{width:3px}
::-webkit-scrollbar-thumb{background:var(--border2);border-radius:99px}

/* Mobile (iPhone) optimizations */
@media (max-width:420px){
  .app-hdr{padding:calc(var(--st) + 6px) 8px 6px}
  .tname{font-size:16px}
  .mode-btn{padding:6px 8px;font-size:11px}

  .chrono-sticky{padding:6px 8px}
  .chrono-row{gap:5px}
  .chrono-time{font-size:15px}
  .chrono-half{font-size:10px}
  .score-val{font-size:13px}
  .score-lbl{font-size:8px;max-width:50px}
  .sbtn{width:26px;height:26px;font-size:15px}
  .qbtn{padding:5px 6px;font-size:10px}
  .qbtn-conc{padding:5px 8px}
  .live-hint{display:none}

  /* Make terrain smaller so it's visible on narrow screens, mais assez haut pour les bulles + repères */
  .terrain-wrap{margin:6px auto;max-width:min(90vw,380px)}
  .terrain-svg{border-radius:10px}
  .terrain-wrap.landscape{height:min(calc(100dvh - 120px),500px)}

  /* Player bubble compaction : sur iPhone on n'affiche que "Depuis", pas le total, pour ne pas surcharger */
  .player-bubble{font-size:10px;padding:4px 6px;min-width:48px;border-width:1.5px;border-radius:9px}
  .player-bubble .bb-out{width:16px;height:16px;font-size:9px;top:-7px;right:-7px}
  .player-bubble .bb-subcount{width:16px;height:16px;font-size:9px;top:-7px;left:-7px}
  .player-bubble .bb-starter{width:16px;height:16px;font-size:9px;bottom:-7px;right:-7px}
  .player-bubble .bb-since{font-size:10px}
  .player-bubble .bb-total{display:none}
  .poste-marker{width:19px;height:19px;font-size:10px;border-radius:5px;transform:translate(-50%,calc(-50% - 22px))}
  .player-bubble.bench{border-width:1.5px}
  .player-bubble .bench-time{font-size:9.5px}

  /* Bench area should scroll if content overflows */
  .bench-area{padding:6px 10px 12px;border-top:1px solid var(--border);overflow-x:auto}
  .bench-row{display:flex;gap:8px;flex-wrap:nowrap}
  .bench-row > *{flex:0 0 auto}

  /* Reduce paddings and margins for live view */
  .live-body{margin:0 6px 10px}
  .live-sidebar{max-height:30dvh;overflow:auto}

  /* Compact bottom nav */
  .ni{padding:6px 2px;font-size:10px;min-height:52px}
  .ni-icon{font-size:17px}

  /* Ensure page content isn't hidden behind bottom nav */
  .page{padding-bottom:calc(78px + var(--sb))}
  .modal{max-height:88dvh}
  .kiosk-panel{padding:12px}

  /* Timeline tweaks */
  .tl-wrap{padding:12px 8px}
}

/* ============ NAV V2 — barre latérale iPad / PC (≥ 900px) ============ */
.side-team,.side-user{display:none}
@media (min-width:900px) and (min-height:501px){
  #screen-app{padding-left:260px}
  .app-hdr{display:none}
  .bnav{position:fixed;top:0;left:0;bottom:0;width:260px;flex-direction:column;gap:4px;border-top:none;border-right:1px solid var(--border);padding:calc(var(--st) + 16px) 14px calc(var(--sb) + 14px)}
  .ni{flex:0 0 auto;flex-direction:row;gap:12px;min-height:46px;padding:0 12px;border-radius:10px;font-size:15px;font-weight:600;text-align:left}
  .ni.active{background:var(--bg3)}
  .ni-icon,.ni.active .ni-icon{width:24px;height:24px;background:none;font-size:18px}
  .side-team{display:flex;align-items:center;gap:11px;width:100%;background:var(--bg3);border:1px solid var(--border);border-radius:14px;padding:11px;margin-bottom:14px;cursor:pointer;text-align:left;font-family:var(--font);color:var(--text);min-width:0}
  .side-team .tname{font-size:15px}
  .side-user{display:flex;align-items:center;gap:10px;margin-top:auto;width:100%;background:none;border:none;border-top:1px solid var(--border);padding:12px 4px 0;cursor:pointer;text-align:left;font-family:var(--font);color:var(--text);min-width:0}
  .side-user .side-txt{display:flex;flex-direction:column;min-width:0}
  .side-user-name{font-size:14px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .side-user-role{font-size:12px;color:var(--text2)}
  .umenu{top:auto;right:auto;left:14px;bottom:calc(var(--sb) + 70px)}

  /* Live = focus : barre réduite aux icônes */
  #screen-app.live-active{padding-left:68px}
  #screen-app.live-active .bnav{width:68px;padding-left:10px;padding-right:10px;align-items:center}
  #screen-app.live-active .ni{width:46px;padding:0;justify-content:center}
  #screen-app.live-active .ni-lbl,#screen-app.live-active .side-txt{display:none}
  #screen-app.live-active .side-team{width:auto;padding:0;background:none;border:none}
  #screen-app.live-active .side-user{width:auto;justify-content:center;padding:12px 0 0}
  #screen-app.live-active .umenu{left:10px}
}

/* ============ LIVE iPhone portrait : banc toujours visible + en-tête compact ============
   Le terrain prenait toute la hauteur de l'écran et le banc passait sous le pli (il fallait
   défiler pour faire un remplacement). En portrait téléphone pendant le Live :
   - le banc est fixé en bas de l'écran (une ligne, défilement horizontal),
   - l'en-tête du match tient sur une ligne (date et Supprimer masqués),
   - le terrain est dimensionné sur la hauteur restante. */
:root{--bench-h:104px}
@media (max-width:759px) and (orientation:portrait){
  #screen-app.live-active .det-hdr{padding:calc(var(--st) + 6px) 10px 6px}
  #screen-app.live-active #det-sub,#screen-app.live-active #match-delete-btn{display:none!important}
  #screen-app.live-active .det-steps{padding:4px 12px 0}
  #screen-app.live-active .mtab{min-height:36px;gap:5px;padding:4px 0 2px;font-size:11px}

  #screen-app.live-active .live-body:not(.landscape){padding-bottom:calc(var(--bench-h) + var(--sb));margin-left:6px;margin-right:6px}
  /* Terrain le plus large possible : limité par la largeur de l'écran ou par la hauteur restante */
  #screen-app.live-active .live-body:not(.landscape) .terrain-wrap{width:auto;max-width:100%;margin:4px auto;height:clamp(400px,calc(100dvh - var(--st) - var(--sb) - var(--bench-h) - 172px),calc((100vw - 12px) * 1.4))}
  #screen-app.live-active .live-body:not(.landscape) .live-hint{display:none}
  #screen-app.live-active .live-body:not(.landscape) .bench-area{position:fixed;left:0;right:0;bottom:0;z-index:30;height:calc(var(--bench-h) + var(--sb));padding:7px 10px calc(var(--sb) + 8px);background:var(--bg2);border-top:1px solid var(--border2);box-shadow:0 -8px 24px rgba(0,0,0,.35);overflow:hidden}
  #screen-app.live-active .live-body:not(.landscape) .bench-title{margin-bottom:2px}
  #screen-app.live-active .live-body:not(.landscape) .bench-row{flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;gap:8px;padding:8px 2px 6px;-webkit-overflow-scrolling:touch}
  #screen-app.live-active .live-body:not(.landscape) .bench-row>*{flex:0 0 auto}
  #screen-app.live-active .live-body:not(.landscape) .live-sidebar{max-height:none;overflow:visible}
}
/* Lien "but détaillé (avec passeur)" jugé inutile : masqué (le bouton ⚽ But suffit). */
.goal-detail-link{display:none!important}
#btn-chrono-top{display:none}
/* Repère de rotation (sorti de la zone banc) */
.rotation-row{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:0 14px}
.rotation-row #rotation-hint{font-size:11px;color:var(--text2)}
.rotation-row label{display:flex;align-items:center;gap:5px;font-size:11px;color:var(--text2);cursor:pointer;flex-shrink:0;white-space:nowrap;min-height:32px}
.rotation-row input{width:16px;height:16px;accent-color:var(--green)}
@media (max-width:759px) and (orientation:portrait){
  /* Banc fixé en bas : le repère de rotation (.rotation-row) s'affiche sous le terrain */
  #screen-app.live-active .live-body:not(.landscape) .rotation-row{padding:10px 8px;border-top:1px solid var(--border)}
  /* Start/Pause remonté dans l'en-tête du match (à la place de Supprimer et du statut) */
  #screen-app.live-active #det-status,#screen-app.live-active #btn-chrono{display:none}
  #screen-app.live-active #btn-chrono-top{display:inline-flex;align-items:center;flex-shrink:0;min-height:36px;padding:0 14px;font-size:14px;border-radius:10px}
  /* Temps de jeu total affiché sur toutes les bulles (terrain et banc), masqué avant par la règle < 420px */
  #screen-app.live-active .player-bubble .bb-total{display:block}
}

/* ============ LIVE iPhone paysage (hauteur ≤ 500px) ============
   L'en-tête du match + les étapes + le chrono prenaient la moitié des ~390px de haut :
   le terrain débordait. En-tête compact (Start dedans, comme en portrait), étapes
   masquées (Bilan via le portrait ou ← Retour), terrain sur la hauteur restante. */
@media (orientation:landscape) and (max-height:500px){
  #screen-app.live-active .det-hdr{padding:4px 12px}
  #screen-app.live-active #det-sub,#screen-app.live-active #match-delete-btn,#screen-app.live-active #det-status,#screen-app.live-active #btn-chrono{display:none!important}
  #screen-app.live-active #btn-chrono-top{display:inline-flex;align-items:center;flex-shrink:0;min-height:34px;padding:0 14px;font-size:14px;border-radius:10px}
  #screen-app.live-active .det-steps{display:none}
  #screen-app.live-active .chrono-sticky{padding:4px 12px}
  #screen-app.live-active .live-body.landscape{margin:0 12px 8px;gap:10px}
  #screen-app.live-active .terrain-wrap.landscape{height:calc(100dvh - var(--st) - var(--sb) - 96px);margin:4px 0}
  #screen-app.live-active .live-body.landscape .live-sidebar{max-height:calc(100dvh - var(--st) - var(--sb) - 96px)}
  #screen-app.live-active .live-hint{display:none}
  /* bulles compactes (mêmes réglages que sur iPhone portrait < 420px) */
  #screen-app.live-active .player-bubble{font-size:10px;padding:3px 6px;min-width:48px;border-width:1.5px;border-radius:9px}
  #screen-app.live-active .player-bubble>div[style*="font-size:13px"]{font-size:11px!important}
  #screen-app.live-active .player-bubble .bb-since{font-size:10px}
  #screen-app.live-active .player-bubble .bb-total{font-size:8.5px}
  #screen-app.live-active .player-bubble .bb-out,#screen-app.live-active .player-bubble .bb-subcount,#screen-app.live-active .player-bubble .bb-starter{width:16px;height:16px;font-size:9px}
  #screen-app.live-active .player-bubble .bb-out{top:-7px;right:-7px}
  #screen-app.live-active .player-bubble .bb-subcount{top:-7px;left:-7px}
  #screen-app.live-active .player-bubble .bb-starter{bottom:-7px;right:-7px}
  #screen-app.live-active .poste-marker{width:19px;height:19px;font-size:10px;border-radius:5px;transform:translate(-50%,calc(-50% - 22px))}
}

/* ============ TROUVER UN MATCH (reseau.js) ============ */
.rs-tabs{display:flex;gap:6px;margin-bottom:12px;overflow-x:auto}
.rs-tabs button{flex-shrink:0;min-height:40px;padding:0 14px;border-radius:99px;border:1px solid var(--border);background:var(--bg2);color:var(--text2);font-family:var(--font);font-size:14px;font-weight:600;cursor:pointer}
.rs-tabs button.on{background:var(--green-bg);border-color:var(--green-border);color:var(--green)}
.rs-count{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 6px;border-radius:99px;background:var(--amber);color:var(--bg);font-size:11px;font-weight:700;margin-left:4px}
.rs-filters{display:flex;flex-direction:column;gap:8px;margin-bottom:12px}
.rs-lbl{display:flex;flex-direction:column;gap:5px;font-size:12px;font-weight:600;color:var(--text2)}
.rs-card{display:flex;flex-direction:column;gap:7px}
#reseau-content .card+.card{margin-top:10px}
.rs-top{display:flex;align-items:center;gap:10px}
.rs-logo{width:40px;height:40px;border-radius:10px;background:var(--bg3);display:flex;align-items:center;justify-content:center;font-size:20px;overflow:hidden;flex-shrink:0}
.rs-club{font-size:15px;font-weight:700}
.rs-sub{font-size:12px;color:var(--text2);margin-top:2px}
.rs-team{font-size:14px;font-weight:600}
.rs-line{font-size:12.5px;color:var(--text2)}
.rs-chips{display:flex;flex-wrap:wrap;gap:6px}
.rs-chips span{font-size:12px;font-weight:600;padding:5px 9px;border-radius:99px;background:var(--bg3);border:1px solid var(--border)}
.rs-chips span.pris{text-decoration:line-through;opacity:.6}
.rs-msg{font-size:13px;color:var(--text);background:var(--bg3);border-radius:var(--rsm);padding:8px 10px;white-space:pre-line}
.rs-ok{font-size:12.5px;color:var(--green);font-weight:600}
.rs-warn{font-size:12.5px;color:var(--amber);font-weight:500}
.rs-prop{min-height:42px;font-size:13px;width:100%;margin:2px 0 0}
.rs-acts{display:flex;flex-wrap:wrap;gap:6px;margin-top:2px}
.rs-acts button{min-height:38px;padding:0 12px;font-size:13px}
.rs-act{width:auto;margin:0}
.an-seg{width:100%}
.an-seg button{flex:1;padding:0 6px}
.an-chips{display:flex;flex-wrap:wrap;gap:6px}
.an-chips button{min-height:36px;padding:0 12px;border-radius:99px;border:1px solid var(--border);background:var(--bg3);color:var(--text2);font-family:var(--font);font-size:13px;font-weight:600;cursor:pointer}
.an-chips button.on{background:var(--green-bg);border-color:var(--green-border);color:var(--green)}
.an-cr{display:grid;grid-template-columns:1.4fr 1fr 1fr auto;gap:6px;margin-bottom:6px}
.an-cr .fi{padding:9px 8px;font-size:14px}
.an-cr .bred{min-width:40px;padding:0}
.an-cibles{display:flex;flex-direction:column;gap:2px;max-height:220px;overflow-y:auto;margin-top:8px}
.an-cibles label{display:flex;align-items:center;gap:8px;min-height:38px;font-size:13px;color:var(--text)}
.an-foot{flex-wrap:wrap}

/* Membres & accès : liste compacte dépliable */
.acc-tools{display:flex;flex-direction:column;gap:8px;margin-bottom:8px}
.acc-count{font-size:12px;color:var(--text2);margin:4px 2px 8px;font-weight:600}
.acc-line{background:var(--bg2);border:1px solid var(--border);border-radius:var(--r);margin-bottom:8px;overflow:hidden}
.acc-line.open{border-color:var(--border2)}
.acc-sum{display:flex;align-items:center;gap:10px;padding:10px 12px;cursor:pointer;min-height:56px}
.acc-sum .avatar{cursor:pointer;flex-shrink:0}
.acc-who{flex:1;min-width:0}
.acc-who .admin-role{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.acc-chips{display:flex;flex-wrap:wrap;gap:4px;margin-top:5px}
.acc-chip{font-size:11px;font-weight:600;padding:3px 8px;border-radius:99px;background:var(--bg3);color:var(--text3)}
.acc-chip.e{background:var(--green-bg);color:var(--green)}
.acc-chip.d{background:var(--blue-bg);color:var(--blue)}
.acc-arrow{color:var(--text3);font-size:14px;flex-shrink:0;padding:0 4px}
.acc-detail{padding:0 12px 12px;border-top:1px solid var(--border)}
@media (max-width:420px){.acc-sum .acc-seg button{padding:0 7px;font-size:11px}}

/* Lien de démonstration (base de test) */
.demo-banner{position:fixed;top:calc(var(--st) + 4px);left:50%;transform:translateX(-50%);z-index:400;background:#facc15;color:#1c1a17;font-size:11px;font-weight:700;padding:3px 10px;border-radius:99px;pointer-events:none;box-shadow:0 2px 8px rgba(0,0,0,.3)}

/* ============ PLATEFORME (plateforme.js) ============ */
.pt-tiles{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:12px}
.pt-tile{background:var(--bg2);border:1px solid var(--border);border-radius:var(--r);padding:10px;text-align:center}
.pt-tile.warn{border-color:var(--amber-border);background:var(--amber-bg)}
.pt-n{font-size:22px;font-weight:700;font-family:var(--mono)}
.pt-l{font-size:11px;color:var(--text2);margin-top:2px}
#plateforme-content .card+.card{margin-top:10px}
.pt-niv{display:flex;gap:8px;align-items:center}
.pt-niv .fi,.pt-niv .sel{flex:1;min-width:0}
.pt-niv button{min-height:40px;padding:0 12px;flex-shrink:0}
@media(min-width:700px){.pt-tiles{grid-template-columns:repeat(6,1fr)}}

/* Gestion des clubs : liste compacte et fiche */
.pt-row{display:flex;align-items:center;gap:10px;padding:10px 12px;min-height:58px;background:var(--bg2);border:1px solid var(--border);border-radius:var(--r);margin-bottom:8px;cursor:pointer}
.pt-row:active{background:var(--bg3)}
.pt-team{padding:10px 0;border-top:1px solid var(--border)}
.pt-team:first-of-type{border-top:none}
.pt-mb{font-size:13px;padding:4px 0 0 10px;display:flex;align-items:center;gap:6px;flex-wrap:wrap}

/* ============ TABLEAU TACTIQUE (tableau.js) ============ */
.tb-screen{position:fixed;inset:0;z-index:260;background:var(--bg);flex-direction:column;padding:calc(var(--st) + 6px) 8px calc(var(--sb) + 8px)}
.tb-top{display:flex;align-items:center;gap:8px}
.tb-head{flex:1;min-width:0;display:flex;flex-direction:column}
.tb-titre{background:none;border:none;color:var(--text);font-family:var(--font);font-size:16px;font-weight:700;padding:4px 0;outline:none;min-width:0}
.tb-phase{font-size:11px;color:var(--text2);font-weight:600}
.tb-statut{font-size:11px;color:var(--green);font-weight:600;flex-shrink:0}
.tb-statut.attente{color:var(--amber)}
.tb-btn{min-height:44px;min-width:44px;padding:0 12px;border-radius:12px;border:1px solid var(--border);background:var(--bg2);color:var(--text);font-family:var(--font);font-size:14px;font-weight:600;cursor:pointer;flex-shrink:0}
.tb-tog.on{background:var(--green-bg);border-color:var(--green-border);color:var(--green)}
.tb-tools{display:flex;gap:6px;margin:8px 0;overflow-x:auto;flex-shrink:0}
.tb-festi{display:flex;align-items:center;gap:4px;font-size:12px;color:var(--text2)}
.tb-field{flex:1;min-height:0;display:flex;align-items:center;justify-content:center}
.tb-wrap{margin:0 auto;max-width:none;aspect-ratio:auto}
.tb-wrap.landscape{margin:0 auto;height:auto;aspect-ratio:auto}
.tb-pions{position:absolute;inset:0;touch-action:none}
.tb-pion{position:absolute;transform:translate(-50%,-50%);width:var(--tbp,38px);height:var(--tbp,38px);border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;font-family:var(--mono);font-size:calc(var(--tbp,38px)*.4);font-weight:700;cursor:grab;touch-action:none;user-select:none;-webkit-user-select:none;box-shadow:0 2px 6px rgba(0,0,0,.45);outline:none;z-index:2}
.tb-pion::before{content:'';position:absolute;inset:min(-3px,calc((var(--tbp,38px) - 44px)/2));border-radius:50%}     /* cible ≥ 44 px */
.tb-pion.nous{background:var(--green);color:#0a1628;border:2px solid #fff}
.tb-pion.eux{background:var(--red);color:#fff;border:2px solid rgba(255,255,255,.7);width:calc(var(--tbp,38px)*.9);height:calc(var(--tbp,38px)*.9);font-size:calc(var(--tbp,38px)*.35)}
.tb-pion.ballon{background:none;box-shadow:none;font-size:calc(var(--tbp,38px)*.63);width:calc(var(--tbp,38px)*.84);height:calc(var(--tbp,38px)*.84);z-index:3}
.tb-pion:focus-visible{box-shadow:0 0 0 3px var(--amber)}
.tb-pion.drag{cursor:grabbing;transform:translate(-50%,-50%) scale(1.15);z-index:5}
.tb-nom{position:absolute;top:100%;margin-top:2px;font-family:var(--font);font-size:10px;font-weight:700;color:var(--text);background:rgba(10,22,40,.75);padding:0 4px;border-radius:4px;white-space:nowrap}
.tb-item{display:flex;align-items:center;gap:8px;width:100%;min-height:48px;padding:0 10px;margin-bottom:6px;border-radius:var(--rsm);border:1px solid var(--border);background:var(--bg3);color:var(--text);font-family:var(--font);font-size:14px;cursor:pointer;text-align:left}
.tb-item-t{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}
.tb-new{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}
.tb-new button{flex:1;min-height:44px;width:auto;margin:0;font-size:13px}

/* Tableau tactique — outils de dessin (T2) */
.tb-traits{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;touch-action:none;z-index:1}
.tb-traits.actif{pointer-events:auto;cursor:crosshair}
.tb-traits .tb-hit{pointer-events:stroke}
.tb-pions{z-index:2}
.tb-pions.inactif,.tb-pions.inactif .tb-pion{pointer-events:none}
.tb-bar{display:flex;align-items:center;gap:5px;justify-content:center;flex-wrap:nowrap;overflow-x:auto;padding-top:8px;flex-shrink:0}
.tb-bar .tb-btn{font-size:18px;padding:0;width:46px}
.tb-bar .tb-btn.on{background:var(--green-bg);border-color:var(--green-border);box-shadow:inset 0 0 0 1px var(--green)}
.tb-bar .tb-btn:disabled{opacity:.35}
.tb-sep{width:1px;height:28px;background:var(--border2);margin:0 3px;flex-shrink:0}
@media (max-width:420px){.tb-bar .tb-btn{width:40px;min-width:40px;font-size:16px}.tb-bar{gap:3px}}

/* Tableau tactique — étapes et lecture (T3) */
.tb-etapes{display:flex;align-items:center;gap:5px;overflow-x:auto;padding-top:8px;flex-shrink:0;justify-content:center}
.tb-et{min-width:40px;min-height:40px;padding:0 10px;border-radius:99px;border:1px solid var(--border);background:var(--bg2);color:var(--text2);font-family:var(--font);font-size:14px;font-weight:700;cursor:pointer;flex-shrink:0}
.tb-et.on{background:var(--green);border-color:var(--green);color:#0a1628}
.tb-et.plus{color:var(--green);border-style:dashed}
.tb-et.lire{background:var(--blue-bg);border-color:var(--blue-border);color:var(--blue);padding:0 14px}
.tb-et.lire.on{background:var(--amber);border-color:var(--amber);color:#0a1628}
.tb-et:disabled{opacity:.4}
.tb-screen.lecture .tb-pions,.tb-screen.lecture .tb-pion,.tb-screen.lecture .tb-traits{pointer-events:none}
.tb-screen.lecture .tb-bar{opacity:.4;pointer-events:none}

/* Tableau tactique — intégration au match (T4) */
.qbtn-tb{background:var(--blue-bg);color:var(--blue);border-color:var(--blue-border)}
.tb-match:empty{display:none}
.tb-match{margin-top:16px}
.tb-sec-t{font-size:11px;color:var(--text2);text-transform:uppercase;letter-spacing:.04em;font-weight:500;margin-bottom:7px}
.tb-rejouer{flex-shrink:0;font-size:12px;font-weight:700;color:var(--blue);background:var(--blue-bg);border:1px solid var(--blue-border);border-radius:99px;padding:4px 10px}
.tb-add{width:100%;min-height:44px;font-size:13px}

/* Tableau tactique — modèles (T5) */
.tb-mod-l{display:flex;gap:6px;align-items:center;margin-bottom:6px}
.tb-mod-l .tb-item{margin:0;flex:1;min-width:0}

/* Tableau tactique — téléphone en paysage (peu de hauteur) : les barres passent sur les
   côtés (outils de dessin à gauche, étapes à droite), titre et options sur une seule ligne
   en haut ; le terrain prend toute la hauteur restante. */
@media (orientation:landscape) and (max-height:560px){
  .tb-screen:not([style*="none"]){display:grid!important;grid-template-columns:auto minmax(0,1fr) auto;grid-template-rows:auto minmax(0,1fr);column-gap:10px;row-gap:4px;
    padding:calc(var(--st) + 4px) max(8px,env(safe-area-inset-right)) calc(var(--sb) + 4px) max(8px,env(safe-area-inset-left))}
  .tb-top{grid-area:1/1/2/3;min-width:0;max-width:42vw}
  .tb-titre{font-size:15px;padding:2px 0}
  .tb-tools{grid-area:1/2/2/4;justify-self:end;margin:0;max-width:56vw}
  .tb-tools .tb-btn{min-height:38px;padding:0 10px;font-size:13px}
  .tb-field{grid-area:2/2/3/3}
  .tb-bar{grid-area:2/1/3/2;display:grid;grid-template-columns:repeat(2,42px);grid-auto-rows:42px;gap:4px;align-content:center;padding:0;overflow-y:auto}
  .tb-bar .tb-btn{width:42px;min-width:42px;min-height:42px;font-size:16px}
  .tb-bar .tb-sep{grid-column:1/-1;width:auto;height:1px;margin:2px 0;align-self:center}
  .tb-etapes{grid-area:2/3/3/4;display:grid;grid-template-columns:repeat(2,40px);grid-auto-rows:40px;gap:4px;align-content:center;justify-content:center;padding:0;overflow-y:auto}
  .tb-etapes .tb-sep{grid-column:1/-1;width:auto;height:1px;margin:2px 0;align-self:center}
  .tb-et{padding:0}
  .tb-et.lire{grid-column:1/-1;padding:0}
}

/* Gestion des clubs — chiffres compacts + création */
.pt-stats{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:10px}
.pt-stat{font-size:12px;color:var(--text2);background:var(--bg2);border:1px solid var(--border);border-radius:99px;padding:3px 9px;white-space:nowrap}
.pt-stat b{color:var(--text);font-family:var(--mono)}
.pt-stat.warn{border-color:var(--amber-border);background:var(--amber-bg);color:var(--amber)}
.pt-stat.warn b{color:var(--amber)}
.pt-new{margin:0 0 12px}

/* Accès parents (A3) — mode parent : accueil simplifié, pas d'effectif ni de raccourcis */
.pa-only{display:none}
body.parent-mode .pa-only{display:block}
body.parent-mode #page-home .srow,body.parent-mode #page-home .qgrid,body.parent-mode #page-home .sh:has(+#home-next),body.parent-mode #home-next,
body.parent-mode #nav-players,body.parent-mode .badd,body.parent-mode .pa-cache{display:none!important}
.pa-inv{background:var(--blue-bg);border:1px solid var(--blue-border);color:var(--text);border-radius:var(--rsm);padding:10px 12px;font-size:13px;margin-bottom:12px;line-height:1.4}
.pa-inv span{color:var(--text2);font-size:12px}
.pa-enfants{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:14px}
.pa-chip{background:var(--green-bg);border:1px solid var(--green-border);color:var(--green);border-radius:99px;padding:5px 12px;font-size:13px;font-weight:700}
.pa-rep{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:8px}
.pa-enf{font-size:13px;font-weight:700;min-width:60px}
.pa-btns{display:flex;gap:4px;flex-wrap:wrap}
.pa-btns .cvb{min-height:36px;padding:0 10px;font-size:12px}
.pa-note{font-size:11.5px;color:var(--text2);margin-top:5px}
.pa-score{text-align:center;background:var(--bg3);border-radius:var(--r);padding:10px;margin-bottom:10px}
.pa-sc{font-size:34px;font-weight:700;font-family:var(--mono)}
.pa-live{font-size:13px;color:var(--green);font-weight:700;margin-top:2px}
.pa-bloc{border-top:1px solid var(--border);padding-top:4px;margin-top:6px}
.pa-but{font-size:13px;padding:4px 0;display:flex;gap:6px}
.pa-but span{color:var(--text3);font-family:var(--mono);min-width:30px}
.pa-conv{display:flex;flex-wrap:wrap;gap:5px}
.pa-conv span{background:var(--bg3);border-radius:99px;padding:3px 9px;font-size:12px}
.pa-rep-badge{font-size:10.5px;color:var(--blue);font-weight:600;margin-top:1px}

/* Messagerie (A4) */
.ni-icon{position:relative}
.ni-badge{position:absolute;top:-3px;right:0;min-width:17px;height:17px;padding:0 4px;border-radius:99px;background:var(--red);color:#fff;font-size:10px;font-weight:700;line-height:17px;text-align:center;font-family:var(--font);filter:none}
.ni:not(.active) .ni-icon:has(.ni-badge:not([style*="none"])){filter:none}
.msg-fil{display:flex;align-items:center;gap:10px;background:var(--bg2);border:1px solid var(--border);border-radius:var(--r);padding:11px 12px;margin-bottom:7px;cursor:pointer}
.msg-ic{width:38px;height:38px;border-radius:50%;background:var(--bg3);display:flex;align-items:center;justify-content:center;font-size:18px;flex-shrink:0}
.msg-ft{font-size:14px;font-weight:700}
.msg-fs{font-size:12px;color:var(--text2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-top:2px}
.msg-fr{display:flex;flex-direction:column;align-items:flex-end;gap:4px;flex-shrink:0;font-size:11px;color:var(--text3)}
.msg-nb{background:var(--green);color:#0a1628;border-radius:99px;min-width:20px;height:20px;line-height:20px;text-align:center;font-size:11px;padding:0 6px}
.msg-autre{width:100%;text-align:left;background:var(--blue-bg);border:1px solid var(--blue-border);color:var(--blue);border-radius:var(--rsm);padding:9px 12px;font-family:var(--font);font-size:13px;font-weight:600;margin-bottom:10px;cursor:pointer}
.msg-liste{height:calc(100dvh - var(--st) - var(--sb) - 270px);min-height:220px;overflow-y:auto;display:flex;flex-direction:column;gap:6px;padding:4px 2px}
.msg-b{max-width:82%;align-self:flex-start;background:var(--bg2);border:1px solid var(--border);border-radius:14px 14px 14px 4px;padding:7px 11px}
.msg-b.moi{align-self:flex-end;background:var(--green-bg);border-color:var(--green-border);border-radius:14px 14px 4px 14px}
.msg-a{font-size:11.5px;font-weight:700;color:var(--text2);margin-bottom:2px}
.msg-role{font-size:9.5px;font-weight:700;color:var(--green);background:var(--green-bg);border-radius:99px;padding:1px 6px;margin-left:3px}
.msg-role.p{color:var(--blue);background:var(--blue-bg)}
.msg-t{font-size:14px;white-space:pre-wrap;word-break:break-word;line-height:1.35}
.msg-h{font-size:10.5px;color:var(--text3);margin-top:3px;text-align:right}
.msg-h a{color:var(--text3)}
.msg-jour{align-self:center;font-size:11px;color:var(--text3);margin:6px 0 2px}
/* Majuscule au jour seulement : capitalize donnait « Mercredi 28 Octobre » */
.msg-jour::first-letter{text-transform:uppercase}
.msg-vide{color:var(--text2);font-size:13px;text-align:center;margin:auto}
.msg-saisie{display:flex;gap:6px;align-items:flex-end;margin-top:8px}
.msg-saisie textarea{flex:1;resize:none;min-height:44px;max-height:120px;margin:0}
.msg-env{width:48px;min-height:44px;margin:0;padding:0;font-size:18px;flex-shrink:0}

/* Propositions de match (C2) */
.umenu-badge{margin-left:auto;background:var(--red);color:#fff;border-radius:99px;min-width:20px;height:20px;line-height:20px;text-align:center;font-size:11px;padding:0 6px}
.pr-card{cursor:pointer}
.pr-card.todo{border-color:var(--amber-border)}
.pr-todo{font-size:12.5px;font-weight:700;color:var(--amber)}
.pr-cr span{cursor:pointer}
.pr-cr span.on{background:var(--green-bg);border-color:var(--green-border);color:var(--green)}
.pr-head{display:flex;flex-wrap:wrap;gap:8px;align-items:center;font-size:13px;margin-bottom:10px}
.pr-sugg{background:var(--amber-bg);border:1px solid var(--amber-border);border-radius:var(--rsm);padding:10px;font-size:13px;margin-bottom:10px}
.pr-tour{border-left:3px solid var(--blue-border);padding:4px 0 6px 10px;margin-bottom:6px}
.pr-tour.nous{border-left-color:var(--green-border)}
.pr-tq{font-size:13px}
.pr-tm{font-size:13px;color:var(--text2);white-space:pre-wrap;margin-top:3px;font-style:italic}
.pr-td{font-size:11px;color:var(--text3);margin-top:2px}
.pr-ct{display:flex;align-items:center;gap:6px;padding:6px 0;border-bottom:1px solid var(--border);font-size:13px}
.pr-ctb{min-width:40px;min-height:36px;display:inline-flex;align-items:center;justify-content:center;text-decoration:none;padding:0 8px}
.pr-hist{max-height:42vh;overflow-y:auto;display:flex;flex-direction:column;gap:6px;padding:2px}
.pr-bulle{max-width:85%;align-self:flex-start;background:var(--bg3);border:1px solid var(--border);border-radius:14px 14px 14px 4px;padding:6px 10px}
.pr-bulle.nous{align-self:flex-end;background:var(--green-bg);border-color:var(--green-border);border-radius:14px 14px 4px 14px}
.pr-ba{font-size:11px;font-weight:700;color:var(--text2)}
.pr-bt{font-size:14px;white-space:pre-wrap;word-break:break-word}
.pr-hist .pr-tour{align-self:stretch}
.pr-msg-nb{font-size:12.5px;font-weight:700;color:var(--blue)}
.pr-coord{width:100%;margin-top:12px;font-size:13px;min-height:40px}

/* Calendrier du club (semaine par équipe) */
.cal-nav{display:flex;align-items:center;gap:6px;margin-bottom:8px}
.cal-nav .bsec{min-height:38px;min-width:40px;padding:0 10px;width:auto;margin:0}
.cal-titre{flex:1;text-align:center;font-weight:700;font-size:14px}
.cal-leg{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:8px}
.cal-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:var(--r)}
.cal{border-collapse:collapse;width:100%;min-width:760px;font-size:11.5px}
.cal th,.cal td{border:1px solid var(--border);padding:4px;vertical-align:top}
.cal thead th{background:var(--bg2);font-weight:500;color:var(--text2);text-align:center;font-size:11px}
.cal thead th b{color:var(--text);font-size:14px}
.cal tbody th{position:sticky;left:0;background:var(--bg2);text-align:left;min-width:86px;z-index:1}
.cal-eq{font-weight:700;font-size:12.5px}
.cal-cat{color:var(--text3);font-size:10.5px}
.cal td{min-width:92px;height:44px}
.cal .we{background:rgba(255,255,255,.025)}
.cal .auj{box-shadow:inset 0 0 0 2px var(--green-border)}
.cal-it{display:block;border-radius:6px;padding:3px 5px;margin-bottom:3px;line-height:1.25;font-size:11px;border:1px solid transparent}
.cal-leg .cal-it{display:inline-block;margin:0}
.cal-it.dom{background:var(--green-bg);border-color:var(--green-border)}
.cal-it.ext{background:var(--blue-bg);border-color:var(--blue-border)}
.cal-it.fini{opacity:.55}
.cal-it.prop{border:1px dashed var(--amber);background:var(--amber-bg);cursor:pointer}
.cal-it.prop small{display:block;color:var(--amber);font-weight:700}
.cal-it.libre{border:1px dashed var(--border2);color:var(--text3)}
.cal-it.libre small{display:block;font-style:italic}
.pr-cal{width:100%;margin-bottom:10px;font-size:13px;min-height:42px}
.pr-jc{font-size:12.5px;background:var(--bg3);border-radius:var(--rsm);padding:8px 10px;margin-bottom:10px;line-height:1.45}
.pr-jc a{white-space:nowrap}
/* Accueil : tuile Messages (pastille) ; tuile seule en dernière ligne = pleine largeur */
.qb-badge{position:absolute;top:8px;right:8px}
.qgrid>.qb:last-of-type:nth-of-type(odd),.qgrid>.qb:nth-of-type(odd):has(+#home-cal[style*="none"]){grid-column:span 2}
/* Calendrier : « + » annonce dans une case */
.cal td{position:relative;padding-bottom:22px}
.cal-add{position:absolute;right:3px;bottom:3px;width:22px;height:18px;border-radius:5px;border:1px dashed var(--border2);background:none;color:var(--text3);font-size:13px;line-height:1;cursor:pointer;padding:0}
.cal-add:active{background:var(--bg3);color:var(--text)}
/* Trouver un match : filtres supplémentaires */
.rs-plus{border:1px solid var(--border);border-radius:var(--rsm);background:var(--bg2)}
.rs-plus summary{cursor:pointer;padding:9px 12px;font-size:13px;font-weight:600;color:var(--text2);min-height:22px}
.rs-plus-in{display:flex;flex-direction:column;gap:8px;padding:0 10px 10px}
.rs-tri{display:flex;align-items:center;gap:8px;justify-content:space-between}
.rs-tri span{font-size:12.5px;color:var(--text2);font-weight:600;white-space:nowrap}
.rs-tri .sel{width:auto;flex:0 1 auto}
/* Tranche horaire (recherche d'annonces, calendrier) */
.rs-heures{display:flex;align-items:center;gap:6px}
.rs-heures span{font-size:13px;color:var(--text2)}
.rs-heures .fi{flex:1;min-width:0}
.rs-heures .bsec{width:auto;min-height:40px;padding:0 12px;margin:0}
.cal-choix-b{width:100%;margin-bottom:8px;min-height:46px}
/* Proposition directe : choix de l'équipe adverse */
.prd-liste{max-height:30vh;overflow-y:auto;border:1px solid var(--border);border-radius:var(--rsm);margin-top:6px;display:flex;flex-direction:column}
.prd-eq{text-align:left;background:none;border:none;border-bottom:1px solid var(--border);padding:10px 12px;color:var(--text);font-family:var(--font);font-size:13.5px;cursor:pointer;min-height:42px}
.prd-eq span{color:var(--text3);font-size:12px}
.prd-eq.on{background:var(--green-bg);box-shadow:inset 3px 0 0 var(--green)}
/* Trouver un match : en-tête compact */
.rs-filters{gap:6px;margin-bottom:10px}
.rs-ligne{display:flex;gap:6px;align-items:center}
.rs-ligne>.sel,.rs-ligne>.fi{flex:1;min-width:0;margin:0}
.rs-mini{width:auto;flex-shrink:0;min-height:40px;padding:0 12px;margin:0;font-size:13px;white-space:nowrap}
.rs-mini.actif{border-color:var(--green-border);color:var(--green)}
.rs-mini .rs-count{margin-left:2px}
.rs-panneau{display:flex;flex-direction:column;gap:6px;padding:8px;border:1px solid var(--border);border-radius:var(--rsm);background:var(--bg2)}
.rs-panneau .frow{gap:6px}
.rs-nb{font-size:12px;color:var(--text3);font-weight:600}
.pr-actions{margin-bottom:10px}
.pr-actions .rs-mini{flex:1}
.qb-badge.cal-badge{background:var(--amber);color:var(--bg)}
/* ---- Retours du test (2026-10-28) ---- */
/* Listes déroulantes : petite flèche (elles ressemblaient à du texte) */
.sel{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%238a97b5' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 11px center;background-size:12px 8px;padding-right:32px}
/* Onglets de Trouver un match : sur deux lignes plutôt que cachés à droite */
.rs-tabs{flex-wrap:wrap;overflow:visible}
.rs-tabs button{min-height:36px;padding:0 12px;font-size:13px}
/* Bouton « Proposer un match » des annonces : moins massif */
.rs-prop{align-self:flex-end;width:auto;min-height:38px;padding:0 16px;font-size:13px;margin-top:2px}
/* Lien « voir la semaine » lisible sur fond sombre */
.pr-jc a{color:var(--green);font-weight:600;text-decoration:none}
/* Calendrier : 7 jours tiennent sur iPad ; liste par jour sur téléphone */
.cal{min-width:600px}
.cal td{min-width:72px}
.cal-titre{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cal-nav .bsec{padding:0 9px}
.cal-liste{display:none}
@media (max-width:640px){
  .cal-wrap{display:none}
  .cal-liste{display:flex;flex-direction:column;gap:8px}
}
.cal-jour{border:1px solid var(--border);border-radius:var(--r);background:var(--bg2);padding:8px 10px}
.cal-jour.we{background:var(--bg3)}
.cal-jour.auj{box-shadow:inset 0 0 0 2px var(--green-border)}
.cal-jh{display:flex;align-items:center;justify-content:space-between;font-size:13px;font-weight:700;min-height:30px}
.cal-add-j{width:34px;height:30px;border-radius:8px;border:1px dashed var(--border2);background:none;color:var(--text2);font-size:17px;cursor:pointer;padding:0}
.cal-l-eq{display:flex;gap:8px;align-items:flex-start;margin-top:6px}
.cal-l-nom{font-size:12px;font-weight:700;min-width:48px;padding-top:4px}
.cal-l-its{flex:1;min-width:0}
.cal-vide{font-size:12px;color:var(--text3);padding:2px 0}
/* Barre latérale iPad / PC : accès directs */
.ni-side{display:none}
@media (min-width:900px) and (min-height:501px){.ni-side:not([style*="none"]){display:flex}}
body.parent-mode .ni-side.pa-cache{display:none!important}
/* Calendrier : « lundi 2 novembre » (seule la 1re lettre en majuscule), jours vides compacts, colonnes égales */
.cal-jh{text-transform:none}
.cal-jd::first-letter{text-transform:uppercase}
.cal-jd .cal-vide{font-style:normal;font-weight:500;font-size:12px;color:var(--text3)}
.cal-jour{padding:4px 10px}
.cal{table-layout:fixed}
.cal thead th:first-child,.cal tbody th{width:90px}
/* Vue club (CQ / coordinateur sans équipe sélectionnée) */
.club-only{display:none}
body.club-vue .team-only{display:none}
body.club-vue .srow.club-only{display:grid}
body.club-vue .qb.club-only{display:block}
body.club-vue #page-players .badd,body.club-vue #page-match .badd{display:none}
.ce-liste{display:flex;flex-direction:column;gap:7px;max-width:460px;margin:0 auto}
.mc-eq{display:inline-block;font-size:10px;font-weight:700;color:#fff;border-radius:5px;padding:1px 5px;margin-right:6px;vertical-align:1px}
/* Passe décisive (2e étape du bouton ⚽ But) */
.qg-but{font-size:13px;color:var(--text2);padding:0 2px 2px}
.qg-opt.qg-sans{text-align:center}
/* ===== Tournois (tournois.js) ===== */
.trn-sh{font-size:12px;font-weight:700;color:var(--text2);text-transform:uppercase;letter-spacing:.04em;margin:14px 0 6px}
.trn-hdr{display:flex;align-items:center;gap:10px;margin-bottom:8px}
.trn-titre{font-size:17px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.trn-sous{font-size:12px;color:var(--text2)}
.trn-actions{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}
.trn-actions .bsec{min-height:36px}
.bsec.trn-on{background:var(--green-bg);border-color:var(--green-border);color:var(--green)}
.trn-del{color:var(--red,#ff5c5c)}
.trn-aide{font-size:12px;color:var(--text3);margin:4px 0 10px}
.trn-h{font-family:var(--mono);font-size:13px;font-weight:500;color:var(--text2);margin:12px 0 5px}
.trn-m{background:var(--bg2);border:1px solid var(--border);border-radius:var(--r);padding:9px 12px;margin-bottom:6px}
.trn-m.clic{cursor:pointer}
.trn-m.live{border-color:var(--red-border,#ff5c5c66)}
.trn-m-top{display:flex;justify-content:space-between;align-items:center;font-size:11px;color:var(--text3);margin-bottom:5px}
.trn-m-l{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:8px}
.trn-eq{font-size:14px;font-weight:600;overflow-wrap:anywhere}
.trn-eq.d{text-align:right}
.trn-eq.nous{color:var(--green)}
.trn-eq.gagne::after{content:' ✓';color:var(--green)}
.trn-eq.attente{color:var(--text3);font-weight:500;font-style:italic}
.trn-score{font-family:var(--mono);font-size:20px;font-weight:500;white-space:nowrap}
.trn-vs{color:var(--text3)}
.trn-tab-info{font-size:11px;color:var(--text2);text-align:center;margin-top:3px}
.trn-live::before{content:'● '}
.trn-cl{background:var(--bg2);border:1px solid var(--border);border-radius:var(--r);overflow:hidden;margin-bottom:8px}
.trn-cl-l{display:grid;grid-template-columns:24px 1fr repeat(4,26px) 34px 32px;gap:2px;align-items:center;padding:8px 10px;font-size:13px;border-top:1px solid var(--border);text-align:center}
.trn-cl-l .n{text-align:left;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.trn-cl-h{border-top:none;font-size:11px;color:var(--text3);font-weight:600}
.trn-cl-l.q{background:var(--green-bg)}
.trn-cl-l.nous .n{color:var(--green)}
.trn-champion{text-align:center;font-size:18px;font-weight:700;padding:12px;margin-bottom:10px;border-radius:var(--r);background:var(--amber-bg,#ffb02022);color:var(--amber,#ffb020)}
.trn-e{display:flex;align-items:center;gap:8px;background:var(--bg2);border:1px solid var(--border);border-radius:var(--rsm);padding:8px 10px;margin-bottom:6px}
.trn-e-n{flex:1;min-width:0;font-size:14px;font-weight:600}
.trn-e-p{width:auto;min-width:64px}
.trn-ajout{display:flex;gap:6px;margin-top:10px}
.trn-ajout .fi{flex:1;min-width:0}
.trn-nos{display:flex;flex-wrap:wrap;gap:6px;align-items:center;font-size:12px;color:var(--text2);margin-top:8px}
.trn-form{max-width:560px}
.trn-2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.trn-seg{display:flex;gap:6px}
.trn-seg button{flex:1;min-height:40px;border-radius:var(--rsm);border:1px solid var(--border);background:var(--bg3);color:var(--text2);font-family:var(--font);font-size:13px;font-weight:600;cursor:pointer;padding:0 8px}
.trn-seg button.on{background:var(--green-bg);border-color:var(--green-border);color:var(--green)}
.trn-terr{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--text2)}
.trn-terr .fi{width:64px}
.trn-pts{display:flex;gap:8px}
.trn-pts label{flex:1;font-size:12px;color:var(--text2)}
.trn-chk{display:flex;align-items:center;gap:8px;font-size:13px;margin:4px 0 14px}
.trn-btns{display:flex;gap:8px;flex-wrap:wrap}
.trn-sc{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:6px 0 14px}
.trn-sc-eq{background:var(--bg3);border-radius:var(--r);padding:12px 8px;text-align:center}
.trn-sc-nom{font-size:13px;font-weight:600;min-height:34px;overflow-wrap:anywhere}
.trn-sc-ctl{display:flex;align-items:center;justify-content:center;gap:10px;margin-top:8px}
.trn-sc-ctl b{font-family:var(--mono);font-size:30px;font-weight:500;min-width:38px}
.trn-sc-ctl button{width:44px;height:44px;border-radius:50%;border:1px solid var(--border);background:var(--bg2);color:var(--text);font-size:22px;cursor:pointer}
.trn-tab-but{margin-bottom:12px}
.trn-s-foot{flex-wrap:wrap}
@media (max-width:420px){.trn-2{grid-template-columns:1fr}.trn-cl-l{grid-template-columns:20px 1fr repeat(4,22px) 30px 28px;padding:8px 6px;font-size:12px}}
#trn-content{max-width:760px}
/* Tournois : annonce, inscriptions, validation des scores */
.trn-3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px}
.trn-conf{font-size:12px;color:var(--amber,#ffb020);margin-top:6px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.trn-conf .bsec{padding:4px 10px;font-size:12px}
.trn-libre{color:var(--text3);font-style:italic}
.trn-annonce{background:var(--bg2);border:1px solid var(--border);border-radius:var(--r);padding:13px;margin-bottom:12px}
.trn-ouv{font-size:14px;margin-top:0}
.trn-places{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0}
.trn-place{font-size:12px;padding:4px 9px;border-radius:99px;background:var(--green-bg);color:var(--green)}
.trn-place.plein{background:var(--bg3);color:var(--text3)}
.trn-clubs{display:flex;flex-direction:column;gap:6px;max-height:180px;overflow:auto;font-size:13px}
.trn-ins{background:var(--bg2);border:1px solid var(--border);border-radius:var(--r);padding:10px 12px;margin-bottom:7px}
.trn-ins.a-traiter{border-color:var(--amber-border,#ffb02066)}
.trn-ins-h{display:flex;align-items:flex-start;gap:8px}
.trn-ins-a{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.trn-ins-a button{min-height:34px}
.trn-hist{margin-top:10px}
.trn-hist summary{cursor:pointer;font-size:13px;color:var(--text2);margin-bottom:6px}
.trn-infos{white-space:pre-wrap;font-size:13px;color:var(--text2);background:var(--bg3);border-radius:var(--rsm);padding:8px 10px;margin-top:8px}
.trn-msgs{display:flex;flex-direction:column;gap:6px;max-height:45vh;overflow:auto;margin-bottom:10px}
@media (max-width:420px){.trn-3{grid-template-columns:1fr 1fr}}
/* Calendrier : aller loin (sélecteur de date sous le titre + puces des 12 prochains mois) */
.cal-titre-date{position:relative;cursor:pointer;border-radius:var(--rsm);padding:6px 4px}
.cal-titre-date:hover{background:var(--bg3)}
.cal-titre-date input{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer;border:0;padding:0}
.cal-mois{display:flex;gap:6px;overflow-x:auto;margin-bottom:8px;padding-bottom:2px;-webkit-overflow-scrolling:touch}
.cal-mois button{flex-shrink:0;min-height:32px;padding:0 11px;border-radius:99px;border:1px solid var(--border);background:var(--bg2);color:var(--text2);font-family:var(--font);font-size:12px;font-weight:600;cursor:pointer;text-transform:capitalize}
.cal-mois button.on{background:var(--green-bg);border-color:var(--green-border);color:var(--green)}
.trn-ins-h .pill{flex-shrink:0;white-space:nowrap}
.trn-aide-st{color:var(--blue)}
/* Calendrier : tournois (case de l'équipe, inscription en cours, repère du jour organisé) */
.cal-it.trn{background:var(--amber-bg);color:var(--amber);border-color:var(--amber-border);cursor:pointer;font-weight:600}
.cal-it.trn small{display:block;font-weight:500}
.cal-it.trn.att{background:none;border-style:dashed}
.cal-trn-j{font-size:10px;font-weight:700;color:var(--amber);background:var(--amber-bg);border-radius:6px;padding:2px 5px;margin-top:3px;cursor:pointer;white-space:normal;line-height:1.2}
.cal-jour>.cal-trn-j{font-size:12px;padding:5px 8px;margin:4px 0}
/* Stats : buteurs et passeurs */
.bp-cl{background:var(--bg2);border:1px solid var(--border);border-radius:var(--r);overflow:hidden;margin-bottom:6px}
.bp-l{display:grid;grid-template-columns:1fr 70px 70px;align-items:center;padding:8px 12px;font-size:13px;border-top:1px solid var(--border);text-align:center}
.bp-l .n{text-align:left;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bp-h{border-top:none;font-size:11px;color:var(--text3);font-weight:600}
.bp-h span:first-child{text-align:left}
/* Écran de connexion : acceptation des conditions, liens légaux */
.auth-cgu{display:flex;gap:8px;align-items:flex-start;font-size:12px;color:var(--text2);margin:2px 0 14px;line-height:1.4;cursor:pointer}
.auth-cgu input{margin-top:2px;flex-shrink:0}
.auth-cgu a{color:var(--green)}
.auth-legal{text-align:center;font-size:12px;color:var(--text3);margin-top:16px}
.auth-legal a{color:var(--text3)}
.aerr.ok{background:var(--green-bg);border-color:var(--green-border);color:var(--green)}
/* Accueil d'un compte sans rôle : les 3 chemins (club, parent, créer son club) */
#accueil-nouveau{display:none}
body.sans-role #accueil-nouveau{display:block}
body.sans-role #page-home .srow,body.sans-role #page-home .qgrid,body.sans-role #page-home .sh:has(+#home-next),body.sans-role #home-next{display:none}
.an-t{font-size:17px;font-weight:700;margin:4px 0 4px}
.an-s{font-size:13px;color:var(--text2);margin-bottom:12px}
.an-c{background:var(--bg2);border:1px solid var(--border);border-radius:var(--r);padding:13px;margin-bottom:9px}
.an-h{font-size:14px;font-weight:700;margin-bottom:5px}
.an-p{font-size:13px;color:var(--text2);line-height:1.45;margin-bottom:9px}
.an-mail{display:flex;align-items:center;gap:8px;flex-wrap:wrap;background:var(--bg3);border-radius:var(--rsm);padding:8px 10px;margin-bottom:9px;font-size:14px;word-break:break-all}
.an-c .bsec,.an-c .badd{min-height:36px}
.an-q{font-size:12px;color:var(--text3);text-align:center;margin-top:12px}
.an-q a{color:var(--text3)}
/* Demandes d'accès (demandes.js) */
.da-bandeau{display:flex;justify-content:space-between;align-items:center;width:100%;margin:0 0 12px;padding:12px 14px;border-radius:var(--r);border:1px solid var(--amber-border);background:var(--amber-bg);color:var(--amber);font-family:var(--font);font-size:14px;font-weight:700;cursor:pointer;text-align:left}
.da-l{display:flex;align-items:center;gap:8px;padding:8px 0;border-top:1px solid var(--border)}
.da-l:first-of-type{border-top:none}
.da-n{font-size:14px;font-weight:600}
.da-r{font-size:13px;margin-top:4px}
.da-v{background:var(--bg3);border-radius:var(--r);padding:11px 12px;margin-bottom:8px}
/* Téléphone : formulaire de connexion ancré en haut. Centré verticalement, il se
   recentrait quand le clavier se fermait : le bouton bougeait sous le doigt et le premier
   toucher sur « Se connecter » (ou « Créer mon compte », « Réinitialiser ») était perdu. */
@media (max-width:640px){#screen-auth{justify-content:flex-start;padding-top:32px}}
