/* CDP tournaments — shared skin for the hub, the public event page and
   the organiser console. Colours are the same set index.html and
   cdp-session.html already use, so the three feel like one site.

   Phones first. Most people open these courtside, on a phone, one
   handed. Desktop is the organiser's laptop and nothing else. */

:root{
  --accent:#E38035; --accent-ink:#151210;
  --bg:#0E0C0B; --surface:#181513; --surface-2:#221D1A; --line:#332B26;
  --ink:#F2ECE4; --muted:#9C9086;
  --ok:#4FB489; --warn:#E4735A; --live:#4FB489;
  --sans:"Segoe UI",system-ui,-apple-system,sans-serif;
  --mono:ui-monospace,"Cascadia Mono",Consolas,monospace;
}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);
  font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased;
  padding-bottom:env(safe-area-inset-bottom)}
a{color:inherit}
h1,h2,h3{margin:0;font-weight:700;letter-spacing:.01em}
button{font-family:inherit;font-size:inherit;cursor:pointer;border:0}
input,select,textarea{font-family:inherit;font-size:inherit}
.wrap{max-width:1000px;margin:0 auto;padding:0 14px 90px}

/* ---- header ---- */
header{display:flex;align-items:center;gap:10px;padding:14px 0;flex-wrap:wrap}
header h1{color:var(--accent);font-size:20px;text-transform:uppercase;letter-spacing:.05em}
.spacer{flex:1}
.back{color:var(--muted);text-decoration:none;font-size:13px;font-weight:700;
  text-transform:uppercase;letter-spacing:.06em;padding:6px 0}
.back:hover{color:var(--accent)}

.chip{display:inline-flex;align-items:center;gap:6px;padding:5px 11px;border-radius:999px;
  font-size:11.5px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;
  border:1px solid var(--line);color:var(--muted);white-space:nowrap}
.chip .dot{width:7px;height:7px;border-radius:50%;background:var(--muted)}
.chip.on{color:var(--ok);border-color:var(--ok)}
.chip.on .dot{background:var(--ok);animation:pulse 2s infinite}
.chip.bad{color:var(--warn);border-color:var(--warn)}
.chip.bad .dot{background:var(--warn)}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.35}}

/* ---- nav ---- */
nav{display:flex;gap:2px;overflow-x:auto;border-bottom:1px solid var(--line);
  margin-bottom:16px;-webkit-overflow-scrolling:touch;scrollbar-width:none;
  /* the last tab fades out rather than being chopped, so a phone reads
     it as "there is more this way" instead of as a rendering fault */
  -webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 26px),transparent);
  mask-image:linear-gradient(90deg,#000 calc(100% - 26px),transparent)}
nav::-webkit-scrollbar{display:none}
nav button{background:none;color:var(--muted);padding:11px 13px;font-weight:700;font-size:12.5px;
  text-transform:uppercase;letter-spacing:.05em;border-bottom:2px solid transparent;white-space:nowrap}
nav button.sel{color:var(--accent);border-bottom-color:var(--accent)}
nav button:hover{color:var(--ink)}
.tab{display:none}
.tab.active{display:block}

/* ---- cards ---- */
.card{background:var(--surface);border:1px solid var(--line);border-radius:14px;
  padding:16px;margin-bottom:12px}
.card.tight{padding:12px 14px}
a.card{display:block;text-decoration:none;transition:border-color .15s,transform .15s}
a.card:hover,a.card:focus-visible{border-color:var(--accent);transform:translateY(-1px)}
a.card:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
.card h3{font-size:17px;margin-bottom:3px}
.sect{font-size:11.5px;font-weight:700;text-transform:uppercase;letter-spacing:.12em;
  color:var(--muted);margin:22px 0 10px}
.sect:first-child{margin-top:6px}
.muted{color:var(--muted)}
.small{font-size:13px}
.tiny{font-size:11.5px}
.num{font-family:var(--mono);font-variant-numeric:tabular-nums}
.empty{color:var(--muted);text-align:center;padding:34px 14px;
  border:1px dashed var(--line);border-radius:14px}

/* ---- match rows ---- */
.match{display:flex;align-items:center;gap:10px;padding:11px 0;border-bottom:1px solid var(--line)}
.match:last-child{border-bottom:0}
.match .side{flex:1;min-width:0}
.match .side b{display:block;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.match .sc{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:19px;
  font-weight:700;min-width:26px;text-align:center;flex:none}
.match.done .side.lose{color:var(--muted)}
.match.done .side.win b{color:var(--ok)}
.vs{color:var(--muted);font-size:11px;font-weight:700;letter-spacing:.08em;flex:none}
.when{font-family:var(--mono);color:var(--muted);font-size:12.5px;flex:none;min-width:44px;line-height:1.25;text-align:left}
.court{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;
  color:var(--muted);border:1px solid var(--line);border-radius:5px;padding:2px 5px;flex:none}
.court.live{color:var(--live);border-color:var(--live)}

/* ---- tables ---- */
table{width:100%;border-collapse:collapse;font-size:14.5px}
th,td{padding:9px 6px;text-align:left;border-bottom:1px solid var(--line)}
th{font-size:11px;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);font-weight:700}
td.n,th.n{text-align:right;font-family:var(--mono);font-variant-numeric:tabular-nums}
tr.qual td:first-child{box-shadow:inset 3px 0 0 var(--ok)}
td.pos{color:var(--muted);width:22px;font-family:var(--mono)}

/* ---- bracket ---- */
.round{margin-bottom:20px}
.round h3{font-size:12px;text-transform:uppercase;letter-spacing:.1em;color:var(--accent);margin-bottom:8px}
.bm{background:var(--surface);border:1px solid var(--line);border-radius:10px;
  padding:9px 12px;margin-bottom:8px}
.bm .r{display:flex;align-items:center;gap:10px;padding:3px 0}
.bm .r b{flex:1;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bm .r.w b{color:var(--ok)}
.bm .r.l b{color:var(--muted)}
.bm .r .s{font-family:var(--mono);font-weight:700}

/* ---- buttons + forms ---- */
.btn{background:var(--surface-2);border:1px solid var(--line);color:var(--ink);
  border-radius:10px;padding:10px 14px;font-weight:700;font-size:14px}
.btn:hover{border-color:var(--accent)}
.btn.pri{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}
.btn.sm{padding:6px 10px;font-size:12.5px;border-radius:8px}
.btn.bad{color:var(--warn);border-color:var(--warn)}
.btn:disabled{opacity:.4;cursor:not-allowed}
.row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
label.f{display:block;margin-bottom:12px}
label.f span{display:block;font-size:11.5px;text-transform:uppercase;letter-spacing:.07em;
  color:var(--muted);font-weight:700;margin-bottom:5px}
input,select,textarea{width:100%;background:var(--bg);border:1px solid var(--line);
  color:var(--ink);border-radius:9px;padding:10px 11px}
input:focus,select:focus,textarea:focus{outline:0;border-color:var(--accent)}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:0 10px}

/* ---- added 26 Sep 2026: registration, categories, language, shifted times ---- */
.langbtn{background:none;border:1px solid var(--line);color:var(--muted);border-radius:999px;
  padding:5px 11px;font-weight:700;font-size:11.5px;letter-spacing:.06em}
.langbtn:hover{color:var(--ink);border-color:var(--accent)}
.warnbox{background:#2a1a16;border:1px solid var(--warn);border-radius:10px;padding:11px 13px;
  color:#ffd9d0;font-size:13.5px;margin-bottom:12px}
.okbox{background:#16241f;border:1px solid var(--ok);border-radius:10px;padding:11px 13px;
  color:#cdece1;font-size:13.5px;margin-bottom:12px}
.cats{display:flex;gap:6px;overflow-x:auto;margin:0 0 14px;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.cats::-webkit-scrollbar{display:none}
.cats button{background:var(--surface);border:1px solid var(--line);color:var(--muted);border-radius:999px;
  padding:6px 13px;font-weight:700;font-size:12.5px;white-space:nowrap;flex:none}
.cats button.sel{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.regbanner{display:flex;align-items:center;gap:12px;background:linear-gradient(180deg,#2a1d14,#1D1916);
  border:1px solid #5a3a1c;border-radius:14px;padding:12px 14px;margin-bottom:14px}
.regbanner .btn{flex:none;text-decoration:none}
.when .to{opacity:.7}
.when.shift,.when.shift .to{color:var(--accent);opacity:1}
.when.est:not(.shift){opacity:.55}
.catchip{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--accent);
  border:1px solid #5a3a1c;border-radius:5px;padding:1px 5px;margin-right:6px;vertical-align:1px}
.mlab{display:block;font-size:11px;color:var(--muted);margin-bottom:1px;font-weight:400;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.search{position:relative;margin-bottom:12px}
.search input{padding-left:36px;font-size:16px}
.search svg{position:absolute;left:11px;top:50%;transform:translateY(-50%);opacity:.6}
.nextup{border-color:var(--accent)}
.byeline{font-size:12.5px;color:var(--muted);padding:8px 0 2px}

/* two-line match row for phones: when · category · label · court, then the pairs at full width */
.mrow{padding:10px 0;border-bottom:1px solid var(--line)}
.mrow:last-child{border-bottom:0}
.mtop{display:flex;align-items:center;gap:7px;margin-bottom:5px;min-width:0}
.mtop .when{min-width:0;font-size:12px}
.mtop .mtl{flex:1;min-width:0;font-size:11.5px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mtop .catchip{margin-right:0;flex:none}
.mbody{display:flex;align-items:center;gap:10px}
.mbody .side{flex:1;min-width:0;font-weight:600;line-height:1.25;overflow-wrap:anywhere}
.mbody .side.r{text-align:right}
.mbody .sc{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:18px;font-weight:700;min-width:24px;text-align:center;flex:none}
.mrow.done .side.lose{color:var(--muted)}
.mrow.done .side.win{color:var(--ok)}
.mrow.tbd .side{color:var(--muted);font-weight:400}

/* ---- toast ---- */
#toast{position:fixed;left:50%;bottom:22px;transform:translateX(-50%);
  background:var(--surface-2);border:1px solid var(--line);border-radius:10px;
  padding:11px 16px;font-size:14px;opacity:0;pointer-events:none;transition:opacity .2s;z-index:60;
  max-width:calc(100vw - 28px)}
#toast.show{opacity:1}

@media(max-width:480px){
  .wrap{padding:0 11px 90px}
  header h1{font-size:17px}
  .grid2{grid-template-columns:1fr}
  .match .sc{font-size:17px}
  th,td{padding:8px 4px;font-size:13.5px}
  nav button{padding:10px 10px;font-size:12px}
}
@media(max-width:360px){
  .when{display:none}
}
