/* 人大红 RGB 174 11 42；浅色半场保持队员姓名清晰。 */
:root{--ink:#362b30;--muted:#85777c;--green:#ae0b2a;--lime:#f3cad3;--paper:#faf7f7;--line:#e9dfe2;--bad:#ad3042}
.sidebar{background:#ae0b2a}.sidebar button{color:#f5d8df}.sidebar button.active{background:#ffffff20;color:#fff}.sidebar .side-note{color:#f0c7d0}.brand small{color:#f1cbd4}.ball{border-color:#ffe4eb;color:#ffe4eb}.dot,.live-dot{background:#d44b68}
.match-shell{background:#faf7f7}.match-console{border-color:#e4d7dc}.console-toolbar,.set-status{background:#fffcfd}.score-team.home{background:#fbecf0}.score-team.home .point-value{color:#ae0b2a}.score-team.home>div>span,.score-team.home>div>small{color:#9c5463}.set-status>span,.set-status>small{color:#8a737b}.set-status>strong{color:#b8959f}
.team-marker{background:#ae0b2a}.roster-row.selected{background:#f9e9ee;border-color:#e6b8c4}.jersey{background:#faedf1;border-color:#ead1d9;color:#a21936}.roster-name small,.roster-row>em{color:#8d7c82}.roster-group-head,.team-type{color:#827078}.selected-player-chip{background:#faeaf0;color:#99132e}.player-choice{background:#fff8fa;border-color:#e7c7d1}.player-choice:hover{background:#f8e2e9;border-color:#b7415c}
.home-half-console .court-center{background:#fffdfd}.half-court-field{background:linear-gradient(to bottom,rgba(248,169,93,.22) 0 33.333333%,rgba(113,176,228,.20) 33.333333% 100%);border-color:#fff;outline:1px solid #dfd2d6}
.half-court-field:before{left:-24px;right:-24px;height:7px;background:#161416}
.three-meter-line{left:-18px;right:-18px;height:0;border-top:2px dashed #262126;background:none;transform:translateY(-1px)}
.home-half-console .court-position,.home-half-console .court-position.selected{color:#493338}.home-half-console .court-position:hover{background:#ffffff55}.home-half-console .court-name{text-shadow:none;color:#493338}.home-half-console .zone-label{color:#7d6469;opacity:1}.home-half-console .court-position.selected strong{background:#ae0b2a;color:white;box-shadow:0 0 0 3px #ae0b2a22}.home-half-console .court-position:not(.selected).libero-player>strong{color:#946c08}
.home-half-console .serve-ball,.home-half-console .selected .serve-ball{height:24px;width:24px;bottom:8px;right:9px;color:inherit;display:block;filter:drop-shadow(0 1px 2px #0002)}.serve-ball svg{width:100%;height:100%;display:block}.half-end-label,.half-heading span,.court-manual-note{color:#8c7980}.court-service-controls>button.serve-active{background:#f7dee6;border-color:#d793a5;color:#97142f}
.quick-record-column .skill-tabs{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}.quick-record-column .skill-tabs button{font-size:14px}.quick-record-column .technical-title h3{display:block;font-size:17px;margin:0}.technical-title{gap:7px}
.netdef-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin-top:12px}.netdef-grid section{min-width:0}.netdef-grid h4{font-size:13px;margin:0;padding:0 0 8px;text-align:center;color:#8b4e60;font-weight:600}.quick-record-column .vertical-outcomes{grid-template-columns:minmax(0,1fr);gap:8px;margin-top:0}.quick-record-column .vertical-outcomes .outcome{min-height:66px;padding:10px 5px;font-size:17px}.quick-record-column .vertical-outcomes small{font-size:10px;margin-top:5px}
.sub-flow-banner{padding:12px 16px;background:#fff0f4;border-bottom:1px solid #e8bcc8;display:flex;gap:16px;align-items:center;font-size:13px;color:#991a38}.sub-flow-banner strong{white-space:nowrap}.roster-row.sub-out{border:2px solid #ae0b2a;background:#fae0e8}.home-half-console .court-position.sub-out{background:#ae0b2a12}.home-half-console .court-position.sub-out strong{outline:3px solid #ae0b2a;outline-offset:2px}.sub-confirm{display:flex;align-items:center;justify-content:center;gap:24px;padding:18px 8px;background:#fff6f8;border-radius:12px}.sub-confirm>div{display:flex;flex-direction:column;align-items:center;gap:10px}.sub-confirm strong{font:600 32px/1 Consolas,monospace;color:#ae0b2a}.sub-confirm small{color:var(--muted)}.sub-confirm span{font-size:18px;font-weight:600}.sub-confirm>b{font-size:25px;color:#b3939e}.roster-panel>footer>[data-action="court-libero-config"]{flex-basis:100%;color:#ae0b2a}
@media(min-width:961px) and (max-height:950px){.quick-record-column .technical-title{margin-bottom:8px;gap:5px}.quick-record-column .technical-title h3{font-size:15px}.netdef-grid{margin-top:10px}.quick-record-column .vertical-outcomes .outcome{min-height:59px;font-size:16px}.selected-player-chip{font-size:17px}.recent-panel{margin-top:8px}.roster-panel>footer{gap:5px}.roster-panel>footer>.small{min-height:38px}}
@media(max-width:700px){.quick-record-column .skill-tabs{grid-template-columns:repeat(4,minmax(0,1fr))}.home-half-console .half-court-field:before{left:-19px;right:-19px}.three-meter-line{left:-14px;right:-14px}.sub-flow-banner{gap:10px;align-items:flex-start;font-size:12px}.quick-record-column .vertical-outcomes .outcome{min-height:75px}.technical-title{flex-direction:column;align-items:stretch}}
@media(pointer:coarse){.roster-panel>footer>.small,.console-tools .small{min-height:44px}}

/* V1.6：结果先行，统一按回合结果配色。 */
.quick-record-column .outcome.score-home{background:#f5dce3;border-color:#d9a2b1;color:#8e1230}
.quick-record-column .outcome.score-away{background:#e3ebf4;border-color:#b7cadd;color:#365a7f}
.quick-record-column .outcome.in-rally{background:#f5f3f4;border-color:#dfd8db;color:#51474c}
.quick-record-column .outcome small{color:inherit;opacity:.75}
.quick-record-column .outcome.pending-outcome{outline:3px solid #ae0b2a;outline-offset:1px;box-shadow:0 0 0 5px #ae0b2a15}

/* 自由人等待区缩为半场左下角的小卡。 */
.court-stage{position:relative;display:block;padding:12px 0;max-width:380px;margin:auto}
.court-stage .half-court-wrap{width:100%;margin:auto}
.libero-wait-area{position:absolute;left:-65px;bottom:20px;width:56px;height:56px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;border:1px dashed #d7b4bf;border-radius:7px;background:#fcf2f6;padding:3px;text-align:center;z-index:5;box-sizing:border-box}
.libero-wait-area h4{font-size:9px;line-height:11px;color:#90737d;font-weight:500;margin:0}.libero-wait-area p{font-size:10px;color:#99838a;margin:0}
.waiting-player{display:flex;align-items:center;flex-direction:column;gap:1px;max-width:100%}.waiting-player strong{font:600 18px/20px Consolas,monospace;color:#ae0b2a}.waiting-player span{font-size:9px;font-weight:600;line-height:12px;max-width:48px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.home-half-console .court-center{padding-left:78px;padding-right:28px}
.roster-panel>footer>.timeout-control{flex-basis:100%;display:flex;justify-content:space-between;align-items:center;gap:8px;background:#fbf3f5;border-color:#dcc5cd;color:#961c38;min-height:44px}
.timeout-control>span{font:600 14px/1 Consolas,monospace}.roster-panel>footer>.timeout-control:disabled{background:#e9e7e8;color:#9c9699;border-color:#ddd9db;opacity:1;cursor:default}
@media(max-width:700px){.home-half-console .court-center{padding-left:72px;padding-right:24px}.libero-wait-area{left:-59px;width:50px;height:50px}.waiting-player span{max-width:43px}}
