:root{
  --bg:#0f1b2d; --card:#16263f; --line:#2a3d5a; --txt:#eaf0f8;
  --muted:#9fb2ce; --accent:#e8b23a; --accent2:#3a86e8;
  --ok:#3ecf8e; --err:#ff6b6b;
}
*{box-sizing:border-box; -webkit-tap-highlight-color:transparent;}
body{
  margin:0; font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
  background:radial-gradient(1200px 600px at 50% -10%,#1c3050,#0f1b2d);
  color:var(--txt); min-height:100vh; display:flex; flex-direction:column;
  align-items:center; padding:20px 14px 48px;
}
.logo{font-size:24px; font-weight:800; letter-spacing:.5px; margin:6px 0 2px;}
.logo span{color:var(--accent);}
.sub{color:var(--muted); font-size:13px; margin-bottom:20px;}
.card{
  width:100%; max-width:560px; background:var(--card); border:1px solid var(--line);
  border-radius:18px; padding:20px; box-shadow:0 18px 40px rgba(0,0,0,.35); margin-bottom:16px;
}
.card.narrow{max-width:400px;}
h2{margin:2px 0 14px; font-size:17px;}
.tabs{display:flex; gap:6px; background:#0f1b2d; border:1px solid var(--line);
  border-radius:12px; padding:5px; margin-bottom:18px;}
.tab{flex:1; text-align:center; padding:11px 8px; border-radius:9px; cursor:pointer;
  font-weight:700; font-size:14px; color:var(--muted); border:none; background:none;}
.tab.active{background:var(--accent); color:#1a1200;}
label{display:block; font-size:12px; color:var(--muted); margin:12px 0 5px; font-weight:600;}
input,select{
  width:100%; padding:12px 13px; border-radius:11px; border:1px solid var(--line);
  background:#0f1b2d; color:var(--txt); font-size:16px; outline:none;
}
input:focus,select:focus{border-color:var(--accent2);}
.row{display:flex; gap:10px; flex-wrap:wrap;}
.row>div{flex:1; min-width:120px;}
button.primary{
  width:100%; margin-top:18px; padding:14px; border:none; border-radius:12px;
  background:var(--accent2); color:#fff; font-size:16px; font-weight:800; cursor:pointer;
}
button.primary:active{transform:scale(.99);}
button.primary:disabled{opacity:.55; cursor:default;}
button.gold{background:var(--accent); color:#1a1200;}
.mini{padding:8px 11px; border-radius:9px; border:1px solid var(--line); background:#0f1b2d;
  color:var(--txt); font-size:13px; font-weight:700; cursor:pointer;}
.mini.danger{color:var(--err); border-color:rgba(255,107,107,.4);}
.msg{margin-top:14px; padding:11px 13px; border-radius:10px; font-size:14px; display:none;}
.msg.show{display:block;}
.msg.err{background:rgba(255,107,107,.13); color:var(--err); border:1px solid rgba(255,107,107,.35);}
.msg.ok{background:rgba(62,207,142,.13); color:var(--ok); border:1px solid rgba(62,207,142,.35);}
.msg.warn{background:rgba(232,178,58,.13); color:var(--accent); border:1px solid rgba(232,178,58,.35);}
.hint{font-size:11px; color:var(--muted); margin-top:6px; line-height:1.5;}
.hidden{display:none !important;}
.who{font-size:15px; line-height:1.6;}
.who b{color:var(--accent);}
.badge{display:inline-block; background:#0f1b2d; border:1px solid var(--line);
  border-radius:20px; padding:4px 12px; font-size:12px; color:var(--muted); margin-top:4px;}
.logout{width:100%; margin-top:16px; padding:12px; border:1px solid var(--line);
  border-radius:12px; background:none; color:var(--muted); font-weight:700; cursor:pointer;}
.check{font-size:34px; text-align:center; margin:6px 0 10px;}
.config-warn{max-width:560px; width:100%; margin-bottom:16px; background:rgba(232,178,58,.12);
  border:1px solid rgba(232,178,58,.4); color:var(--accent); border-radius:12px;
  padding:12px 14px; font-size:13px; line-height:1.5;}
.topbar{width:100%; max-width:560px; display:flex; justify-content:space-between;
  align-items:center; margin-bottom:8px;}
.topbar a{color:var(--muted); text-decoration:none; font-size:13px; font-weight:700;}
/* listes joueurs / tournois */
.plist{list-style:none; padding:0; margin:6px 0 0;}
.plist li{display:flex; align-items:center; gap:8px; padding:9px 11px; border:1px solid var(--line);
  border-radius:10px; margin-bottom:7px; background:#0f1b2d; font-size:14px;}
.plist li .grow{flex:1;}
.pnum{display:inline-flex; align-items:center; justify-content:center; min-width:22px; height:22px;
  border-radius:50%; background:var(--accent); color:#1a1200; font-size:12px; font-weight:800; padding:0 5px;}
.pill{display:inline-block; background:var(--accent2); color:#fff; border-radius:20px;
  padding:2px 9px; font-size:11px; font-weight:700;}
.tag{display:inline-block; border:1px solid var(--line); border-radius:20px; padding:2px 10px; font-size:12px; color:var(--muted);}
.tag.run{color:var(--accent2); border-color:var(--accent2);}
.tag.gold{color:var(--accent); border-color:var(--accent);}
/* tables du calendrier */
.tblcard{border:1px solid var(--line); border-radius:12px; padding:12px 13px; margin-bottom:10px; background:#0f1b2d;}
.tblcard h4{margin:0 0 8px; font-size:14px;}
.seatrow{display:flex; gap:8px; flex-wrap:wrap;}
.seat{display:flex; align-items:center; gap:6px; background:#16263f; border:1px solid var(--line);
  border-radius:9px; padding:6px 10px; font-size:13px;}
.seat.teamA{border-color:rgba(58,134,232,.6);}
.seat.teamB{border-color:rgba(232,178,58,.6);}
.byes{font-size:12px; color:var(--muted); margin-top:6px;}
/* matrice de score détaillée (organisateur) */
.scmatrix{width:100%; border-collapse:collapse; font-size:13px; margin:8px 0; min-width:440px;}
.scmatrix th,.scmatrix td{border:1px solid var(--line); padding:6px 9px; text-align:center;}
.scmatrix th{background:#132339; font-weight:800;}
.scmatrix td.ml,.scmatrix th.ml{color:var(--accent); font-weight:800; text-align:left;}
.scmatrix td.sig{color:var(--muted); font-weight:800;}
.scmatrix td.sig.ok{color:var(--ok);}
.scmatrix tr.tot td{border-top:2px solid var(--accent); color:var(--accent); font-weight:800;}
.dotc{font-size:11px; margin-right:3px;}
/* pied de page copyright */
.co-footer{width:100%; max-width:560px; margin:20px auto 0; text-align:center;
  font-size:11px; color:var(--muted); opacity:.75; padding:10px 0;}
/* note RGPD */
.rgpd{font-size:11px; color:var(--muted); line-height:1.5; margin-top:12px;
  border-top:1px solid var(--line); padding-top:12px;}
.rgpd label{display:flex; align-items:flex-start; gap:8px; margin-top:8px; color:var(--txt); font-size:12px;}
.rgpd input{width:auto; margin-top:2px;}
.section-title{font-size:12px; text-transform:uppercase; letter-spacing:.5px; color:var(--muted); margin:18px 0 8px;}
/* partenaires par manche */
.pairrow{display:flex; align-items:center; gap:8px; padding:8px 10px; border:1px solid var(--line);
  border-radius:10px; margin-bottom:6px; background:#0f1b2d; font-size:13px; flex-wrap:wrap;}
.pairrow .mlabel{font-weight:800; color:var(--accent); min-width:30px;}
.pairrow .teamA{color:#7fb0f5;} .pairrow .teamB{color:#f0c65a;}
.pairrow .vs{color:var(--muted); font-size:11px;}
/* boîte de score (distincte des dossards/surnoms) */
.scorebox{display:inline-flex; align-items:center; justify-content:center; min-width:34px; height:28px;
  padding:0 9px; margin-left:8px; border-radius:8px; background:#0b1524; color:#fff;
  font-weight:800; font-size:16px; border:2px solid var(--accent2); vertical-align:middle;}
.scorebox.bx{border-color:var(--accent);}
.scorebox.empty{color:var(--muted); border-color:var(--line); font-weight:600;}
/* couleur FIXE par joueur (basée sur le dossard) — stable tout le tournoi */
.pc1{color:#4e9bf0;} .pc2{color:#e8b23a;} .pc3{color:#4fd08a;} .pc4{color:#d980e0;}
.pc5{color:#ff7a7a;} .pc6{color:#5ad0d0;} .pc7{color:#f0955a;} .pc8{color:#a0b0ff;}
.pc1,.pc2,.pc3,.pc4,.pc5,.pc6,.pc7,.pc8{font-weight:700;}
/* rappel des règles bien visible en haut */
.rulesbanner{width:100%; max-width:520px; background:rgba(232,178,58,.12); border:1px solid rgba(232,178,58,.5);
  color:var(--accent); border-radius:12px; padding:12px 14px; font-weight:800; cursor:pointer;
  display:flex; align-items:center; justify-content:center; gap:8px; margin-bottom:10px; font-size:15px;}
.place{display:inline-flex; align-items:center; justify-content:center; min-width:20px; height:20px;
  border-radius:6px; background:#263b5c; color:var(--muted); font-size:11px; font-weight:700; margin-right:2px;}
.teaminput label{display:flex; align-items:center; gap:6px;}
.dot{width:12px; height:12px; border-radius:3px; display:inline-block;}
.dotA{background:#3a86e8;} .dotB{background:#e8b23a;}
/* carnet de score (overlay) */
.overlay{position:fixed; inset:0; background:rgba(6,12,22,.92); z-index:50; overflow-y:auto;
  padding:18px 14px 40px; display:flex; flex-direction:column; align-items:center;}
.overlay .card{max-width:520px;}
.ovtop{width:100%; max-width:520px; display:flex; justify-content:space-between; align-items:center; margin-bottom:10px;}
.ovtop b{font-size:16px;} .ovclose{background:none; border:1px solid var(--line); color:var(--muted);
  border-radius:10px; padding:8px 12px; font-weight:700; cursor:pointer;}
.teampanel{border:2px solid var(--line); border-radius:14px; padding:14px; margin-bottom:12px;}
.teampanel.tA{border-color:rgba(58,134,232,.6);} .teampanel.tB{border-color:rgba(232,178,58,.6);}
.teampanel.win{box-shadow:0 0 0 2px var(--ok) inset;}
.teampanel h3{margin:0 0 4px; font-size:16px;}
.lines{display:flex; flex-wrap:wrap; gap:6px; margin:10px 0;}
.lmark{width:20px; height:34px; border-radius:5px; background:#22364f; border:1px solid var(--line); position:relative;}
.lmark.barred{background:#12324a;}
.lmark.barred::after{content:""; position:absolute; inset:0; background:linear-gradient(135deg,transparent 44%,var(--err) 44%,var(--err) 56%,transparent 56%);}
.lmark.couille{border-color:var(--accent); background:#3a2d10;}
.remain{font-size:13px; color:var(--muted);}
.remain b{color:var(--txt); font-size:16px;}
.bar-btns{display:flex; gap:8px; margin-top:10px;}
.bar-btns button{flex:1; padding:12px; border-radius:10px; border:1px solid var(--line);
  background:#0f1b2d; color:var(--txt); font-weight:800; font-size:14px; cursor:pointer;}
.bar-btns .big{background:var(--accent2); color:#fff; border:none;}
.bar-btns .cou{background:#3a2d10; color:var(--accent); border-color:var(--accent);}
.stepper{display:flex; justify-content:space-between; align-items:center; margin:4px 0 12px; width:100%; max-width:520px;}
.stepper button{background:none; border:1px solid var(--line); color:var(--muted); border-radius:9px; padding:8px 12px; font-weight:700;}
.mancheres{background:rgba(62,207,142,.1); border:1px solid rgba(62,207,142,.4); border-radius:12px; padding:12px; margin-bottom:10px;}
.rulebox{font-size:14px; line-height:1.7;}
.rulebox b{color:var(--accent);}
/* invitation : lien + QR */
.joinbox{border:1px solid var(--line); border-radius:12px; padding:14px; background:#0f1b2d; margin-bottom:14px; text-align:center;}
.jcode{font-size:15px; margin-bottom:10px;} .jcode b{letter-spacing:3px; color:var(--accent); font-size:19px;}
.jlinkrow{display:flex; gap:6px; margin-bottom:10px;}
.jlinkrow input{flex:1; font-size:12px;}
.qrbox{display:flex; justify-content:center; padding:6px 0;}
.qrbox img,.qrbox canvas{background:#fff; padding:8px; border-radius:8px;}
