:root{
  --court:#1f6f4a;        /* зелёный корта */
  --court-dark:#16563a;
  --clay:#cf6a3c;         /* терракота / грунт */
  --chalk:#f6f4ee;        /* фон */
  --line:#e4ded0;         /* разделители */
  --slate:#1b211d;        /* текст */
  --muted:#6d7670;
  --board:#14181a;        /* тёмное табло */
  --board-num:#f3efe6;
  --serve:#e9c33c;        /* индикатор подачи */
  --ok:#1f6f4a;
  --danger:#b23b2e;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  background:var(--chalk);color:var(--slate);
  -webkit-font-smoothing:antialiased;line-height:1.45;
}
.mono{font-family:ui-monospace,"SF Mono",Menlo,Consolas,monospace;font-variant-numeric:tabular-nums}
a{color:var(--court);text-decoration:none}
a:hover{text-decoration:underline}

.wrap{max-width:760px;margin:0 auto;padding:18px 16px 64px}
header.top{
  background:var(--court);color:#fff;padding:14px 16px;
  display:flex;align-items:center;justify-content:space-between;
}
header.top .brand{font-weight:800;letter-spacing:.04em;font-size:18px;text-transform:uppercase}
header.top .brand span{color:var(--serve)}
header.top a{color:#dff0e7;font-size:14px}
header.top nav a{margin-left:14px}

h1{font-size:24px;letter-spacing:-.01em;margin:18px 0 4px}
h2{font-size:17px;margin:26px 0 10px;letter-spacing:.01em}
.sub{color:var(--muted);font-size:14px;margin:0 0 18px}

.card{background:#fff;border:1px solid var(--line);border-radius:14px;padding:16px;margin:12px 0}
.row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.spread{justify-content:space-between}

label{font-size:13px;color:var(--muted);display:block;margin:8px 0 4px}
input,select,button{font-size:15px;font-family:inherit}
input[type=text],input[type=password],select{
  width:100%;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:#fff
}
.btn{
  display:inline-block;border:0;border-radius:10px;padding:11px 16px;font-weight:600;
  background:var(--court);color:#fff;cursor:pointer
}
.btn:hover{background:var(--court-dark);text-decoration:none}
.btn.clay{background:var(--clay)}
.btn.ghost{background:transparent;color:var(--court);border:1px solid var(--line)}
.btn.danger{background:transparent;color:var(--danger);border:1px solid #e7cdc9}
.btn.sm{padding:7px 11px;font-size:13px}
.btn.full{width:100%;text-align:center}

/* Табло */
.board{background:var(--board);border-radius:16px;padding:18px 16px;color:var(--board-num)}
.board .player{
  display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 4px
}
.board .player + .player{border-top:1px solid #29302f}
.board .pname{font-size:22px;font-weight:600;display:flex;align-items:center;gap:9px}
.board .serve-dot{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;visibility:hidden;flex-shrink:0}
.board .serve-dot.on{visibility:visible}
.board .serve-dot svg{width:26px;height:26px;display:block}
.board .sets{display:flex;gap:10px;align-items:center}
.board .setbox{
  min-width:0.9em;text-align:center;font-size:clamp(34px,8vw,54px);font-weight:800;
  margin:0 7px;line-height:1.05;
  font-family:ui-monospace,Menlo,monospace;font-variant-numeric:tabular-nums
}
.board .cur{
  min-width:0.9em;text-align:center;font-size:clamp(34px,8vw,54px);font-weight:800;color:var(--serve);
  margin:0 7px;line-height:1.05;
  font-family:ui-monospace,Menlo,monospace;font-variant-numeric:tabular-nums
}
.board .ptline{text-align:center;color:#aeb6b2;font-size:14px;margin-top:10px;letter-spacing:.06em}
.board.win{outline:2px solid var(--serve)}

.tag{display:inline-block;font-size:12px;padding:3px 9px;border-radius:999px;background:#eef3f0;color:var(--court);font-weight:600}
.tag.live{background:#fdeee6;color:var(--clay)}
.tag.done{background:#eef3f0;color:var(--court)}

table{width:100%;border-collapse:collapse;font-size:14px}
th,td{text-align:left;padding:9px 8px;border-bottom:1px solid var(--line)}
th{font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}
td.num,th.num{text-align:right;font-variant-numeric:tabular-nums;font-family:ui-monospace,Menlo,monospace}
tr td:first-child{font-weight:600}
.place{display:inline-flex;width:24px;height:24px;border-radius:50%;background:#eef3f0;color:var(--court);align-items:center;justify-content:center;font-weight:700;font-size:13px}
.place.p1{background:var(--serve);color:#3a2f00}

.delta-up{color:var(--court);font-weight:600}
.delta-down{color:var(--danger);font-weight:600}

.flash{background:#fdeee6;border:1px solid #f0d3c4;color:#9a4322;padding:10px 14px;border-radius:10px;margin:10px 0;font-size:14px}
.empty{color:var(--muted);font-size:14px;padding:8px 0}
.share{font-size:13px;color:var(--muted);word-break:break-all}
.checklist{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:6px;margin-top:6px}
.checklist label{display:flex;gap:8px;align-items:center;color:var(--slate);font-size:14px;margin:0;padding:8px;border:1px solid var(--line);border-radius:8px}
.checklist input{width:auto}

/* Большие кнопки очков для судьи */
.point-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:14px}
.point-btn{
  padding:26px 12px;border-radius:14px;border:0;cursor:pointer;color:#fff;
  font-size:17px;font-weight:700;line-height:1.2
}
.point-btn small{display:block;font-weight:500;opacity:.85;font-size:13px;margin-top:4px}
.point-btn.a{background:var(--court)}
.point-btn.b{background:var(--clay)}
.point-btn:active{transform:translateY(1px)}
.judge-actions{display:flex;gap:10px;margin-top:12px}
.foot{color:var(--muted);font-size:13px;text-align:center;margin-top:30px}

/* ---- Турнирная сетка (олимпийка) ---- */
.bracket{display:flex;gap:26px;overflow-x:auto;padding:4px 2px 14px;align-items:stretch}
.bk-round{display:flex;flex-direction:column;justify-content:space-around;gap:14px;min-width:190px}
.bk-round-title{font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:700;text-align:center}
.bk-match{border:1px solid var(--line);border-radius:10px;background:#fff}
.bk-side{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:9px 11px;font-size:14px}
.bk-side + .bk-side{border-top:1px solid var(--line)}
.bk-side .nm{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:135px}
.bk-side.win{background:#eef7f1}
.bk-side.win .nm{font-weight:700;color:var(--court)}
.bk-side .sc{font-variant-numeric:tabular-nums;font-family:ui-monospace,Menlo,monospace;color:var(--muted);font-weight:700}
.bk-foot{display:flex;justify-content:space-between;align-items:center;gap:6px;padding:5px 8px}
.bk-foot .lk{font-size:12px}

/* ---- Кросс-таблица (круговая) ---- */
.cross{overflow-x:auto}
.cross table{border-collapse:collapse;font-size:13px;width:auto}
.cross th,.cross td{border:1px solid var(--line);padding:7px 9px;text-align:center;white-space:nowrap}
.cross th{background:#f6f4ee;color:var(--muted);font-size:12px}
.cross .rowhead{text-align:left;font-weight:600;position:sticky;left:0;background:#fff;z-index:1}
.cross td.self{background:#efeee8;color:#bdbdb2}
.cross td.win{background:#eef7f1;color:var(--court);font-weight:700}
.cross td.loss{color:var(--danger)}
.cross td.empty{color:#c9c9c0}
