@font-face{font-family:Tour Oswald;src:url(assets/fonts/display-0.woff2) format("woff2");font-weight:500;font-display:swap}
@font-face{font-family:Tour Oswald;src:url(assets/fonts/display-1.woff2) format("woff2");font-weight:600 800;font-display:swap}
.tour-score{--display:"Tour Oswald","Arial Narrow",Arial,sans-serif;--tour-mint:#e0e8cb;--tour-dark:#143d4b;position:relative;container-type:normal;color:#f2faf6;font:600 clamp(16px,4.2cqw,36px)/1.15 var(--display);margin-top:.88em;isolation:isolate}.tour-score[data-tour-message=""]{margin-top:0}.tour-score-body{position:relative;overflow:hidden;border-radius:.32em;background:linear-gradient(120deg,#143d4bd9,#102e39d1);backdrop-filter:blur(3px)}.tour-score-body:after{content:'';position:absolute;inset:0;border-radius:inherit;padding:1px;background:linear-gradient(115deg,#e0e8cbb8,#94b8c12b 40%,#416e7a40 70%,#c4d6bdab);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask-composite:exclude;pointer-events:none}.tour-score-row{display:grid;grid-template-columns:1.2em minmax(0,1fr) repeat(var(--tour-sets),1.45em) 1.85em;align-items:stretch;min-height:2.1em}.tour-no-points .tour-score-row{grid-template-columns:1.2em minmax(0,1fr) repeat(var(--tour-sets),1.45em)}.tour-score-row+.tour-score-row{border-top:1px solid #a4e4c82c}.tour-server{display:flex;align-items:center;justify-content:center}.tour-server i{width:.52em;height:.52em;border-radius:50%;background:radial-gradient(circle at 30% 25%,#f1ffb9,#84bc62 70%);box-shadow:0 0 .25em #c9ffcb45;visibility:hidden}.tour-score-row.is-serving .tour-server i{visibility:visible}.tour-player{display:flex;align-items:center;gap:.3em;min-width:0;padding:.32em .25em .32em 0;text-transform:uppercase;font-weight:500;letter-spacing:-.01em}.tour-player .strip-name-lines{display:flex;flex-direction:column;gap:.05em;min-width:0}.tour-player .strip-athlete{display:flex;align-items:center;gap:.3em;min-width:0}.tour-player .strip-athlete>span:last-child{overflow-wrap:anywhere}.tour-player .country-flag{width:.85em;height:.58em;min-width:.85em;box-shadow:none;flex:0 0 auto}.tour-player .player-seed{font:500 .47em/1 var(--display);align-self:center;opacity:.82;white-space:nowrap}.tour-set,.tour-point{display:flex;align-items:center;justify-content:center;text-align:center;font:600 1.05em/1 var(--display);font-variant-numeric:tabular-nums}.tour-set{color:#d7e8dd;background:#102e3626}.tour-current{color:#e0e8cb;background:linear-gradient(110deg,#34545db3,#264854c9);box-shadow:inset 1px 0 #c4d6bd30}.tour-point{color:#102d36;background:linear-gradient(120deg,#e0e8cbf0,#cbdab6e8);font-weight:600}.tour-message{position:absolute;top:-1.35em;left:0;z-index:4;display:flex;align-items:center;justify-content:center;white-space:nowrap;max-width:100%;width:max-content;height:1.35em;padding:0 .6em;background:linear-gradient(110deg,#e0e8cb,#cbdab6);color:#102d36;font:600 .65em/1 var(--display);letter-spacing:.02em;border-radius:5px 5px 0 0;box-shadow:0 -1px 0 #a7ffe24d;will-change:width,height,top}
.referee-score-panel{container-type:inline-size;border-radius:10px;background:#17313b;padding:10px 12px 14px;color:#d8e7e6}.referee-score-top{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px;min-height:30px}.match-elapsed{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-variant-numeric:tabular-nums;white-space:nowrap}.referee-score-top .referee-score-indicators{gap:8px}.referee-score-top .referee-air-toggle{font-size:10px;min-height:28px;padding:5px 8px}.referee-score-panel .tour-score{font-size:clamp(16px,4.2cqw,36px)}.tour-score-bug{container-type:inline-size;width:23%;left:4%;bottom:8%;filter:drop-shadow(0 2px 3px #00160d24)}.tour-score-bug .tour-score{font-size:clamp(12px,4.2cqw,32px)}.tour-overlay{background:transparent!important}.tour-score-bug .tour-player{line-height:1.12}.tour-overlay .stats-layer{background:transparent;backdrop-filter:none}.tour-overlay .stats-card{background:linear-gradient(150deg,#143542e8,#09222de8);box-shadow:0 12px 60px #00191b40;border:1px solid #c4d6bd70}.tour-overlay .stats-card:before{background:linear-gradient(90deg,transparent,#e0e8cb,transparent)}.tour-overlay .stats-player,.tour-overlay .stats-row strong{color:#e0e8cb}.tour-overlay .stats-card .stats-close{display:none}.tour-overlay .stats-row{border-color:#afe3d42b}.tour-overlay .stats-kicker{color:#d3dfc3}.tour-overlay .stats-card h2{color:#edf8f3}
@media(max-width:700px){.referee-score-panel{padding:8px 10px 12px}.referee-score-top{gap:8px}.tour-score-bug{width:42%;left:4%;bottom:6%}.tour-score-bug .tour-score{font-size:clamp(9px,4.2cqw,20px)}}
@media(prefers-reduced-motion:reduce){.tour-message{will-change:auto}}

/* Umpire controls keep a clear hierarchy in either theme. */
body.referee-focus{--control-bg:#fff;--control-ink:#132f39;--control-edge:#91a4aa;--primary-bg:#183b46;--primary-ink:#fff}
body.referee-focus.judge-dark{--bg:#0b1d26;--surface:#1b3541;--ink:#f3f7ed;--muted:#c5d4d7;--line:#6e858e;--control-bg:#e9efdf;--control-ink:#102c37;--control-edge:#e9efdf;--primary-bg:#cbed8a;--primary-ink:#102d35}
.referee-workspace .referee-main{padding:0;background:transparent;border:0}
.referee-toolbar{font-size:17px;min-height:48px}
.referee-menu-toggle{width:48px;height:46px;flex-shrink:0}
.referee-score-panel .match-elapsed{font-size:17px}
.referee-score-top .referee-air-toggle{font-size:15px;min-height:40px;padding:8px 11px}
.referee-score-top .score-sync{font-size:20px;color:#cbed8a}
.referee-score-top .score-sync i{border-color:#a4c0c466;border-top-color:#dcf6cb}
.referee-score-top .score-sync[data-state=error]{color:#ffb5a5}
.referee-state{font-size:15px;gap:12px;margin:12px 0}
.referee-state>span{overflow-wrap:anywhere;min-width:0}
.referee-state>span:last-child{font-size:12px;white-space:nowrap}
.referee-workspace .btn,.referee-focus #modal .btn{font-size:17px;min-height:48px;line-height:1.25;padding:13px 16px;white-space:normal}
.referee-workspace .btn:not(.secondary),.referee-focus #modal .btn:not(.secondary){background:var(--primary-bg);color:var(--primary-ink);border:1px solid var(--primary-bg)}
.referee-workspace .btn.secondary,.referee-focus #modal .btn.secondary{background:var(--control-bg);color:var(--control-ink);border:1px solid var(--control-edge)}
.referee-point-buttons{gap:12px;margin:14px 0}
.referee-workspace .referee-point-buttons button{background:var(--primary-bg);color:var(--primary-ink);border:1px solid var(--primary-bg);min-height:116px;padding:18px 12px;border-radius:9px}
.referee-point-buttons span{font-size:18px;line-height:1.2}
.referee-point-buttons b{font-size:clamp(29px,5vw,38px);margin-top:12px;line-height:1.15}
.referee-tools{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}
.referee-workspace .referee-tools .btn{font-size:16px;padding:13px 8px}
.referee-workspace button:disabled,.referee-focus #modal button:disabled{opacity:1;background:#e5e8e5;color:#657174;border-color:#bbc5c5;cursor:not-allowed;box-shadow:none}
.judge-dark.referee-focus .referee-workspace button:disabled,.judge-dark.referee-focus #modal button:disabled{background:#2d434d;color:#a9bdc4;border-color:#59717b}
.referee-focus button:focus-visible,.referee-focus a:focus-visible,.referee-focus select:focus-visible{outline:3px solid #17b78b;outline-offset:3px}
.judge-dark.referee-focus button:focus-visible,.judge-dark.referee-focus a:focus-visible,.judge-dark.referee-focus select:focus-visible{outline-color:#e7ffc5}
.referee-workspace .match-time{background:#fff;border-color:#a1b3b8;margin:12px 0;padding:16px}
.judge-dark.referee-focus .match-time{background:#1b3541;border-color:#78929c}
.match-time .match-time-head .eyebrow{font:700 15px/1.3 var(--font);letter-spacing:.05em}
.match-time .time-menu-trigger{font-size:28px;min-height:44px;width:44px}
.match-time.serve-clock>div.match-time-body{gap:20px;margin:8px 0 14px}
.match-time .time-digits strong{display:block;font-size:48px;line-height:1;font-variant-numeric:tabular-nums}
.match-time .time-digits{min-width:112px}
.match-time .time-limit{display:block;font-size:13px;margin-top:6px;color:var(--muted)}
.match-time .serve-clock-state{font-size:18px;line-height:1.35;color:var(--ink)}
.match-time .time-detail{font-size:14px;line-height:1.4;margin-top:4px}
.match-time .time-actions .btn{font-size:17px;min-height:50px;max-width:none;flex:1 1 150px}
.match-time .time-cue-text{padding:12px 14px;border-left:4px solid #5b8241;margin:12px 0;background:#edf3e2;font-size:18px;font-weight:700;line-height:1.4}
.time-cue-text .time-next,.time-cue-text .time-at{font-size:13px;font-weight:500}
.time-cue-text .time-call-en{font-size:15px;font-weight:500}
.time-cue-text .time-private{font-size:13px;display:block;font-weight:500}
.referee-workspace .match-time.expired{background:#fff1e7;border-color:#af4631}
.referee-workspace .match-time.expired .time-digits strong{color:#9c301e}
.judge-dark.referee-focus .match-time.expired{background:#462c27;border-color:#ffc199}
.judge-dark.referee-focus .match-time.expired .time-digits strong{color:#ffca9f}
.judge-dark.referee-focus .time-cue-text{background:#354c36;color:#f2f9e6;border-color:#cbed8a}
.referee-focus #modal .point-popup h2{font-size:28px;margin:4px 30px 20px 0}
.referee-focus #modal .point-reason{font-size:18px;font-weight:700;line-height:1.25;min-height:88px;padding:15px 12px;background:var(--control-bg);color:var(--control-ink);border-color:var(--control-edge);text-align:center}
.referee-focus #modal .point-reason:disabled{background:#e5e8e5;color:#657174;border-color:#bbc5c5}
.judge-dark.referee-focus #modal .point-reason:disabled{background:#2d434d;color:#a9bdc4;border-color:#59717b}
.referee-focus #modal .penalty-open{min-height:44px;font-size:15px}
.referee-menu-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 30px 20px 0}
.referee-menu-heading h2{font-size:25px;margin:0}
.referee-menu .judge-preferences{position:relative;display:flex;gap:10px;align-items:center;border:0;padding:0;margin:0}
.referee-menu .judge-preferences>div.judge-segment{display:flex;gap:0;flex-wrap:nowrap;overflow:hidden;margin:0;border:1px solid var(--line);border-radius:7px}
.referee-menu .judge-preferences button{padding:8px;min-height:44px;min-width:44px;border:0;border-radius:0;background:var(--control-bg);color:var(--control-ink);font-size:14px;font-weight:700}
.referee-menu .judge-preferences button+button{border-left:1px solid var(--line)}
.referee-menu .judge-preferences button[aria-pressed=true]{background:var(--primary-bg);color:var(--primary-ink)}
.referee-menu .judge-preferences svg{display:block;width:21px;height:21px}
.referee-menu [data-preference-status]{position:absolute;right:0;top:100%;font-size:12px;min-height:0}
.referee-menu [data-preference-status][data-state=saving]:after{content:'';display:block;width:10px;height:10px;border:2px solid var(--line);border-top-color:var(--ink);border-radius:50%;animation:score-saving .7s linear infinite}
.referee-menu [data-preference-status][data-state=saved]:after{content:'✓';color:var(--accent-text)}
.referee-menu .referee-menu-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.referee-focus #modal .referee-menu .referee-menu-actions .btn{font-size:16px;padding:12px 8px}
.referee-menu details{padding:0;margin-top:10px;border:1px solid var(--line);border-radius:8px}
.referee-menu summary{padding:14px;font-size:17px;min-height:48px}
.referee-menu details[open]{padding:0 14px 14px}
.referee-menu details[open]>summary{margin:0 -14px 14px;border-bottom:1px solid var(--line)}
.referee-menu .referee-side-settings{border:0;padding:0;margin:16px 0 0}
.referee-menu .referee-side-settings legend{display:none}
.referee-menu label,.referee-menu select,.referee-menu input{font-size:16px}
.referee-menu .score-presentation{margin:0;gap:12px}
.referee-menu .score-presentation select{font-size:16px}
.referee-menu .referee-menu-footer,.referee-menu .referee-screen-links{display:flex;flex-wrap:wrap;align-items:center;gap:8px 18px;margin-top:16px}
.referee-menu .referee-screen-links{padding:12px 0;border-bottom:1px solid var(--line)}
.referee-menu .referee-screen-links a,.referee-menu .referee-menu-footer a,.referee-menu .referee-menu-footer button{font-size:15px;line-height:1.3;min-height:44px;display:inline-flex;align-items:center;color:var(--ink)}
.referee-menu .referee-menu-footer button{margin-left:auto;text-decoration:underline}
.referee-menu .judge-log{max-height:260px;overflow:auto;font-size:15px}
.umpire-assistant{font-size:17px;line-height:1.5}
.umpire-assistant h2{font-size:28px}.umpire-assistant h3{font-size:18px;margin:22px 0 8px}
.umpire-assistant .umpire-call{font-size:22px;font-weight:700;border-left:4px solid #70a556;padding:12px;background:#edf3e2;color:#173c35}
.umpire-assistant details{border-top:1px solid var(--line);padding:16px 0}.umpire-assistant summary{font-weight:700;cursor:pointer}
.umpire-usage section{padding:12px 0;border-bottom:1px solid var(--line)}.umpire-usage p{margin:5px 0}
.judge-dark .umpire-assistant .umpire-call{background:#354c36;color:#f2f9e6}
.judge-dark .referee-score-panel .referee-air-toggle{background:#ffdb96;color:#3e300c;border-color:#ffdb96}
.judge-dark .referee-score-panel .referee-air-toggle.on-air{background:#cbed8a;color:#173b28;border-color:#cbed8a}
body.referee-focus.judge-dark .referee-main{background:transparent}
body.referee-focus.judge-dark .referee-point-buttons button{background:var(--primary-bg);color:var(--primary-ink);border-color:var(--primary-bg)}
body.referee-focus.judge-dark .referee-workspace .btn.secondary,body.referee-focus.judge-dark #modal .btn.secondary{background:var(--control-bg);color:var(--control-ink);border-color:var(--control-edge)}
body.referee-focus.judge-dark .referee-workspace button:disabled,body.referee-focus.judge-dark #modal button:disabled{background:#2d434d;color:#a9bdc4;border-color:#59717b}
.referee-menu .referee-screen-links{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.referee-menu .referee-screen-links a{font-size:14px}
.judge-popup-content .stats-row span{font-size:16px}.judge-popup-content .stats-row strong{font-size:25px}.judge-popup-content .stats-player{font-size:18px}
.stats-row .stats-net-note{display:block;font-size:.7em;font-weight:400;margin-top:3px}
@media(max-width:600px){.referee-toolbar{font-size:16px}.referee-tools{grid-template-columns:repeat(2,minmax(0,1fr))}.referee-point-buttons span{font-size:16px}.referee-point-buttons b{font-size:30px}.referee-workspace .referee-point-buttons button{min-height:106px}.referee-workspace .referee-tools .btn{font-size:16px}.match-time .serve-clock-state{font-size:16px}.match-time .time-digits strong{font-size:42px}.match-time .time-digits{min-width:96px}.referee-focus #modal .point-reason{font-size:16px;min-height:90px}.referee-menu-heading{flex-wrap:wrap}.referee-menu .judge-preferences{gap:6px}.referee-menu .judge-preferences button{min-width:44px}.referee-score-panel .tour-score{font-size:clamp(17px,4.8cqw,32px)}.referee-score-panel:has(.tour-score[style*="--tour-sets:5"]) .tour-score{font-size:clamp(14px,4cqw,28px)}}

.referee-focus #modal label,.referee-focus #modal input,.referee-focus #modal select,.referee-focus #modal textarea{font-size:16px}
.referee-focus #modal .small{font-size:14px;line-height:1.4}

/* The umpire score is a standalone strip spanning the viewport. */
body.referee-focus #app{width:100%;max-width:none}
.referee-workspace{max-width:none;width:100%}
.referee-workspace .referee-main>*{width:calc(100% - 24px);max-width:780px;margin-inline:auto}
.referee-workspace .referee-main>.referee-score-panel{width:100%;max-width:none;padding:0;background:transparent;border-radius:0;margin:0 0 14px}
.referee-score-panel .tour-score-body{border-radius:0}
.referee-score-panel .tour-score{font-size:clamp(20px,4.8cqw,42px)}
.referee-score-top{color:var(--ink);margin:4px auto 10px}
.referee-score-top .score-sync{color:#52712a}
.referee-score-top .score-sync i{border-color:#8ca0a866;border-top-color:#294c59}
body.judge-dark .referee-score-top .score-sync{color:#cbed8a}
body.judge-dark .referee-score-top .score-sync i{border-color:#a4c0c466;border-top-color:#dcf6cb}
body.judge-dark .referee-score-top .referee-air-toggle{background:#ffdb96;color:#3e300c;border-color:#ffdb96}
body.judge-dark .referee-score-top .referee-air-toggle.on-air{background:#cbed8a;color:#173b28;border-color:#cbed8a}
.judge-popup-content .stats-card{background:linear-gradient(150deg,#143542f5,#09222df5);border-color:#c4d6bd55}
.judge-popup-content .stats-card:before{background:linear-gradient(90deg,transparent,#e0e8cb,transparent)}
.judge-popup-content .stats-row strong,.judge-popup-content .stats-kicker{color:#e0e8cb}
.judge-popup-content .stats-player{color:#f3f7ed}

.match-time.serve-clock{position:relative}
.match-time.serve-clock>div.match-time-head{position:absolute;right:10px;top:8px;display:block}
.match-time.serve-clock>div.match-time-body{padding-right:38px;margin:8px 0 16px;align-items:center}
.match-time .time-context{min-width:0;flex:1}
.match-time .time-context .serve-clock-state{font-size:20px;font-weight:700}
.match-time .time-state{display:block;font-size:14px;line-height:1.4;color:var(--muted);margin-top:5px}
@media(max-width:380px){.match-time.serve-clock>div.match-time-body{gap:12px}.match-time .time-context .serve-clock-state{font-size:17px}}

/* A restrained edge sweep follows a score change; no perpetual flashing. */
.tour-edge{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:2;overflow:visible}
.tour-edge rect{stroke:#d9e8bf;stroke-width:1.5;stroke-dasharray:24 76;opacity:0;filter:drop-shadow(0 0 2px #9db9a9)}
.tour-announcement{position:absolute;inset:0;z-index:3;display:flex;align-items:center;justify-content:center;overflow:hidden;visibility:hidden;pointer-events:none;background:linear-gradient(105deg,#dce8b7,#b5d7c8 58%,#94bcc5);color:#102e39;border-radius:inherit;box-shadow:inset 0 0 0 1px #e0e8cb7a;transform:translateX(-103%)}
.tour-announcement span{font:600 2.5em/1 var(--display);letter-spacing:-.01em;white-space:nowrap}
.tour-message{box-shadow:inset 0 1px #eff6d8a8,0 -1px 4px #a4c4b722;pointer-events:none}
/* Reserve the tab above the umpire score so the controls do not jump. */
.referee-score-panel .tour-score{margin-top:.88em}
.time-progress{height:4px;overflow:hidden;border-radius:2px;margin-top:16px;background:#879ba32e}
.time-progress i{display:block;height:100%;background:#597d4e;transform-origin:left;transform:scaleX(var(--time-progress,0));transition:transform .2s linear}
.judge-dark .time-progress{background:#c5d4d736}.judge-dark .time-progress i{background:#cbed8a}
.match-time.expired .time-progress i{background:#ba5033}.judge-dark .match-time.expired .time-progress i{background:#ffca9f}
@media(prefers-reduced-motion:reduce){.tour-announcement,.tour-edge{display:none}.time-progress i{transition:none}}

.tour-overlay .stats-card,.judge-popup-content .stats-card{--display:"Tour Oswald","Arial Narrow",Arial,sans-serif}
.judge-popup-content .stats-players{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:18px 0 16px}
.judge-popup-content .stats-players>span{display:none}
.judge-stat-air{position:sticky;bottom:0;background:#17313b;z-index:2}
.judge-stat-air .btn{flex:1;width:100%;font-size:16px;line-height:1.3;min-height:48px;padding:12px 16px;background:#e0e8cb;color:#143d4b;border:1px solid #e0e8cb}
.judge-stat-air .btn.on-air{background:#cbed8a;border-color:#cbed8a}
.judge-stats-dialog .judge-stat-scopes button.btn{font-size:16px;min-height:44px;background:#203e49;color:#eef4e5;border-color:#718b94}
.judge-stats-dialog .judge-stat-scopes button.btn[aria-pressed=true]{background:#e0e8cb;color:#143d4b;border-color:#e0e8cb;box-shadow:none}

/* Shared score: inset console, trailing service marker, and one current-set column. */
.referee-workspace .referee-main>.referee-score-panel{width:calc(100% - 24px);max-width:780px;padding:0;background:transparent;border-radius:10px;margin:0 auto 14px}
.tour-score{--tour-radius:.32em}
.referee-score-panel .tour-score-body,.tour-score-body{border-radius:var(--tour-radius)}
.tour-score-body{z-index:1}
.tour-score-row{grid-template-columns:minmax(0,1fr) repeat(var(--tour-sets),1.45em) 1.85em}
.tour-no-points .tour-score-row{grid-template-columns:minmax(0,1fr) repeat(var(--tour-sets),1.45em)}
.tour-player{padding:.32em .4em .32em .65em;gap:.25em}
.strip-name-lines,.tour-player .strip-name-lines{display:flex;flex-direction:row;align-items:center;flex-wrap:wrap;gap:0;min-width:0}
.strip-athlete-name{overflow-wrap:anywhere;min-width:0}
.player-initial{font-weight:500;opacity:.86}
.player-surname{font-weight:700}
.strip-pair-separator{white-space:pre;font-weight:500;opacity:.8}
.tour-server{flex:0 0 .6em;align-self:center;min-width:.6em}
.tour-server i{width:.42em;height:.42em;box-shadow:none;background:radial-gradient(circle at 30% 25%,#effacb,#9fc98d 70%)}
.tour-current{color:#102f39;background:linear-gradient(110deg,#d3e5a6f5,#a4c6a7ef);box-shadow:inset 1px 0 #e3f1cf55}
.tour-point{color:#d8e8bc;background:#102e3633}
.tour-message{z-index:0;top:calc(-1.35em + 1px);border-radius:.4em .4em 0 0;box-shadow:inset 0 1px #eff6d8a8;will-change:transform,opacity}
.tour-message:after{content:'';position:absolute;left:0;bottom:calc(-1 * var(--tour-radius) / .65);width:calc(var(--tour-radius) / .65);height:calc(var(--tour-radius) / .65);background:#e0e8cb;z-index:-1;pointer-events:none}
@property --tour-angle{syntax:'<angle>';inherits:false;initial-value:-90deg}
.tour-edge{--tour-angle:-90deg;position:absolute;inset:0;width:auto;height:auto;border-radius:inherit;padding:1px;z-index:2;opacity:0;overflow:hidden;background:conic-gradient(from var(--tour-angle),transparent 0deg,#dfecc520 12deg,#dfecc570 32deg,#effbdccc 50deg,#dfecc570 66deg,#dfecc520 80deg,transparent 94deg);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask-composite:exclude;pointer-events:none}
.referee-toolbar .referee-court-title{display:inline-flex;align-items:center;gap:9px;min-width:0}
.referee-toolbar .referee-court-title>.score-sync{display:inline-flex;position:static;align-items:center;justify-content:center;flex:0 0 18px;width:18px;height:18px;font-size:18px;color:#466128}
.referee-toolbar .score-sync i{border-color:#9caba75c;border-top-color:#466128}
body.judge-dark .referee-toolbar .score-sync{color:#cbed8a}
body.judge-dark .referee-toolbar .score-sync i{border-color:#b0c3c65c;border-top-color:#cbed8a}
.referee-toolbar .referee-court-title>.score-sync[data-state=error]{color:#ad3929}
body.judge-dark .referee-toolbar .referee-court-title>.score-sync[data-state=error]{color:#ffb5a5}
/* Explicit theme colors override the old indicators intended for a dark score panel. */
.referee-score-top .referee-score-indicators>.referee-air-toggle{background:#fff0ce;color:#62481a;border-color:#b89959}
.referee-score-top .referee-score-indicators>.referee-air-toggle.on-air{background:#e1edd2;color:#234b29;border-color:#84a373}
body.judge-dark .referee-score-top .referee-score-indicators>.referee-air-toggle{background:#ffdb96;color:#3e300c;border-color:#ffdb96}
body.judge-dark .referee-score-top .referee-score-indicators>.referee-air-toggle.on-air{background:#cbed8a;color:#173b28;border-color:#cbed8a}

/* Clock controls keep their positions through first serve, second serve and rally. */
.match-time.serve-clock>div.match-time-body{min-height:100px;align-items:center;margin:0 0 12px}
.match-time .time-digits{align-self:center}
.match-time .time-limit{min-height:18px}
.time-limit-empty{visibility:hidden}
.match-time .time-context{min-height:86px;display:flex;flex-direction:column;justify-content:center}
.match-time .time-context .serve-clock-state{line-height:1.25}
.match-time .time-warning:empty{display:none}
.match-time .time-warning .btn{min-height:36px;font-size:15px;padding:7px 10px;margin-top:5px}
.match-time.serve-clock .time-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;min-height:56px;align-items:stretch}
.match-time.serve-clock .time-actions .btn{margin:0;min-width:0;font-size:17px;padding:10px 8px;line-height:1.2}
.match-time .time-progress{margin-top:14px}
.time-progress-empty{visibility:hidden}
.referee-workspace .referee-point-buttons button{display:flex;flex-direction:column;justify-content:space-between;gap:15px;min-height:132px;text-align:left}
.referee-point-buttons .referee-point-name{font-size:clamp(23px,3.5vw,29px);font-weight:750;line-height:1.15;overflow-wrap:anywhere}
.referee-point-buttons .referee-point-bottom{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;font-size:20px;font-weight:700}
.referee-point-buttons .referee-point-bottom>span{font-size:20px;white-space:nowrap}
.referee-point-buttons .referee-button-score{font-size:38px;line-height:1;margin:0;font-variant-numeric:tabular-nums}
@media(max-width:380px){.match-time .time-digits{min-width:86px}.match-time .time-digits strong{font-size:42px}.match-time.serve-clock .time-actions .btn{font-size:15px}.referee-point-buttons .referee-point-name{font-size:22px}.referee-point-buttons .referee-point-bottom>span{font-size:18px}}

/* Umpire dialogs use the same calm, high-contrast palette as statistics. */
.referee-focus #modal{--ink:#f1f6e9;--muted:#c4d4d8;--line:#78929b;--control-bg:#e9efdf;--control-ink:#12323e;--control-edge:#d3dec5;--primary-bg:#cde3a8;--primary-ink:#12323e;background:linear-gradient(145deg,#1b414f,#102d38);color:var(--ink);border:1px solid #b7ceb260;box-shadow:0 20px 80px #00182165;border-radius:14px;padding:28px}
.referee-focus #modal h2,.referee-focus #modal h3,.referee-focus #modal label,.referee-focus #modal legend,.referee-focus #modal summary{color:var(--ink)}
.referee-focus #modal .close{color:#e6efda;opacity:1;right:14px;top:10px}
.referee-focus #modal input:not([type=checkbox]):not([type=radio]),.referee-focus #modal select,.referee-focus #modal textarea{background:#f1f5e9;color:#13333e;border:1px solid #cad8bf;border-radius:7px}
.referee-focus #modal input[type=checkbox],.referee-focus #modal input[type=radio]{accent-color:#b9dd91}
.referee-focus #modal fieldset{border-color:#78929b;border-radius:8px}
.referee-focus #modal .small,.referee-focus #modal .muted{color:var(--muted)}
.referee-focus #modal .auth-error{color:#ffd0bc}
.referee-focus #modal a{color:#e0edc6}
.referee-focus #modal .country-trigger{background:#f1f5e9;color:#13333e;border-color:#cad8bf}
.referee-focus #modal .country-menu{background:#f1f5e9;color:#13333e}
.referee-focus #modal .country-menu button{color:#13333e}
.referee-focus #modal .time-menu-grid{gap:10px;grid-template-columns:repeat(2,minmax(0,1fr))}
.referee-focus #modal .time-menu-grid .btn{min-height:70px;display:flex;align-items:center;justify-content:center;padding:14px 12px;font-size:18px}
.match-time .time-menu-trigger{display:flex;align-items:center;justify-content:center;color:var(--ink);border:1px solid transparent;border-radius:8px}
.match-time .time-menu-trigger:hover{border-color:var(--line);background:#899f9f17}
.match-time .time-menu-trigger svg{width:25px;height:25px;flex-shrink:0}
@media(max-width:380px){.referee-focus #modal{padding:22px 16px}.referee-focus #modal .time-menu-grid .btn{font-size:16px}}

/* Player colors follow the player when the controls swap ends. */
body.referee-focus .referee-workspace .referee-point-buttons button[data-ref-point="0"]{background:#e0e8cb;border-color:#c5d4ac;color:#12323e}
body.referee-focus .referee-workspace .referee-point-buttons button[data-ref-point="1"]{background:#bdded7;border-color:#94beb4;color:#12323e}
body.referee-focus .referee-workspace .referee-point-buttons button:disabled{background:#dce3df;color:#607171;border-color:#b7c3be}
body.referee-focus.judge-dark .referee-workspace .referee-point-buttons button:disabled{background:#344b54;color:#b1c0c2;border-color:#607983}
.referee-workspace .match-time .time-actions .btn:not(.secondary),.referee-workspace .match-time .time-warning .btn:not(.secondary){background:var(--primary-bg);color:var(--primary-ink);border-color:var(--primary-bg)}
.referee-point-buttons .referee-point-name{font-family:"Tour Oswald","Arial Narrow",Arial,sans-serif;font-size:clamp(25px,4vw,31px);font-weight:700;letter-spacing:0}
.referee-point-buttons .referee-button-score{font-family:"Tour Oswald","Arial Narrow",Arial,sans-serif}
@media(max-width:380px){.referee-point-buttons .referee-point-name{font-size:25px}}
.referee-tools{grid-template-columns:repeat(3,minmax(0,1fr))}
.referee-focus #modal .penalty-players,.referee-focus #modal .penalty-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:0 0 16px}
.referee-focus #modal .penalty-players .btn{font-family:"Tour Oswald","Arial Narrow",Arial,sans-serif;font-size:25px;min-height:64px;padding:12px 8px;overflow-wrap:anywhere}
.referee-focus #modal .penalty-options .btn{font-size:20px;min-height:72px;padding:12px 8px}
.referee-focus #modal .penalty-players .btn[aria-pressed=true],.referee-focus #modal .penalty-options .btn[aria-pressed=true]{background:#bcd999;color:#12323e;border-color:#cfe6b2;box-shadow:inset 0 0 0 2px #12323e}
.referee-focus #modal .penalty-note{border-top:1px solid #78929b;margin:0 0 16px}
.referee-focus #modal .penalty-note summary{padding:12px 0;font-size:16px}
.referee-focus #modal .penalty-note textarea{min-height:80px;margin:0}
.referee-focus #modal .penalty-apply{width:100%;min-height:54px;font-size:18px}
@media(max-width:380px){.referee-focus #modal .penalty-options .btn{font-size:17px}}
/* Match the direct-child selector used by the legacy clock styles. */
.match-time.serve-clock>div.time-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:64px;gap:9px;min-height:64px;align-items:stretch}
.match-time.serve-clock>div.time-actions .btn{min-height:0;height:64px;box-sizing:border-box}
.match-time.serve-clock>div.match-time-body{min-height:112px}
body.referee-focus #modal .penalty-players .btn[aria-pressed=true],body.referee-focus #modal .penalty-options .btn[aria-pressed=true]{background:#bcd999;color:#12323e;border-color:#cfe6b2;box-shadow:inset 0 0 0 2px #12323e}
body.referee-focus #modal .match-protocol{background:#fff;color:#132f39}
body.referee-focus #modal .match-protocol h2,body.referee-focus #modal .match-protocol h3{color:#132f39}
/* Theme changes must never pass through unreadable text/background combinations. */
body.referee-focus .referee-workspace button,body.referee-focus #modal button{transition:box-shadow .15s,transform .15s}
body.referee-focus #modal .penalty-players .btn[data-retire-player][aria-pressed=true]{background:#bcd999;color:#12323e;border-color:#cfe6b2;box-shadow:inset 0 0 0 2px #12323e}
.retirement-result{font-size:18px;min-height:26px;margin:0 0 16px}

/* Completion keeps the result separate from the available actions. */
body.referee-focus .referee-result{display:block;background:linear-gradient(125deg,#21424e,#122b37);color:#f6f8ed;border:1px solid #67858a;border-radius:12px;padding:20px;margin-top:20px}
.referee-result-heading{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:20px}
.referee-result-heading>div{min-width:0}.referee-result-heading span,.referee-result-heading small{color:#ccd9d6;font-size:14px}.referee-result-heading h2{color:#f6f8ed;font-size:26px;line-height:1.2;margin:5px 0;overflow-wrap:anywhere}
.referee-result .referee-final-score{color:#d9ebaf;font:600 28px/1.25 "Tour Oswald",sans-serif;text-align:right;white-space:normal;flex-shrink:0}
.referee-result-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px}.referee-result-actions .btn{margin:0;min-height:56px;padding:12px 10px;white-space:normal;justify-content:center;font-size:17px}
body.referee-focus .referee-result-actions .btn{background:#d9ebaf;color:#172f39;border:1px solid #d9ebaf}body.referee-focus .referee-result-actions .secondary{background:#f2f5e9;color:#172f39;border:1px solid #f2f5e9}
.judge-settings-section{border-top:1px solid #ffffff25;padding:16px 0}.judge-settings-section h3{font-size:17px;color:#cfe2d8;margin:0 0 10px}.referee-menu .referee-menu-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}.referee-menu .referee-menu-actions .btn{margin:0}
body.referee-focus .settings-row{display:flex;width:100%;justify-content:space-between;align-items:center;gap:12px;text-align:left;background:#edf1e3;color:#172f39;border:0;border-radius:8px;padding:15px;font-size:18px;min-height:56px;text-decoration:none}.settings-row>span{min-width:0}.settings-row>span>b{display:block}.settings-row small{display:block;font-size:14px;margin-top:5px;color:#52686d}.settings-draw-list{display:grid;gap:10px}.judge-settings-section>.settings-row:not(:first-child){margin-top:10px}
.judge-settings-editor fieldset{border:0;padding:0;margin:22px 0;min-width:0}.judge-settings-editor legend{font-size:17px;font-weight:700;margin-bottom:10px}.judge-settings-editor .format-fields{margin:0}.judge-settings-editor .format-grid{gap:14px}.judge-settings-editor .format-grid label{font-size:15px}.judge-settings-editor form>button:last-child{width:100%;justify-content:center;margin-top:10px}.judge-settings-editor .settings-hint{color:#d1dfda;font-size:14px}
.settings-choices{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.settings-choice{position:relative;margin:0!important;cursor:pointer;min-width:0}.settings-choice>input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.settings-choice>span{display:flex;flex-direction:column;justify-content:center;min-height:64px;border:1px solid #9aafb3;border-radius:8px;padding:12px 7px;background:#edf1e3;color:#172f39;text-align:center;gap:5px}.settings-choice b{font-size:16px;overflow-wrap:anywhere}.settings-choice small{font-size:12px;color:#425a60}.settings-choice:has(:checked)>span{background:#d5e8aa;border:2px solid #d5e8aa;box-shadow:inset 0 0 0 2px #385944}.settings-choice:has(:focus-visible)>span{outline:3px solid #fff;outline-offset:3px}.settings-toggle{padding:12px;background:#ffffff0b;border-radius:8px}
@media(max-width:380px){.referee-result-heading{align-items:flex-start;flex-direction:column;gap:12px}.referee-result-actions{grid-template-columns:1fr}.settings-choices{gap:6px}.settings-choice b{font-size:14px}.settings-choice>span{padding:10px 5px}}
.format-fields:not(:has(select[name$="-deciding"] option[value="matchTB"]:checked)) .match-tiebreak-target{display:none}.format-fields .format-extra{margin-top:18px}.format-extra>summary{font-size:16px}.format-extra .format-grid{margin-top:14px}
body.referee-focus .judge-settings-editor .judge-preferences{margin-top:0}
#modal:has(.match-players-editor){width:min(900px,calc(100% - 24px));padding:24px;max-height:94dvh}.players-editor-heading{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:16px}.players-editor-heading h2{margin:0}.players-view-badge{font-size:13px;background:#d5e8aa;color:#172f39;padding:6px 10px;border-radius:20px}.players-editor-controls{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px}.players-editor-controls>fieldset{border:0;margin:0;padding:0;min-width:0;flex:1}.players-editor-controls .settings-choices{grid-template-columns:repeat(2,minmax(0,1fr));max-width:380px}.players-editor-controls .settings-choice>span{min-height:48px}.players-editor-controls .players-swap{font-size:28px;min-width:52px;padding:0;min-height:48px;margin:0}
.match-player-cards{display:grid;grid-template-columns:1fr 1fr;gap:14px}.match-player-card{min-width:0;background:#ffffff07;border:1px solid #8fa7a77a;border-radius:10px;padding:16px}.match-player-card h3{font-size:17px;margin:0 0 16px;color:#d5e8aa}.match-player-data{border:0;padding:0;margin:0;min-width:0}.match-player-fields{border:0!important;padding:0!important;margin:0 0 14px!important;min-width:0}.match-player-fields>legend{font-size:14px;margin-bottom:10px}.match-player-name-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}.match-player-card label{font-size:14px;margin:0 0 12px}.match-player-card input,.match-player-card .country-trigger{padding:10px 12px;min-height:44px;font-size:16px}.match-player-card .player-extra{margin:6px 0 0;border:0}.player-extra>summary{font-size:14px;padding:0 0 8px}.match-player-card .match-player-seed{display:flex;align-items:center;gap:10px;margin:0}.match-player-seed input{width:72px;margin:0}.match-players-editor .players-save{width:100%;justify-content:center;margin-top:8px}.match-players-editor input:disabled,.match-players-editor button:disabled{opacity:1;-webkit-text-fill-color:currentColor}.match-players-editor .settings-choice:has(:disabled){cursor:default}.referee-score-panel{touch-action:manipulation}.referee-score-panel:focus-visible{outline:2px solid #6c8c77;outline-offset:4px}
@media(max-width:639px){#modal:has(.match-players-editor){padding:20px 16px}.match-player-cards{grid-template-columns:1fr;gap:12px}.match-player-card{padding:14px}.match-player-card h3{margin-bottom:12px}.players-editor-heading h2{font-size:27px}}
body.referee-focus .referee-tools{grid-template-columns:repeat(4,minmax(0,1fr))}.referee-match-menu .match-action-list{display:grid;gap:10px}.referee-match-menu .settings-row:disabled{opacity:.45;cursor:default}
@media(max-width:380px){body.referee-focus .referee-tools .btn{font-size:13px;padding:12px 5px}}
body.referee-focus #modal label.settings-choice{display:block;line-height:1.25!important}.match-player-card .player-extra{padding:0;margin:4px 0}.match-player-card .player-extra>summary{padding:0;font-weight:500}.match-player-card .player-extra[open]>input{margin-top:8px}
.compact-serve-controls{display:flex;justify-content:flex-end;margin:16px 0}.compact-serve-controls .btn{min-height:48px;font-size:17px}
.toss-editor .settings-choices{grid-template-columns:1fr 1fr}.toss-editor .toss-legend{display:block;margin:20px 0 10px;font-size:17px;font-weight:700}.toss-summary{font-size:17px;color:#d5e8aa}
.protocol-extra-fields{margin-top:20px}.protocol-extra-fields .form-grid{margin-top:14px}
#modal:has(.rtt-protocol){width:min(1200px,calc(100% - 24px))}.rtt-protocol{background:white;color:black}.rtt-sheet{background:white;margin:0 0 16px;break-after:page;page-break-after:always}.rtt-sheet:last-child{break-after:auto;page-break-after:auto}.rtt-sheet>svg{display:block;width:100%;height:auto}.rtt-protocol text{font-family:Arial,sans-serif;fill:#000}
@media print{.protocol-preview:has(.rtt-protocol),.match-protocol.rtt-protocol{padding:0!important;margin:0!important;width:297mm!important;max-width:none!important}.rtt-sheet{width:297mm!important;height:210mm!important;max-height:210mm!important;margin:0!important;padding:0!important;overflow:hidden;break-inside:avoid;page-break-inside:avoid}.rtt-sheet>svg{width:297mm!important;height:210mm!important}.protocol-tools{display:none!important}#modal:has(.rtt-protocol){width:297mm!important;max-width:none!important;padding:0!important;margin:0!important;overflow:visible!important;max-height:none!important;border:0!important;border-radius:0!important}#modal:has(.rtt-protocol) .close{display:none!important}}

.protocol-tools{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.protocol-view-tabs{display:flex;gap:6px}.protocol-view-tabs [aria-pressed="true"]{background:#d5ef98!important;color:#172e39!important;border-color:#a6c96d!important}.web-protocol-toss{margin:20px 0}.referee-start{display:grid;grid-template-columns:1fr 1fr;gap:10px}.match-start-confirm .btns{display:flex;flex-wrap:wrap;gap:10px}.time-cue-text{display:flex;align-items:center;flex-wrap:wrap;gap:8px}

.players-editor-controls .settings-choice b{font-size:15px;white-space:nowrap;overflow-wrap:normal}.players-editor-controls .settings-choice>span{padding:10px 5px}
/* China Open geometry: taller lettering, shallow rows and a narrow score column. */
.tour-score-row{min-height:1.5em;grid-template-columns:minmax(0,1fr) repeat(var(--tour-sets),1.1em) 1.7em}
.tour-no-points .tour-score-row{grid-template-columns:minmax(0,1fr) repeat(var(--tour-sets),1.1em)}
.tour-player{padding:.18em .4em .18em .65em}
.tour-player .tour-server[aria-hidden=true]{display:none}
.tour-player .tour-server{flex:0 0 auto;align-self:center}
.tour-player .player-seed{font-size:.5em;opacity:.9;transform:translateY(.22em)}
.tour-score-row:nth-child(2) .tour-set,.tour-score-row:nth-child(2) .tour-point{font-weight:500}
.tour-message{font-size:.75em}
.tour-message:after{bottom:calc(-1 * var(--tour-radius) / .75);width:calc(var(--tour-radius) / .75);height:calc(var(--tour-radius) / .75)}
.tour-score{margin-top:1.02em}
.tour-score[data-tour-message=""]{margin-top:0}
.referee-score-panel .tour-score{margin-top:1.02em}
/* The video graphic grows to the longest name; its font never follows that growth. */
.tour-score-bug{container-type:normal;width:max-content;min-width:20.2%;max-width:90.4%;left:4.8%;bottom:9%;font-size:clamp(10px,1.9cqw,76px)}
.tour-score-bug .tour-score{font-size:inherit}
.tour-score-bug .tour-score-row{grid-template-columns:minmax(max-content,1fr) repeat(var(--tour-sets),1.1em) 1.7em}
.tour-score-bug .tour-no-points .tour-score-row{grid-template-columns:minmax(max-content,1fr) repeat(var(--tour-sets),1.1em)}
.tour-score-bug .strip-name-lines{flex-wrap:nowrap;white-space:nowrap;flex:0 0 auto}
.tour-score-bug .strip-athlete{flex:0 0 auto}
.tour-score-bug .strip-athlete-name{white-space:nowrap;overflow-wrap:normal}
/* The umpire graphic has a fixed width; ellipsis preserves the score and server. */
.referee-score-panel .tour-player .strip-name-lines{display:block;flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.referee-score-panel .tour-player .strip-athlete,.referee-score-panel .tour-player .strip-athlete-name{display:inline;white-space:nowrap;overflow-wrap:normal}
.referee-score-panel .tour-player .strip-pair-separator{display:inline;white-space:pre}
.referee-score-panel .tour-player .country-flag{display:inline-block;vertical-align:middle;margin-right:.3em}

/* Compact umpire score; keep broadcast sizing independent. */
.referee-score-panel .tour-score{font-size:clamp(18px,5.6cqw,32px);margin-top:1.02em}
.referee-workspace .referee-main>.referee-score-panel{display:flow-root;margin-top:0;margin-bottom:8px}
.referee-workspace .referee-score-top{min-height:36px;margin:0 auto 4px;gap:8px}
.referee-score-top .match-elapsed{font-size:15px;line-height:1.2;gap:5px}
.referee-workspace .referee-score-top .referee-air-toggle{min-height:36px;padding:6px 10px;font-size:15px;line-height:1.2;margin:0}
.referee-workspace .referee-toolbar{margin-bottom:6px}

/* Keep flag, lettering and serving ball on the row's centre line.
   Seed retains its existing lower baseline. */
.referee-score-panel .tour-player .strip-name-lines{display:flex;align-items:center;flex-wrap:nowrap;overflow:hidden}
.referee-score-panel .tour-player .strip-athlete{display:flex;align-items:center;flex:0 1 auto;min-width:0;overflow:hidden}
.referee-score-panel .tour-player .strip-athlete-name{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.referee-score-panel .tour-player .country-flag{display:block;vertical-align:initial;margin-right:0;align-self:center}
.tour-player .country-flag,.tour-player .tour-server{align-self:center}
/* Keep the full font line box: cap-height trimming clips Cyrillic accents
   and descenders inside the horizontal ellipsis containers. */

.tour-player .strip-athlete-name,.tour-player .strip-pair-separator{line-height:1.5}
.tour-player{padding-block:0}
