body{margin:0;background:#090b0e;color:#f5f7f8;font:14px Arial}*{box-sizing:border-box}header{height:68px;border-bottom:1px solid #293039;display:flex;align-items:center;gap:14px;padding:0 5vw}.grow{flex:1}.logo,em{color:#d8ff4f}button{background:#d8ff4f;border:0;border-radius:7px;padding:10px 13px;font-weight:700;cursor:pointer}main{max-width:1150px;margin:auto;padding:55px 5vw}h1{font-size:55px}#cards{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin-top:30px}.card,.panel{background:#11151a;border:1px solid #293039;border-radius:11px;padding:20px}.card{cursor:pointer}.cols{display:grid;grid-template-columns:320px 1fr;gap:14px}.panel input,dialog input,select{background:#0c0f13;border:1px solid #293039;color:white;padding:10px;border-radius:7px;margin:5px}.person{padding:9px;border-bottom:1px solid #293039}.match{display:grid;grid-template-columns:1fr 60px 15px 60px 1fr auto;gap:7px;align-items:center;margin:8px 0;background:#181d23;padding:9px;border-radius:7px}.match input{width:55px}.right{text-align:right}dialog{background:#11151a;color:#fff;border:1px solid #293039;border-radius:12px;padding:24px}#mgr{margin-top:45px}@media(max-width:700px){#cards,.cols{grid-template-columns:1fr}h1{font-size:40px}.match{grid-template-columns:1fr 45px 10px 45px 1fr}.match button{grid-column:1/-1}}
.scoreboard{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:15px 0}.scoreboard>div{background:#181d23;border:1px solid #293039;border-radius:10px;padding:18px;display:grid;text-align:center;gap:8px}.scoreboard strong{font-size:48px;color:#d8ff4f}.scoreboard span{color:#8e99a5}.score-entry{display:flex;gap:8px;flex-wrap:wrap;margin:14px 0}.score-entry input{width:110px}

.match small{color:#d8ff4f;font-weight:800;margin-right:5px}.champion{border:1px solid #d8ff4f;padding:12px;border-radius:8px;color:#d8ff4f}

#boards{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:8px;margin:12px 0 20px}.board{display:flex;justify-content:space-between;gap:8px;background:#181d23;border:1px solid #293039;border-radius:8px;padding:10px}.board span{font-size:10px;color:#8e99a5}.board.busy{border-color:#d8ff4f}.board.busy span{color:#d8ff4f}.match select{max-width:85px}

.person{display:flex;justify-content:space-between;align-items:center;gap:8px}.person button,.board button{padding:5px 8px;font-size:11px}.board{align-items:center}.board>div{display:grid;gap:4px}.board small{color:#8e99a5}

.tv main{max-width:1500px}.tv h1{font-size:64px;margin-top:15px}.tvgrid{display:grid;grid-template-columns:1.2fr .8fr;gap:16px;margin:25px 0}.tv .panel h2{color:#d8ff4f;letter-spacing:.08em}.call{display:grid;grid-template-columns:130px 1fr 55px 1fr;gap:15px;align-items:center;padding:18px 8px;border-bottom:1px solid #293039;font-size:22px}.call strong{color:#d8ff4f}.call.next{grid-template-columns:45px 1fr 55px 1fr}.checkin-page{min-height:100vh;display:grid;place-items:center}.checkin-card{width:min(500px,94vw);text-align:center}.checkin-card h1{font-size:42px}.checkin-card h2{font-size:30px}.success{padding:16px;border:1px solid #d8ff4f;border-radius:8px;color:#d8ff4f;margin:20px 0}@media(max-width:800px){.tvgrid{grid-template-columns:1fr}.call{font-size:16px;grid-template-columns:85px 1fr 35px 1fr}}

/* Stage 11: responsive tournament manager */
.muted{color:#8e99a5}.topline{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.topline h3{margin-right:auto}.secondary{background:#2a3139;color:#fff}.round-block{margin:18px 0}.round-block h4{margin:0 0 8px;color:#d8ff4f}.match{grid-template-columns:minmax(120px,1fr) auto minmax(120px,1fr);gap:10px;padding:12px}.match-player{font-weight:700}.player-b{text-align:right}.match-score{display:flex;align-items:center;justify-content:center;gap:6px}.match-score input{width:52px;text-align:center}.match-actions,.board-assign{grid-column:1/-1;display:flex;gap:8px;justify-content:flex-end;align-items:center}.board-assign{padding-top:8px;border-top:1px solid #293039}.board-assign select{width:min(220px,100%);max-width:none;margin:0}.board-assign button{min-width:145px}.person-actions{display:flex;gap:6px}.table-wrap{overflow-x:auto;border:1px solid #293039;border-radius:8px}.standings-table{width:100%;border-collapse:collapse;min-width:620px}.standings-table th,.standings-table td{padding:10px;border-bottom:1px solid #293039;text-align:center}.standings-table th:nth-child(2),.standings-table td:nth-child(2){text-align:left}.standings-table thead{background:#181d23;color:#d8ff4f}
@media(max-width:900px){main{padding:32px 4vw}.cols{grid-template-columns:1fr}#cards{grid-template-columns:1fr 1fr}h1{font-size:44px}.panel{padding:15px}}
@media(max-width:600px){header{height:auto;min-height:64px;padding:10px 4vw;flex-wrap:wrap}.logo{width:100%}.grow{display:none}header #who{margin-right:auto}header button{padding:9px 10px}main{padding:24px 12px}h1{font-size:34px;margin-top:10px}#cards{grid-template-columns:1fr}.panel{padding:12px}.topline{align-items:stretch}.topline h3{width:100%;margin-bottom:4px}.topline button{flex:1}.person{align-items:flex-start;flex-direction:column}.person-actions{width:100%}.person-actions button{flex:1}.match{grid-template-columns:1fr auto 1fr}.match-player{font-size:13px}.match-score input{width:42px;padding:8px 4px}.match-actions{display:grid;grid-template-columns:1fr 1fr}.match-actions button{width:100%}.board-assign{display:grid;grid-template-columns:1fr}.board-assign select,.board-assign button{width:100%;min-width:0;margin:0}.scoreboard{grid-template-columns:1fr}.scoreboard strong{font-size:40px}dialog{width:min(94vw,520px);padding:16px}dialog input,dialog select{width:100%;margin:5px 0}}

/* Stage 12: scorer keypad */
.scorer-dialog{width:min(720px,96vw);max-height:94vh;overflow:auto}.scorer-entry{display:grid;gap:10px}.score-input-row{display:grid;grid-template-columns:1fr 150px;gap:10px}.score-input-row #visit{width:100%;margin:0;font-size:34px;font-weight:800;text-align:center;color:#d8ff4f}.score-input-row #darts{width:100%;margin:0}.quick-scores{display:grid;grid-template-columns:repeat(5,1fr);gap:7px}.quick-scores button{background:#2a3139;color:#fff;padding:11px 5px}.score-keypad{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.score-keypad button{font-size:22px;min-height:54px}.score-submit{width:100%;font-size:18px;min-height:52px}.score-undo,.score-close{width:100%}.score-close{margin-top:12px}.scorer-dialog #visitHistory{max-height:190px;overflow:auto;margin-top:10px}
@media(max-width:600px){.scorer-dialog{width:100vw;max-width:none;height:100dvh;max-height:100dvh;margin:0;border-radius:0;padding:12px}.scorer-dialog h2{margin:4px 0 8px}.scorer-dialog .scoreboard{grid-template-columns:1fr 1fr;gap:7px;margin:8px 0}.scorer-dialog .scoreboard>div{padding:9px}.scorer-dialog .scoreboard strong{font-size:34px}.score-input-row{grid-template-columns:1fr 120px}.score-input-row #visit,.score-input-row #darts{width:100%;margin:0}.quick-scores{grid-template-columns:repeat(5,1fr);gap:5px}.quick-scores button{padding:9px 2px;font-size:12px}.score-keypad{gap:6px}.score-keypad button{min-height:48px}.scorer-dialog #visitHistory{max-height:110px}}

/* Stage 13: tournament deletion */
.manager-heading{display:flex;align-items:center;gap:12px;margin-bottom:12px}.manager-heading h2{margin-right:auto}.danger{background:#8f2530;color:#fff;border:1px solid #c44a56}.danger:hover{filter:brightness(1.12)}@media(max-width:600px){.manager-heading{align-items:stretch;flex-direction:column}.manager-heading h2{margin:0}.manager-heading .danger{width:100%}}

.field-label{display:block;margin:10px 0 6px;font-size:13px;color:#aeb7c2;font-weight:700}

/* Stage 18: manual Round Robin group editor */
#groupEditor{margin:18px 0;padding-top:12px;border-top:1px solid #293039}.group-columns{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:10px;margin:10px 0 14px}.group-drop{min-height:130px;background:#0c0f13;border:1px dashed #46515d;border-radius:10px;padding:10px;transition:border-color .15s,background .15s}.group-drop h4{margin:0 0 8px;color:#d8ff4f;display:flex;justify-content:space-between}.group-drop h4 small{color:#8e99a5}.group-drop.drag-over{border-color:#d8ff4f;background:#171d18}.group-list{display:grid;gap:7px}.group-player{background:#181d23;border:1px solid #293039;border-radius:8px;padding:9px;display:grid;grid-template-columns:auto 1fr;gap:7px;align-items:center;cursor:grab}.group-player.dragging{opacity:.45}.drag-handle{color:#8e99a5;font-size:18px}.group-player label{grid-column:1/-1;display:flex;align-items:center;gap:6px;color:#8e99a5;font-size:11px}.group-player select{min-width:0;flex:1;margin:0;padding:6px;font-size:12px}@media(max-width:600px){.group-columns{grid-template-columns:1fr}.group-player{cursor:default}}
.tv-live-match{background:#181d23;border:1px solid #293039;border-radius:10px;margin:12px 0;overflow:hidden}.tv-live-head{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 14px;border-bottom:1px solid #293039;color:#8e99a5;font-size:16px}.tv-live-head strong,.tv-live-head b{color:#d8ff4f}.tv-player{display:grid;grid-template-columns:minmax(0,1fr) 110px 120px;gap:14px;align-items:center;padding:14px;border-bottom:1px solid #293039}.tv-player:last-child{border-bottom:0}.tv-player.turn{box-shadow:inset 4px 0 0 #d8ff4f}.tv-name{font-size:24px;font-weight:700;overflow:hidden;text-overflow:ellipsis}.tv-remaining{font-size:38px;text-align:center;color:#d8ff4f}.tv-avg{text-align:right;font-size:18px;color:#c4ccd3}@media(max-width:800px){.tv-player{grid-template-columns:minmax(0,1fr) 75px 90px;gap:8px;padding:10px}.tv-name{font-size:17px}.tv-remaining{font-size:28px}.tv-avg{font-size:14px}.tv-live-head{font-size:13px}}
.live-public{border-left:4px solid var(--accent,#e11d48)}
.live-public small{display:block;opacity:.8;font-size:.78em;margin-top:.15rem}
.live-public .turn{font-weight:800}

.qr-dialog{width:min(430px,94vw);text-align:center}.qr-code{width:264px;min-height:264px;margin:14px auto;padding:12px;background:#fff;border-radius:12px;display:flex;align-items:center;justify-content:center}.qr-code canvas,.qr-code img{max-width:240px;width:100%;height:auto}.qr-link{width:100%!important;margin:8px 0!important;font-size:12px}.qr-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:10px}.qr-actions #qrClose{grid-column:1/-1}@media(max-width:500px){.qr-code{width:min(264px,80vw);min-height:0}.qr-actions{grid-template-columns:1fr}.qr-actions #qrClose{grid-column:auto}}

/* Stage 28: keep referee actions inside each responsive board card. */
.cols > .panel{min-width:0}
#boards{grid-template-columns:repeat(auto-fill,minmax(min(100%,150px),1fr))}
#boards > .board{
  display:grid;
  grid-template-columns:minmax(0,1fr);
  grid-template-rows:auto 1fr auto;
  align-items:start;
  min-width:0;
  gap:8px;
}
#boards > .board > div,
#boards > .board > small{min-width:0;overflow-wrap:anywhere}
#boards > .board > button{
  width:100%;
  min-width:0;
  min-height:44px;
  align-self:end;
  white-space:normal;
  overflow-wrap:anywhere;
}

/* Stage 31: read-only live match view from the TV screen. */
.tv #overview[hidden],.tv #matchView[hidden]{display:none}
.tv .tvgrid{grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr)}
.tv .panel,.tv .tvgrid>*{min-width:0}
.tv h1,.tv h2,.tv h3{overflow-wrap:anywhere}
.tv-match-link{display:block;color:inherit;text-decoration:none}
.tv-match-link:hover,.tv-match-link:focus-visible{outline:2px solid #d8ff4f;outline-offset:2px}
.tv-open{display:block;color:#d8ff4f;font-weight:700;padding:10px 0}
.tv-live-match>.tv-open{padding:10px 14px}
.tv-summary{padding:14px;background:#181d23;border:1px solid #293039;border-radius:10px;margin:10px 0;overflow-wrap:anywhere}
.tv-summary>span,.tv-summary>strong{display:block}
.tv-summary>strong{font-size:20px;margin:10px 0}
.tv-versus{color:#8e99a5;font-size:14px}
.tv-all,.tv-history{margin-top:18px}
.tv-match-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));gap:12px}
.tv-match-list .tv-summary{margin:0}
.tv-back{display:inline-block;margin:0 0 18px;color:#d8ff4f;padding:12px 0;font-weight:700}
.tv-detail h2{font-size:30px;letter-spacing:normal!important}
.tv-leg-score{font-size:22px;text-align:center}
.tv-leg-score strong{display:block;color:#d8ff4f;font-size:64px;margin:8px 0}
.tv-turn{text-align:center;font-size:20px;overflow-wrap:anywhere}
.tv-watch-players{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.tv-watch-player{display:flex;flex-direction:column;gap:10px;min-width:0;text-align:center;background:#181d23;padding:20px;border:1px solid #293039;border-radius:10px;overflow-wrap:anywhere}
.tv-watch-player.turn{border-color:#d8ff4f;box-shadow:inset 0 4px #d8ff4f}
.tv-watch-player h3{margin:0 0 8px;font-size:24px}
.tv-watch-score{font-size:64px;color:#d8ff4f}
.tv-visits{list-style:none;margin:0;padding:0}
.tv-visits li{display:grid;grid-template-columns:45px minmax(0,1fr) auto;gap:12px;padding:14px 0;border-bottom:1px solid #293039;align-items:start}
.tv-visits li>div{display:grid;gap:6px;overflow-wrap:anywhere}
.tv-visits time{color:#8e99a5;font-size:12px}
.tv-bust{color:#ffb4b4}
.tv-checkouts{padding-left:22px;overflow-wrap:anywhere}
.tv-checkouts li{padding:8px 0}
.tv #boards>.board{grid-template-rows:auto auto auto;overflow-wrap:anywhere}
.tv #connection{color:#aeb7c2;overflow-wrap:anywhere}
@media(max-width:800px){.tv .tvgrid{grid-template-columns:minmax(0,1fr)}.tv h1{font-size:36px}.tv .tv-name{white-space:normal;overflow-wrap:anywhere}.tv .tv-live-head{flex-wrap:wrap}.tv .tv-player{grid-template-columns:minmax(0,1fr) 65px 82px}}
@media(max-width:500px){.tv-detail h2{font-size:22px}.tv-watch-players{gap:8px}.tv-watch-player{padding:12px 8px}.tv-watch-player h3{font-size:18px}.tv-watch-score{font-size:42px}.tv-watch-player>span{font-size:12px}.tv-visits li{grid-template-columns:30px minmax(0,1fr);gap:8px}.tv-visits time{grid-column:2}.tv .tv-player{grid-template-columns:minmax(0,1fr) 52px 68px}.tv .tv-avg{font-size:12px}.tv .tv-remaining{font-size:24px}.tv .tv-name{font-size:15px}}

/* Stage 34: non-blocking 180 celebration. */
.arena-180{position:fixed;inset:0;z-index:9999;display:grid;place-items:center;pointer-events:none;overflow:hidden;padding:16px;animation:arena-180-lifetime 3.6s ease both}
.arena-180-card{position:relative;isolation:isolate;display:grid;gap:8px;justify-items:center;text-align:center;width:min(620px,100%);padding:28px 22px;border:2px solid #d8ff4f;border-radius:24px;background:radial-gradient(ellipse at top,#333f12 0%,#11170ff5 60%);box-shadow:0 0 70px #d8ff4f44,0 24px 80px #000b;animation:arena-180-enter .5s cubic-bezier(.16,1,.3,1) both;color:#fff}
.arena-180-label{font-size:clamp(11px,2.5vw,16px);letter-spacing:.2em;font-weight:700;color:#d8ff4f}
.arena-180-score{font-size:clamp(80px,19vw,160px);line-height:1.05;letter-spacing:-.06em;font-weight:900;color:#d8ff4f;text-shadow:0 4px 0 #607b12,0 0 40px #d8ff4f55;animation:arena-180-score .65s cubic-bezier(.2,.8,.25,1) both}
.arena-180-player{font-size:clamp(20px,4vw,32px);max-width:100%;overflow-wrap:anywhere}
.arena-180-board{font-size:16px;color:#c7d0b5;overflow-wrap:anywhere;max-width:100%}
.arena-180-particles{position:absolute;left:50%;top:50%;width:0;height:0}
.arena-180-particles i{position:absolute;width:9px;height:18px;border-radius:3px;background:#d8ff4f;animation:arena-180-particle 1.2s ease-out var(--delay) both}
.arena-180-particles i:nth-child(3n){background:#fff}
.arena-180-particles i:nth-child(3n + 1){background:#78dfaa}
@keyframes arena-180-enter{from{transform:translateY(24px) scale(.8);opacity:0}to{transform:translateY(0) scale(1);opacity:1}}
@keyframes arena-180-score{from{transform:scale(.6);opacity:0}70%{transform:scale(1.06);opacity:1}to{transform:scale(1);opacity:1}}
@keyframes arena-180-particle{from{transform:translate(0,0) rotate(0);opacity:1}to{transform:translate(var(--x),var(--y)) rotate(210deg);opacity:0}}
@keyframes arena-180-lifetime{0%,88%{opacity:1}100%{opacity:0}}
@media(prefers-reduced-motion:reduce){.arena-180,.arena-180-card,.arena-180-score{animation:none}.arena-180-particles{display:none}}
@media(max-width:500px){.arena-180-card{padding:22px 14px;border-radius:18px;gap:6px}.arena-180-board{font-size:13px}}

/* Stage 35: reusable player directory and statistics. */
.profile-link{color:#d8ff4f;display:inline-block;padding:10px 0;font-weight:700}
.profile-picker{display:grid;gap:8px;margin:12px 0 18px;padding-bottom:16px;border-bottom:1px solid #293039}
.profile-picker input,.profile-picker select,.profile-input{width:100%;min-width:0;margin:0!important;background:#0c0f13;color:#fff;border:1px solid #293039;border-radius:7px;padding:10px}
.profile-picker label{font-weight:700}.profile-picker button{min-height:42px}
.profile-note{font-size:12px;color:#aeb7c2;margin:0;overflow-wrap:anywhere}
#pn,#playerLabel{max-width:100%}.person-actions{flex-wrap:wrap}.person>span{overflow-wrap:anywhere;min-width:0}
.profiles-main h1{overflow-wrap:anywhere}.profiles-main>.panel,.profile-history{margin-top:20px}
.profile-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,155px),1fr));gap:12px;margin:24px 0}
.profile-stat{background:#11151a;border:1px solid #293039;border-radius:12px;padding:18px;display:grid;gap:12px}
.profile-stat span{color:#aeb7c2}.profile-stat strong{font-size:32px;color:#d8ff4f}
.profile-directory{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));gap:12px;margin:20px 0}
.profile-tile{display:grid;gap:8px;padding:18px;border:1px solid #293039;border-radius:12px;background:#11151a;color:inherit;text-decoration:none;overflow-wrap:anywhere}
.profile-tile strong{font-size:20px}.profile-tile small{color:#d8ff4f}.profile-tile span{color:#aeb7c2}
.profile-tile:hover,.profile-tile:focus-visible{border-color:#d8ff4f}
.profile-form{display:grid;gap:14px}.profile-form label{display:grid;gap:6px}.profile-form select{width:100%;min-width:0;margin:0}
.profile-history-row{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 0;border-bottom:1px solid #293039;color:inherit;text-decoration:none;overflow-wrap:anywhere}
.profile-history-row>div{min-width:0}.profile-history-row small{display:block;color:#aeb7c2;margin-top:6px}.profile-history-row>span{color:#d8ff4f}
@media(max-width:600px){.profile-history-row{align-items:flex-start;flex-direction:column;gap:8px}.profiles-main h1{font-size:32px}.profile-stat{padding:14px}.person-actions .profile-link{width:100%}}

/* Stage 36: doubles teams and separate personal statistics. */
#teamsEditor{margin-top:20px;padding-top:12px;border-top:1px solid #293039}
#teamForm input,#teamForm select{width:100%;min-width:0;margin:0}
.team-card{display:grid;gap:10px;padding:12px;margin:10px 0;background:#181d23;border:1px solid #293039;border-radius:10px;overflow-wrap:anywhere}
.team-card span,.team-members{color:#aeb7c2;font-size:12px;line-height:1.5}
.team-members{display:block;white-space:normal!important;overflow-wrap:anywhere;font-weight:400;letter-spacing:normal}
.profile-modes{display:flex;gap:10px;margin:16px 0}
.profile-modes button[aria-pressed="false"]{background:#2a3139;color:white}
.profile-modes button[aria-pressed="true"]{outline:2px solid #d8ff4f;outline-offset:3px}
.scoreboard b{overflow-wrap:anywhere}.tv-watch-player .team-members{font-size:13px}

[hidden]{display:none!important}
.score-input-row{grid-template-columns:1fr}.cols>.panel{min-width:0}.match-player{overflow-wrap:anywhere}header{height:auto;min-height:68px;flex-wrap:wrap;padding-top:10px;padding-bottom:10px}@media(max-width:1000px){.cols{grid-template-columns:1fr}}
.leg-choice,#settingsDlg{width:min(480px,calc(100vw - 24px));max-height:90vh;overflow:auto}.leg-choice-actions{display:grid;gap:12px}.leg-choice-actions button{min-height:52px;white-space:normal;overflow-wrap:anywhere}.leg-choice::backdrop{background:#000a}#settingsDlg input{max-width:100%}#settingsDlg p{line-height:1.5}.manager-heading{flex-wrap:wrap}#roundNote{color:#d8ff4f}

a.logo{text-decoration:none;font-weight:800}.public-actions,.view-tabs{display:flex;flex-wrap:wrap;gap:10px;margin:12px 0 20px}.public-actions button{flex:1 1 130px;min-height:44px}.view-tabs button{flex:1 1 140px;min-height:44px}.view-tabs button[aria-pressed="false"]{background:#293039;color:white}.round-block{padding:12px;border:1px solid #39414b;border-radius:10px;margin:14px 0}.mode-badge{display:inline-block;background:#d8ff4f;color:#111;padding:5px 8px;border-radius:6px;font-size:12px;font-weight:800}.scorer-notice{position:fixed;inset:18px 12px auto;margin:0 auto;width:fit-content;max-width:calc(100vw - 24px);background:#d8ff4f;color:#101310;font-size:24px;font-weight:800;border:2px solid white;border-radius:12px;padding:20px;pointer-events:none;animation:notice-pop .35s ease-out}#checkoutDarts{max-width:calc(100vw - 24px);width:440px}#checkoutDarts .checkout-options{display:flex;gap:10px;margin:20px 0;flex-wrap:wrap}.checkout-options button{flex:1;min-height:48px}@keyframes notice-pop{from{transform:scale(.85)}to{transform:scale(1)}}@media(prefers-reduced-motion:reduce){.scorer-notice{animation:none}}

/* Stage 39: use the available screen width, while keeping mobile gutters. */
main,.tv main{width:100%;max-width:none;padding:28px clamp(12px,2vw,36px)}
header{padding-left:clamp(12px,2vw,36px);padding-right:clamp(12px,2vw,36px)}
#cards{grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));gap:16px;margin-top:18px}
.card{min-width:0;overflow-wrap:anywhere}.tournament-tabs{max-width:640px}
@media(min-width:1001px){.cols{grid-template-columns:minmax(260px,320px) minmax(0,1fr);gap:20px}}
@media(max-width:600px){main,.tv main{padding-top:20px;padding-bottom:24px}.tv h1{font-size:34px;overflow-wrap:anywhere}}

.admin-dialog{width:min(620px,calc(100vw - 24px));max-height:90vh;overflow:auto}.admin-row{display:flex;align-items:center;justify-content:space-between;gap:14px;border-bottom:1px solid #39414b;padding:14px 0;overflow-wrap:anywhere}.admin-row>div{min-width:0}.admin-row small{display:block;color:#aeb7c2;margin-top:6px}.admin-dialog label{display:block;margin-top:14px}.admin-dialog input{display:block;width:100%;margin:8px 0}.admin-actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:20px}.admin-message{color:#d8ff4f}.admin-dialog button{min-height:44px}@media(max-width:600px){.admin-row{flex-direction:column;align-items:stretch}.admin-actions button{flex:1}}

.category-badge{display:inline-block;border:1px solid #8e99a5;border-radius:6px;padding:4px 7px;margin:3px 0;font-size:12px}.match-window-main{max-width:1200px;margin:auto}.match-window-main #windowVisit{width:100%;font-size:32px;text-align:center;padding:12px;background:#0c0f13;color:#fff;border:1px solid #39414b;border-radius:8px}.match-window-main .profile-form input{max-width:100%;padding:12px;margin:0}.match-window-main #windowHistory{max-height:260px;overflow:auto;margin-top:20px}#windowStats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.match-stats-list{display:grid;grid-template-columns:1fr auto;gap:12px}.match-stats-list dd{margin:0;font-weight:bold;color:#d8ff4f}#newFriendly{margin-top:24px}[data-open-match],[data-public-match]{cursor:pointer}[data-open-match]:focus-visible,[data-public-match]:focus-visible{outline:2px solid #d8ff4f}@media(max-width:600px){#windowStats{grid-template-columns:1fr}.match-window-main .scoreboard{grid-template-columns:repeat(2,minmax(0,1fr))}.match-window-main .scoreboard>div{min-width:0;overflow-wrap:anywhere;padding:12px}}

/* Stage 43: compact tournament navigation and roster */
.create-auth-actions{display:flex;align-items:center;gap:10px;max-width:100%}.create-auth-actions button{white-space:nowrap}.tournament-players{margin:16px 0;border:1px solid #293039;border-radius:8px}.tournament-players summary{padding:12px;cursor:pointer;font-weight:700;overflow-wrap:anywhere}.tournament-players summary:focus-visible{outline:2px solid #d8ff4f;outline-offset:2px}.tournament-players[open] summary{border-bottom:1px solid #293039}.tournament-players #players{max-height:360px;overflow-y:auto}

/* Stage 44: visible friendly action and dismissible creation dialog */
header .friendly-action{background:#68e5ff;color:#07151b;padding:12px 16px;border:2px solid #a5f1ff;border-radius:9px;text-decoration:none;box-shadow:0 0 18px #68e5ff26;text-align:center}header .friendly-action:hover{background:#a5f1ff}header .friendly-action:focus-visible{outline:3px solid #fff;outline-offset:3px}.new-tournament-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;position:sticky;top:-24px;background:#11151a;padding:8px 0;z-index:1}.new-tournament-heading h2{margin:0}.new-tournament-heading button{flex-shrink:0}.new-tournament-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:16px}#nd{max-height:90dvh;overflow-y:auto}@media(max-width:600px){.new-tournament-heading{top:-16px;gap:8px}.new-tournament-heading h2{font-size:21px}}

.cricket-table{width:100%;table-layout:fixed;border-collapse:collapse;text-align:center}.cricket-table th,.cricket-table td{border-bottom:1px solid #39414a;padding:9px;overflow-wrap:anywhere}.cricket-table td{font-size:26px;color:#d8ff4f}.cricket-keys>div{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:8px 0}.cricket-actions,#cricketChoices{display:flex;flex-wrap:wrap;gap:10px;margin:16px 0}.cricket-notice{font-size:20px;font-weight:bold;color:#d8ff4f}#cricketGame>.panel{margin-bottom:16px}#cricketKeys button:disabled,#cricketMiss:disabled{opacity:.4;cursor:default}

/* Stage 46: Cricket active player stays visible while entering darts. */
#cricketTurn{position:sticky;top:8px;z-index:5;padding:14px 18px;border:2px solid #39414a;border-radius:12px;background:#11151a;box-shadow:0 6px 20px #0008;overflow-wrap:anywhere}#cricketTurn.cricket-turn-active{background:#d8ff4f;border-color:#edffa5;color:#101600}.cricket-turn-label,.cricket-turn-name,.cricket-turn-meta{display:block}.cricket-turn-label{font-size:13px;letter-spacing:1px}.cricket-turn-name{font-size:clamp(24px,4vw,36px);line-height:1.15;margin:4px 0}.cricket-turn-meta{font-size:14px}.cricket-table .cricket-active-player{background:#d8ff4f18;border-left:2px solid #d8ff4f;border-right:2px solid #d8ff4f}.cricket-table thead tr:first-child .cricket-active-player{border-top:2px solid #d8ff4f;color:#d8ff4f}.cricket-table tbody tr:last-child .cricket-active-player{border-bottom:2px solid #d8ff4f}.cricket-player-badge{display:block;font-size:10px;letter-spacing:.4px;margin-top:7px;padding:5px 3px;border-radius:4px;background:#d8ff4f;color:#101600}@media(max-width:600px){#cricketTurn{padding:10px 12px;top:4px}.cricket-turn-name{font-size:24px}.cricket-player-badge{font-size:9px;letter-spacing:0}}

.knockout-panel{padding:14px;margin:16px 0;border:1px solid #68e5ff;border-radius:10px;background:#68e5ff0a}#backToTournaments{margin-bottom:16px}#mgr{margin-top:20px}#drawKnockout:disabled{opacity:.5;cursor:default}#tournamentList[hidden]{display:none}

/* Stage 48: active throwing side in every scorer */
.scorer-turn-board>div{border:2px solid #39414a;position:relative}.scorer-turn-board>div.scorer-player-active{background:#d8ff4f1c;border:2px solid #d8ff4f;box-shadow:0 0 0 2px #d8ff4f22,0 0 24px #d8ff4f16}.scorer-turn-board .scorer-turn-badge{display:block;background:#d8ff4f;color:#101600;border-radius:5px;padding:6px 8px;font-size:12px;font-weight:800;margin-bottom:10px}.scorer-turn-banner{position:sticky;top:6px;z-index:5;background:#11151a;border:2px solid #39414a;border-radius:10px;padding:12px 16px;overflow-wrap:anywhere;box-shadow:0 6px 18px #0008}.scorer-turn-banner.scorer-turn-live{background:#d8ff4f;border-color:#edffa5;color:#101600}.scorer-turn-banner strong{display:block;font-size:clamp(24px,4vw,34px);line-height:1.15;margin-top:4px}.scorer-turn-label{display:block;font-size:12px;font-weight:800;letter-spacing:.8px}@media(max-width:600px){.scorer-turn-board .scorer-turn-badge{font-size:10px;padding:6px 3px}.scorer-turn-banner{padding:10px 12px;top:4px}.scorer-turn-banner strong{font-size:24px}}

/* Stage 49: group first, then rounds */
.match-group-section{border:1px solid #46525d;border-radius:12px;margin:20px 0;overflow:hidden;background:#0d1116}.match-group-heading{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:16px 18px;border-left:5px solid #68e5ff;background:#68e5ff14}.match-group-heading h3{margin:0;color:#68e5ff;font-size:22px}.match-group-heading span{color:#c5d0d8;font-size:12px;white-space:nowrap}.match-group-rounds{padding:0 14px 8px}.match-group-rounds .round-block{border:0;border-top:1px solid #293039;border-radius:0;margin:0;padding:14px 0}.match-group-rounds .round-block:first-child{border-top:0}.match-group-rounds h4{margin:0 0 12px;color:#e6ebef;font-size:15px}.match-group-section[data-match-section="knockout"] .match-group-heading{border-left-color:#d8ff4f;background:#d8ff4f12}.match-group-section[data-match-section="knockout"] h3{color:#d8ff4f}@media(max-width:600px){.match-group-heading{padding:12px;flex-wrap:wrap}.match-group-heading h3{font-size:20px}.match-group-rounds{padding:0 8px 6px}}

.playoff-protection{display:flex;align-items:center;gap:10px;margin:14px 0}.playoff-protection input[type="checkbox"]{width:20px;min-width:20px;height:20px;margin:0;accent-color:#d8ff4f}

/* Stage 52: three-section start page */
.hub-page{background:radial-gradient(ellipse at 20% 0%,#15313d 0,transparent 55%),#090b0e;min-height:100vh}.hub-main{max-width:1440px;padding-top:clamp(40px,8vh,100px)}.hub-eyebrow{color:#d8ff4f;font-weight:700;letter-spacing:2px;text-transform:uppercase}.hub-main h1{font-size:clamp(30px,5vw,64px);line-height:1.1;margin:14px 0;overflow-wrap:anywhere}.hub-intro{font-size:18px;color:#bdc7ce;line-height:1.6;max-width:720px}.hub-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px;margin-top:44px}.hub-grid-two{grid-template-columns:repeat(2,minmax(0,1fr))}.hub-tile{--accent:#68e5ff;display:flex;flex-direction:column;min-height:330px;border:1px solid #394652;border-top:4px solid var(--accent);border-radius:18px;padding:30px;background:#111820;color:#fff;text-decoration:none;transition:transform .15s,border-color .15s}.hub-tournaments{--accent:#d8ff4f}.hub-league{--accent:#c8a6ff}.hub-tile:hover{transform:translateY(-4px);border-color:var(--accent)}.hub-tile:focus-visible{outline:3px solid #fff;outline-offset:5px}.hub-icon{font-size:48px;color:var(--accent,#c8a6ff);line-height:1}.hub-tile h2{font-size:clamp(20px,2vw,28px);line-height:1.2;margin:28px 0 12px;overflow-wrap:anywhere}.hub-tile p{color:#bdc7ce;line-height:1.6;margin:0 0 30px}.hub-enter{display:flex;justify-content:space-between;margin-top:auto;font-weight:bold;color:var(--accent)}.hub-enter span{font-size:25px}.hub-back{color:#bdc7ce;text-decoration:none;font-weight:bold;margin-left:12px}.hub-back:hover{color:#d8ff4f}.hub-note{color:#a9b7c2;line-height:1.6;margin-top:28px}.hub-empty{background:#111820;border:1px solid #394652;border-radius:18px;padding:36px;max-width:760px;margin-top:32px}.hub-empty p{color:#bdc7ce;line-height:1.7}@media(max-width:850px){.hub-grid{grid-template-columns:1fr}.hub-tile{min-height:230px;padding:24px}.hub-tile h2{margin-top:18px}.hub-main{padding-top:32px}.hub-grid{margin-top:28px;gap:16px}}@media(prefers-reduced-motion:reduce){.hub-tile{transition:none}.hub-tile:hover{transform:none}}

/* Stage 53: compact scorer; history is available in Statistics. */
.scorer-window.scorer-open>header{min-height:32px;height:auto;padding:6px 12px;gap:10px;flex-wrap:nowrap;font-size:12px}.scorer-window.scorer-open>header .logo{width:auto;white-space:nowrap}.scorer-window.scorer-open>header .hub-back{margin:0}.scorer-window.scorer-open>header .profile-link{padding:0}.scorer-window.scorer-open main{padding:8px 12px;max-width:1200px}.scorer-window.scorer-open #matchHeading{font-size:18px;margin:0 0 6px;line-height:1.2}.friendly-window.scorer-open #matchHeading{display:none}.scorer-window.scorer-view #matchMeta{display:none}.scorer-window #matchMessage:empty{display:none}.scorer-window.scorer-open #matchMessage{margin:3px 0;font-size:12px}.scorer-window.scorer-open .view-tabs{margin:0 0 6px;gap:6px}.scorer-window.scorer-open .view-tabs button{min-height:32px;padding:6px 10px}.scorer-window.scorer-open #windowScorer{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-rows:auto auto 1fr;gap:8px 16px;padding:12px}.scorer-window #windowScorer[hidden]{display:none}.scorer-window.scorer-open #windowScores{grid-column:1;grid-row:1}.scorer-window.scorer-open #windowTurn{grid-column:1;grid-row:2;position:static;margin:0;padding:10px}.scorer-window.scorer-open #windowRounds{grid-column:1;grid-row:3;margin:0;font-size:12px}.scorer-window.scorer-open #windowDecide{grid-column:1;grid-row:4}.scorer-window.scorer-open #windowControls{grid-column:2;grid-row:1 / span 4}.scorer-window.scorer-open .scoreboard{margin:0;gap:8px}.scorer-window.scorer-open .scoreboard>div{padding:10px;gap:4px}.scorer-window.scorer-open .scoreboard strong{font-size:clamp(32px,5vw,64px);line-height:1.1}.scorer-window.scorer-open .scorer-turn-badge{font-size:10px;margin:0;padding:4px}.scorer-window.scorer-open .scorer-entry{margin:0;gap:6px}.scorer-window.scorer-open #windowVisit{margin:0;height:46px;padding:4px;font-size:28px}.scorer-window.scorer-open .score-keypad{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}.scorer-window.scorer-open .score-keypad button{min-height:48px;padding:6px}.scorer-window.scorer-open [data-key="back"]{grid-column:4;grid-row:1}.scorer-window.scorer-open [data-key="0"]{grid-column:4;grid-row:2 / span 2}.scorer-window.scorer-open #windowSubmit{min-height:76px;font-size:24px;width:100%;border:2px solid #f0ffb0;box-shadow:0 3px 0 #849c2c}.scorer-window.scorer-open #windowUndo{min-height:32px;padding:6px;font-size:12px}.scorer-window.scorer-open #newFriendly{margin:6px 0 0;padding:6px 10px;min-height:30px}.scorer-window.scorer-open .team-members{font-size:11px}.scorer-window.scorer-open #windowStatistics{margin-top:6px}.score-submit{min-height:72px;font-size:22px}
@media(max-width:600px) and (orientation:portrait){.scorer-window.scorer-open main{padding:6px 8px}.scorer-window.scorer-open #windowScorer{grid-template-columns:1fr;grid-template-rows:auto;gap:5px;padding:8px}.scorer-window.scorer-open #windowScores,.scorer-window.scorer-open #windowTurn,.scorer-window.scorer-open #windowRounds,.scorer-window.scorer-open #windowControls,.scorer-window.scorer-open #windowDecide{grid-column:1;grid-row:auto}.scorer-window.scorer-open .scoreboard>div{padding:5px;gap:2px}.scorer-window.scorer-open .scoreboard strong{font-size:34px}.scorer-window.scorer-open .scoreboard b{font-size:12px}.scorer-window.scorer-open .scoreboard span{font-size:11px}.scorer-window.scorer-open .scorer-turn-badge{font-size:9px;padding:3px}.scorer-window.scorer-open #windowTurn{padding:5px 8px}.scorer-window.scorer-open #windowTurn strong{font-size:19px;margin-top:2px}.scorer-window.scorer-open .scorer-turn-label{font-size:10px}.scorer-window.scorer-open #windowVisit{height:38px;font-size:26px}.scorer-window.scorer-open .score-keypad button{min-height:42px;font-size:21px}.scorer-window.scorer-open #windowSubmit{min-height:66px;font-size:23px}.scorer-window.scorer-open .score-keypad,.scorer-window.scorer-open .scorer-entry{gap:4px}}
@media(max-height:500px) and (orientation:landscape){.scorer-window.scorer-open main{padding:4px 8px}.scorer-window.scorer-open #windowScorer{padding:6px;gap:4px 12px}.scorer-window.scorer-open .score-keypad button{min-height:32px;padding:2px;font-size:18px}.scorer-window.scorer-open #windowSubmit{min-height:50px;font-size:21px}.scorer-window.scorer-open #windowVisit{height:32px;font-size:24px}.scorer-window.scorer-open .scorer-entry,.scorer-window.scorer-open .score-keypad{gap:3px}.scorer-window.scorer-open #windowTurn strong{font-size:22px}.scorer-window.scorer-open #windowTurn{padding:6px}.scorer-window.scorer-open .scoreboard strong{font-size:34px}}
.scorer-window.scorer-view #matchHeading{display:none}.scorer-window.scorer-view>header .profile-link{display:none}.scorer-window.scorer-view .scoreboard .team-members{display:none}.scorer-window.scorer-view .scoreboard b{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.scorer-window.scorer-view #windowTurn strong{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
@media(max-height:620px) and (orientation:portrait){.scorer-window.scorer-open #windowScorer{gap:4px;padding:6px}.scorer-window.scorer-open .scoreboard strong{font-size:30px}.scorer-window.scorer-open #windowTurn{padding:4px 8px}.scorer-window.scorer-open .score-keypad button{min-height:40px}.scorer-window.scorer-open #windowSubmit{min-height:64px}}
/* Stage 57: prominent remaining scores and a separate bottom keypad row. */
.scorer-window.scorer-open .scoreboard strong{font-size:clamp(64px,7.5vw,104px);font-weight:900;line-height:1;letter-spacing:-2px;font-variant-numeric:tabular-nums;color:#fff}
.scorer-window.scorer-open .scoreboard>div{padding:12px 8px;align-content:center}
.scorer-window.scorer-open .scoreboard>div.scorer-player-active{background:#d8ff4f;border-color:#eaff9d;box-shadow:0 0 24px #d8ff4f22;color:#101600}
.scorer-window.scorer-open .scoreboard .scorer-player-active strong,.scorer-window.scorer-open .scoreboard .scorer-player-active span{color:#101600}
.scorer-window.scorer-open .scoreboard>div>span:last-child{font-size:14px;font-weight:700}
.scorer-window.scorer-open .score-keypad{grid-template-columns:repeat(3,minmax(0,1fr))}
.scorer-window.scorer-open [data-key="0"],.scorer-dialog [data-key="0"]{grid-column:1 / span 2;grid-row:4}
.scorer-window.scorer-open [data-key="back"],.scorer-dialog [data-key="back"]{grid-column:3;grid-row:4}
.scorer-window.scorer-open #windowVisit{font-weight:800;font-variant-numeric:tabular-nums}
@media(max-width:600px) and (orientation:portrait){
 .scorer-window.scorer-open .scoreboard strong{font-size:64px}
 .scorer-window.scorer-open .scoreboard>div{padding:6px 4px}
 .scorer-window.scorer-open #windowTurn{padding:4px 8px}
 .scorer-window.scorer-open #windowTurn strong{font-size:16px;margin-top:0}
 .scorer-window.scorer-open .score-keypad button{min-height:40px}
}
@media(max-height:620px) and (orientation:portrait){
 .scorer-window.scorer-open .scoreboard strong{font-size:56px}
 .scorer-window.scorer-open .scoreboard>div{padding:4px}
 .scorer-window.scorer-open .scoreboard b{-webkit-line-clamp:1}
 .scorer-window.scorer-open #windowTurn strong{font-size:15px}
 .scorer-window.scorer-open .score-keypad button{min-height:36px}
 .scorer-window.scorer-open #windowVisit{height:34px}
}
@media(max-height:500px) and (orientation:landscape){
 .scorer-window.scorer-open .scoreboard strong{font-size:64px}
 .scorer-window.scorer-open .scoreboard>div{padding:6px 4px}
 .scorer-window.scorer-open .score-keypad button{min-height:30px}
}
@media(max-height:620px) and (orientation:portrait){
 .scorer-window.scorer-open #windowScorer{padding:4px}
 .scorer-window.scorer-open .scoreboard>div{padding:2px 4px}
}
@media(max-height:620px) and (orientation:portrait){
 .scorer-window.scorer-open #windowTurn{display:flex;align-items:center;gap:6px}
 .scorer-window.scorer-open #windowTurn .scorer-turn-label{max-width:52%;font-size:9px;letter-spacing:0;flex-shrink:0}
 .scorer-window.scorer-open #windowTurn strong{min-width:0;flex:1}
 .scorer-window.scorer-open .score-keypad button{min-height:35px}
}
@media(max-height:620px) and (orientation:portrait){.scorer-window.scorer-open main{padding-top:4px;padding-bottom:4px}}
/* Stage 58: leg counters and match controls. */
.scoreboard .leg-score{display:flex;align-items:center;justify-content:center;gap:10px;width:fit-content;min-width:95px;justify-self:center;border:1px solid #52606d;border-radius:6px;padding:3px 10px;background:#090b0e;color:#f5f7f8;font-size:12px;font-weight:800;letter-spacing:1px}
.scoreboard .leg-score em{font-style:normal;font-size:26px;line-height:1;font-weight:900;font-variant-numeric:tabular-nums}
.scorer-window.scorer-open .scoreboard .scorer-player-active .leg-score{background:#192200;color:#efffc6;border-color:#526716}
.scorer-window.scorer-open .scoreboard .scorer-player-active .leg-score em{color:#d8ff4f}
.starter-options{display:grid;gap:10px}.starter-options button{overflow-wrap:anywhere;min-height:48px}.starter-options button[aria-pressed="true"]{outline:2px solid white;outline-offset:2px}
#starterDialog{width:min(94vw,480px)}
.scorer-window.scorer-open .view-tabs #windowStarter{font-size:12px;white-space:nowrap;min-width:0}
.scorer-window.scorer-open .view-tabs button{min-width:0}
@media(max-width:600px) and (orientation:portrait){.scorer-window.scorer-open .scoreboard .leg-score{padding:2px 8px;font-size:10px;min-width:80px}.scorer-window.scorer-open .scoreboard .leg-score em{font-size:22px}.scorer-window.scorer-open .view-tabs button{font-size:12px;padding:6px}}
@media(max-height:620px) and (orientation:portrait){.scorer-window.scorer-open .scoreboard .leg-score{padding:1px 8px}.scorer-window.scorer-open .scoreboard .leg-score em{font-size:18px}.scorer-window.scorer-open #windowScorer{gap:2px}.scorer-window.scorer-open .score-keypad button{min-height:34px}}
.scorer-window.scorer-open .view-tabs button{flex:1 1 0}
/* Active player is identified on the score card, without a duplicate banner. */
.scorer-turn-banner.scorer-turn-live,.scorer-window.scorer-open #windowTurn.scorer-turn-live{display:none}
/* Stage 59: scorer celebrations and completed-leg details. */
#scorerNotice{inset:0;margin:auto;width:min(680px,calc(100vw - 28px));max-width:calc(100vw - 28px);height:fit-content;max-height:calc(100dvh - 28px);padding:24px;text-align:center;border:3px solid #eeffa5;border-radius:22px;box-shadow:0 18px 90px #000b;overflow:hidden;pointer-events:none;overflow-wrap:anywhere}
#scorerNotice .notice-heading{font-size:clamp(26px,5vw,44px);line-height:1.1;font-weight:900;text-wrap:balance}
#scorerNotice .notice-player{font-size:clamp(20px,4vw,30px);font-weight:800;margin-top:12px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
#scorerNotice .notice-detail{font-size:clamp(14px,2.5vw,20px);margin-top:12px;font-weight:700}
#scorerNotice .notice-winner{font-size:clamp(16px,3vw,24px);margin-top:16px;padding-top:12px;border-top:2px solid #17200055}
#scorerNotice.scorer-notice-maximum{background:radial-gradient(ellipse at center,#f2ffab 0%,#d8ff4f 65%,#a9d823 100%);animation:scorer-maximum-in .55s cubic-bezier(.2,.9,.3,1.2)}
#scorerNotice.scorer-notice-maximum .notice-heading{font-size:clamp(110px,32vw,250px);line-height:.85;letter-spacing:-.07em;padding-right:.07em;text-shadow:0 4px 0 #fff5}
@keyframes scorer-maximum-in{0%{opacity:0;transform:scale(.45) rotate(-7deg)}65%{opacity:1;transform:scale(1.04) rotate(1deg)}100%{transform:scale(1) rotate(0)}}
@media(max-height:500px){#scorerNotice{padding:16px}#scorerNotice.scorer-notice-maximum .notice-heading{font-size:min(32vw,42dvh)}#scorerNotice .notice-player{margin-top:8px;font-size:20px}#scorerNotice .notice-detail{margin-top:8px}#scorerNotice .notice-winner{margin-top:8px;padding-top:8px}}
@media(prefers-reduced-motion:reduce){#scorerNotice,#scorerNotice.scorer-notice-maximum{animation:none}}
/* Nawigacja nie wymaga popupów, a formularz działa także po wyłączeniu JS. */
.auth-action{background:#d8ff4f;color:#101600;text-decoration:none;border-radius:7px;padding:10px 13px;font-weight:700;white-space:nowrap}
.tournament-page>header{height:auto;min-height:68px;flex-wrap:wrap;padding-top:10px;padding-bottom:10px}
#cards a.card{display:block;color:inherit;text-decoration:none}#cards a.card:focus-visible,.auth-action:focus-visible{outline:3px solid #d8ff4f;outline-offset:4px}
.login-page{max-width:540px;margin:auto}.login-page h1{font-size:32px}.login-page form,#loginForm{display:grid;gap:10px}.login-page input,#loginForm input{width:100%;margin:0}.login-page form button{min-height:44px;margin-top:8px}
.stats-explanation{grid-column:1/-1;color:#aeb7c2;line-height:1.6}
/* Stage 60: slightly larger player names, with room for long names. */
.scorer-window.scorer-open .scoreboard>div>b{font-size:18px;line-height:1.2}
@media(max-width:600px) and (orientation:portrait){.scorer-window.scorer-open .scoreboard>div>b{font-size:15px}}
@media(max-height:620px) and (orientation:portrait){.scorer-window.scorer-open .scoreboard>div>b{font-size:14px}}
@media(max-height:500px) and (orientation:landscape){.scorer-window.scorer-open .scoreboard>div>b{font-size:16px}}
/* Administrator: usuwanie nie jest zagnieżdżone w odnośniku profilu. */
.directory-entry{display:flex;flex-direction:column;gap:8px;min-width:0}.directory-entry .profile-tile{flex:1}.directory-entry>button{align-self:flex-start}
.trash-actions{display:flex;flex-wrap:wrap;gap:8px;flex-shrink:0}#deleteProfile{margin:8px 0 16px}
/* Stage 64: tryb pozostałych punktów i klawiatura korzystająca z wysokości tabletu. */
#remainingMode{min-height:28px;padding:4px 10px;font-size:13px;margin:0}
#remainingMode[aria-pressed="true"]{background:#d6ff45;color:#152000;border-color:#d6ff45}
#checkoutHint{margin:0;font-size:13px;line-height:1.3;color:#d6ff45}
@media(min-width:700px) and (max-width:1400px) and (min-height:600px){
 body.scorer-window.scorer-open .match-window-main{max-width:1400px;width:100%;padding:10px 16px}
 body.scorer-window.scorer-open #windowScorer{grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);gap:16px}
 body.scorer-window.scorer-open .score-keypad button{height:clamp(62px,calc((100dvh - 366px)/4),150px);font-size:32px}
 body.scorer-window.scorer-open #windowVisit{height:54px;font-size:30px}
 body.scorer-window.scorer-open #windowSubmit{min-height:70px;font-size:23px}
}
@media(max-width:600px) and (max-height:650px) and (orientation:portrait){
 body.scorer-window.scorer-open .score-keypad button{height:29px;min-height:29px}
 body.scorer-window.scorer-open #windowSubmit{min-height:48px;height:48px}
 body.scorer-window.scorer-open #windowScorer{gap:3px}
 body.scorer-window.scorer-open #windowControls .scorer-entry{gap:3px}
}
@media(max-height:500px) and (orientation:landscape){
 body.scorer-window.scorer-open .score-keypad button{height:25px;min-height:25px}
 body.scorer-window.scorer-open #windowControls .scorer-entry{gap:2px}
 #checkoutHint{font-size:11px}
}

body.scorer-window.scorer-open #windowControls .scorer-entry{grid-template-columns:110px minmax(0,1fr)}
#remainingMode{grid-column:1;grid-row:1}
#windowVisit{grid-column:2;grid-row:1}
#checkoutHint,#windowControls .score-keypad,#windowSubmit,#windowUndo{grid-column:1 / -1}
@media(max-height:500px) and (orientation:landscape){body.scorer-window.scorer-open .score-keypad button{height:30px;min-height:30px}}
/* Wyniki lotek są widoczne również po zmianie kolejki i w historii meczu. */
.scorer-window.scorer-open #botThrows{grid-column:1;grid-row:2;align-self:start;margin-top:8px;font-size:13px}
.dart-tiles,.checkout-tiles{display:flex;gap:6px;flex-wrap:wrap}
.dart-tile{flex:1;min-width:0;border:1px solid #586775;border-radius:8px;background:#1c252d;padding:5px;text-align:center;display:grid;gap:2px}
.dart-tile b{font-size:24px;color:#d6ff45}.dart-tile small,.dart-tile span{font-size:10px}.dart-tile span{min-height:12px}
#botThrows p{margin:4px 0}#botThrows>strong{display:block;margin-bottom:4px}
#checkoutHint{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
#checkoutHint[hidden],#botThrows[hidden]{display:none}
.checkout-tile{display:grid;place-items:center;width:40px;height:40px;border:1px solid #d6ff45;border-radius:5px;background:#23301a;color:#e1ff74;font-size:17px;font-weight:800}
@media(max-width:600px) and (orientation:portrait){
 .scorer-window.scorer-open #botThrows{grid-column:1;grid-row:auto;margin:0}
 .dart-tile{padding:2px}.dart-tile b{font-size:18px}.dart-tile span{min-height:10px}
 #botThrows>strong{font-size:11px;margin:0}#botThrows p{font-size:11px;margin:0}
 .checkout-tile{width:30px;height:30px;font-size:14px}
}
@media(max-height:650px) and (orientation:portrait){.dart-tile{display:flex;align-items:center;justify-content:center;gap:3px;flex-wrap:wrap}.dart-tile small{font-size:9px}.dart-tile span{font-size:9px}.checkout-tile{width:26px;height:26px}#checkoutHint{font-size:11px}}
@media(max-height:500px) and (orientation:landscape){.checkout-tile{width:24px;height:24px;font-size:13px}#checkoutHint{gap:3px;font-size:10px}.dart-tile b{font-size:18px}.scorer-window.scorer-open #botThrows{margin-top:3px}}
.scorer-window.scorer-open #botThrows{grid-row:3}
.scorer-window.scorer-open #windowRounds{grid-row:4}
.scorer-window.scorer-open #windowDecide{grid-row:5}
.scorer-window.scorer-open #windowControls{grid-row:1 / span 5}
@media(max-width:600px) and (orientation:portrait){.scorer-window.scorer-open #botThrows,.scorer-window.scorer-open #windowRounds,.scorer-window.scorer-open #windowDecide,.scorer-window.scorer-open #windowControls{grid-row:auto}}
@media(min-height:651px) and (max-height:740px) and (max-width:600px) and (orientation:portrait){body.scorer-window.scorer-open .score-keypad button{height:36px;min-height:36px}body.scorer-window.scorer-open #windowSubmit{height:56px;min-height:56px}}
@media(max-height:500px) and (orientation:landscape){body.scorer-window.scorer-open #windowSubmit{min-height:40px;height:40px}body.scorer-window.scorer-open #windowUndo{min-height:26px;padding:3px;font-size:10px}body.scorer-window.scorer-open .score-keypad button{min-height:28px;height:28px}}
@media(max-height:500px) and (orientation:landscape){#botThrows .dart-tile{padding:2px;gap:0}#botThrows .dart-tile span{display:none}#botThrows p{font-size:11px;margin:1px 0}#botThrows>strong{font-size:11px;margin:0}}
@media(min-height:651px) and (max-height:740px) and (max-width:600px) and (orientation:portrait){body.scorer-window.scorer-open #windowSubmit{height:54px;min-height:54px}}

/* Stage 66: średnie pod licznikiem i kompaktowy zapis BOT-a. */
.scorer-window.scorer-open .scoreboard .score-averages{display:flex;flex-wrap:wrap;justify-content:center;gap:3px 10px;font-size:12px;line-height:1.3}
.scorer-window.scorer-open .scoreboard .score-averages span{font-size:12px;white-space:nowrap}
.scorer-window.scorer-open .scoreboard .score-averages b{font-size:13px}
#checkoutHint{grid-row:1}
.with-checkout #remainingMode,.with-checkout #windowVisit{grid-row:2}
#botThrows .dart-tile{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:3px;padding:3px 4px;border-radius:5px}
#botThrows .dart-tile b{font-size:16px}#botThrows .dart-tile small,#botThrows .dart-tile span{font-size:9px;min-height:0}
#botThrows>strong{font-size:11px;margin-bottom:2px}#botThrows p{font-size:11px;margin:2px 0}
@media(max-width:600px){.scorer-window.scorer-open .scoreboard .score-averages{gap:1px 6px}.scorer-window.scorer-open .scoreboard .score-averages span{font-size:10px}.scorer-window.scorer-open .scoreboard .score-averages b{font-size:11px}}
.scorer-window.scorer-open .scoreboard .score-averages b{display:inline}
.scorer-window.scorer-open #botThrows:not([hidden]){display:grid;grid-template-columns:1fr auto;gap:2px 6px}
#botThrows>strong{grid-column:1;grid-row:1;margin:0}#botThrows>p{grid-column:2;grid-row:1;margin:0;text-align:right}
#botThrows .dart-tiles{grid-column:1 / -1;grid-row:2}
#botThrows .dart-tile{flex-wrap:nowrap;padding:2px}
#botThrows .dart-tile span{display:none}
/* Stage 67: telefon/tablet wykorzystuje dostępną wysokość, komputer ma wynik nad klawiaturą. */
body.scorer-window.scorer-open main.match-window-main{width:100%;max-width:none}
body.scorer-window.scorer-open .checkout-tile{width:48px;height:48px;font-size:20px}
body.scorer-window.scorer-open #checkoutHint{font-size:14px}
body.scorer-window.scorer-open #windowScorer{min-height:calc(100dvh - 105px)}
body.scorer-window.scorer-open #windowControls .scorer-entry{height:100%;grid-template-rows:auto auto minmax(0,1fr) auto auto}
body.scorer-window.scorer-open #windowControls .scorer-entry:not(.with-checkout){grid-template-rows:auto minmax(0,1fr) auto auto}
body.scorer-window.scorer-open .score-keypad{min-height:0;grid-template-rows:repeat(4,minmax(0,1fr))}
body.scorer-window.scorer-open .score-keypad button{height:100%;min-height:28px}
@media(min-width:1000px) and (pointer:fine){
 body.scorer-window.scorer-open main.match-window-main{max-width:1400px;margin:auto}
 body.scorer-window.scorer-open #windowScorer{grid-template-columns:1fr;grid-template-rows:auto auto auto auto auto minmax(0,1fr);min-height:calc(100dvh - 125px);gap:6px;padding:8px}
 body.scorer-window.scorer-open #windowScores{grid-column:1;grid-row:1}
 body.scorer-window.scorer-open #windowTurn{grid-column:1;grid-row:2}
 body.scorer-window.scorer-open #botThrows{grid-column:1;grid-row:3;margin:0}
 body.scorer-window.scorer-open #windowRounds{grid-column:1;grid-row:4}
 body.scorer-window.scorer-open #windowDecide{grid-column:1;grid-row:5}
 body.scorer-window.scorer-open #windowControls{grid-column:1;grid-row:6}
 body.scorer-window.scorer-open .scoreboard>div{position:relative;padding:4px 10px;gap:1px}
 body.scorer-window.scorer-open .scoreboard strong{font-size:62px}
 body.scorer-window.scorer-open .scoreboard .scorer-turn-badge{position:absolute;top:4px;right:6px;max-width:45%;font-size:9px}
 body.scorer-window.scorer-open .scoreboard .leg-score{position:absolute;right:10px;bottom:8px}
 body.scorer-window.scorer-open #windowSubmit{min-height:48px;height:48px;font-size:22px}
 body.scorer-window.scorer-open #windowVisit{height:40px}
 body.scorer-window.scorer-open .checkout-tile{width:38px;height:38px;font-size:19px}
 body.scorer-window.scorer-open .score-keypad button{font-size:24px;padding:2px}
}
@media(max-width:600px) and (orientation:portrait){
 body.scorer-window.scorer-open #windowScorer{min-height:calc(100dvh - 98px);grid-template-rows:auto auto auto auto auto minmax(0,1fr)}
 body.scorer-window.scorer-open #windowControls{grid-row:6}
 body.scorer-window.scorer-open .checkout-tile{width:34px;height:34px;font-size:16px}
 body.scorer-window.scorer-open #checkoutHint{font-size:12px;gap:4px}
 body.scorer-window.scorer-open .view-tabs{gap:3px}
 body.scorer-window.scorer-open .view-tabs button{padding:5px;font-size:11px;min-height:28px}
}
@media(max-height:650px) and (orientation:portrait){body.scorer-window.scorer-open .checkout-tile{width:30px;height:30px;font-size:15px}body.scorer-window.scorer-open #checkoutHint{font-size:11px}}
@media(max-height:500px) and (orientation:landscape){body.scorer-window.scorer-open #windowScorer{min-height:calc(100dvh - 85px)}body.scorer-window.scorer-open .checkout-tile{width:28px;height:28px;font-size:15px}body.scorer-window.scorer-open #checkoutHint{font-size:10px}}
/* Dopasowanie wysokości klawiszy ustala fitScorer po zmierzeniu nagłówka i wyniku. */
body.scorer-window.scorer-open #windowScorer{min-height:0;grid-template-rows:auto auto auto auto auto auto}
body.scorer-window.scorer-open #windowControls .scorer-entry,body.scorer-window.scorer-open #windowControls .scorer-entry:not(.with-checkout){height:auto;grid-template-rows:none}
body.scorer-window.scorer-open .score-keypad{grid-template-rows:repeat(4,auto)}
@media(max-height:500px) and (orientation:landscape){body.scorer-window.scorer-open main.match-window-main{padding-top:2px;padding-bottom:2px}}
/* Stage 69: wyraźny rzucający, większe zejścia i zapis rzutu. */
.tv-watch-player.turn{background:#d6ff45;color:#142000;border:2px solid #e9ffab;box-shadow:0 0 18px #d6ff4530}
.tv-watch-player.turn .tv-watch-score,.tv-watch-player.turn .team-members{color:#142000}.tv-throwing-label{font-size:13px}
body.scorer-window.scorer-open [data-key="0"]{grid-column:2;grid-row:4}
body.scorer-window.scorer-open [data-key="back"]{grid-column:3;grid-row:4}
body.scorer-window.scorer-open #windowSubmit{min-height:86px;height:86px;font-size:28px}
body.scorer-window.scorer-open .checkout-tile{width:56px;height:56px;font-size:24px}
@media(max-width:600px) and (orientation:portrait){body.scorer-window.scorer-open #windowSubmit{height:72px;min-height:72px;font-size:25px}body.scorer-window.scorer-open .checkout-tile{width:40px;height:40px;font-size:19px}}
@media(max-height:650px) and (orientation:portrait){body.scorer-window.scorer-open #windowSubmit{height:62px;min-height:62px;font-size:24px}body.scorer-window.scorer-open .checkout-tile{width:34px;height:34px;font-size:17px}}
@media(max-height:500px) and (orientation:landscape){body.scorer-window.scorer-open #windowSubmit{height:52px;min-height:52px;font-size:23px}body.scorer-window.scorer-open .checkout-tile{width:32px;height:32px;font-size:17px}}
#windowVisit[aria-invalid="true"]{border-color:#ff7c70;color:#ff7c70}
/* Ostatnia zapisana suma strony, włącznie z jawnym oznaczeniem BUST. */
.scorer-window.scorer-open .scoreboard .score-last-visit{font-size:12px;line-height:1.2}
.scorer-window.scorer-open .scoreboard .score-last-visit b{display:inline;font-size:13px}
@media(max-width:600px),(max-height:500px){.scorer-window.scorer-open .scoreboard .score-last-visit{font-size:10px}.scorer-window.scorer-open .scoreboard .score-last-visit b{font-size:11px}}
.match-leg-target{margin:0 0 4px;text-align:center;font-size:13px;font-weight:700;color:#d6ff45;line-height:1.2}
@media(max-height:650px) and (orientation:portrait){
 body.scorer-window.scorer-open .scoreboard>div{padding:2px;gap:1px}
 body.scorer-window.scorer-open .scoreboard strong{line-height:1}
 body.scorer-window.scorer-open .scoreboard .score-averages span,body.scorer-window.scorer-open .scoreboard .score-averages b{font-size:9px}
 body.scorer-window.scorer-open .scoreboard .score-averages{gap:1px 4px}
 .match-leg-target{font-size:11px;margin-bottom:2px}
}
.scorer-window.scorer-open .scoreboard .leg-score .match-leg-target{font-size:11px;margin:0;color:inherit;font-weight:700}
@media(max-height:650px) and (orientation:portrait){body.scorer-window.scorer-open .scoreboard strong{font-size:50px}.scorer-window.scorer-open .scoreboard .leg-score{padding:1px 5px}.scorer-window.scorer-open .scoreboard .leg-score .match-leg-target{font-size:10px}}
@media(max-height:500px) and (orientation:landscape){body.scorer-window.scorer-open .scoreboard strong{font-size:50px;line-height:1}body.scorer-window.scorer-open .scoreboard>div{gap:2px;padding:6px}}
/* Osobna akcja raportu, odróżniona od ustawień turnieju. */
.manager-heading .report-action{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:11px 16px;border:1px solid #8bc6ff;border-radius:8px;background:#1766aa;color:#fff;font:inherit;font-weight:700;text-decoration:none;box-sizing:border-box}
.manager-heading .report-action:hover{background:#10558f}.manager-heading .report-action:focus-visible{outline:3px solid #baddff;outline-offset:3px}.manager-heading .report-action[hidden]{display:none}
.podium{display:flex;align-items:flex-end;justify-content:center;gap:12px;margin:18px 0}.podium-place{flex:1;max-width:340px;padding:18px;text-align:center;border-radius:12px 12px 0 0;background:#263542;border-top:4px solid #9fb0c0}.podium-place>b{font-size:38px}.podium-1{padding-bottom:48px;border-color:#ffda62;background:#3d351b}.podium-1>b{color:#ffda62}.podium-2{padding-bottom:30px}.podium-3{border-color:#c58e65}.podium-place p{overflow-wrap:anywhere}.podium-place small{display:block}.final-ranking{list-style:none;padding:0;display:grid;gap:8px}.final-ranking li{padding:8px;border-bottom:1px solid #34404c}.final-ranking b{display:inline-block;min-width:40px}
@media(max-width:600px){.podium{gap:5px}.podium-place{padding:8px;font-size:12px}.podium-1{padding-bottom:28px}.podium-2{padding-bottom:18px}.scorer-window.scorer-open .scoreboard .leg-score .match-leg-target{font-size:9px}}
.scorer-window.scorer-open .scoreboard .leg-score{white-space:nowrap;letter-spacing:0;gap:6px}
@media(max-width:600px){.scorer-window.scorer-open .scoreboard .leg-score{padding:2px 4px;gap:3px;min-width:0}.scorer-window.scorer-open .scoreboard .leg-score .match-leg-target{font-size:9px;white-space:nowrap}}
.scorer-window.scorer-open #matchWorkspace>.view-tabs{align-items:center}
.scorer-window.scorer-open #matchWorkspace>.view-tabs button{flex:1 1 0;min-width:0}
#firstToNote{font-size:11px;color:#b9c7d4;white-space:nowrap;order:10;padding:0 3px}
@media(max-width:600px){#firstToNote{font-size:9px;padding:0}.scorer-window.scorer-open .view-tabs #windowStarter{font-size:10px;padding:5px 2px}}
@media(max-height:650px) and (orientation:portrait){.scorer-window.scorer-open .scoreboard .leg-score{padding-top:1px;padding-bottom:1px}}

.scorer-exit{font-size:12px;font-weight:700;padding:5px 8px;background:#293039;color:#ffffff;text-decoration:none;border:1px solid #8794a1;border-radius:5px;white-space:nowrap;flex-shrink:0}.scorer-exit:hover:not(:disabled){background:#414d59;color:#ffffff}.scorer-exit:focus-visible{outline:2px solid #d8ff4f;outline-offset:2px}.scorer-exit:disabled{background:#293039;color:#c7d0d9;cursor:wait}.leg-history{margin:8px 0;border:1px solid #47535e;border-radius:7px;padding:8px}.leg-history summary{cursor:pointer;font-weight:bold;padding:7px}.leg-history .person{overflow-wrap:anywhere}
.league-fixture{display:flex;flex-wrap:wrap;gap:12px;align-items:center;padding:12px 0;border-bottom:1px solid #47535e}.league-fixture form{display:flex;flex-wrap:wrap;gap:8px;width:100%}.league-fixture input{width:90px}.league-fixture label{display:flex;flex-direction:column;font-size:12px}.league-fixture a{color:#d6ff45}#leagueSettings{max-width:min(850px,95vw)}#leagueCards{display:flex;flex-wrap:wrap;gap:12px;margin-top:16px}#leagueTable th,#leagueTable td{padding:8px}#leagueMessage{color:#d6ff45}

/* Kompaktowa tabela i wyraźne wejście do scorera ligi. */
#leagueTable{max-width:760px}#leagueTable .standings-table{min-width:300px;width:100%;table-layout:fixed;font-size:12px}#leagueTable th,#leagueTable td{padding:6px 3px}#leagueTable th:nth-child(2),#leagueTable td:nth-child(2){width:28%;overflow-wrap:anywhere}#leagueTable th:first-child,#leagueTable td:first-child{width:28px}.league-fixture .league-scorer-tile{display:inline-flex;align-items:center;justify-content:center;min-height:54px;min-width:145px;padding:12px 18px;background:#d8ff4f;color:#101820;font-weight:700;text-decoration:none;border:1px solid #d8ff4f;border-radius:9px}.league-fixture .league-scorer-tile:hover{background:#e8ff99}.league-fixture .league-scorer-tile:focus-visible{outline:2px solid white;outline-offset:3px}#leagueRounds [data-week]{display:flex;align-items:center;gap:10px;flex-wrap:wrap}#leagueRounds [data-week] small{color:#b9c7d4}


/* Karty lig mają jawne kolory tekstu i tła, niezależne od domyślnego stylu button. */
#leagueCards{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,280px),1fr));gap:16px;align-items:stretch}#leagueCards .league-card{display:flex;flex-direction:column;align-items:flex-start;gap:14px;min-width:0;width:100%;padding:20px;text-align:left;background:#151d26;color:#f5f7fa;border:1px solid #526170;border-radius:12px;font-family:inherit;font-size:14px;line-height:1.4}#leagueCards .league-card:hover{background:#202d3a;border-color:#d8ff4f}#leagueCards .league-card:focus-visible{outline:3px solid #d8ff4f;outline-offset:3px}.league-card-title{display:block;font-size:22px;line-height:1.25;overflow-wrap:anywhere;width:100%}.league-card-meta{display:flex;flex-wrap:wrap;gap:8px 18px;color:#c4d0dc;font-weight:400}.league-card-open{display:flex;justify-content:space-between;width:100%;margin-top:auto;padding-top:12px;border-top:1px solid #526170;color:#d8ff4f;font-weight:700}.league-card-status{display:inline-block;padding:4px 10px;border-radius:20px;font-size:12px;font-weight:700}.league-card-status.status-open{background:#334425;color:#e2ffb7}.league-card-status.status-live{background:#514116;color:#ffe49b}.league-card-status.status-done{background:#334455;color:#e5edf5}@media(max-width:600px){#leagueCards .league-card{padding:16px}.league-card-title{font-size:20px}}

/* Stage 84: stałe miejsce na podpowiedzi stabilizuje pomiar klawiatury. */
body.scorer-window.scorer-open #checkoutHint{height:56px;min-height:56px;flex-wrap:nowrap}
body.scorer-window.scorer-open #checkoutHint>span{flex:1;min-width:0}
body.scorer-window.scorer-open #checkoutHint .checkout-tiles{flex-wrap:nowrap;flex-shrink:0}
body.scorer-window.scorer-open #windowSubmit{height:68px;min-height:68px;font-size:25px}
@media(max-width:600px) and (orientation:portrait){body.scorer-window.scorer-open #checkoutHint{height:40px;min-height:40px}body.scorer-window.scorer-open #windowSubmit{height:60px;min-height:60px;font-size:23px}}
@media(max-height:650px) and (orientation:portrait){body.scorer-window.scorer-open #checkoutHint{height:34px;min-height:34px}body.scorer-window.scorer-open #windowSubmit{height:52px;min-height:52px}}
@media(max-height:500px) and (orientation:landscape){body.scorer-window.scorer-open #checkoutHint{height:32px;min-height:32px}body.scorer-window.scorer-open #windowSubmit{height:44px;min-height:44px;font-size:21px}}
.league-tabs,.league-round-tiles{display:flex;flex-wrap:wrap;gap:8px;margin:18px 0}
.league-tabs button,.league-round-tiles button{background:#1d2936;color:#f5f7fa;border:1px solid #66798c}
.league-tabs button[aria-pressed=true],.league-round-tiles button[aria-pressed=true]{outline:3px solid #d6ff45;outline-offset:2px}
.league-round-tiles button{display:grid;gap:6px;text-align:left;min-width:130px;padding:14px}
.league-round-tiles small{font-weight:normal;font-size:12px}
.league-fixture.overdue,.league-round-tiles button.overdue{border:2px solid #ff7474;background:#452126;color:#fff}
.league-fixture{border:1px solid #526579;border-radius:8px;padding:12px;margin:10px 0}
.league-fixture .fixture-info{display:grid;gap:6px;min-width:0;overflow-wrap:anywhere}.fixture-info small{color:#d8e0ea}
.league-fixture .late-label{color:#ffb0b0;font-weight:bold}.league-tabs button:focus-visible,.league-round-tiles button:focus-visible{outline:3px solid white}
.league-stats-table{white-space:nowrap}.league-stats-table th,.league-stats-table td{padding:10px;text-align:right}.league-stats-table th:first-child,.league-stats-table td:first-child{text-align:left}.league-stats-table a{color:#dcff76}
#leagueTrashList>div{padding:12px;border:1px solid #6d7e8c;margin:8px 0;border-radius:8px}#leagueTrashList button{margin:5px}

/* Stage 86: widok turnieju dla gościa — bez formularzy i akcji konfiguracji. */
.guest-view :is(#new,#tournamentSettings,#participantSetup,#gen,#setupBoards,#autoAssign,#groupEditor,#teamForm,#teamMessage,#teamsEditor>.profile-note,#drawKnockout,#finishGroups,[data-save],[data-edit],[data-ref],[data-obs],[data-remove-team],[data-remove-entry],[data-remove-participant],[data-dq],.board-assign){display:none!important}
.history-averages{display:block;margin-top:6px;line-height:1.5;color:#dce5ee;white-space:normal;overflow-wrap:anywhere}
.profile-history-row>div{min-width:0}.profile-history-row{gap:12px}
@media(max-width:600px){.profile-history-row{flex-wrap:wrap}}

.classification-profile{color:inherit;text-decoration:underline;text-underline-offset:3px}.classification-profile:hover{color:#d6ff45}.classification-profile:focus-visible{outline:2px solid #d6ff45;outline-offset:3px}.classification-members{display:block;margin-top:6px;line-height:1.6}

#profileMatches .history-result{display:block;flex:0 1 50%;min-width:0}#profileMatches .history-result .history-averages{display:block;color:#dce5ee;white-space:normal;line-height:1.6}
@media(max-width:600px){#profileMatches .history-result{flex-basis:100%}}

/* Stage 88: widok ligi dla gościa i zwarta tabela wyników. */
.league-guest :is(#editLeague,#deleteLeague,#createLeague,#showLeagueTrash,#leagueRoster,#leagueTrashList){display:none!important}
.league-page [data-league-pane="table"]{max-width:650px}
#leagueTable{max-width:600px;width:100%}
#leagueTable .standings-table{min-width:420px;font-size:13px;font-variant-numeric:tabular-nums}
#leagueTable th,#leagueTable td{padding:9px 5px}
#leagueTable th:nth-child(2),#leagueTable td:nth-child(2){width:32%;line-height:1.4}
#leagueTable tbody tr:nth-child(even){background:#18212a}
#leagueTable td:last-child{font-weight:800;color:#d8ff4f}
/* Zwykłe etykiety formularza są siatką; checkbox potrzebuje jednego wiersza. */
#friendlyForm .friendly-checkbox{display:flex;align-items:center;gap:12px;min-height:44px;cursor:pointer;line-height:1.5}
#friendlyForm .friendly-checkbox input[type="checkbox"]{appearance:auto;flex:0 0 22px;width:22px;min-width:22px;height:22px;min-height:22px;margin:0;padding:0;accent-color:#d8ff4f;cursor:pointer}
#friendlyForm .friendly-checkbox span{flex:1;min-width:0}
#friendlyForm .friendly-checkbox input:focus-visible{outline:2px solid white;outline-offset:4px}

.form-panel{margin-top:20px}.form-chart{display:block;width:100%;max-height:300px;background:#141d27;border-radius:8px}.form-chart text{fill:#d3dde8;font:12px Arial}.form-chart a:focus circle,.form-chart a:hover circle{fill:white;stroke:#d8ff4f;stroke-width:3px}.form-data{width:100%;border-collapse:collapse}.form-data td,.form-data th{padding:9px;text-align:left;border-bottom:1px solid #3b4653}.form-data a,#headToHead a{color:#d8ff4f}.form-panel summary{cursor:pointer;padding:10px 0}
#headToHead{width:min(1050px,95vw);max-width:95vw;max-height:92dvh;overflow:auto}#headToHead::backdrop{background:#000b}.h2h-table{width:100%;border-collapse:collapse;table-layout:fixed}.h2h-table th,.h2h-table td{padding:10px;border-bottom:1px solid #415061;overflow-wrap:anywhere;text-align:center}.h2h-table tbody th{text-align:left;color:#bdc9d5;font-weight:normal}.h2h-table tbody tr:nth-child(even){background:#1c2631}.h2h-forms{display:grid;grid-template-columns:1fr 1fr;gap:18px}#h2hMessage{color:#d8ff4f}.h2h-forms section{min-width:0}#headToHead .profile-history-row{flex-wrap:wrap}
@media(max-width:650px){.h2h-forms{grid-template-columns:1fr}.h2h-table th,.h2h-table td{padding:8px 4px;font-size:12px}#headToHead{padding:12px}#headToHead .topline{align-items:center}#headToHead .topline button{flex:0 0 auto}}

/* Stage 90: złota kropka oznacza rozpoczynającego, również poza jego kolejką. */
.scoreboard>div>b .scorer-starter-dot{display:inline-block;box-sizing:border-box;width:11px;height:11px;min-width:11px;margin:0 0 0 7px;border:1px solid #584515;border-radius:50%;background:#ffda62;vertical-align:middle;box-shadow:0 0 0 1px #11182055;font-size:0;line-height:0}
/* Stage 91: wynik nad klawiaturą na każdym urządzeniu, również dotykowym. */
body.scorer-window.scorer-open #windowScorer{grid-template-columns:minmax(0,1fr);grid-template-rows:repeat(6,auto);gap:6px;padding:8px;min-height:0}
body.scorer-window.scorer-open #windowScores{grid-column:1;grid-row:1}
body.scorer-window.scorer-open #windowTurn{grid-column:1;grid-row:2}
body.scorer-window.scorer-open #botThrows{grid-column:1;grid-row:3;margin:0}
body.scorer-window.scorer-open #windowRounds{grid-column:1;grid-row:4}
body.scorer-window.scorer-open #windowDecide{grid-column:1;grid-row:5}
body.scorer-window.scorer-open #windowControls{grid-column:1;grid-row:6}
/* Niski ekran poziomy: zwarte karty graczy, nadal nad całą klawiaturą. */
@media(max-height:500px) and (orientation:landscape){
 body.scorer-window.scorer-open #windowScorer{gap:2px;padding:3px}
 body.scorer-window.scorer-open .scoreboard>div{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-rows:auto auto auto;position:relative;padding:3px 5px;gap:1px 6px;text-align:left}
 body.scorer-window.scorer-open .scoreboard>div>b{grid-column:1;grid-row:1;font-size:13px;line-height:1.1;padding-right:0}
 body.scorer-window.scorer-open .scoreboard strong{grid-column:2;grid-row:1 / 4;font-size:50px;line-height:1;align-self:center}
 body.scorer-window.scorer-open .scoreboard .score-averages{grid-column:1;grid-row:2;display:flex;gap:4px;font-size:9px}
 body.scorer-window.scorer-open .scoreboard .score-averages :is(span,b){font-size:9px}
 body.scorer-window.scorer-open .scoreboard .score-last-visit{grid-column:1;grid-row:3;font-size:9px}
 body.scorer-window.scorer-open .scoreboard .leg-score{position:static;grid-column:2;grid-row:4;padding:0 3px;font-size:9px;min-height:0}
 body.scorer-window.scorer-open .scoreboard .leg-score em{font-size:14px}
 body.scorer-window.scorer-open .scoreboard .scorer-turn-badge{position:static;grid-column:1;grid-row:4;font-size:8px;padding:0;line-height:1}
 body.scorer-window.scorer-open .scoreboard .team-members{grid-column:1;grid-row:5;font-size:8px;line-height:1}
 body.scorer-window.scorer-open #windowSubmit{height:30px;min-height:30px;font-size:18px;padding:2px}
 body.scorer-window.scorer-open #windowVisit,body.scorer-window.scorer-open #remainingMode{height:28px;min-height:28px;padding:2px;font-size:16px}
 body.scorer-window.scorer-open #windowUndo{height:22px;min-height:22px;padding:1px;font-size:10px}
 body.scorer-window.scorer-open .scorer-entry,body.scorer-window.scorer-open .score-keypad{gap:3px}
 body.scorer-window.scorer-open #checkoutHint{height:28px;min-height:28px;font-size:11px}
 body.scorer-window.scorer-open .checkout-tile{height:26px;width:30px;font-size:16px}
}
@media(max-height:500px) and (orientation:landscape){
 body.scorer-window.scorer-open>header{min-height:24px;padding:1px 8px;font-size:10px}
 body.scorer-window.scorer-open .scorer-exit{padding:2px 6px;font-size:10px}
 body.scorer-window.scorer-open main{padding:1px 8px}
 body.scorer-window.scorer-open .view-tabs{margin-bottom:2px;gap:3px}
 body.scorer-window.scorer-open .view-tabs button{min-height:24px;height:24px;padding:2px;font-size:11px}
 body.scorer-window.scorer-open .scoreboard>div{padding:1px 4px;gap:0 4px}
 body.scorer-window.scorer-open #windowRounds{font-size:10px;line-height:1}
 body.scorer-window.scorer-open #checkoutHint{height:24px;min-height:24px;padding:0}
 body.scorer-window.scorer-open .checkout-tile{height:23px}
 body.scorer-window.scorer-open #windowScorer{gap:0}
 body.scorer-window.scorer-open #windowUndo{height:20px;min-height:20px}
}
/* Stage 95: statystyki graczy — najważniejsze liczby oraz trzy czytelne sekcje. */
#windowStats{align-items:start;gap:20px}
.match-player-stats{min-width:0;border:1px solid #4e606d;border-radius:14px;background:#141d26;overflow:hidden}
.match-player-stats>h3{margin:0;padding:18px 20px;background:#243340;color:#fff;font-size:23px;overflow-wrap:anywhere}
.stats-highlights{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:0;padding:16px}
.stats-highlights>div{background:#0c141b;border:1px solid #3b4e5e;border-radius:10px;padding:12px;min-width:0}
.stats-highlights dt{font-size:12px;color:#c8d5e0;line-height:1.4}
.stats-highlights dd{margin:6px 0 0;font-size:30px;font-weight:800;color:#d8ff4f;font-variant-numeric:tabular-nums;line-height:1.2}
.stats-highlights dd small{display:block;font-size:13px;font-weight:500;color:#d1dde7;margin-top:4px}
.stats-group{padding:0 16px 16px}.stats-group h4{margin:0;padding:12px 0;color:#fff;font-size:15px;border-bottom:1px solid #405363}
.match-player-stats .match-stats-list{display:block;margin:0}
.match-player-stats .match-stats-list>div{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;padding:10px 8px;align-items:center}
.match-player-stats .match-stats-list>div:nth-child(even){background:#1b2934;border-radius:5px}
.match-player-stats dt{color:#d3dfe9}.match-player-stats dt small{font-size:11px;color:#aabecd}
.match-player-stats .match-stats-list dd{font-size:19px;color:#fff;font-variant-numeric:tabular-nums}
.stats-bands{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:12px 0 0}
.stats-bands>div{text-align:center;padding:10px 4px;background:#1d2d39;border-radius:7px}
.stats-bands dt{font-size:12px}.stats-bands dd{margin:5px 0 0;font-size:23px;font-weight:700;color:#fff;font-variant-numeric:tabular-nums}
#windowStats>.stats-explanation,#windowStats>.stats-finishes{grid-column:1 / -1;line-height:1.65;margin:0;padding:16px;border:1px solid #405363;border-radius:10px}
.stats-explanation{color:#bdceda;font-size:12px}.stats-finishes h3{margin-top:0}.stats-finishes p{padding:8px;border-bottom:1px solid #344553}
@media(max-width:600px){.stats-highlights{padding:12px;gap:8px}.stats-highlights dd{font-size:27px}.match-player-stats>h3{font-size:21px;padding:14px 16px}.stats-group{padding:0 12px 12px}}
/* Stage 96: wyróżnione wejścia do widoków kibica. */
.public-actions{gap:12px;padding:12px;border:1px solid #50677d;border-radius:14px;background:#0c1622}
.public-actions :is(#publicLink,#tvLink){display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:7px;flex:1 1 210px;min-width:0;min-height:92px;padding:18px;border:2px solid #90caff;border-radius:11px;color:#fff;text-align:left;box-shadow:0 4px 12px #0004}
.public-actions #publicLink{background:#164c81}
.public-actions #tvLink{background:#63386f;border-color:#dea8ed}
.public-actions :is(#publicLink,#tvLink)>span{font-size:18px;font-weight:800;letter-spacing:.4px;line-height:1.3}
.public-actions :is(#publicLink,#tvLink)>small{font-size:12px;line-height:1.4;font-weight:400;color:#f0f5ff}
.public-actions #publicLink:hover{background:#22649f}
.public-actions #tvLink:hover{background:#805091}
.public-actions :is(#publicLink,#tvLink):focus-visible{outline:3px solid #fff;outline-offset:4px}
@media(max-width:600px){.public-actions{padding:8px;gap:10px}.public-actions :is(#publicLink,#tvLink){flex-basis:100%;min-height:82px;padding:14px}.public-actions :is(#publicLink,#tvLink)>span{font-size:17px}}
.scorer-lease-notice{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:5px 8px;margin:3px 0;color:#d5e5f1;background:#172b3b;border:1px solid #47687f;border-radius:6px;font-size:11px;line-height:1.3}.scorer-lease-notice[hidden]{display:none}.scorer-lease-notice button{font-size:12px;padding:6px 10px;flex-shrink:0}
/* Stage 98: klawiatura 3 kolumny, kasowanie / 0 / Enter we wspólnym rzędzie. */
body.scorer-window.scorer-open #windowControls .scorer-entry{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
body.scorer-window.scorer-open #checkoutHint{grid-column:1 / -1;grid-row:1}
body.scorer-window.scorer-open #remainingMode{grid-column:1;grid-row:2}
body.scorer-window.scorer-open #windowUndo{grid-column:2;grid-row:2;margin:0;height:auto;min-height:34px;font-size:12px;padding:6px}
body.scorer-window.scorer-open #windowVisit{grid-column:1 / -1;grid-row:3}
body.scorer-window.scorer-open #windowControls .score-keypad{grid-column:1 / -1;grid-row:4;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
body.scorer-window.scorer-open .score-keypad [data-key="back"]{grid-column:1;grid-row:4}
body.scorer-window.scorer-open .score-keypad [data-key="0"]{grid-column:2;grid-row:4}
body.scorer-window.scorer-open .score-keypad #windowSubmit{grid-column:3;grid-row:4;width:100%;height:auto;min-height:24px;font-size:clamp(14px,2vw,24px);padding:2px;box-shadow:none}
body.scorer-window.scorer-open #windowScores .scoreboard>div{position:relative;padding-left:26px}
body.scorer-window.scorer-open #windowScores .scorer-turn-badge{position:absolute;left:5px;right:auto;top:50%;transform:translateY(-50%);writing-mode:vertical-rl;text-orientation:mixed;max-width:none;max-height:95%;font-size:10px;line-height:1;padding:0;margin:0;overflow:hidden}
#scorerHeaderMeta{display:flex;align-items:center;gap:12px;flex-wrap:wrap;min-width:0}
#scorerHeaderMeta #firstToNote{order:0;font-size:11px}
body.scorer-window.scorer-open #scorerHeaderMeta #windowRounds{margin:0;font-size:11px;line-height:1.3}
body.scorer-window.scorer-open>header{flex-wrap:wrap}
body.scorer-window.scorer-open .profile-link{display:none}
body.scorer-window.scorer-open #windowStarter{display:none}
.tv>header #title{margin:0;font-size:clamp(16px,2vw,25px);flex:1;min-width:140px;overflow-wrap:anywhere}
.tv #connection:empty{display:none}
.profile-delete-row{display:flex;justify-content:flex-end;margin:8px 0}
#profileLabel:empty{display:none}
#profileView :is(.profile-modes,.league-tabs){display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;width:min(100%,480px)}
#profileView :is(.profile-modes,.league-tabs)>button{width:100%;min-width:0;margin:0;box-sizing:border-box}
@media(max-width:600px){body.scorer-window.scorer-open #windowControls .score-keypad{gap:8px}#scorerHeaderMeta{gap:6px}body.scorer-window.scorer-open #windowUndo{font-size:10px}body.scorer-window.scorer-open #windowScores .scorer-turn-badge{font-size:9px}}
@media(max-height:500px) and (orientation:landscape){body.scorer-window.scorer-open #windowControls .scorer-entry{gap:3px}body.scorer-window.scorer-open #windowControls .score-keypad{gap:6px}body.scorer-window.scorer-open #windowUndo{min-height:24px;font-size:10px;padding:2px}body.scorer-window.scorer-open #windowScores .scorer-turn-badge{font-size:8px}}
body.scorer-window.scorer-open #windowScorer{grid-template-rows:repeat(4,auto)}
body.scorer-window.scorer-open #botThrows{grid-row:2}
body.scorer-window.scorer-open #windowDecide{grid-row:3}
body.scorer-window.scorer-open #windowControls{grid-row:4}
/* Stage 100: nazwa turnieju i powrót zawsze dostępne w górnej belce. */
.tv>header.tv-sticky-header{position:sticky;top:0;z-index:30;display:flex;align-items:center;gap:16px;padding:12px 20px;background:#0b1118;border-bottom:1px solid #4c6071;box-shadow:0 3px 12px #0005}
.tv>header .logo{width:auto;white-space:nowrap;flex-shrink:0}
.tv-heading{display:flex;align-items:center;gap:12px;flex:1;min-width:0}
.tv-heading>span{color:#d8ff4f;font-size:13px;font-weight:800;white-space:nowrap}
.tv>header #title{flex:1;min-width:0;font-size:20px;line-height:1.3;overflow-wrap:anywhere;margin:0}
.tv>header .tv-back{flex-shrink:0;margin:0;padding:10px 12px;min-height:40px;display:inline-flex;align-items:center;background:#223446;border:1px solid #87a6bd;border-radius:7px;color:#fff;text-decoration:none;font-size:12px;font-weight:700}
.tv>header .tv-back:hover{background:#34516a}.tv>header .tv-back:focus-visible{outline:3px solid #d8ff4f;outline-offset:2px}
@media(max-width:650px){.tv>header.tv-sticky-header{display:grid;grid-template-columns:1fr auto;gap:8px;padding:8px 12px}.tv-heading{grid-column:1 / -1;grid-row:2;gap:8px;align-items:baseline}.tv>header .tv-back{grid-column:2;grid-row:1;font-size:10px;padding:7px 9px}.tv-heading>span{font-size:11px}.tv>header #title{font-size:15px}}
/* Stage 101: opisane grupy filtrów o jednakowych wymiarach. */
.profile-filter-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),320px));gap:14px;margin:18px 0}
#profileView .profile-filter-group{box-sizing:border-box;width:320px;max-width:100%;min-width:0;margin:0;padding:14px;border:1px solid #536d80;border-radius:10px;background:#15222d}
#profileView .profile-filter-group legend{padding:0 7px;color:#d6e6f2;font-size:13px;font-weight:700;letter-spacing:.3px}
#profileView .profile-source-filter{margin:18px 0 24px;border-color:#a4bd59}
#profileView .profile-filter-group :is(.profile-modes,.league-tabs){display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;width:100%;margin:0}
#profileView .profile-filter-group button{min-height:44px;padding:10px 5px;border:1px solid #5b7488;border-radius:6px;background:#213746;color:#e8f0f6;font-size:13px;line-height:1.2;font-weight:700}
#profileView .profile-filter-group button[aria-pressed="true"]{background:#d8ff4f;color:#142000;border-color:#d8ff4f;box-shadow:inset 0 -3px 0 #93b133;outline:none}
#profileView .profile-filter-group button:focus-visible{outline:3px solid white;outline-offset:3px}
#profileLeague>.profile-filter-group{margin:18px 0}
@media(max-width:650px){.profile-filter-grid{grid-template-columns:minmax(0,1fr);gap:16px}#profileView .profile-filter-group{width:100%}}
.profile-filter-grid>.profile-filter-group{width:100%!important}
.league-page #leagueView>.league-management-actions{display:flex;justify-content:flex-end;align-items:center;gap:20px 32px;flex-wrap:wrap;width:100%;margin:20px 0 24px}
.league-management-actions>button{flex:0 0 auto;margin:0}
#leagueTable .league-player-rounds{color:#dcff76;text-decoration:underline;text-underline-offset:3px;font-weight:400}
#leagueTable .league-player-rounds:focus-visible{outline:2px solid #fff;outline-offset:2px}
.league-player-selection{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;width:100%;padding:14px;border:1px solid #647c91;border-radius:10px;background:#162633}
.league-player-selection h3{margin:0;overflow-wrap:anywhere}.player-round{margin:14px 0}

/* Stage 104: akcje ligi w prawej części belki, z zawijaniem na telefonach. */
.league-header-actions{display:flex;align-items:center;justify-content:flex-end;gap:16px;flex-wrap:wrap}
.league-header-actions:has(>button:not([hidden])){margin-left:auto}

/* Stage 105: publiczne komunikaty ligi i stan nieprzeczytania. */
.league-tabs #announcementsTab{background:#d8ff4f;color:#172000;border:1px solid #efffa7}
.league-tabs #announcementsTab:hover{box-shadow:inset 0 0 0 1px #dfc4fa}
.league-tabs #announcementsTab.has-new{background:#663c91;color:#fff;border-color:#bc91e4}
#announcementsBadge{background:#293616;color:#fff;padding:3px 6px;border-radius:4px;margin-left:6px;font-size:10px}
.league-announcement{margin:16px 0;overflow-wrap:anywhere}.league-announcement h3{margin:0 0 8px}.announcement-text{white-space:pre-wrap;line-height:1.6}.announcement-actions{display:flex;gap:16px;justify-content:flex-end}
#announcementDialog{width:min(560px,calc(100vw - 24px));max-height:90dvh;overflow:auto}#announcementForm>label:not(.announcement-pin){display:grid;gap:6px;margin:14px 0}#announcementForm input:not([type=checkbox]),#announcementForm textarea{width:100%;margin:0;box-sizing:border-box}#announcementForm textarea{background:#0c0f13;color:white;border:1px solid #647c91;border-radius:6px;padding:10px;font:inherit}#announcementForm .announcement-pin{display:flex;align-items:center;gap:8px}

/* Logo strony głównej: proporcjonalne, z pominięciem nadmiaru białego marginesu w kadrze. */
.hub-brand{width:min(480px,100%);aspect-ratio:3/1;margin:0 0 24px;overflow:hidden;background:transparent}
.hub-brand img{display:block;width:100%;height:100%;object-fit:cover;object-position:center}
@media(max-width:600px){.hub-brand{width:min(340px,100%);margin-bottom:22px}}

/* Stage 112: czytelniejsze cyfry i podgląd meczu. */
body.scorer-window.scorer-open #windowControls .score-keypad button[data-key]:not([data-key="back"]){font-size:var(--score-digit-size,36px);line-height:1;font-weight:800;padding:0}
.tv-watch-player{position:relative;padding-left:38px}
.tv-watch-player .tv-throwing-label{position:absolute;left:9px;top:50%;transform:translateY(-50%);writing-mode:vertical-rl;text-orientation:mixed;font-size:12px;line-height:1;white-space:nowrap}
.tv-watch-player>span.tv-player-stat{font-size:clamp(16px,1.8vw,22px);line-height:1.45}.tv-player-stat>b{font-size:1.15em}
.tv-history .leg-history{margin:14px 0}.tv-history .leg-history>summary{cursor:pointer;padding:14px;font-size:17px;line-height:1.5}
@media(max-width:500px){.tv-watch-player{padding-left:27px;padding-right:8px}.tv-watch-player .tv-throwing-label{left:6px;font-size:10px}.tv-watch-player>span.tv-player-stat{font-size:16px}}

.profile-photo{width:120px;height:120px;object-fit:cover;border-radius:50%;border:2px solid #d8ff4f}.profile-photo-actions{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin:12px 0}.round-summary-dialog{width:min(900px,95vw);max-height:94vh;overflow:auto}.round-summary-dialog img{display:block;width:100%;height:auto;margin:16px 0}.round-summary-dialog .summary-actions{display:flex;gap:16px;flex-wrap:wrap}

/* Stage 114: zawsze dostępne zamknięcie wysokiego podglądu. */
.round-summary-dialog .summary-actions{position:sticky;top:0;z-index:2;background:#11151a;padding:12px 0;border-bottom:1px solid #526170;align-items:center;justify-content:space-between}.round-summary-dialog .summary-actions button{min-height:44px;color:#142000;background:#d8ff4f}.round-summary-dialog::backdrop{background:#000b}

/* Stage 119: większe kafelki i zwijane kolejki panelu turnieju. */
.tournament-page #cards{grid-template-columns:repeat(auto-fill,minmax(min(100%,410px),1fr));gap:22px}
.tournament-page #cards .card{min-height:170px;padding:28px;border-radius:16px;display:flex;flex-direction:column;justify-content:center;transition:border-color .15s,background .15s}
.tournament-page #cards .card:hover{border-color:#a5c73b;background:#192128}
.tournament-page #cards .card>b{font-size:25px;line-height:1.25}
.tournament-page #cards .card p{font-size:15px;line-height:1.8;margin:16px 0 0;color:#ccd5df}
.tournament-page #gen{background:#62d7ff;color:#082333;padding:15px 24px;margin-top:18px;min-height:50px;font-size:16px;border:1px solid #a4eaff}
.tournament-page #gen:hover:not(:disabled){background:#a4eaff}
.tournament-page #gen:disabled{opacity:.45;cursor:not-allowed}
.tournament-page details.tournament-round{padding:0;margin:14px 0;border:1px solid #465567;border-radius:12px;background:#141c25;overflow:hidden}
.tournament-round>summary{display:flex;align-items:center;gap:14px;flex-wrap:wrap;cursor:pointer;list-style:none;padding:17px 18px;background:#213044;min-height:62px}
.tournament-round>summary::-webkit-details-marker{display:none}
.tournament-round>summary:focus-visible{outline:3px solid #d8ff4f;outline-offset:-3px}
.tournament-round .round-title{font-size:18px;font-weight:700;color:#fff}
.tournament-round .round-count{font-size:13px;color:#cedcec}
.tournament-round .round-toggle{margin-left:auto;color:#9ce6ff;font-weight:700;font-size:13px}
.tournament-round .when-open,.tournament-round[open] .when-closed{display:none}
.tournament-round[open] .when-open{display:inline}
.tournament-round .round-matches{padding:4px 12px 10px}
.tournament-round .match{border:1px solid #334253;margin:10px 0;background:#101820}
@media(max-width:600px){.tournament-page #cards .card{padding:22px;min-height:155px}.tournament-page #cards .card>b{font-size:23px}.tournament-round>summary{padding:14px 12px;gap:8px}.tournament-round .round-count{order:3;flex-basis:100%}.tournament-round .round-matches{padding:2px 6px 6px}}

/* Stage 120: aktywny mecz oraz nazwiska bliżej wyniku. */
.tournament-page #matches .match{grid-template-columns:minmax(0,220px) auto minmax(0,220px);justify-content:center}
.tournament-page #matches .match-player{text-align:center;overflow-wrap:anywhere;min-width:0;line-height:1.4}
.tournament-page #matches .match-player small{display:block}
.tournament-page #matches .match.match-in-progress{background:#10342e;border:2px solid #46d9b0;box-shadow:inset 4px 0 0 #46d9b0}
.match-live-status{grid-column:1/-1;justify-self:center;background:#46d9b0;color:#06271e;border-radius:20px;font-size:12px;font-weight:800;letter-spacing:.08em;padding:6px 12px}

/* Stage 121: nazwiska przy wyniku, akcje przy prawej krawędzi karty. */
.tournament-page #matches .match{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr)}
.tournament-page #matches .player-a{width:min(100%,220px);justify-self:end}
.tournament-page #matches .player-b{width:min(100%,220px);justify-self:start}
.tournament-page #matches .match-actions,.tournament-page #matches .board-assign{display:flex;flex-wrap:wrap;justify-content:flex-end;justify-self:stretch}
.tournament-page #matches .match-actions button{width:auto;flex:0 0 auto}
.tournament-page #matches .board-assign select{width:min(220px,100%);flex:0 1 220px}
.tournament-page #matches .board-assign button{width:auto;flex:0 0 auto}
.tournament-page .scorer-action{background:#62d7ff;color:#082333;border:1px solid #a4eaff;min-height:44px;padding:11px 18px;font-weight:800}
.tournament-page .scorer-action:hover{background:#a4eaff}
.tournament-page .scorer-action:focus-visible{outline:3px solid white;outline-offset:3px}

/* Stage 122: stała szerokość kreatora i osobny wiersz podpowiedzi. */
#nd{width:540px;max-width:calc(100vw - 24px);min-width:0;overflow-x:hidden}
#nd>input,#nd>select,#nd #groupField input{display:block;width:100%;max-width:100%;min-width:0;margin:6px 0 14px}
#nd>label:not(.new-tournament-checkout),#nd #groupField>label{display:block;white-space:normal;overflow-wrap:anywhere}
#nd p{max-width:100%;white-space:normal;overflow-wrap:anywhere;line-height:1.5}
#nd .new-tournament-heading{min-width:0}
#nd .new-tournament-heading h2{min-width:0;overflow-wrap:anywhere}
#nd .new-tournament-checkout{display:flex;align-items:flex-start;gap:10px;margin:18px 0;padding:14px;border:1px solid #394956;border-radius:9px;cursor:pointer;line-height:1.5}
#nd .new-tournament-checkout input{flex:0 0 20px;width:20px;height:20px;margin:1px 0 0;padding:0;accent-color:#d8ff4f}
#nd .new-tournament-checkout span{min-width:0;white-space:normal;overflow-wrap:anywhere}
#nd .new-tournament-actions{border-top:1px solid #293039;padding-top:16px}

#drawGroups{background:#62d7ff;color:#082333;margin:8px 0 12px;padding:14px 18px}.guest-view #drawGroups{display:none}

.directory-heading{display:flex;align-items:center;justify-content:space-between;gap:18px;flex-wrap:wrap}.directory-heading h1{flex:1}.directory-heading button{min-height:46px}#playerAdminDialog{width:700px;max-width:calc(100vw - 24px);max-height:90dvh;overflow-y:auto}#playerAdminDialog .panel{margin:14px 0}#playerAdminDialog input,#playerAdminDialog textarea{display:block;width:100%;margin:8px 0 14px;box-sizing:border-box}#playerAdminDialog textarea{background:#0c0f13;color:white;padding:12px;border:1px solid #46515d;border-radius:8px;resize:vertical}#directoryAdminMessage{overflow-wrap:anywhere}

/* Stage 125: rzeczywiste połączenia meczów fazy pucharowej. */
#bracketPane{min-width:0;max-width:100%}.tournament-page .cols>div{min-width:0}.bracket-scroll{max-width:100%;overflow:auto;padding:12px 6px;background:#0b1017;border:1px solid #344454;border-radius:12px}.bracket-canvas{position:relative}.bracket-round-title{position:absolute;top:0;width:240px;margin:0;text-align:center;color:#9fe5ff;font-size:17px}.bracket-lines{position:absolute;inset:0;pointer-events:none}.bracket-lines path{fill:none;stroke:#506a80;stroke-width:2}.bracket-match{position:absolute;width:240px;height:78px;padding:0;background:#182432;color:white;border:1px solid #567089;border-radius:8px;text-align:left;overflow:visible}.bracket-match:disabled{opacity:1;cursor:default;background:#131c26;color:#a4b3c1}.bracket-match:not(:disabled):hover{border-color:#d8ff4f}.bracket-match:focus-visible{outline:3px solid #d8ff4f;outline-offset:3px}.bracket-player{height:38px;display:grid;grid-template-columns:28px minmax(0,1fr) 24px;gap:5px;align-items:center;padding:4px 8px;font-size:12px}.bracket-player+.bracket-player{border-top:1px solid #344454}.bracket-player>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bracket-player small{color:#9fb7cd;font-size:11px}.bracket-player b{text-align:center;font-size:18px}.bracket-winner{color:#d8ff4f}.bracket-live{border:2px solid #46d9b0;background:#10342e}.bracket-note{position:absolute;right:8px;bottom:-17px;font-size:10px;color:#9fb7cd}

.bracket-organization{position:absolute;width:240px;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:5px 8px;font-size:11px;color:#b8cddd}.bracket-organization>span:first-child{grid-column:1/-1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bracket-organization button{font-size:11px;padding:5px 8px}.bracket-organization>span{align-self:center}#matchOrganizationDialog{width:430px;max-width:calc(100vw - 24px)}#matchOrganizationDialog input{width:100%;margin:8px 0 16px}#matchOrganizationDialog label{display:block}#matchOrganizationNames{overflow-wrap:anywhere}

/* Stage 129: czytelne dane organizacyjne pod każdym meczem. */
.bracket-organization{font-size:16px;font-weight:700;color:#f2f7ff;gap:7px 8px;line-height:1.25}
.bracket-organization>span:first-child{color:#bdeaff}
.bracket-organization>span:nth-child(2){background:#293e53;color:#fff;padding:5px 7px;border-radius:5px}
.bracket-organization button{font-size:12px;min-height:30px}

/* Stage 130: sędzia i tarcza we wspólnej ramce spotkania. */
.bracket-fixture{position:absolute;width:240px;border:1px solid #567089;border-radius:9px;background:#131c26;overflow:hidden}
.bracket-fixture .bracket-match{position:relative;display:block;width:100%;height:78px;border:0;border-radius:0}
.bracket-fixture .bracket-organization{position:static;width:100%;padding:8px;border-top:1px solid #567089;background:transparent;gap:6px;font-size:15px}
.bracket-fixture .bracket-organization>span:nth-child(2){background:transparent;padding:0;border-radius:0;color:#dcff75}
.bracket-fixture .bracket-note{position:static;display:block;text-align:right;padding-right:8px}
.bracket-fixture:has(.bracket-note) .bracket-match{height:92px}

/* Stage 132: dane meczu pod nazwiskiem, wspólna ramka z sędzią i tarczą. */
.bracket-fixture .bracket-match{height:128px}.bracket-fixture:has(.bracket-note) .bracket-match{height:145px}
.bracket-player{height:64px;grid-template-rows:27px 22px;gap:2px 5px;font-size:14px}.bracket-player .bracket-stats{grid-column:1/-1;font-size:11px;font-weight:400;white-space:nowrap;color:#d5e5f2}.bracket-player em{font-style:normal}.bracket-winner{background:#d8ff4f19}.bracket-player.bracket-winner .bracket-stats{color:#e6ffad}

.bracket-fixture,.bracket-round-title{width:300px}

/* Stage 133: punkty obok legów; pod nazwiskiem wyraźna średnia. */
.bracket-player{grid-template-columns:24px minmax(0,1fr) auto}.bracket-player .bracket-score-pair{display:flex;align-items:center;gap:9px;overflow:visible;white-space:nowrap}.bracket-points{font-size:18px;font-weight:700;color:#c4eaff}.bracket-points small{font-size:10px;font-weight:400}.bracket-score-pair b{border-left:1px solid #60758a;padding-left:9px;min-width:22px}.bracket-player .bracket-stats{font-size:18px;font-weight:700;line-height:22px;color:#f3f8ff}

/* Stage 136: bez oznaczeń grupy i miejsca awansu. */
.bracket-player{grid-template-columns:minmax(0,1fr) auto}

/* Stage 137: nazwisko jest główną informacją w wierszu zawodnika. */
.bracket-player>span:first-child{font-size:18px;font-weight:800;color:#fff;line-height:23px}.bracket-player .bracket-stats{font-size:15px;font-weight:500;color:#b9cadb;line-height:20px}.bracket-player.bracket-winner>span:first-child{color:#dcff61}.bracket-player.bracket-winner .bracket-stats{color:#c1d49c}

/* Stage 138: czytelniejsza średnia przy zachowaniu przewagi nazwiska. */
.bracket-player .bracket-stats{font-size:17px;font-weight:600;color:#e3edf7;line-height:21px}.bracket-player.bracket-winner .bracket-stats{color:#e3edc9}

/* Stage 139: pełne nazwiska; wysokość kart rośnie wraz z treścią. */
.bracket-player{height:auto;min-height:64px;grid-template-rows:auto auto;padding:6px 8px}.bracket-player>span:first-child{white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:anywhere}.bracket-fixture .bracket-match,.bracket-fixture:has(.bracket-note) .bracket-match{height:auto}

.bracket-stats .bracket-average-label{font-size:13px;font-weight:400}
.directory-tools{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin:18px 0}.directory-tools label{display:flex;gap:8px;align-items:center}.directory-selection{display:flex;gap:8px;align-items:center;padding:8px}.directory-selection input{width:20px;height:20px;margin:0}.profile-directory.directory-list-view{display:flex;flex-direction:column;gap:8px}.directory-list-view .directory-entry{display:flex;align-items:center;gap:12px}.directory-list-view .profile-tile{flex:1;min-width:0;padding:10px}.directory-list-view .directory-selection{flex-shrink:0}@media(max-width:600px){.directory-list-view .directory-entry{flex-wrap:wrap}.directory-tools button{min-height:42px}}

.directory-list-view .directory-entry{flex-direction:row}.directory-list-view .profile-tile{flex-basis:180px}

/* Stage 142: narzędzia po prawej, dyskretny wybór przy nazwisku. */
.directory-tools{justify-content:flex-end}.directory-entry{position:relative;display:grid;grid-template-columns:28px minmax(0,1fr);align-items:start;gap:8px;padding:10px;border:1px solid #293039;border-radius:12px;background:#11151a}.directory-entry.is-selected{border-color:#a9cf4b;box-shadow:inset 0 0 0 1px #a9cf4b}.directory-selection{padding:8px 0;margin:0;cursor:pointer;justify-content:center}.directory-selection input{width:19px;height:19px;accent-color:#d8ff4f;cursor:pointer}.directory-entry .profile-tile{border:0;background:transparent;border-radius:6px;padding:6px;min-width:0}.directory-entry>button[data-delete-profile]{grid-column:2;justify-self:end;align-self:center;font-size:12px;padding:5px 9px;min-height:28px;width:auto;margin:0}.directory-list-view .directory-entry{display:grid;grid-template-columns:28px minmax(0,1fr) auto;align-items:center;gap:8px}.directory-list-view .directory-entry>button[data-delete-profile]{grid-column:3}.directory-list-view .profile-tile{padding:6px}.directory-selection:focus-within{outline:2px solid #d8ff4f;outline-offset:2px;border-radius:4px}@media(max-width:600px){.directory-list-view .directory-entry{grid-template-columns:28px minmax(0,1fr)}.directory-list-view .directory-entry>button[data-delete-profile]{grid-column:2}}

#directoryExportTools{display:flex;flex-wrap:wrap;gap:12px;align-items:center;justify-content:flex-end}#directoryExportTools[hidden]{display:none}.directory-readonly .directory-entry,.directory-list-view.directory-readonly .directory-entry{grid-template-columns:minmax(0,1fr)}

/* Stage 145: wspólne proporcje przycisków w pionie i poziomie. */
body.scorer-window.scorer-open #windowControls .score-keypad{width:100%;margin-inline:auto;justify-self:center}#scorerFullscreen{font-size:12px;padding:6px 10px;min-height:32px;white-space:nowrap}#scorerFullscreen[hidden]{display:none}

/* Stage 146: w poziomie więcej wysokości dla klawiatury. */
@media(orientation:landscape) and (min-height:501px){
 body.scorer-window.scorer-open #windowScores .scoreboard>div{display:grid;grid-template-columns:minmax(0,1fr) auto auto;grid-template-rows:auto auto auto;gap:2px 12px;padding:6px 12px 6px 26px;text-align:left;align-content:center;min-height:76px}
 body.scorer-window.scorer-open #windowScores .scoreboard>div>b{grid-column:1;grid-row:1;font-size:18px;line-height:21px;margin:0}
 body.scorer-window.scorer-open #windowScores .scoreboard>div>strong{grid-column:2;grid-row:1/4;font-size:60px;line-height:1;align-self:center}
 body.scorer-window.scorer-open #windowScores .score-averages{grid-column:1;grid-row:2;justify-content:flex-start;margin:0;gap:8px}
 body.scorer-window.scorer-open #windowScores .score-last-visit{grid-column:1;grid-row:3;margin:0}
 body.scorer-window.scorer-open #windowScores .leg-score{position:static;grid-column:3;grid-row:1/4;align-self:center;margin:0;min-width:65px;padding:4px 6px;gap:5px}
 body.scorer-window.scorer-open #windowScores .team-members{grid-column:1/-1;grid-row:4;font-size:11px;line-height:13px;margin:0}
 body.scorer-window.scorer-open #windowControls .scorer-entry{grid-template-columns:minmax(0,1fr) minmax(120px,1fr) minmax(0,1fr);gap:6px}
 body.scorer-window.scorer-open #remainingMode{grid-column:1;grid-row:2;height:34px;min-height:34px}
 body.scorer-window.scorer-open #windowVisit{grid-column:2;grid-row:2;height:34px;min-height:34px;margin:0}
 body.scorer-window.scorer-open #windowUndo{grid-column:3;grid-row:2;height:34px;min-height:34px}
 body.scorer-window.scorer-open #windowControls .score-keypad{grid-row:3;gap:8px}
}

/* Stage 147: mniejszy odstęp od nagłówka na stronie startowej i wyborze meczu. */
:is(.home-landing,.friendlies-landing) .hub-main{padding-top:18px}.friendlies-landing .hub-eyebrow{margin-top:0}@media(max-width:850px){:is(.home-landing,.friendlies-landing) .hub-main{padding-top:12px}}
