/* Open Play only. The statistics model stays intact; the old strip occupies no space. */
.openplay-app #openplayStickyHeader #activeSessionSummary{display:none!important}
.openplay-app .op-ad-carousel{position:relative;isolation:isolate;box-sizing:border-box;width:100%;min-width:0;height:140px;margin:0 0 16px;border-radius:16px;overflow:hidden;background:#eaf5f4;color:#075056}
.openplay-app .op-ad-carousel[hidden]{display:none!important}
.op-ad-viewport{width:100%;height:100%;overflow:hidden;touch-action:pan-y;cursor:grab;user-select:none;-webkit-user-select:none}
.op-ad-viewport:active{cursor:grabbing}
.op-ad-track{display:flex;width:100%;height:100%;will-change:transform}
.op-ad-slide{flex:0 0 100%;width:100%;height:100%;min-width:0}
.op-ad-link,.op-ad-link picture{display:block;width:100%;height:100%}
.op-ad-link img{display:block;width:100%;height:100%;object-fit:contain;pointer-events:none}
.op-ad-label{position:absolute;left:20px;top:12px;font-size:9px;line-height:1.4;letter-spacing:1.5px;font-weight:700;color:#075056;background:#ffffffeb;border-radius:4px;padding:3px 6px;pointer-events:none}
.openplay-app .op-ad-carousel .op-ad-arrow{position:absolute;top:50%;transform:translateY(-50%);display:grid;place-items:center;width:44px;height:44px;min-height:44px;padding:0;border:1px solid #07505620;border-radius:50%;background:#ffffffed!important;color:#075056!important;box-shadow:none;font-size:30px;font-weight:400;line-height:1;cursor:pointer}
.op-ad-prev{left:10px}.op-ad-next{right:10px}
.op-ad-dots{position:absolute;bottom:0;left:50%;transform:translateX(-50%);display:flex;align-items:center;justify-content:center;gap:0}
.openplay-app .op-ad-carousel .op-ad-dot{display:grid;place-items:center;width:32px;min-width:32px;height:44px;min-height:44px;padding:0;border:0;background:transparent!important;box-shadow:none;border-radius:8px;cursor:pointer}
.op-ad-dot:before{content:'';width:7px;height:7px;border-radius:50%;background:#fff;border:1px solid #07505680;box-shadow:0 0 0 3px #ffffffa0}
.op-ad-dot[aria-pressed=true]:before{background:#075056;border-color:#075056}
.openplay-app .op-ad-carousel button:hover{filter:brightness(.96)}
.openplay-app .op-ad-carousel :is(button,a):focus-visible{outline:2px solid #075056!important;outline-offset:-4px}
.openplay-app #setupAccountControls [data-auth-open=create],.openplay-app #mobileGuestAuth [data-auth-open=create]{background:#fff!important;border:1px solid #075056!important;color:#075056!important;--control-ink:#075056!important;border-radius:10px;font-weight:750;box-shadow:none}
.openplay-app #setupAccountControls [data-auth-open=create]:hover,.openplay-app #mobileGuestAuth [data-auth-open=create]:hover{background:#eaf5f4!important;color:#075056!important}
.openplay-app #setupAccountControls [data-auth-open]{min-height:44px;line-height:20px}
.openplay-app #setupAccountControls [data-auth-open=create]:focus-visible,.openplay-app #mobileGuestAuth [data-auth-open=create]:focus-visible{outline:2px solid #075056!important;outline-offset:3px}
/* Keep the structural border width for identical spacing, but remove the outer
   panel frame in every interaction state. Nested controls retain their focus rings. */
.openplay-app #liveMatchControl,
.openplay-app #liveMatchControl:is(:hover,:active,:focus,:focus-visible,:focus-within){border-color:transparent!important;outline:none!important;box-shadow:none!important}
.openplay-app #liveMatchControl #nextGames{align-items:start!important}
.openplay-app #liveMatchControl #nextGames .queue-court-card{min-height:0!important;height:auto!important;padding:14px 16px!important;gap:10px!important}
.openplay-app #liveMatchControl #nextGames .queue-court-empty{display:grid!important;grid-template-columns:32px minmax(0,1fr);align-items:center;column-gap:12px!important;row-gap:12px!important}
.openplay-app #liveMatchControl #nextGames .queue-court-top{grid-column:1/-1;min-width:0;align-items:center!important;min-height:44px!important;margin-bottom:0!important}
.openplay-app #liveMatchControl #nextGames .queue-court-title{min-width:0;flex-wrap:wrap;gap:6px 10px!important}
.openplay-app #liveMatchControl #nextGames .queue-court-title strong{overflow-wrap:anywhere;min-width:0}
.openplay-app #liveMatchControl #nextGames .queue-empty-visual{width:32px!important;height:32px!important;margin:0!important;color:#075056!important;grid-column:1;grid-row:2}
.openplay-app #liveMatchControl #nextGames .queue-empty-visual svg{width:28px!important;height:28px!important}
.openplay-app #liveMatchControl #nextGames .queue-empty-copy{grid-column:2;grid-row:2;border:0!important;padding:0!important;margin:0!important;text-align:left!important;min-height:0!important}
.openplay-app #liveMatchControl #nextGames .queue-empty-copy strong{font-size:15px!important;line-height:1.4!important}
.openplay-app #liveMatchControl #nextGames .queue-empty-copy small{display:block;margin-top:3px;font-size:12px!important;line-height:1.5!important}
.openplay-app #liveMatchControl #nextGames .queue-empty-actions{grid-column:1/-1;margin:0!important;gap:10px!important}
.openplay-app #liveMatchControl #nextGames .queue-team{gap:8px!important;padding:4px 0!important}
@media(max-width:700px){
 .openplay-app .op-ad-carousel{height:160px;border-radius:14px;margin-bottom:12px}
 .op-ad-label{left:14px;top:10px;font-size:8px}
 .op-ad-prev{left:4px}.op-ad-next{right:4px}
 .openplay-app .op-ad-carousel .op-ad-dot{width:44px;min-width:44px}
 .openplay-app #liveMatchControl #nextGames .queue-court-card{padding:12px!important}
}
@media(prefers-reduced-motion:reduce){.op-ad-track{transition:none!important}}

/* Attendance feedback uses the full registered roster, independent of pagination. */
.openplay-app .check-in-controls{display:flex;align-items:center;justify-content:flex-end;gap:10px;flex-wrap:wrap;min-width:0}
.openplay-app #checkInFeedback{display:inline-flex;align-items:center;gap:5px;font-size:12px;line-height:1.4;color:#64748b}
.openplay-app #checkInFeedback svg{display:none;width:16px;height:16px;flex:none;color:#43856a}
.openplay-app #checkInFeedback.all-checked-in svg{display:block}
.openplay-app #checkInAll{min-height:44px}
.openplay-app .continue-courts{display:none!important}
.openplay-app #playersCard,.openplay-app #playersCard:is(:hover,:active,:focus,:focus-visible,:focus-within){border-color:transparent!important;outline:none!important;box-shadow:none!important}
@media(max-width:700px){.openplay-app .check-in-controls{flex:1 1 auto}.openplay-app .player-head-actions{flex-wrap:wrap}}

@media(max-width:700px){.openplay-app .player-head-actions .check-in-controls{grid-column:1/-1;width:100%;flex-wrap:nowrap;justify-content:space-between}.openplay-app .check-in-controls #checkInAll{width:auto;flex:0 0 auto}.openplay-app #checkInFeedback{flex:1 1 auto}}

/* Wide desktop artwork and compact live workspace; content remains naturally sized. */
@media(min-width:901px){
 .openplay-app .op-ad-label{top:4px}
 .openplay-app #openplayStickyHeader{margin-bottom:8px!important}
 .openplay-app #openplayStickyHeader .openplay-topbar{padding:6px 24px!important}
 .openplay-app .op-ad-carousel{height:auto;aspect-ratio:12/1;margin-bottom:8px}
 .openplay-app #liveMatchControl{padding:clamp(12px,calc((100svh - 700px)*.12),24px) 24px!important;min-height:calc(100svh - 76px - (100vw - 56px)/12);display:flex;flex-direction:column}
 .openplay-app #liveMatchControl .head{margin-bottom:6px!important}
 .openplay-app #liveMatchControl .live-courts-block{flex:1;display:flex;flex-direction:column}
 .openplay-app #liveMatchControl #nextGames{flex:1;grid-auto-rows:1fr;align-items:stretch!important;gap:24px 36px!important}
 .openplay-app #liveMatchControl #nextGames .queue-court-card{padding:0!important;gap:10px!important}
 .openplay-app #liveMatchControl #nextGames .queue-team{gap:4px!important;padding:0!important}
 .openplay-app #liveMatchControl #nextGames .queue-player{gap:0!important}
 .openplay-app #liveMatchControl #nextGames .queue-player strong{line-height:1.3!important}
 .openplay-app #liveMatchControl #nextGames .queue-player-meta{line-height:1.3!important}
 .openplay-app #liveMatchControl #nextGames .score-control{grid-template-columns:44px minmax(0,1fr) 44px!important}
 .openplay-app #liveMatchControl #nextGames .score-btn{width:44px!important;height:44px!important;min-height:44px!important}
 .openplay-app #liveMatchControl #nextGames .score-input{height:44px!important}
}
.openplay-app #liveMatchControl #nextGames .queue-court-card,
.openplay-app #liveMatchControl #nextGames .queue-court-card:is(:hover,:active,:focus,:focus-visible,:focus-within){border-color:transparent!important;outline:none!important;box-shadow:none!important}

/* Courts share a white surface in every state, including newly rendered courts. */
.openplay-app #liveMatchControl #nextGames .queue-court-card{background:#fff!important;background-image:none!important;overflow:visible!important;align-self:stretch!important}
.openplay-app #liveMatchControl #nextGames .complete-game-btn,.openplay-app #liveMatchControl #nextGames .queue-court-actions{margin-top:auto!important}
.openplay-app #liveMatchControl #nextGames .queue-court-empty{display:flex!important;flex-direction:column!important;align-items:stretch!important;min-height:240px!important}
.openplay-app #liveMatchControl #nextGames .queue-empty-visual{align-self:center!important;margin: auto auto 0!important;width:32px!important;height:32px!important}
.openplay-app #liveMatchControl #nextGames .queue-empty-copy{text-align:center!important;flex:0 0 auto!important}
.openplay-app #liveMatchControl #nextGames .queue-empty-actions{margin-top:auto!important;padding-top:12px}
@media(min-width:901px) and (min-height:900px){.openplay-app #liveMatchControl #nextGames{row-gap:32px!important}.openplay-app #liveMatchControl #nextGames .queue-court-card{gap:14px!important}}

/* Guest Reset sits between navigation and account controls. */
.openplay-app #openplayStickyHeader #guestResetSession{display:inline-flex;align-items:center;justify-content:center;gap:8px;flex:0 0 auto;min-height:44px;padding:10px 13px;border:1px solid #b42318!important;border-radius:9px;background:#fff!important;color:#b42318!important;--control-ink:#b42318!important;box-shadow:none!important;font-size:13px;line-height:20px;font-weight:500}
.openplay-app #openplayStickyHeader #guestResetSession:hover{background:#fef2f2!important;border-color:#b42318!important;color:#b42318!important}
.openplay-app #openplayStickyHeader #guestResetSession:focus-visible{outline:3px solid #b4231880!important;outline-offset:3px}
.openplay-app #openplayStickyHeader #guestResetSession[hidden]{display:none!important}
@media(max-width:700px){.openplay-app #openplayStickyHeader #guestResetSession{padding:8px 12px}}

.openplay-app #openplayStickyHeader #guestResetSession svg{width:18px;height:18px;flex:none}

/* Approved four-court layout: contained width and inset court content. */
@media(min-width:901px){
 .openplay-app #liveMatchControl{width:calc(100% - 32px)!important;max-width:1280px!important;margin-inline:auto!important;padding-inline:32px!important}
 .openplay-app #liveMatchControl .active-section-head{margin-bottom:20px!important}
 .openplay-app #liveMatchControl #nextGames{column-gap:56px!important;row-gap:32px!important}
 .openplay-app #liveMatchControl #nextGames .queue-court-title strong{font-size:18px!important;font-weight:600!important}
 .openplay-app #liveMatchControl #nextGames .queue-matchup{width:calc(100% - 40px)!important;align-self:center!important}
 .openplay-app #liveMatchControl #nextGames .queue-team{gap:12px!important}
 .openplay-app #liveMatchControl #nextGames .queue-player strong{font-size:16px!important}
 .openplay-app #liveMatchControl #nextGames .queue-player-meta small{font-size:12px!important}
 .openplay-app #liveMatchControl #nextGames :is(.active-score-row,.complete-game-btn,.queue-court-actions,.queue-empty-actions){width:calc(100% - 32px)!important;align-self:center!important}
 .openplay-app #liveMatchControl #nextGames .queue-court-actions{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:12px!important}
 .openplay-app #liveMatchControl #nextGames .queue-court-actions button{min-width:0!important;width:100%!important}
 .openplay-app #liveMatchControl #nextGames .queue-empty-copy strong{font-size:16px!important}
 .openplay-app #liveMatchControl #nextGames .queue-empty-copy small{font-size:13px!important}
}
@media(min-width:901px) and (max-width:1100px){
 .openplay-app #liveMatchControl{width:100%!important;padding-inline:24px!important}
 .openplay-app #liveMatchControl #nextGames{column-gap:32px!important}
 .openplay-app #liveMatchControl #nextGames .queue-matchup{width:100%!important}
}
@media(min-width:901px){
 .openplay-app #liveMatchControl #nextGames .queue-matchup .queue-team .queue-player strong{text-align:left!important}
 .openplay-app #liveMatchControl #nextGames .queue-matchup .queue-team .queue-player-meta{justify-content:flex-start!important;text-align:left!important}
}

/* Full artwork: container and source use the same aspect ratio at every width. */
.openplay-app .op-ad-carousel{height:auto;aspect-ratio:1600/134}
@media(max-width:900px){.openplay-app .op-ad-carousel{height:auto;aspect-ratio:768/480}}

/* Two courts occupy one natural-height row, rather than filling the viewport.
   :has follows court additions/removals and every match re-render automatically. */
.openplay-app #liveMatchControl:has(#nextGames>.queue-court-card:nth-child(2):last-child){width:100%!important;max-width:none!important;min-height:0!important;height:auto!important;margin-inline:0!important}
.openplay-app #liveMatchControl:has(#nextGames>.queue-court-card:nth-child(2):last-child) .live-courts-block{flex:0 0 auto!important}
.openplay-app #liveMatchControl:has(#nextGames>.queue-court-card:nth-child(2):last-child) #nextGames{flex:0 0 auto!important;grid-auto-rows:auto!important;align-items:stretch!important}
@media(min-width:901px){
 .openplay-app #liveMatchControl:has(#nextGames>.queue-court-card:nth-child(2):last-child){padding:24px 32px!important}
 .openplay-app #liveMatchControl:has(#nextGames>.queue-court-card:nth-child(2):last-child) #nextGames{gap:28px 40px!important}
 .openplay-app #liveMatchControl:has(#nextGames>.queue-court-card:nth-child(2):last-child) #nextGames .queue-court-card{gap:18px!important}
 .openplay-app #liveMatchControl:has(#nextGames>.queue-court-card:nth-child(2):last-child) #nextGames .queue-matchup{width:calc(100% - 24px)!important}
 .openplay-app #liveMatchControl:has(#nextGames>.queue-court-card:nth-child(2):last-child) #nextGames :is(.active-score-row,.complete-game-btn,.queue-court-actions){width:100%!important}
}

/* Three or more courts: responsive columns with content-sized rows. */
.openplay-app #liveMatchControl:has(#nextGames>.queue-court-card:nth-child(3)){width:100%!important;max-width:none!important;min-height:0!important;height:auto!important;margin-inline:0!important;padding:24px!important;--court-columns:2}
.openplay-app #liveMatchControl:has(#nextGames>.queue-court-card:nth-child(3)) .live-courts-block{flex:0 0 auto!important}
.openplay-app #liveMatchControl:has(#nextGames>.queue-court-card:nth-child(3)) #nextGames{flex:0 0 auto!important;grid-template-columns:repeat(var(--court-columns),minmax(0,1fr))!important;grid-auto-rows:auto!important;gap:28px 24px!important;align-items:stretch!important}
.openplay-app #liveMatchControl:has(#nextGames>.queue-court-card:nth-child(3)) #nextGames .queue-court-card{position:relative;min-height:0!important;padding:0!important;gap:14px!important;display:flex!important;flex-direction:column!important}
.openplay-app #liveMatchControl:has(#nextGames>.queue-court-card:nth-child(3)) #nextGames .queue-court-card::before{content:'';position:absolute;left:-13px;top:0;bottom:0;width:1px;background:#e9efed;pointer-events:none}
.openplay-app #liveMatchControl:has(#nextGames>.queue-court-card:nth-child(3)) #nextGames .queue-court-card:nth-child(2n+1)::before{display:none}
.openplay-app #liveMatchControl:has(#nextGames>.queue-court-card:nth-child(3)) #nextGames :is(.queue-matchup,.active-score-row,.complete-game-btn,.queue-court-actions){width:100%!important;min-width:0!important}
.openplay-app #liveMatchControl:has(#nextGames>.queue-court-card:nth-child(3)) #nextGames .queue-court-title{gap:6px!important}
.openplay-app #liveMatchControl:has(#nextGames>.queue-court-card:nth-child(3)) #nextGames .queue-court-title strong{font-size:16px!important}
.openplay-app #liveMatchControl:has(#nextGames>.queue-court-card:nth-child(3)) #nextGames .queue-player strong{font-size:14px!important;overflow-wrap:anywhere!important}
.openplay-app #liveMatchControl:has(#nextGames>.queue-court-card:nth-child(3)) #nextGames .queue-player-meta small{font-size:11px!important}
.openplay-app #liveMatchControl:has(#nextGames>.queue-court-card:nth-child(3)) #nextGames .queue-matchup{grid-template-columns:minmax(0,1fr) 18px minmax(0,1fr)!important;gap:6px!important}
.openplay-app #liveMatchControl:has(#nextGames>.queue-court-card:nth-child(3)) #nextGames .active-score-row{grid-template-columns:minmax(0,1fr) 12px minmax(0,1fr)!important;gap:4px!important;margin-top:auto!important}
.openplay-app #liveMatchControl:has(#nextGames>.queue-court-card:nth-child(3)) #nextGames .score-control{grid-template-columns:44px minmax(32px,1fr) 44px!important;gap:2px!important}
.openplay-app #liveMatchControl:has(#nextGames>.queue-court-card:nth-child(3)) #nextGames .score-btn{width:44px!important;min-width:44px!important;height:44px!important;min-height:44px!important}
.openplay-app #liveMatchControl:has(#nextGames>.queue-court-card:nth-child(3)) #nextGames .score-input{height:44px!important;font-size:18px!important;padding:2px!important}
.openplay-app #liveMatchControl:has(#nextGames>.queue-court-card:nth-child(3)) #nextGames .complete-game-btn{margin-top:0!important}
.openplay-app #liveMatchControl:has(#nextGames>.queue-court-card:nth-child(3)) #nextGames .queue-court-actions{display:grid!important;grid-template-columns:minmax(0,1fr)!important;gap:10px!important;margin-top:auto!important}
.openplay-app #liveMatchControl:has(#nextGames>.queue-court-card:nth-child(3)) #nextGames .queue-empty-visual{margin:22px auto 0!important}
.openplay-app #liveMatchControl:has(#nextGames>.queue-court-card:nth-child(3)) #nextGames .queue-empty-copy{margin:0 0 14px!important}
.openplay-app #liveMatchControl:has(#nextGames>.queue-court-card:nth-child(3)) #nextGames .queue-court-actions button{white-space:normal!important}
@media(min-width:1200px){
 .openplay-app #liveMatchControl:has(#nextGames>.queue-court-card:nth-child(3)):has(#nextGames>.queue-court-card:nth-child(3):last-child){--court-columns:3}
 .openplay-app #liveMatchControl:has(#nextGames>.queue-court-card:nth-child(3)):has(#nextGames>.queue-court-card:nth-child(3):last-child) #nextGames .queue-court-card::before{display:block}
 .openplay-app #liveMatchControl:has(#nextGames>.queue-court-card:nth-child(3)):has(#nextGames>.queue-court-card:nth-child(3):last-child) #nextGames .queue-court-card:first-child::before{display:none}
}
@media(min-width:1400px){
 .openplay-app #liveMatchControl:has(#nextGames>.queue-court-card:nth-child(3)){--court-columns:4}
 .openplay-app #liveMatchControl:has(#nextGames>.queue-court-card:nth-child(3)) #nextGames .queue-court-card:nth-child(n)::before{display:block}
 .openplay-app #liveMatchControl:has(#nextGames>.queue-court-card:nth-child(3)) #nextGames .queue-court-card:nth-child(4n+1)::before{display:none}
}
@media(max-width:700px){
 .openplay-app #liveMatchControl:has(#nextGames>.queue-court-card:nth-child(3)){--court-columns:1;padding:16px!important}
 .openplay-app #liveMatchControl:has(#nextGames>.queue-court-card:nth-child(3)) #nextGames{row-gap:28px!important}
 .openplay-app #liveMatchControl:has(#nextGames>.queue-court-card:nth-child(3)) #nextGames .queue-court-card::before{display:none!important}
 .openplay-app #liveMatchControl:has(#nextGames>.queue-court-card:nth-child(3)) #nextGames .score-control{grid-template-columns:40px minmax(28px,1fr) 40px!important}
 .openplay-app #liveMatchControl:has(#nextGames>.queue-court-card:nth-child(3)) #nextGames .score-btn{width:40px!important;min-width:40px!important}
}
.openplay-app #liveMatchControl:has(#nextGames>.queue-court-card:nth-child(3)) #nextGames .queue-player{max-width:100%!important}
.openplay-app #liveMatchControl:has(#nextGames>.queue-court-card:nth-child(3)) #nextGames .queue-player strong{max-width:100%!important;white-space:normal!important}

/* Initial check-in only. Existing matches retain the established live layout. */
.openplay-app.initial-player-setup #liveMatchControl{display:none!important}
.openplay-app.initial-player-setup #initialPlayersSlot{display:block!important;min-width:0}
.openplay-app.initial-player-setup #initialPlayersSlot #playersCard{display:block!important;width:100%;margin:0}
.openplay-app.initial-player-setup #upcomingGamesBlock{display:none!important}
.openplay-app #initialPlayersSlot:empty{display:none!important}
.openplay-app #initialGenerateMatch{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:16px;padding-top:18px;margin-top:12px;border-top:1px solid #e4ece9}
.openplay-app #initialGenerateMatch[hidden]{display:none!important}
.openplay-app #initialGenerateMatch p{margin:4px 0 0;font-size:13px;color:#64748b}
.openplay-app #initialGenerateMatch #initialMatchError{color:#b42318;flex-basis:100%}
.openplay-app #generateFirstMatch{min-height:44px;background:#075056!important;color:white!important;--control-ink:white;padding:10px 20px;border-radius:10px}
@media(max-width:700px){.openplay-app #generateFirstMatch{width:100%}}

/* A saved empty banner list must not leave a blank ad strip. */
.openplay-app .op-ad-carousel:empty{display:none!important}
