:root{--green:#086b38;--green-dark:#064b2a;--yellow:#ffdd67;--line:#d7e0da;--blue:#1674d1;--red:#ef3434;--ink:#15211b}*{box-sizing:border-box}body{margin:0;background:#eef3ef;color:var(--ink);font-family:Pretendard,"Noto Sans KR",sans-serif}.monitor-header{position:sticky;top:0;z-index:20;display:grid;grid-template-columns:210px 1fr 190px;min-height:92px;background:linear-gradient(135deg,#064b2a,#086b38);color:#fff;border-bottom:5px solid #fff}.monitor-brand{display:grid;grid-template-columns:auto 1fr;align-content:center;gap:0 9px;padding:12px 20px;color:#fff;text-decoration:none}.monitor-brand>span{grid-row:1/3;font-size:34px}.monitor-brand b{font-size:24px}.monitor-brand small{font-size:14px}.monitor-title-wrap{align-self:center;margin:8px 0;padding:12px 20px;border-radius:12px;background:#fff;color:#111;text-align:center}.monitor-title-wrap h1{margin:0;font-size:clamp(25px,3vw,44px);letter-spacing:.16em}.monitor-title-wrap p{margin:4px 0 0;color:#607067;font-size:13px}.monitor-clock{display:grid;place-content:center;text-align:center}.monitor-clock strong{font-size:27px}.monitor-clock span{font-size:13px}.monitor-shell{padding:12px}.control-row{display:grid;grid-template-columns:minmax(240px,1.25fr) minmax(300px,1.5fr) auto auto auto 54px;gap:10px;align-items:stretch;margin-bottom:12px}.meeting-picker,.next-assignment,.status-counters,.action-button,.icon-button{min-height:68px;border:1px solid #ccd7d0;border-radius:11px;background:#fff}.meeting-picker{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:10px;padding:10px 14px}.meeting-picker span{font-weight:900}.meeting-picker select{min-width:0;height:42px;border:1px solid #ccd7d0;border-radius:8px;padding:0 10px;font-weight:800}.next-assignment{display:grid;grid-template-columns:auto 1fr;align-content:center;column-gap:12px;padding:8px 14px}.next-assignment span{grid-row:1/3;padding:6px 9px;border-radius:999px;background:#fff3be;color:#8a5900;font-size:12px;font-weight:900}.next-assignment strong{font-size:22px;color:#d42c2c}.next-assignment small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#5e6c64}.status-counters{display:flex;align-items:center;justify-content:flex-start;gap:10px;padding:0 10px;flex-wrap:nowrap}.status-counters span{display:flex;align-items:baseline;gap:4px;flex:0 0 auto;min-width:auto;padding:5px 2px;border-right:0;font-size:12px;white-space:nowrap}.status-counters b{font-size:20px;line-height:1}.status-counters .is-playing b{color:var(--blue)}.status-counters .is-ready b{color:#e48100}.action-button,.icon-button{border:0;color:#fff;font-weight:900;cursor:pointer;padding:0 16px;font-size:15px}.action-button.green{background:#087b39}.action-button.blue{background:#1e70c8}.icon-button{background:#fff;color:#24342b;font-size:30px}.court-monitor-layout{display:grid;grid-template-columns:minmax(0,3fr) minmax(340px,1fr);gap:14px}.court-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(285px,1fr));gap:12px;align-content:start}.court-card{overflow:hidden;border:1px solid #b6c7ba;border-radius:12px;background:#fff;box-shadow:0 3px 10px rgba(5,55,30,.08);transition:.18s}.court-card.is-drop-target{outline:5px solid rgba(22,116,209,.35);transform:translateY(-2px)}.court-card.is-dragging,.queue-card.is-dragging{opacity:.45}.court-card>header{display:flex;align-items:center;justify-content:space-between;min-height:55px;padding:8px 14px;background:linear-gradient(#ffe687,#ffd458)}.court-card>header h2{margin:0;font-size:27px}.court-card>header>div{display:flex;align-items:center;gap:8px}.court-card>header b{font-size:18px}.state-pill{padding:5px 10px;border-radius:6px;background:#176fd0;color:#fff;font-size:13px;font-weight:900}.court-card.is-ready .state-pill{background:#e98300}.court-surface{position:relative;min-height:285px;margin:0 12px;background:linear-gradient(145deg,#15934b,#08763d);border:3px solid #fff;box-shadow:inset 0 0 0 2px rgba(255,255,255,.15)}.court-lines i{position:absolute;display:block;background:#fff;opacity:.86}.court-lines .net{left:0;right:0;top:50%;height:3px}.court-lines .mid-v{top:0;bottom:0;left:50%;width:2px}.court-lines .top-h{left:0;right:0;top:24%;height:2px}.court-lines .bottom-h{left:0;right:0;bottom:24%;height:2px}.court-team{position:absolute;left:7%;right:7%;display:grid;grid-template-columns:1fr 1fr;gap:10px}.court-team.team-a{top:10%}.court-team.team-b{bottom:10%}.player-token{display:grid;place-items:center;min-height:66px;padding:8px;border-radius:12px;background:#fff;box-shadow:0 3px 8px rgba(0,0,0,.15);text-align:center}.player-token b{font-size:18px}.player-token small{color:#657369}.side-a{border-bottom:4px solid #1e70c8}.side-b{border-bottom:4px solid #ef3434}.court-vs{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);padding:4px 10px;border-radius:999px;background:rgba(0,85,41,.85);color:#fff}.court-card>footer{display:grid;grid-template-columns:1fr 1.3fr .8fr;gap:8px;padding:11px 12px 6px;background:#08763d}.court-card>footer button{min-height:46px;border:0;border-radius:7px;color:#fff;font-weight:900;cursor:pointer;background:#7b8580}.court-card>footer .danger{background:var(--red)}.court-card>footer .broadcast{background:#1872ce}.court-time{display:block;padding:8px;text-align:center;color:#5e6d64}.court-card.is-empty .court-surface{display:grid;place-items:center}.empty-court-copy{position:relative;z-index:2;display:grid;gap:6px;text-align:center;color:#fff}.empty-court-copy b{font-size:24px}.monitor-side{display:grid;gap:12px;align-content:start}.side-panel{overflow:hidden;border:1px solid #b8c8bc;border-radius:11px;background:#fff}.side-panel h2,.panel-heading{margin:0;background:linear-gradient(90deg,#066c36,#075b32);color:#fff}.side-panel h2{padding:10px 14px;font-size:18px}.panel-heading{display:flex;align-items:center;justify-content:space-between;padding:10px 14px}.panel-heading h2{padding:0;background:none}.panel-heading span{font-weight:900}.panel-heading button{border:0;background:transparent;color:#fff;cursor:pointer}.search-box{display:grid;grid-template-columns:1fr 45px;padding:12px}.search-box input{height:42px;border:1px solid #c8d2cb;border-radius:7px 0 0 7px;padding:0 12px}.search-box button{border:0;border-radius:0 7px 7px 0;background:#34433b;color:#fff;font-size:22px}.search-results{padding:0 12px 12px;color:#67756d;font-size:13px}.search-results>div{display:grid;grid-template-columns:auto auto;gap:3px 10px;padding:7px;border-top:1px solid #e5ebe7}.search-results small{grid-column:1/3}.queue-list{display:grid}.queue-card{display:grid;grid-template-columns:58px 1fr 42px;align-items:center;gap:8px;min-height:49px;padding:8px 12px;border-bottom:1px solid #e0e7e2;cursor:grab}.queue-card b{color:#0c5f33}.queue-card span{font-size:13px;font-weight:800}.queue-card i{font-style:normal;color:#89968f}.queue-card em{font-style:normal;font-size:12px;color:#e27f00;font-weight:900}.panel-more{width:100%;min-height:38px;border:0;background:#f5f8f6;font-weight:900;cursor:pointer}.operation-log{max-height:190px;overflow:auto}.operation-log>div{display:grid;grid-template-columns:48px 1fr;gap:8px;padding:7px 12px;border-bottom:1px solid #e5ebe7;font-size:13px}.operation-log time{font-weight:900}.empty-line{margin:0;padding:16px;color:#718077;text-align:center}.quick-tools{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:12px;margin-top:14px}.quick-tools>div{display:flex;align-items:center;gap:8px;padding:12px;border:1px solid #c7d4cb;border-radius:11px;background:#fff}.quick-tools strong{margin-right:auto}.tool{min-height:50px;padding:8px 15px;border:1px solid #c9d4cd;border-radius:8px;background:#fff;font-weight:900;cursor:pointer}.tool.blue{background:#1972cf;color:#fff}.tool.green{background:#10833f;color:#fff}.tool.is-active{outline:3px solid #f5bd34}.status-message{min-height:22px;margin:8px 0;color:#0b6a37;font-weight:800}.realtime-status{position:fixed;right:10px;bottom:10px;padding:6px 10px;border-radius:999px;background:#fff;border:1px solid #ccd7d0;font-size:11px}.status-dot{display:inline-block;width:7px;height:7px;margin-right:5px;border-radius:50%;background:#999}.is-online .status-dot{background:#18a957}.is-error .status-dot{background:#e33}.large-text{font-size:18px}.large-text .player-token b{font-size:24px}.large-text .court-card>footer button{font-size:18px;min-height:60px}body[data-board-view="tv"] .court-monitor-layout{grid-template-columns:1fr}body[data-board-view="tv"] .monitor-side{grid-template-columns:repeat(4,1fr)}body[data-board-view="tv"] .court-grid{grid-template-columns:repeat(auto-fit,minmax(360px,1fr))}body[data-board-view="compact"] .court-surface{min-height:250px}body[data-board-view="compact"] .court-grid{grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}body[data-board-view="compact"] .player-token{min-height:48px}body[data-board-view="compact"] .player-token b{font-size:15px}
@media(max-width:1150px){.control-row{grid-template-columns:1fr 1fr auto}.status-counters{grid-column:1/3}.court-monitor-layout{grid-template-columns:1fr}.monitor-side{grid-template-columns:repeat(2,1fr)}.quick-tools{grid-template-columns:1fr}}
@media(max-width:720px){.monitor-header{position:static;grid-template-columns:1fr auto;min-height:auto}.monitor-brand{padding:9px 12px}.monitor-brand b{font-size:18px}.monitor-brand>span{font-size:25px}.monitor-title-wrap{grid-column:1/3;grid-row:2;margin:0 8px 8px}.monitor-title-wrap h1{font-size:23px}.monitor-clock{padding-right:12px}.monitor-clock strong{font-size:18px}.control-row{grid-template-columns:1fr 54px}.meeting-picker,.next-assignment,.status-counters,.action-button{grid-column:1/3}.action-button{min-height:54px}.status-counters{overflow:auto}.court-grid{grid-template-columns:1fr}.court-surface{min-height:320px}.monitor-side{grid-template-columns:1fr}.quick-tools>div{flex-wrap:wrap}.quick-tools strong{width:100%}.tool{flex:1}.realtime-status{display:none}}

/* v1.7 Digital Magnet Board */
.player-token{border:0;cursor:pointer;font-family:inherit;transition:transform .15s,box-shadow .15s}.player-token:hover,.member-magnet:hover{transform:translateY(-2px);box-shadow:0 6px 14px rgba(0,0,0,.2)}.player-token.is-male,.member-magnet.is-male{box-shadow:inset 0 0 0 3px #f0c52f,0 3px 8px rgba(0,0,0,.15)}.player-token.is-female,.member-magnet.is-female{box-shadow:inset 0 0 0 3px #57b9e8,0 3px 8px rgba(0,0,0,.15)}.player-token.is-neutral,.member-magnet.is-neutral{box-shadow:inset 0 0 0 3px #b8b8b8,0 3px 8px rgba(0,0,0,.15)}
.request-panel .panel-heading{background:linear-gradient(90deg,#6a8d25,#87a943)}.attendance-panel .panel-heading{background:linear-gradient(90deg,#5a7f24,#739b32)}.magnet-list{display:flex;flex-wrap:wrap;gap:8px;padding:10px;max-height:210px;overflow:auto}.member-magnet{display:grid;gap:2px;min-width:92px;padding:8px 10px;border:0;border-radius:999px;background:#fff;color:#1d2a23;font-family:inherit;cursor:pointer}.member-magnet b{font-size:14px}.member-magnet small{font-size:10px;color:#68756e}.attendance-columns{display:grid;grid-template-columns:1fr 1fr}.attendance-columns>div+div{border-left:1px solid #dce5df}.attendance-columns h3{margin:0;padding:9px 10px;background:#f3f7f4;font-size:14px}.attendance-columns h3 b{float:right;color:#08723d}.player-detail-card{max-width:520px}.player-profile{display:grid;grid-template-columns:120px 1fr;gap:16px;align-items:center}.profile-magnet{display:grid;place-items:center;aspect-ratio:1;border-radius:50%;background:#fff;font-size:22px;font-weight:900;box-shadow:inset 0 0 0 5px #b8b8b8,0 5px 16px rgba(0,0,0,.18)}.player-profile.is-male .profile-magnet{box-shadow:inset 0 0 0 5px #f0c52f,0 5px 16px rgba(0,0,0,.18)}.player-profile.is-female .profile-magnet{box-shadow:inset 0 0 0 5px #57b9e8,0 5px 16px rgba(0,0,0,.18)}.player-profile dl{margin:0}.player-profile dl div{display:grid;grid-template-columns:90px 1fr;padding:7px 0;border-bottom:1px solid #e2e8e4}.player-profile dt{font-weight:900;color:#65736b}.player-profile dd{margin:0;font-weight:800}.player-upcoming{display:grid;gap:7px}.player-upcoming div{display:flex;justify-content:space-between;padding:9px 11px;border-radius:8px;background:#f1f6f2}.player-detail-card h3{margin:18px 0 8px}
@media(max-width:720px){.attendance-columns{grid-template-columns:1fr}.attendance-columns>div+div{border-left:0;border-top:1px solid #dce5df}.member-magnet{flex:1 1 42%}.player-profile{grid-template-columns:90px 1fr}.magnet-list{max-height:260px}}

/* v1.8 Operation Stability */
.action-button.red{background:#c93333}.action-button.amber{background:#d58a00}.action-button:disabled{opacity:.45;cursor:not-allowed}
.court-lock-button{border:0;border-radius:7px;padding:7px 9px;background:#fff;color:#2e4437;font-weight:900;cursor:pointer}.court-card.is-locked{filter:saturate(.55)}.court-card.is-locked .court-surface{box-shadow:inset 0 0 0 5px rgba(215,56,56,.45)}.court-card.is-locked header{background:linear-gradient(#dedede,#c9c9c9)}
.player-token[draggable="true"]{cursor:grab}.player-token.is-player-dragging{opacity:.4}.player-token.is-player-drop-target{outline:5px solid rgba(255,255,255,.85);transform:scale(1.04)}
.member-magnet.is-resting{opacity:.58;text-decoration:line-through}.player-rest-button{width:100%;margin-top:14px;min-height:44px;border:0;border-radius:8px;background:#e88a00;color:#fff;font-weight:900;cursor:pointer}.player-rest-button.is-active{background:#0c7d3d}
.undo-strip{position:fixed;left:50%;bottom:18px;z-index:50;transform:translateX(-50%);display:flex;align-items:center;gap:12px;max-width:min(90vw,680px);padding:10px 14px;border-radius:12px;background:#17231d;color:#fff;box-shadow:0 8px 28px rgba(0,0,0,.3)}.undo-strip[hidden]{display:none}.undo-strip button{border:0;border-radius:7px;padding:8px 12px;background:#f1a323;color:#111;font-weight:900;cursor:pointer}
@media(max-width:720px){.control-row .action-button.red,.control-row .action-button.amber{grid-column:1/3}.court-lock-button{font-size:14px;padding:9px}.undo-strip{left:10px;right:10px;bottom:10px;transform:none}}


/* v1.9 Management Dashboard UX */
.monitor-title-wrap{display:grid;align-content:center;justify-items:center}
.meeting-progress{display:grid;grid-template-columns:minmax(140px,320px) auto;align-items:center;gap:10px;width:min(100%,520px);margin-top:8px}
.meeting-progress__bar{overflow:hidden;width:100%;height:8px;border-radius:999px;background:#dfe9e2}
.meeting-progress__bar i{display:block;width:0;height:100%;border-radius:inherit;background:linear-gradient(90deg,#16a35b,#f0b42c);transition:width .25s ease}
.meeting-progress b{font-size:12px;color:#28513a;white-space:nowrap}
.status-counters{overflow-x:auto;scrollbar-width:thin}
.status-counters span{min-width:70px}
.status-counters .is-waiting b{color:#64716a}
.status-counters .is-finished b{color:#16834a}
.status-counters .is-remaining{min-width:112px;background:#f7faf8}
.status-counters .is-remaining b{font-size:15px;color:#7c5400;white-space:nowrap}
.court-card{box-shadow:0 7px 20px rgba(5,55,30,.10)}
.court-card>header{border-bottom:1px solid rgba(65,45,0,.18)}
.court-card>footer{padding-bottom:11px}
.side-panel{box-shadow:0 4px 14px rgba(5,55,30,.06)}
.operation-log>div{position:relative;padding-left:18px}
.operation-log>div::before{content:"";position:absolute;left:8px;top:13px;width:5px;height:5px;border-radius:50%;background:#15914a}
@media(max-width:1150px){.status-counters{grid-column:1/4}}
@media(max-width:720px){.meeting-progress{grid-template-columns:1fr auto;padding:0 8px}.status-counters span{min-width:78px}.status-counters .is-remaining{min-width:118px}}

/* v1.9.1 Management Board responsive and ready-queue maintenance */
.meeting-picker{grid-template-columns:1fr;align-content:center;gap:6px}
.meeting-picker span{display:block;line-height:1.15}
.meeting-picker select{width:100%}
.action-button{display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1.15;white-space:nowrap}
.action-button span{display:block}
.court-lock-button,.state-pill{line-height:1.05;text-align:center;white-space:nowrap}
.next-assignment{grid-template-columns:auto auto minmax(0,1fr);align-items:center;align-content:center;row-gap:4px}
.next-assignment .next-label{grid-row:1/3}
.next-assignment>strong{white-space:nowrap}
.next-teams{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:8px;min-width:0}
.next-team{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#5e6c64;font-size:12px;font-weight:800}
.next-teams>b{color:#88938d;font-size:11px}
#commonModal{align-items:flex-start;padding-top:clamp(18px,7vh,72px)}
#commonModal .modal-card{max-height:calc(100vh - 40px);overflow:auto}
@media(max-width:1320px){
  .next-assignment{grid-template-columns:auto 1fr}
  .next-assignment .next-label{grid-row:1/3}
  .next-teams{grid-column:2;grid-template-columns:1fr;gap:2px}
  .next-teams>b{justify-self:center}
  .next-team{text-align:center;white-space:normal;overflow:visible}
}
@media(max-width:720px){
  .next-assignment{grid-template-columns:1fr;text-align:center}
  .next-assignment .next-label{grid-row:auto;justify-self:center}
  .next-teams{grid-column:1;width:100%}
}


/* v1.9.2 Management board header layout */
.control-row{grid-template-columns:minmax(240px,1.2fr) minmax(420px,1.7fr) repeat(4,minmax(78px,auto)) 54px}
.meeting-picker{grid-template-columns:1fr;align-content:center;gap:5px}
.meeting-picker span{display:block}
.meeting-picker select{width:100%}
.action-button{display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1.12;white-space:nowrap}
.action-button.amber{background:#d28712}
.action-button:disabled{cursor:not-allowed;opacity:.5}
.court-card>header.court-card-header{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:10px}
.court-card>header.court-card-header h2{white-space:nowrap;text-align:left}
.court-header-status{display:grid!important;grid-template-columns:1fr;gap:4px;min-width:70px}
.court-lock-button,.court-header-status .state-pill{display:flex;align-items:center;justify-content:center;width:100%;min-height:25px;padding:3px 8px;border:0;border-radius:6px;font-size:12px;font-weight:900;line-height:1.05;white-space:nowrap}
.court-lock-button{background:#087b39;color:#fff;cursor:pointer}
.court-card.is-locked .court-lock-button{background:#59645e}
.court-header-status .state-pill{background:#176fd0;color:#fff}
.court-card.is-ready .court-header-status .state-pill{background:#e98300}
.court-header-status .state-pill.is-empty-state{background:#7b8580}
.court-match-number{justify-self:end;white-space:nowrap;text-align:right;font-size:18px}
@media(max-width:1150px){.control-row{grid-template-columns:minmax(220px,1fr) minmax(360px,1.5fr) repeat(3,minmax(78px,auto));}.control-row .icon-button{grid-column:auto}.control-row #undoButton,.control-row #refreshButton{grid-row:2}.control-row #undoButton{grid-column:4}.control-row #refreshButton{grid-column:5}.status-counters{grid-column:1/3}}
@media(max-width:720px){.control-row{grid-template-columns:repeat(3,1fr) 54px}.meeting-picker,.status-counters{grid-column:1/5}.action-button{grid-column:auto;min-height:58px}.control-row #undoButton{grid-column:1/3;grid-row:auto}.control-row #refreshButton{grid-column:3/5;grid-row:auto}.court-card>header.court-card-header{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);padding:8px 10px}.court-card>header.court-card-header h2{font-size:23px}.court-match-number{font-size:16px}}


/* v1.9.5 partial broadcast placement and court-count ready list */
.court-team{grid-template-columns:1fr 34px 1fr;align-items:center}
.team-broadcast{position:relative;z-index:5;display:grid;place-items:center;width:32px;height:32px;padding:0;border:2px solid rgba(255,255,255,.96);border-radius:50%;color:#fff;cursor:pointer;box-shadow:0 3px 9px rgba(0,0,0,.28);transition:transform .15s ease,box-shadow .15s ease,filter .15s ease}
.team-broadcast svg{width:18px;height:18px;fill:currentColor;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.team-a-broadcast{align-self:end;margin-bottom:-13px;background:linear-gradient(145deg,#2588eb,#0b5eb8)}
.team-b-broadcast{align-self:start;margin-top:-13px;background:linear-gradient(145deg,#ff6b6b,#cf2929)}
.team-broadcast:hover{transform:scale(1.1);filter:brightness(1.08);box-shadow:0 5px 13px rgba(0,0,0,.34)}
.team-broadcast:active{transform:scale(.96)}
.team-broadcast:focus-visible{outline:3px solid #ffe477;outline-offset:2px}
.queue-list{max-height:none}
@media(max-width:720px){.court-team{grid-template-columns:1fr 31px 1fr}.team-broadcast{width:29px;height:29px}.team-broadcast svg{width:16px;height:16px}.team-a-broadcast{margin-bottom:-11px}.team-b-broadcast{margin-top:-11px}}

/* v1.9.6 compact team broadcast placement */
.court-team{grid-template-columns:1fr 1fr}
.team-broadcast{position:absolute;left:50%;z-index:6;width:30px;height:30px;transform:translate(-50%,-50%);margin:0;padding:0}
.team-broadcast:hover{transform:translate(-50%,-50%) scale(1.08)}
.team-broadcast:active{transform:translate(-50%,-50%) scale(.95)}
.team-a-broadcast{top:42.5%;align-self:auto;margin:0;background:linear-gradient(145deg,#2588eb,#0b5eb8)}
.team-b-broadcast{top:57.5%;align-self:auto;margin:0;background:linear-gradient(145deg,#ff6b6b,#cf2929)}
.court-vs{z-index:5;padding:2px 8px;line-height:1.05}
@media(max-width:720px){.court-team{grid-template-columns:1fr 1fr}.team-broadcast{width:28px;height:28px}.team-a-broadcast,.team-b-broadcast{margin:0}}


/* v1.9.7 broadcast horizontal alignment, empty-court action message */
/* A팀 버튼: 위쪽 팀 첫 번째 선수의 가로 중앙 */
.team-a-broadcast{left:28.5%;}
/* B팀 버튼: 아래쪽 팀 두 번째 선수의 가로 중앙 */
.team-b-broadcast{left:71.5%;}
.empty-court-footer{
  display:flex!important;
  min-height:63px;
  padding:6px 10px!important;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:2px;
  background:#08763d;
  color:#fff;
  text-align:center;
}
.empty-court-footer b{font-size:18px;line-height:1.15;}
.empty-court-footer span{font-size:13px;line-height:1.2;font-weight:800;}
.court-card.is-empty .court-surface{display:block;}
@media(max-width:720px){
  .team-a-broadcast{left:28.5%;}
  .team-b-broadcast{left:71.5%;}
}

/* v1.9.8 broadcast controls, all-court entry, ready announcements and collapsible panels */
.control-row{grid-template-columns:minmax(240px,1.2fr) minmax(420px,1.7fr) repeat(4,minmax(78px,auto)) 54px}
.queue-card.has-broadcast{grid-template-columns:58px 34px 1fr 42px}
.queue-broadcast-button{display:grid;place-items:center;width:30px;height:30px;padding:0;border:0;border-radius:50%;background:linear-gradient(145deg,#2a8beb,#0d60b9);color:#fff;cursor:pointer;box-shadow:0 2px 7px rgba(0,0,0,.22)}
.queue-broadcast-button svg{width:17px;height:17px;fill:currentColor;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.queue-broadcast-button:hover{filter:brightness(1.08);transform:scale(1.06)}
#readyList .queue-card span{font-size:15px;line-height:1.35;font-weight:900}
.court-card.is-newly-assigned{animation:newCourtBorder 3s ease-out 1}
.court-card.is-newly-assigned .court-time{color:#0b63c9;font-weight:1000;font-size:15px;animation:newGamePulse .8s ease-in-out 10}
.court-card.is-newly-assigned .court-time::before{content:"진행경기";font-weight:1000}
.court-card.is-newly-assigned .court-time{font-size:0}
.court-card.is-newly-assigned .court-time::before{font-size:15px}
@keyframes newCourtBorder{0%,18%,36%,54%,72%{box-shadow:0 0 0 4px rgba(20,103,207,.92),0 0 22px rgba(20,103,207,.58)}9%,27%,45%,63%,100%{box-shadow:0 7px 20px rgba(5,55,30,.10)}}
@keyframes newGamePulse{0%,100%{transform:scale(1);opacity:1;text-shadow:none}50%{transform:scale(1.12);opacity:.42;text-shadow:0 0 12px rgba(11,99,201,.62)}}
.panel-toggle{display:flex!important;align-items:center;gap:7px;min-width:0;padding:0!important;border:0;background:transparent!important;color:#fff!important;cursor:pointer;text-align:left}
.panel-toggle h2{margin:0;padding:0!important;background:none!important}
.panel-toggle-icon{width:15px;flex:0 0 15px;font-size:13px}
.collapsible-panel .panel-collapsible-body{display:block}
.collapsible-panel.is-collapsed .panel-collapsible-body{display:none}
.collapsible-panel.is-collapsed .panel-heading{border-radius:10px}
@media(max-width:720px){.queue-card.has-broadcast{grid-template-columns:54px 32px 1fr 38px}.queue-broadcast-button{width:28px;height:28px}#readyList .queue-card span{font-size:14px}}

/* v1.9.11: 공통 안내/확인 모달을 관리전광판 최상단에 표시 */
#commonModal.modal-backdrop{position:fixed!important;inset:0!important;z-index:2147483000!important;display:flex;align-items:center;justify-content:center;background:rgba(15,23,42,.58)!important;padding:20px}
#commonModal[hidden]{display:none!important}
#commonModal .modal-card{position:relative;z-index:1;width:min(92vw,460px);max-height:calc(100vh - 40px);overflow:auto;background:#fff;border-radius:18px;box-shadow:0 24px 80px rgba(0,0,0,.38);padding:22px}
#commonModal [data-modal-message]{white-space:pre-line;line-height:1.7}

/* v1.9.13: 방송 시작/중지 토글 및 대기경기 선수명 가독성 */
.action-button.is-broadcasting,.tool.is-broadcasting{background:#e44332!important;color:#fff!important;box-shadow:0 0 0 3px rgba(228,67,50,.22);animation:broadcastButtonPulse 1.05s ease-in-out infinite}
.action-button.is-broadcasting span:first-child{font-size:15px}
.action-button.is-broadcasting span:last-child{font-size:11px;opacity:.92}
@keyframes broadcastButtonPulse{0%,100%{filter:brightness(1)}50%{filter:brightness(1.17)}}
#waitingList .queue-card span{font-size:17px;line-height:1.42;font-weight:900;letter-spacing:-.01em}
@media(max-width:720px){#waitingList .queue-card span{font-size:16px}}

/* v1.9.14: 상단 기능 카드, 전체 방송 토글, 준비경기 글씨 확대 */
.control-row{
  display:grid;
  grid-template-columns:minmax(430px,1.55fr) minmax(260px,.9fr) minmax(180px,.62fr) minmax(260px,.9fr);
  gap:10px;
  align-items:stretch;
}
.control-summary-card,.control-card{
  min-width:0;
  border:1px solid #c8d4cc;
  border-radius:13px;
  background:#fff;
  box-shadow:0 4px 13px rgba(5,55,30,.07);
}
.control-summary-card{display:grid;grid-template-columns:minmax(210px,.9fr) minmax(0,1.55fr);gap:8px;padding:8px}
.control-summary-card .meeting-picker,.control-summary-card .status-counters{min-height:76px;border-radius:9px}
.control-summary-card .status-counters{padding:0 3px;overflow:hidden}
.control-summary-card .status-counters span{min-width:49px;padding:4px 5px;font-size:11px}
.control-summary-card .status-counters b{font-size:18px}
.control-summary-card .status-counters .is-remaining{min-width:92px}
.control-summary-card .status-counters .is-remaining b{font-size:13px}
.control-card{display:grid;grid-template-rows:auto 1fr;padding:7px}
.control-card>h2{margin:0 0 6px;padding:3px 7px;border-radius:7px;background:#eef4f0;color:#365044;font-size:12px;line-height:1.25;text-align:center;letter-spacing:.05em}
.control-card--game>h2{background:#e8f2fc;color:#155a9e}
.control-card--system>h2{background:#fff3db;color:#8a5900}
.control-card--manage>h2{background:#e8f6ee;color:#08723d}
.control-card-buttons{display:grid;gap:7px;min-height:62px}
.control-card-buttons--three{grid-template-columns:repeat(3,minmax(70px,1fr))}
.control-card-buttons--two{grid-template-columns:repeat(2,minmax(72px,1fr))}
.control-card .action-button{min-width:0;min-height:62px;padding:5px 8px;border-radius:9px;font-size:14px;line-height:1.08}
.action-button.neutral{background:#596760}
.action-button.manage{background:#147448}
.action-button.manage:hover,.action-button.neutral:hover{filter:brightness(1.08)}
#readyList .queue-card span{font-size:17px;line-height:1.42;font-weight:900;letter-spacing:-.01em}
.queue-broadcast-button.is-broadcasting,.team-broadcast.is-broadcasting,.court-card footer .broadcast.is-broadcasting{
  filter:brightness(1.2);
  box-shadow:0 0 0 4px rgba(228,67,50,.25),0 3px 10px rgba(0,0,0,.28);
  animation:broadcastButtonPulse 1.05s ease-in-out infinite;
}
.queue-broadcast-button.is-broadcasting,.team-broadcast.is-broadcasting{background:#e44332!important}
@media(max-width:1350px){
  .control-row{grid-template-columns:minmax(410px,1.4fr) minmax(250px,1fr) minmax(180px,.7fr)}
  .control-card--manage{grid-column:2/4}
}
@media(max-width:980px){
  .control-row{grid-template-columns:1fr 1fr}
  .control-summary-card{grid-column:1/3}
  .control-card--manage{grid-column:1/3}
}
@media(max-width:720px){
  .control-row{grid-template-columns:1fr}
  .control-summary-card,.control-card--manage{grid-column:1}
  .control-summary-card{grid-template-columns:1fr}
  .control-summary-card .status-counters{overflow-x:auto}
  .control-summary-card .status-counters span{min-width:66px}
  .control-card-buttons--three{grid-template-columns:repeat(3,1fr)}
  #readyList .queue-card span{font-size:16px}
}

/* v1.9.17: 관리전광판 상단 카드 폭 확장 및 버튼 한 줄 균등 배치 */
.control-summary-card{
  grid-template-columns:minmax(0,1fr);
}
.control-summary-card .meeting-picker{
  width:100%;
  min-width:0;
}
.control-summary-card .meeting-picker select{
  width:100%;
  min-width:0;
}
.control-summary-card .status-counters{
  width:100%;
  justify-content:flex-start;
}
.control-card-buttons{
  width:100%;
  min-width:0;
}
.control-card-buttons--three{
  grid-template-columns:repeat(3,minmax(0,1fr));
}
.control-card-buttons--two{
  grid-template-columns:repeat(2,minmax(0,1fr));
}
.control-card .control-card-buttons>.action-button{
  grid-column:auto!important;
  grid-row:auto!important;
  width:100%;
  max-width:none;
  min-width:0;
  margin:0;
}
.control-card--game .control-card-buttons,
.control-card--system .control-card-buttons,
.control-card--manage .control-card-buttons{
  grid-auto-flow:column;
}
@media(max-width:720px){
  .control-card-buttons--three{
    grid-template-columns:repeat(3,minmax(0,1fr));
  }
  .control-card-buttons--two{
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
  .control-card .action-button{
    padding-inline:4px;
    font-size:13px;
  }
}

.court-player{margin-block:6px!important}.court-lock-button{padding:6px 12px;border:none;border-radius:999px;background:#3cb371;color:#fff;font-weight:700}.court-lock-button.locked{background:#d9534f}

/* v1.9.20: PC 상단 5개 독립 카드 한 줄 배치 */
.sr-only{
  position:absolute!important;
  width:1px!important;
  height:1px!important;
  padding:0!important;
  margin:-1px!important;
  overflow:hidden!important;
  clip:rect(0,0,0,0)!important;
  white-space:nowrap!important;
  border:0!important;
}
.control-row{
  display:grid;
  grid-template-columns:minmax(0,24fr) minmax(0,26fr) minmax(0,24fr) minmax(0,10fr) minmax(0,16fr);
  gap:10px;
  align-items:stretch;
}
.control-card--meeting,
.control-card--stats,
.control-card--game,
.control-card--system,
.control-card--manage{
  grid-column:auto;
  min-width:0;
}
.control-card--meeting>h2{background:#eef4f0;color:#365044}
.control-card--stats>h2{background:#f1f5f2;color:#365044}
.control-card--meeting .meeting-picker{
  display:flex;
  width:100%;
  min-width:0;
  min-height:62px;
  padding:0;
  border:0;
  border-radius:0;
  background:transparent;
}
.control-card--meeting .meeting-picker select{
  width:100%;
  min-width:0;
  height:100%;
  min-height:62px;
  padding:0 10px;
}
.control-card--stats .status-counters{
  display:grid;
  grid-template-columns:repeat(5,minmax(0,1fr)) minmax(78px,1.35fr);
  width:100%;
  min-width:0;
  min-height:62px;
  gap:0;
  padding:0 2px;
  overflow:hidden;
}
.control-card--stats .status-counters span{
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:3px;
  min-width:0;
  padding:3px 2px;
  font-size:10px;
  line-height:1.1;
  white-space:nowrap;
}
.control-card--stats .status-counters b{font-size:17px}
.control-card--stats .status-counters .is-remaining b{font-size:12px}
.control-card--system .control-card-buttons--two{grid-template-columns:repeat(2,minmax(0,1fr))}
.control-card--system .action-button{padding-inline:3px;font-size:12px}
.control-card--manage .action-button{padding-inline:3px;font-size:12px}

@media(max-width:1280px){
  .control-row{
    grid-template-columns:minmax(0,1.05fr) minmax(0,1.2fr) minmax(0,1.05fr);
  }
  .control-card--system{grid-column:1/2}
  .control-card--manage{grid-column:2/4}
}
@media(max-width:900px){
  .control-row{grid-template-columns:repeat(2,minmax(0,1fr))}
  .control-card--meeting,.control-card--stats,.control-card--game,.control-card--system{grid-column:auto}
  .control-card--manage{grid-column:1/3}
}
@media(max-width:720px){
  .control-row{grid-template-columns:minmax(0,1fr)}
  .control-card--meeting,.control-card--stats,.control-card--game,.control-card--system,.control-card--manage{grid-column:1}
  .control-card--stats .status-counters{grid-template-columns:repeat(6,minmax(62px,1fr));overflow-x:auto}
}
