@font-face{font-family:Score Sans;src:url("./assets/dm-sans-400-Y2PJ5BOZ.ttf")}@font-face{font-family:Score Sans;src:url("./assets/dm-sans-600-AFJ5CDW4.ttf");font-weight:600}*{box-sizing:border-box}html{color-scheme:dark;background:#101211}body{margin:0;font-family:Score Sans,Arial,sans-serif;background:#101211;color:#f2efe6}button,input,select{font:inherit}button{cursor:pointer}button:disabled{cursor:default;opacity:.45}button,a,input,select{touch-action:manipulation}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,[tabindex]:focus-visible{outline:3px solid #efd592;outline-offset:4px}button{color:inherit;border:0;background:none;min-height:44px}button svg{flex-shrink:0}a{color:inherit}.score-app{--accent:#dcc08a;--copper:#b98665;--panel:#191d1b;--muted:#b7bdb7;min-height:100svh;background:radial-gradient(ellipse at 60% 0,#242b2480,transparent 60%),#101211;font-size:15px}.theme-badgers{--accent:#f4f2eb;--copper:#c3c6c3;--panel:#191b1b}.theme-titans{--accent:#e2c17e;--copper:#ca9774;--panel:#1c1b18}.score-header{height:92px;border-bottom:1px solid #ffffff16;display:flex;align-items:center;justify-content:space-between;gap:24px;padding:12px clamp(16px,3.5vw,56px)}.score-identity{display:flex;align-items:center;gap:20px;padding:0;text-align:left}.score-identity img{width:146px;height:50px;object-fit:contain}.score-word{font-weight:600;letter-spacing:.26em;font-size:24px;border-left:1px solid #ffffff35;padding-left:20px}.score-word>span{display:block;font-size:7px;letter-spacing:.13em;color:var(--muted);margin-top:6px}.score-header nav{display:flex;background:#ffffff07;border:1px solid #ffffff16;border-radius:30px;padding:4px}.score-header nav button{padding:0 22px;border-radius:25px;min-height:38px;color:#c4cbc4;font-size:13px}.score-header nav button.active{background:#e9e6db;color:#171b17;font-weight:600}.score-header-tools{display:flex;gap:10px}.score-header-tools button{width:44px;display:grid;place-items:center;border:1px solid #ffffff24;border-radius:50%}.score-courtside{max-width:1600px;margin:0 auto;position:relative}.score-context{padding:17px 4%;display:flex;align-items:center;justify-content:space-between;font-size:10px;letter-spacing:.13em;color:var(--muted);gap:12px}.score-context>span:first-child{display:flex;align-items:center;gap:14px}.score-context button{display:flex;align-items:center;gap:7px;font-size:12px;padding:0}.score-dot{color:#6d796c}.score-save{display:inline-flex;gap:7px;align-items:center;font-size:10px;letter-spacing:0;text-align:center;color:#b9cbb9}.score-save i,.score-footer i{display:inline-block;width:5px;height:5px;background:#a6b79e;border-radius:50%;flex-shrink:0}.score-warning{color:#f5be9c}.score-warning i{background:#f5be9c}.score-gamebar{display:flex;justify-content:space-between;align-items:center;margin:0 4%;border-top:1px solid #ffffff18;border-bottom:1px solid #ffffff18;padding:14px 0;font-size:10px;letter-spacing:.1em;color:var(--muted);gap:12px}.score-gamebar strong{font-size:16px;color:#f2efe6;margin-left:5px}.score-game-dots{display:flex;gap:9px}.score-game-dots i{width:8px;height:8px;border:1px solid #818b80;border-radius:50%}.score-game-dots .home{background:var(--accent);border-color:var(--accent)}.score-game-dots .away{background:var(--copper);border-color:var(--copper)}.score-pads{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);padding:14px 3% 0}.score-side{min-width:0;padding:14px 5% 0}.score-side:first-child{border-right:1px solid #ffffff1b}.score-player{text-align:center;min-height:100px}.score-player-kicker{font-size:10px;letter-spacing:.13em;color:var(--muted)}.score-player h1{font-size:clamp(20px,2.8vw,38px);font-weight:600;line-height:1.15;letter-spacing:-.03em;margin:9px 0 12px;overflow-wrap:anywhere}.score-serve{display:inline-flex;align-items:center;gap:7px;font-size:11px;color:#a6afa7;min-height:23px}.score-serve i{width:6px;height:6px;border:1px solid currentColor;border-radius:50%}.score-serve.serving{color:var(--accent)}.score-serve.serving i{background:var(--accent);box-shadow:0 0 12px #f2d59a55}.score-point{width:100%;min-height:230px;display:flex;flex-direction:column;align-items:center;justify-content:center;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;border-radius:14px;transition:background .12s}.score-point strong{font-size:clamp(135px,24vw,340px);font-weight:600;line-height:.95;letter-spacing:-.075em;font-variant-numeric:tabular-nums;padding-right:.07em;color:#f1eee5}.score-point span{font-size:10px;letter-spacing:.22em;margin-top:15px;color:#a6aea5}.score-point:not(:disabled):active{background:#ffffff0b}.score-point:disabled{opacity:1}.score-point:disabled span{visibility:hidden}.score-games-won{display:flex;align-items:center;justify-content:center;gap:14px;margin:12px 0 22px}.score-games-won>span{font-size:10px;color:var(--muted);letter-spacing:.15em}.score-games-won strong{font-size:22px;font-variant-numeric:tabular-nums}.score-games-won img{width:44px;height:36px;object-fit:contain;margin-left:14px}.score-actions{margin:0 4%;display:flex;align-items:center;justify-content:space-between;border-top:1px solid #ffffff20;padding:14px 0;gap:10px}.score-actions button{display:flex;gap:9px;align-items:center;font-size:13px;min-width:100px}.score-actions button:last-child{justify-content:flex-end}.score-rally-status{font-size:11px;color:var(--muted);text-align:center}.score-primary{min-height:48px;display:inline-flex;align-items:center;justify-content:center;gap:12px;background:var(--accent);color:#131713!important;border-radius:6px;padding:12px 21px;font-size:13px;font-weight:600}.score-start{text-align:center;padding:10px 20px 32px}.score-start p{font-size:13px;margin:0 0 12px;color:var(--muted)}.score-start>div{display:flex;flex-wrap:wrap;justify-content:center;gap:12px}.score-start small{display:block;margin:15px;color:var(--muted)}.score-transition{background:#1a1f1cf5;border:1px solid #dec48a66;border-radius:12px;padding:24px 30px;text-align:center;position:absolute;z-index:3;top:50%;left:50%;transform:translate(-50%,-40%);width:min(520px,90%);box-shadow:0 24px 70px #000b}.score-transition>svg{color:var(--accent)}.score-transition h2{font-size:clamp(26px,4vw,46px);letter-spacing:-.04em;margin:12px 0}.score-transition p{color:#c9d1c8;font-size:13px;line-height:1.65}.score-transition .score-primary{margin-top:8px}.score-eyebrow{font-size:10px;letter-spacing:.16em;color:var(--accent);display:block;margin-bottom:10px}.score-inline{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.score-transition .score-inline{justify-content:center}.score-footer{display:flex;justify-content:space-between;align-items:center;gap:14px;font-size:9px;letter-spacing:.07em;color:#abb5aa;padding:22px 4%;border-top:1px solid #ffffff12}.score-footer>span:first-child{display:flex;align-items:center;gap:7px}.score-footer>span:last-child{letter-spacing:.13em}.score-footer>span:last-child span{margin-left:16px;font-size:8px;letter-spacing:.06em;color:#8f9d8f}.score-desk{max-width:1220px;margin:auto;padding:40px clamp(18px,4vw,50px) 55px;min-height:75vh}.score-desk h1{font-size:clamp(35px,5vw,58px);line-height:1.1;letter-spacing:-.05em;margin:10px 0 14px}.score-desk p{color:var(--muted);line-height:1.6}.score-section-head{display:flex;justify-content:space-between;gap:25px;align-items:center}.score-empty{text-align:center;border:1px solid #ffffff1b;border-radius:12px;padding:58px 24px;margin:35px 0;background:#ffffff02}.score-empty>svg{color:var(--accent)}.score-empty h2{font-size:28px;letter-spacing:-.03em}.score-team-choices{display:flex;gap:14px;justify-content:center;flex-wrap:wrap}.score-team-choices button{display:flex;align-items:center;justify-content:center;gap:15px;border:1px solid #ffffff35;border-radius:8px;padding:16px 22px;min-width:220px}.score-team-choices img{width:50px;height:48px;object-fit:contain}.score-team-choices button.chosen{border-color:var(--accent);background:#ffffff06}.score-fixture-list{display:grid;gap:14px;margin:35px 0}.score-fixture{display:flex;align-items:center;gap:22px;text-align:left;background:#ffffff04;border:1px solid #ffffff1c;border-radius:10px;padding:24px;width:100%}.score-fixture img{width:65px;height:65px;object-fit:contain}.score-fixture>span{flex:1;min-width:0}.score-fixture small{display:block;color:#b8c3b7;font-size:11px;line-height:1.7}.score-fixture strong{display:block;font-size:20px;margin:7px 0}.score-fixture strong>span{font-weight:400;font-size:13px;color:var(--accent)}.score-fixture>b{font-size:32px;white-space:nowrap}.score-note{display:flex;align-items:flex-start;gap:8px;font-size:11px;line-height:1.7;color:var(--muted)}.score-note svg{flex-shrink:0;margin-top:2px}.score-back{display:flex;align-items:center;gap:9px;font-size:12px;color:#c8d1c5;margin-bottom:30px;padding:0}.score-setup form{margin-top:30px}.score-setup fieldset{min-width:0;padding:24px;border:1px solid #ffffff20;border-radius:8px;margin:0 0 28px}.score-setup legend{font-weight:600;font-size:14px;padding:0 10px;color:var(--accent)}.score-form-grid,.score-lineups{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:24px}.score-app label{display:block;font-size:12px;color:#e2e7dc;margin:0 0 17px;line-height:1.6}.score-app input,.score-app select{display:block;width:100%;min-height:48px;background:#101411;border:1px solid #626c5e;border-radius:5px;padding:12px 14px;color:#f5f3e9;margin-top:7px;max-width:100%}.score-app input::placeholder{color:#a3afa1}.score-app input[type=radio]{display:inline-block;width:18px;min-height:18px;vertical-align:middle;margin:0 9px 0 0;accent-color:var(--accent)}.score-app label small{display:block;color:var(--muted);margin-top:7px;font-size:11px}.score-setup .score-inline{margin-top:20px}.score-setup .score-inline>select{flex:1;min-width:120px}.score-setup .score-inline>label{margin:0 14px 0 0;min-height:44px;display:flex;align-items:center}.score-field-label{font-size:12px}.score-fixture-head{display:flex;align-items:center;gap:22px;margin-bottom:35px}.score-fixture-head>img{width:85px;height:85px;object-fit:contain}.score-fixture-head>div:nth-child(2){flex:1;min-width:0}.score-fixture-head h1{font-size:clamp(25px,3.3vw,42px)}.score-fixture-head h1>span{color:var(--muted);font-weight:400;font-size:.6em}.score-fixture-head p{margin-bottom:0;font-size:12px}.score-team-total{text-align:center;white-space:nowrap}.score-team-total strong{font-size:46px;letter-spacing:-.04em;display:block}.score-team-total small{font-size:8px;letter-spacing:.1em;color:var(--muted)}.score-rosters{display:grid;grid-template-columns:1fr 1fr;gap:26px;margin:25px 0}.score-rosters>div{min-width:0;padding:20px;background:#ffffff04;border-radius:8px;border:1px solid #ffffff18}.score-rosters small{font-size:9px;letter-spacing:.14em;color:var(--accent)}.score-rosters h2{font-size:18px;margin:8px 0 20px;overflow-wrap:anywhere}.score-rosters>div>span{display:flex;align-items:center;gap:10px;font-size:13px;margin:12px 0;overflow-wrap:anywhere}.score-rosters b{color:var(--accent);width:17px;flex-shrink:0}.score-rosters em{font-style:normal;font-size:10px;color:var(--muted);margin-left:auto;white-space:nowrap}.score-rosters p{font-size:11px;margin-bottom:0}.score-table-scroll{overflow-x:auto;max-width:100%;border:1px solid #ffffff30;border-radius:8px}.score-official{border-collapse:collapse;width:100%;min-width:775px;font-size:12px;background:#171c18}.score-official caption{text-align:left;padding:18px;font-size:11px;color:#d3dacc}.score-official th,.score-official td{padding:12px 9px;border:1px solid #ffffff20;text-align:center;font-variant-numeric:tabular-nums}.score-official thead{color:var(--accent);background:#ffffff05;font-size:11px}.score-official tbody th{text-align:left;font-size:12px;font-weight:400;min-width:150px;max-width:185px}.score-official tbody th>b{color:var(--accent);display:inline-block;min-width:20px}.score-official tbody th small{display:block;font-size:10px;line-height:1.6;color:var(--muted);margin-top:7px}.score-official tbody th span{font-weight:600}.score-official td{min-width:57px;white-space:nowrap}.score-official td:last-child{min-width:100px}.score-official td button{font-size:10px;min-height:44px;padding:0 8px;color:var(--accent)}.score-official tr.new-group th,.score-official tr.new-group td{border-top:2px solid #b4bba980}.score-official tr.next{background:#d6c18c0b}.score-official tr.in-progress{background:#8eaa7c12}.score-official tfoot{color:var(--accent);font-weight:600}.score-order{font-size:14px}.score-rubber-timeline{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin:24px 0}.score-rubber-timeline button{text-align:left;border:1px solid #ffffff22;padding:13px;border-radius:7px;min-width:0;min-height:94px}.score-rubber-timeline button>span{display:block;font-size:10px;color:var(--muted);margin-bottom:9px}.score-rubber-timeline strong{font-size:13px}.score-rubber-timeline small{display:block;color:var(--muted);font-size:9px;margin-top:7px;line-height:1.6}.score-rubber-timeline button.done{border-color:#93ac7860}.score-rubber-timeline button.done>span{color:#cadcb6}.score-rubber-timeline button.next{border-color:var(--accent)}.score-rubber-timeline button:disabled{opacity:1}.score-card-footer{display:flex;align-items:center;flex-wrap:wrap;gap:14px;margin-top:25px}.score-card-footer>button:not(.score-primary){display:flex;align-items:center;gap:7px;font-size:12px;padding:10px}.score-preview-notice{background:#e4c38917;border-left:2px solid var(--accent);padding:14px;font-size:11px;color:#e9d8b7!important}.score-error{background:#472a22;border:1px solid #d6a382;color:#ffe5cc;padding:15px 22px;font-size:13px;line-height:1.6;margin:12px 4%;border-radius:6px}.score-error button{text-decoration:underline;padding:0 8px}.score-shade{position:fixed;inset:0;z-index:10;background:#000b;padding:24px 16px;display:flex;align-items:center;justify-content:center;overflow:auto}.score-dialog{width:100%;max-width:500px;max-height:calc(100svh - 48px);overflow:auto;background:#1a211b;border:1px solid #8d987b;border-radius:14px;padding:25px 28px;box-shadow:0 20px 90px #000b}.score-dialog-head{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:18px}.score-dialog-head h2{font-size:24px;letter-spacing:-.04em;margin:0}.score-dialog-head button{width:44px;font-size:25px}.score-dialog p{font-size:12px;line-height:1.7;color:#c5cebf}.score-dialog h3{font-size:16px;margin-top:20px}.score-dialog hr{border:0;border-top:1px solid #ffffff25;margin:26px 0}.score-toggle{display:flex;align-items:center;gap:10px;text-align:left;width:100%;padding:10px 0;font-size:13px}.score-toggle>span{margin-left:auto;color:var(--accent)}.score-file{border:1px dashed #929c82;padding:14px;border-radius:5px;margin-top:15px!important}.score-manual-row,.score-manual-head{display:grid;grid-template-columns:50px minmax(0,1fr) minmax(0,1fr);gap:15px;align-items:center;margin-bottom:12px}.score-manual-row input{font-size:22px;text-align:center;min-height:52px}.score-manual-head{font-size:10px;color:var(--muted);letter-spacing:.1em;text-align:center}.score-loading{padding:80px 25px;text-align:center}@media(min-width:900px)and (max-height:900px){.score-header{height:76px}.score-context{padding-top:11px;padding-bottom:11px}.score-gamebar{padding:9px 0}.score-player{min-height:85px}.score-point{min-height:180px}.score-point strong{font-size:min(28vh,280px)}.score-games-won{margin:8px 0 15px}.score-footer{padding:13px 4%}.score-start{padding-bottom:20px}.score-side{padding-top:6px}.score-pads{padding-top:9px}}@media(max-width:650px){.score-header{height:112px;padding:10px 18px;gap:10px;flex-wrap:wrap}.score-identity{gap:12px}.score-identity img{width:103px;height:38px}.score-word{font-size:20px;padding-left:12px}.score-word>span{font-size:6px}.score-header nav{order:3;width:100%;justify-content:center;margin:0 auto;padding:2px;max-width:340px}.score-header nav button{flex:1;min-height:34px;font-size:12px;padding:0 14px}.score-header-tools{gap:5px}.score-header-tools button{width:38px;min-height:38px}.score-context{padding:14px 18px;font-size:8px;letter-spacing:.07em;flex-wrap:wrap}.score-context .score-save{order:3;width:100%;justify-content:center;font-size:9px}.score-gamebar{margin:0 18px;font-size:8px;padding:12px 0}.score-game-dots{gap:6px}.score-game-dots i{width:6px;height:6px}.score-pads,.score-side{padding:10px 8px 0}.score-player{min-height:112px}.score-player h1{font-size:24px;line-height:1.2;margin:9px 0}.score-player-kicker{font-size:8px}.score-serve{font-size:10px;max-width:100%;overflow-wrap:anywhere}.score-point{min-height:180px}.score-point strong{font-size:34vw}.score-point span{font-size:8px}.score-games-won{margin:10px 0 22px;gap:10px}.score-games-won>span{font-size:9px}.score-games-won img{width:30px;height:30px;margin-left:0}.score-actions{margin:0 18px;flex-wrap:wrap;padding:8px 0}.score-actions button{font-size:12px;min-width:90px}.score-rally-status{order:3;width:100%;font-size:10px;padding:5px 0}.score-start{padding:8px 18px 25px}.score-start .score-primary{flex:1;padding:10px 12px;max-width:260px;overflow-wrap:anywhere}.score-start>div{gap:10px}.score-transition{padding:22px 20px;top:53%}.score-footer{padding:18px;justify-content:center;flex-wrap:wrap;font-size:9px}.score-footer>span:last-child span{display:none}.score-desk{padding:28px 18px 35px}.score-section-head{display:block}.score-section-head>.score-primary{margin-top:10px}.score-team-choices{gap:10px}.score-team-choices button{min-width:0;flex:1;padding:14px;font-size:12px;flex-direction:column}.score-team-choices img{width:55px;height:50px}.score-fixture{padding:18px 14px;gap:14px}.score-fixture img{width:44px;height:48px}.score-fixture strong{font-size:16px;line-height:1.5}.score-fixture>b{font-size:25px}.score-fixture>svg{display:none}.score-fixture small{font-size:10px}.score-form-grid,.score-lineups{grid-template-columns:minmax(0,1fr);gap:0}.score-setup fieldset{padding:18px}.score-fixture-head{flex-wrap:wrap;gap:15px}.score-fixture-head>img{width:58px;height:65px}.score-fixture-head>div:nth-child(2){flex:1}.score-team-total{width:100%;padding-top:10px;border-top:1px solid #ffffff20}.score-team-total strong{font-size:48px}.score-rosters{gap:10px}.score-rosters>div{padding:14px 10px}.score-rosters h2{font-size:15px;line-height:1.5}.score-rosters>div>span{font-size:11px;gap:5px;flex-wrap:wrap}.score-rosters em{font-size:9px}.score-rosters p{font-size:10px}.score-rubber-timeline{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.score-rubber-timeline button{min-height:80px}.score-dialog{padding:20px;max-height:calc(100svh - 32px)}.score-shade{padding:16px}.score-dialog-head h2{font-size:22px}.score-card-footer{gap:8px}.score-card-footer .score-primary{width:100%}}@media(orientation:landscape)and (max-height:550px){.score-header{height:54px;flex-wrap:nowrap;padding:6px 18px}.score-header nav{order:initial;width:auto;margin:0}.score-word>span{display:none}.score-identity img{height:30px;width:95px}.score-word{font-size:18px}.score-context{padding:6px 4%;flex-wrap:nowrap}.score-context .score-save{order:initial;width:auto}.score-gamebar{padding:6px 0}.score-pads{padding-top:2px}.score-player{min-height:58px}.score-player h1{font-size:20px;margin:4px 0}.score-player-kicker{font-size:8px}.score-serve{font-size:9px;min-height:14px}.score-point{min-height:105px}.score-point strong{font-size:28vh}.score-point span{display:none}.score-games-won{margin:4px 0 7px}.score-games-won strong{font-size:18px}.score-actions{padding:3px 0;flex-wrap:nowrap}.score-actions .score-rally-status{order:initial;width:auto;font-size:9px}.score-footer{padding:9px 4%;font-size:8px}.score-start{padding:5px 12px 12px}.score-start p{margin-bottom:6px;font-size:11px}.score-start .score-primary{min-height:40px;padding:8px 16px}.score-transition{top:47%;padding:16px 22px}.score-transition h2{font-size:27px;margin:8px 0}.score-transition p{margin:8px 0}.score-transition>svg{width:22px;height:22px}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;scroll-behavior:auto!important}}@media print{html,body,.score-app{background:#fff!important;color:#000!important}.score-header,.score-footer,.score-back,.score-card-footer,.score-rubber-timeline,.score-preview-notice,.score-note,.score-official button{display:none!important}.score-desk{padding:0;max-width:none}.score-official{min-width:0;background:#fff}.score-official th,.score-official td{border-color:#555;color:#000;padding:7px 4px}.score-table-scroll{overflow:visible;border:0}.score-rosters>div{border-color:#888}.score-rosters p,.score-fixture-head p,.score-eyebrow,.score-rosters small,.score-rosters b{color:#000}.score-fixture-head>img{filter:drop-shadow(0 0 1px black)}}.score-point.long strong{font-size:clamp(65px,18vw,170px)}.score-point.extra-long strong{font-size:clamp(48px,13vw,120px)}.score-app{padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom)}.score-header{padding-left:max(18px,env(safe-area-inset-left));padding-right:max(18px,env(safe-area-inset-right))}.score-header nav button{min-height:44px}@media(max-width:650px){.score-header{height:124px}}@media(orientation:landscape)and (max-height:550px){.score-header{height:68px}}.score-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.score-games-won{min-height:36px}

/* Stage A: focused picker, card and approval improvements; courtside pads retain V1 geometry. */
.score-player-field{width:100%;display:flex;justify-content:space-between;align-items:center;text-align:left;border:1px solid #6c746d;background:#101411;border-radius:7px;padding:12px 14px;min-height:48px;color:#f2efe6}.score-player-picker{margin:12px 0}.score-picker-shade{position:fixed;z-index:110;inset:var(--picker-top,0) 0 auto;height:var(--picker-height,100dvh);background:#000a;display:flex;align-items:center;justify-content:center;padding:20px}.score-picker-sheet{width:min(520px,100%);max-height:100%;overflow:auto;overscroll-behavior:contain;background:#191d1b;color:#f2efe6;border:1px solid #7c806e;border-radius:14px;padding:22px}.score-picker-sheet input{width:100%;font-size:16px;padding:13px;margin:8px 0;border:1px solid #788176;background:#101411;color:#f2efe6;border-radius:6px}.score-picker-options{max-height:290px;overflow:auto;overscroll-behavior:contain;margin:12px 0}.score-picker-options button{display:flex;flex-direction:column;justify-content:center;align-items:flex-start;gap:5px;width:100%;min-height:58px;padding:12px 14px;border-bottom:1px solid #ffffff24}.score-picker-options button[aria-selected=true]{background:#dcc08a18}.score-picker-options small{color:#c5cdc3}.score-agreement{display:flex!important;align-items:flex-start;gap:12px;margin:15px 0!important;line-height:1.5}.score-agreement input{width:22px!important;min-width:22px;height:22px;margin:0;accent-color:#dcc08a}.score-ink{display:block;width:100%;aspect-ratio:600/220;background:#101411;border:1px solid #7c857b;border-radius:8px;touch-action:none;user-select:none}.score-ink-cursor{display:none}.score-ink:focus .score-ink-cursor{display:block}.score-signature>button{margin:8px 0}.score-captain{margin:24px 0;padding:16px;border:1px solid #6c746d;border-radius:10px}.score-approved{padding:12px;background:#dcc08a10}.score-approved svg{display:block;width:100%;max-height:120px}.score-pdf-actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:20px}.score-review-state{font-size:18px;font-weight:600;color:#efd592}.score-dialog:has(.score-captain){width:min(840px,calc(100vw - 24px))}.score-dialog details{border-bottom:1px solid #ffffff24;padding:14px 0}.score-dialog summary{cursor:pointer;min-height:44px;padding-top:10px;color:#efd592}.score-dialog details .score-rosters{font-size:13px}.score-official td{font-variant-numeric:tabular-nums;font-size:15px;padding:13px 8px}.score-official tr.completed td:nth-last-child(-n+3){font-weight:600;color:var(--accent)}.score-official tr.in-progress{background:#dcc08a0b}.score-official button{min-height:44px;padding:8px}.score-fixture-crest{display:flex;flex-direction:column;align-items:center;gap:8px;width:100px;flex-shrink:0}.score-fixture-crest img{height:70px;width:80px;object-fit:contain}.score-fixture-crest small{text-align:center;font-size:11px;color:#c6cec3}.score-card-footer{gap:12px!important}.score-captain input:not([type=checkbox]){font-size:16px}.score-dialog input,.score-dialog select{font-size:16px}
@media(max-width:640px){.score-picker-shade{padding:10px;align-items:flex-end}.score-picker-sheet{padding:16px;border-radius:14px 14px 6px 6px}.score-picker-options{max-height:32dvh}.score-pdf-actions>button{width:100%}.score-captain{padding:12px}.score-fixture-crest{width:64px}.score-fixture-crest img{width:56px;height:56px}.score-official td{font-size:14px}.score-dialog:has(.score-captain){padding:16px}.score-courtside .score-player h1{overflow-wrap:anywhere}}
.score-player-picker{min-width:0}.score-player-field{overflow-wrap:anywhere;gap:12px}.score-player-field>span{flex-shrink:0}.score-captain legend{overflow-wrap:anywhere;max-width:100%}

/* Refined Stage A: explicit phone-first sheets, per-rubber methods and accessible finalisation. */
.score-picker-shade{--accent:#dcc08a;--muted:#b7bdb7;font-family:Score Sans,Arial,sans-serif;isolation:isolate;box-sizing:border-box;touch-action:pan-y}
.score-picker-sheet{display:flex;flex-direction:column;min-height:0;padding-bottom:max(18px,env(safe-area-inset-bottom));box-sizing:border-box;max-height:100%;box-shadow:0 12px 70px #000b}
.score-picker-options{flex:1;min-height:80px;max-height:360px}.score-picker-options button{flex-shrink:0;white-space:normal;text-align:left;overflow-wrap:anywhere;color:#f2efe6}.score-picker-options button:disabled{opacity:.5}
.score-picker-search-toggle{min-height:48px;text-align:left;color:#efd592;padding:10px 0;border-bottom:1px solid #fff3}
.score-picker-sheet input{box-sizing:border-box;min-width:0;max-width:100%}
.score-build-label{color:#efd592;font-size:9px;letter-spacing:.04em}
.score-demo-choices{margin:24px 0;padding:20px;border:1px solid #7c806e;border-radius:10px}.score-demo-choices h2{margin:0;font-size:21px}.score-demo-choices p{color:#c5cdc3;font-size:13px}.score-demo-choices button,.score-method-choices button{min-height:50px;padding:13px 18px;border:1px solid #a8946f;border-radius:6px;text-align:left}
.score-method-choices{display:grid;gap:14px;margin:20px 0}.score-switch-method{display:block;margin:8px auto;padding:10px 18px;min-height:44px;color:var(--accent);border:1px solid #ffffff38;border-radius:6px;font-size:13px}.score-result-preview{font-weight:600;color:#efd592!important;font-size:16px!important}
.score-point:active{background:#dbc18b20}.score-point:focus-visible{outline:3px solid #efd592;outline-offset:3px}
.score-mobile-rubbers{display:none}
@media(max-width:650px){.score-picker-shade{padding:8px;align-items:flex-end}.score-picker-sheet{width:100%;border-radius:18px 18px 8px 8px;padding:16px;max-height:100%}.score-picker-options{max-height:none;flex:1}.score-picker-sheet .score-dialog-head{margin-bottom:4px}.score-demo-choices{padding:16px}.score-demo-choices .score-inline{display:grid}.score-card-footer .score-primary{min-height:52px}.score-mobile-rubbers{display:grid;gap:10px;margin:18px 0}.score-mobile-rubber{padding:13px;border:1px solid #75806c66;border-radius:8px}.score-mobile-rubber strong{font-size:14px;overflow-wrap:anywhere}.score-mobile-rubber p{font-size:12px;line-height:1.5;margin:7px 0;color:#d4dacd}.score-mobile-rubber>div{display:flex;gap:8px}.score-mobile-rubber button{flex:1;min-height:46px;border:1px solid #b29c6a;border-radius:5px;padding:8px;font-size:12px}.score-mobile-rubber button:first-child{background:#d9bd8120;color:#efd592}.score-mobile-rubbers+.score-rosters{display:none}.score-dialog details[open] .score-mobile-rubbers{display:grid}}

.score-matrix-toggle{display:none}@media(max-width:650px){.score-matrix-toggle{display:block;min-height:46px;padding:10px 14px;margin:12px 0;border:1px solid #8b9478;border-radius:6px;color:#efd592}.score-mobile-rubbers~.score-table-scroll:not(.score-matrix-open){display:none}.score-mobile-rubbers~.score-rubber-timeline{display:none}}

/* Final Stage A: readable pairing groups and phone-first read-only captain review. */
.score-picker-team{font-size:13px;color:#d7c495;margin:0 0 10px;overflow-wrap:anywhere}
.score-doubles-team{margin:24px 0;padding:18px 16px;border:1px solid #75816f;border-radius:9px;min-width:0}.score-doubles-team legend{padding:0 8px;max-width:100%;font-weight:600;line-height:1.5;overflow-wrap:anywhere}.score-doubles-team .score-player-picker{margin:16px 0 22px}.score-doubles-team .score-field-label{display:block;margin-bottom:8px;font-size:13px;color:#d4d9ce}.score-doubles-team small{font-size:12px;line-height:1.6;color:#c1c9bb}.score-doubles-save{min-height:50px}.score-doubles-form>.score-note{margin:14px 0 0;font-size:12px;line-height:1.6}.score-dialog-head>button{min-width:44px;flex-shrink:0}
.score-doubles-summary{display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px;align-items:baseline;line-height:1.6}.score-doubles-summary strong{font-size:inherit;font-weight:400}.score-doubles-summary em{white-space:nowrap}.score-position{display:inline-flex;justify-content:center;align-items:center;min-width:24px;margin-right:9px;border:1px solid #949b7755;border-radius:4px;padding:3px 5px}
.score-review-results{min-width:0}.score-review-total{display:flex;justify-content:space-between;gap:14px;align-items:center;padding:16px 0;border-bottom:1px solid #ffffff2b}.score-review-total span{font-size:17px;line-height:1.5;overflow-wrap:anywhere;min-width:0}.score-review-total>strong{font-size:36px;color:#efd592;white-space:nowrap}.score-review-pairs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.score-review-pairs p{overflow-wrap:anywhere}.score-review-pairs span{color:#efd592}.score-review-rubbers{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;list-style:none;margin:16px 0;padding:0}.score-review-rubbers>li{min-width:0;border:1px solid #87927b77;border-radius:8px;padding:14px}.score-review-rubber-head{display:flex;justify-content:space-between;gap:12px;align-items:center}.score-review-rubber-head>b{font-size:22px;color:#efd592}.score-review-rubbers p{margin:8px 0;overflow-wrap:anywhere}.score-review-side{display:inline-block;min-width:38px;color:#b8c2b0;font-size:11px}.score-review-games{display:flex;flex-wrap:wrap;gap:8px;list-style:none;margin:12px 0;padding:0}.score-review-games>li{display:grid;gap:4px;padding:7px 9px;border:1px solid #ffffff29;border-radius:4px;font-variant-numeric:tabular-nums}.score-review-games small{font-size:10px;color:#bac5b4}.score-review-games strong{font-size:16px;white-space:nowrap}.score-review-winner{color:#e4cc9b!important}.score-review-official>summary{overflow-wrap:anywhere}.score-official caption{white-space:normal;overflow-wrap:anywhere;text-align:left}.score-review-official .score-table-scroll{max-width:100%}.score-sharing-readiness{font-size:12px!important;color:#d6c89d!important;line-height:1.6}
@media(max-width:650px){.score-doubles-save{width:100%;margin:8px 0 0}.score-doubles-team{padding:16px 12px;margin:26px 0}.score-doubles-dialog .score-dialog{padding:18px 16px}.score-doubles-team .score-agreement{font-size:12px}.score-review-rubbers,.score-review-pairs{grid-template-columns:minmax(0,1fr)}.score-review-pairs{gap:0}.score-signing-dialog{padding:0;align-items:stretch}.score-signing-dialog .score-dialog{width:100%;max-width:none;height:100%;max-height:100%!important;border-radius:0;border:0;padding:16px max(16px,env(safe-area-inset-right)) max(20px,env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left));scroll-padding-top:70px}.score-signing-dialog .score-dialog-head{position:sticky;top:-16px;z-index:2;background:#1a211b;padding:12px 0;border-bottom:1px solid #ffffff2b;align-items:flex-start}.score-signing-dialog .score-dialog-head h2{font-size:21px;line-height:1.4}.score-review-total>strong{font-size:32px}}
/* Optional live transport is separate from the scoring canvas. */
.score-app{display:flex;flex-direction:column}.score-app>.live-control{order:5}.score-app>.score-footer{order:6}
.live-control{width:min(100% - 32px,1100px);margin:20px auto;padding:20px;border:1px solid #867446;border-radius:12px;background:#202522;color:#f4eedf}.live-control h2{font:600 22px Georgia,serif;margin:0 0 10px}.live-control label{display:block;margin:12px 0;max-width:65ch;line-height:1.5}.live-control input:not([type=checkbox]){display:block;max-width:100%;padding:10px;color:#f4eedf;background:#121815;border:1px solid #a89870}.live-control input[type=checkbox]{width:20px;height:20px;vertical-align:middle;margin-right:10px}.live-control button,.live-control a{display:inline-flex;align-items:center;min-height:44px;padding:10px 14px;border:1px solid #a89870;border-radius:6px;background:#292e29;color:#f4eedf;text-decoration:none;font:inherit}.live-control button:disabled{opacity:.55}.live-actions{display:flex;gap:10px;flex-wrap:wrap}.live-control :focus-visible{outline:3px solid #e5c773;outline-offset:3px}

.live-spectator-access{min-width:0;margin-top:1rem}.live-spectator-access input{display:block;box-sizing:border-box;width:100%;max-width:100%;min-width:0;font-size:1rem}.live-spectator-access .live-actions{flex-wrap:wrap}

/* Pilot courtside refinement: the native point button covers its entire player half.
   All secondary controls remain outside the two isolated scoring surfaces. */
.score-side{position:relative;isolation:isolate}
.score-point::after{content:"";position:absolute;inset:0;z-index:1;border-radius:10px}
.score-player,.score-games-won{pointer-events:none}
.score-point:focus-visible::after{outline:3px solid var(--accent);outline-offset:-3px}
.score-active-rubber .score-header{height:64px;min-height:64px;padding:8px max(16px,env(safe-area-inset-right)) 8px max(16px,env(safe-area-inset-left));flex-wrap:nowrap;gap:12px}
.score-active-rubber .score-identity{gap:12px;min-width:0}
.score-active-rubber .score-identity img{width:110px;height:34px}
.score-active-rubber .score-word{font-size:18px;padding-left:12px}
.score-active-rubber .score-word>span{display:none}
.score-active-rubber .score-header-tools button{width:44px;min-height:44px}
.score-active-rubber .score-context{padding-top:6px;padding-bottom:6px}
.score-active-rubber .score-gamebar{padding-top:8px;padding-bottom:8px}
.score-start{position:relative;z-index:2;margin:12px max(18px,env(safe-area-inset-right)) 8px max(18px,env(safe-area-inset-left));padding:16px;background:#171a1d;border:1px solid #d9b76c77;border-radius:10px;scroll-margin-block:16px}
.score-start p{font-size:15px;color:#f1eee6}
.score-start .score-primary{min-height:52px;min-width:0;overflow-wrap:anywhere;max-width:none}
.score-start>div{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;max-width:650px;margin:auto}
.score-start>div.score-start-doubles{grid-template-columns:minmax(0,1fr)}
.score-start small{margin:10px 0 0}
.phase-setup .score-player{min-height:70px}
.phase-setup .score-point{min-height:100px}
.phase-setup .score-point strong{font-size:clamp(70px,18vw,140px)}
.score-courtside{padding-bottom:max(8px,env(safe-area-inset-bottom))}
@media(max-width:650px){.score-active-rubber .score-header{gap:8px}.score-active-rubber .score-identity img{width:94px}.score-active-rubber .score-word{font-size:15px;padding-left:9px}.score-active-rubber .score-header-tools{gap:4px}.score-active-rubber .score-context{padding-inline:max(16px,env(safe-area-inset-left)) max(16px,env(safe-area-inset-right))}.score-start{padding:14px 12px;margin-top:8px}.score-start .score-primary{font-size:13px;line-height:1.4;padding:12px 10px}.score-active-rubber .score-player h1{font-size:clamp(20px,5.6vw,26px)}.score-active-rubber .score-player{min-height:100px}.score-active-rubber .phase-setup .score-player{min-height:70px}.score-active-rubber .score-switch-method{margin-top:4px;margin-bottom:4px;font-size:12px}}
@media(orientation:landscape)and (max-height:550px){.score-active-rubber .score-header{height:54px;min-height:54px}.score-active-rubber .score-player{min-height:58px}.score-start{padding:10px;margin-block:8px}.score-start p{margin-bottom:8px}}

/* Pilot controls never cover either whole-half scoring target. */
.live-compact{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:8px;padding:8px 16px;color:var(--muted,#c7c4b9);font-size:13px}.live-indicator{min-height:44px;padding:8px 16px;border:1px solid #766b4d;border-radius:24px;background:#171b1c;color:#f5efdf;font:inherit}.live-compact>.score-shade{text-align:left}.live-pilot-approval{padding:12px 0;border-bottom:1px solid #655e4b}.live-pilot-approval input:not([type=checkbox]){display:block;width:100%;min-height:44px}.live-pilot-approval button{margin:6px 8px 6px 0;min-height:44px}.score-focus .score-word span,.score-focus>.score-footer{display:none}.score-focus .score-header{padding-block:6px}.score-focus .score-courtside{padding-top:8px}.score-focus .score-context{margin-bottom:8px}

/* Portrait courtside only: preserve the same full-half scoring surfaces and workflows.
   No fixed-height canvas: long singles/doubles names can grow and the page can scroll.
   svh budgets space conservatively while Safari's bars are visible. */
@media (max-width:650px) and (orientation:portrait) {
  .score-app:has(> .score-courtside) .score-header {
    height:auto; min-height:104px; padding-block:6px; row-gap:4px;
  }
  .score-app:has(> .score-courtside) .score-header nav button,
  .score-app:has(> .score-courtside) .score-header-tools button {
    min-height:44px;
  }
  .score-app:has(> .score-courtside) .score-header-tools button { width:44px; }
  .score-app:has(> .score-courtside) .score-word>span { display:none; }
  .score-app.score-active-rubber:has(> .score-courtside) .score-header {
    min-height:60px;
  }
  .score-courtside .score-context { padding-block:6px; row-gap:5px; }
  .score-courtside .score-gamebar { padding-block:8px; gap:8px; }
  .score-courtside .score-pads { padding-top:6px; }
  .score-courtside .score-side { padding-top:6px; }
  .score-courtside:not(.phase-setup) .score-player { min-height:88px; }
  .score-courtside .score-player h1 {
    font-size:clamp(21px,5.6vw,26px); line-height:1.2; margin-block:6px;
  }
  .score-courtside:not(.phase-setup) .score-point {
    min-height:clamp(160px,24svh,220px);
  }
  .score-courtside:not(.phase-setup) .score-point:not(.long):not(.extra-long) strong {
    font-size:min(38.5vw,28svh);
  }
  .score-courtside .score-point span { margin-top:10px; }
  .score-courtside .score-games-won { margin-block:6px 12px; }
  .score-courtside .score-actions { padding-block:4px; }
  /* Keep meaningful pause/completion messages; the playing slogan is decorative. */
  .score-courtside.phase-playing .score-rally-status {
    position:absolute; width:1px; height:1px; padding:0; margin:-1px;
    overflow:hidden; clip-path:inset(50%); white-space:nowrap;
  }
  .score-app:has(> .score-courtside)>.score-footer {
    padding-block:8px; gap:6px;
  }
  .score-app:has(> .score-courtside)>.score-footer>span:last-child { display:none; }
}

/* Point entry is immediate, without a painted pressed rectangle or Safari's
   native touch overlay. Keyboard focus remains on the existing visible outlines. */
.score-point,
.score-point:not(:disabled):active,
.score-point:active,
.score-point:hover,
.score-point:focus {
  background:transparent;
  transition:none;
  appearance:none;
  -webkit-appearance:none;
  -webkit-tap-highlight-color:transparent;
}
.score-point>.score-numeral { display:contents; margin:0; }

/* V55 hardening: numeral size must never depend on an intrinsically sized,
   size-contained grid descendant. In WebKit a collapsed block-size there fed
   directly into min(...90cqb...), without a lower bound. Use viewport fitting
   with bounded minima instead; no measurements or state survive a rubber. */
@media (max-width:650px) and (orientation:portrait) {
  .score-app:has(> .score-courtside:not(.phase-setup)) { height:100svh; height:100dvh; }
  .score-app:has(> .score-courtside)>.score-header,
  .score-app:has(> .score-courtside)>.score-footer { flex-shrink:0; }
  .score-app:has(> .score-courtside) .score-header { padding-block:4px; row-gap:2px; }
  .score-app:has(> .score-courtside)>.score-footer { padding-block:6px; }
  .score-courtside:not(.phase-setup) {
    width:100%; margin-inline:0; flex:1 0 auto;
    display:flex; flex-direction:column; padding-bottom:8px;
  }
  .score-courtside:not(.phase-setup) .score-context { padding-block:4px; }
  .score-courtside:not(.phase-setup) .score-gamebar { padding-block:6px; }
  .score-courtside:not(.phase-setup) .score-pads { flex:1; min-height:0; }
  .score-courtside:not(.phase-setup) .score-side { display:flex; flex-direction:column; }
  .score-courtside:not(.phase-setup) .score-player { min-height:80px; padding-bottom:4px; }
  .score-courtside:not(.phase-setup) .score-serve { min-height:2.6em; line-height:1.3; }
  .score-courtside:not(.phase-setup) .score-point {
    --score-number-size:clamp(92px,min(31vw,34svh),190px);
    flex:1; min-height:calc(var(--score-number-size) + 32px);
    display:flex; flex-direction:column; padding:0 0 8px;
  }
  .score-courtside:not(.phase-setup) .score-point[data-score-digits="1"] {
    --score-number-size:clamp(120px,min(44vw,38svh),240px);
  }
  .score-courtside:not(.phase-setup) .score-point.long {
    --score-number-size:clamp(64px,min(22vw,28svh),140px);
  }
  .score-courtside:not(.phase-setup) .score-point.extra-long {
    --score-number-size:clamp(48px,min(16vw,23svh),110px);
  }
  .score-courtside:not(.phase-setup) .score-point>.score-numeral {
    display:grid; place-items:center; flex:1; width:100%; min-height:1em;
    margin:0; font-size:var(--score-number-size); line-height:1;
  }
  .score-courtside:not(.phase-setup) .score-point strong,
  .score-courtside:not(.phase-setup) .score-point:not(.long):not(.extra-long) strong,
  .score-courtside:not(.phase-setup) .score-point[data-score-digits="1"] strong,
  .score-courtside:not(.phase-setup) .score-point.long strong,
  .score-courtside:not(.phase-setup) .score-point.extra-long strong { font-size:var(--score-number-size); }
  .score-courtside:not(.phase-setup) .score-point span { margin:0; }
  .score-courtside:not(.phase-setup) .score-games-won { min-height:30px; margin-block:4px 6px; }
  .score-courtside:not(.phase-setup) .score-actions { flex-shrink:0; }
}
/* Saving is an input interlock, not visual feedback. The added numeral wrapper
   must stay painted through disabled/enabled transitions. Keep keyboard focus. */
.score-point>.score-numeral,
.score-point:disabled>.score-numeral { visibility:visible; opacity:1; }
.score-point, .score-point *, .score-point::after {
  -webkit-tap-highlight-color:transparent;
}
.score-point::after { background:transparent; transition:none; }

/* Short landscape courtside: scoreboard centre, compact shared controls below.
   Scope to active courtside only; desks, setup, dialogs and exports keep their layout.
   Intrinsic growth is deliberate for exceptional names/large text, never clipping. */
@media (orientation:landscape) and (max-height:550px) and (max-width:1100px) {
  .score-app:has(> .score-courtside:not(.phase-setup)) { height:100svh; height:100dvh; }
  .score-app:has(> .score-courtside)>.score-header {
    height:auto; min-height:44px; padding:0 max(12px,env(safe-area-inset-right)) 0 max(12px,env(safe-area-inset-left));
    flex-shrink:0; gap:8px;
  }
  .score-app:has(> .score-courtside) .score-identity { gap:8px; }
  .score-app:has(> .score-courtside) .score-identity img { width:80px; height:28px; }
  .score-app:has(> .score-courtside) .score-word { font-size:14px; padding-left:8px; }
  .score-app:has(> .score-courtside) .score-word>span { display:none; }
  .score-app:has(> .score-courtside) .score-header nav { padding:0; }
  .score-app:has(> .score-courtside) .score-header nav button { min-height:44px; padding:0 10px; font-size:11px; }
  .score-app:has(> .score-courtside) .score-header-tools { gap:4px; }
  .score-app:has(> .score-courtside) .score-header-tools button { min-height:44px; width:44px; }
  .score-courtside:not(.phase-setup) {
    flex:1 0 auto; width:100%; margin:0;
    display:grid; grid-template-columns:minmax(0,1fr) auto;
    grid-template-rows:auto auto minmax(144px,1fr) auto;
    padding-inline:max(10px,env(safe-area-inset-left)) max(10px,env(safe-area-inset-right));
  }
  .score-courtside:not(.phase-setup) .score-context { grid-column:1/-1; padding:0 8px; gap:8px; min-height:28px; font-size:8px; }
  .score-courtside:not(.phase-setup) .score-context button { min-height:44px; font-size:11px; }
  .score-courtside:not(.phase-setup) .score-gamebar { grid-column:1/-1; margin:0 8px; padding:3px 0; font-size:8px; }
  .score-courtside:not(.phase-setup) .score-pads { grid-column:1/-1; padding:0 8px; }
  .score-courtside:not(.phase-setup) .score-side { display:flex; flex-direction:column; padding:4px 12px 0; }
  .score-courtside:not(.phase-setup) .score-player { min-height:0; }
  .score-courtside:not(.phase-setup) .score-player-kicker { font-size:8px; }
  .score-courtside:not(.phase-setup) .score-player h1 { font-size:clamp(16px,2.7vw,24px); margin:2px 0; line-height:1.1; }
  .score-courtside:not(.phase-setup) .score-serve { min-height:15px; font-size:9px; line-height:1.2; }
  .score-courtside:not(.phase-setup) .score-point {
    --score-number-size:clamp(76px,min(24vw,calc(100svh - 240px)),220px);
    flex:1; min-height:var(--score-number-size); padding:0; display:flex;
  }
  .score-courtside:not(.phase-setup) .score-point.long { --score-number-size:clamp(60px,min(18vw,calc(100svh - 240px)),170px); }
  .score-courtside:not(.phase-setup) .score-point.extra-long { --score-number-size:clamp(48px,min(13vw,calc(100svh - 240px)),120px); }
  .score-courtside:not(.phase-setup) .score-point>.score-numeral { display:grid; place-items:center; flex:1; margin:0; width:100%; }
  .score-courtside:not(.phase-setup) .score-point>span:not(.score-numeral) { display:none; }
  .score-courtside:not(.phase-setup) .score-point strong,
  .score-courtside:not(.phase-setup) .score-point.long strong,
  .score-courtside:not(.phase-setup) .score-point.extra-long strong { font-size:var(--score-number-size); }
  .score-courtside:not(.phase-setup) .score-games-won { min-height:24px; margin:0; gap:8px; }
  .score-courtside:not(.phase-setup) .score-games-won strong { font-size:18px; }
  .score-courtside:not(.phase-setup) .score-games-won img { height:22px; width:26px; }
  .score-courtside:not(.phase-setup) .score-actions { grid-column:1/-1; grid-row:4; margin:0 8px; padding:0; gap:8px; }
  .score-courtside:not(.phase-setup):has(.score-switch-method) .score-actions { grid-column:1; }
  .score-courtside:not(.phase-setup) .score-actions button { min-height:44px; min-width:0; padding:4px; font-size:11px; }
  .score-courtside:not(.phase-setup) .score-switch-method { grid-column:2; grid-row:4; margin:0 8px; min-height:44px; padding:4px 8px; font-size:10px; }
  .score-courtside.phase-playing .score-rally-status { position:absolute; width:1px; height:1px; margin:-1px; padding:0; clip-path:inset(50%); overflow:hidden; }
  .score-app:has(> .score-courtside)>.score-footer { min-height:18px; flex-shrink:0; padding:2px max(12px,env(safe-area-inset-left)); font-size:8px; }
  .score-app:has(> .score-courtside)>.score-footer>span:last-child { display:none; }
}

/* Direct Quick Score lifecycle entry, without changing the scoring grid. */
.score-context .score-new-match{min-height:44px;padding:6px 10px;border:1px solid #dcc08a66;border-radius:6px;color:#e2cc9d;white-space:nowrap;font-size:12px;letter-spacing:0;flex-shrink:0}

/* Quick setup/settings only: no change to portrait scoring or exported artwork. */
.score-quick-dialog{--accent:#dcc08a;--muted:#bcb8ad}
.score-quick-dialog .score-dialog,.score-quick-dialog .score-dialog-head{background:#171818;color:#f2efe6;border-color:#766e5a}
.score-quick-dialog input,.score-quick-dialog select{background:#101112;color:#f2efe6;border-color:#766e5a;min-height:48px}
.score-quick-dialog .score-dialog p:not(.score-error):not(.score-warning){color:#c7c3b8}
.score-replace-actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:20px}
.score-replace-actions>button{min-height:48px;padding:12px 16px;border:1px solid #766e5a;border-radius:6px}
.score-advanced{margin-top:20px;border-top:1px solid #ffffff20;padding-top:12px}
.score-advanced>summary{cursor:pointer;min-height:44px;display:list-item;padding:12px 0;color:#e3cfaa}
@media(max-width:500px){.score-replace-actions>button{flex:1 1 100%}}

/* Contain courtside overscroll without intercepting taps, pinch or drawing.
   Exceptional names/accessibility text/short viewports scroll inside the app. */
html:has(.score-app>.score-courtside:not(.phase-setup)),
body:has(.score-app>.score-courtside:not(.phase-setup)) {
  height:100%; overflow:hidden; overscroll-behavior-y:none;
}
.score-app:has(>.score-courtside:not(.phase-setup)) {
  height:100svh; height:100dvh; overflow-y:auto; overscroll-behavior-y:none;
}
body:has(.score-shade,.score-picker-shade) .score-app { overflow:hidden; }
.score-shade,.score-picker-shade { overscroll-behavior:none; }
.score-dialog,.score-picker-sheet { overscroll-behavior:contain; -webkit-overflow-scrolling:touch; }

/* Release A measured courtside fitting. Layout allocates space before fitting
   text. Nothing clips the app; exceptional accessibility content may still grow. */
.score-match-info { flex:none; }
.score-app:has(>.score-courtside:not(.phase-setup)) { min-height:0; }
.score-courtside:not(.phase-setup) {
  flex:1 1 0; min-height:0; width:100%; max-width:none;
  display:grid; grid-template-columns:minmax(0,1fr) auto;
  grid-template-rows:auto minmax(0,1fr) auto;
  padding-bottom:4px;
}
.score-courtside:not(.phase-setup) .score-match-info { grid-column:1/-1; grid-row:1; min-width:0; }
.score-courtside:not(.phase-setup) .score-pads { grid-column:1/-1; grid-row:2; min-height:0; padding-top:0; }
.score-courtside:not(.phase-setup) .score-side { min-height:0; display:flex; flex-direction:column; }
.score-courtside:not(.phase-setup) .score-player { flex:none; }
.score-courtside:not(.phase-setup) .score-point {
  flex:1 1 0; min-height:44px; padding:0; min-width:0;
  --score-number-size:var(--score-fit-2,clamp(92px,38vw,230px));
}
.score-courtside:not(.phase-setup) .score-point[data-score-digits="1"] { --score-number-size:var(--score-fit-1,clamp(120px,min(44vw,38svh),240px)); }
.score-courtside:not(.phase-setup) .score-point.long { --score-number-size:var(--score-fit-3,22vw); }
.score-courtside:not(.phase-setup) .score-point.extra-long { --score-number-size:var(--score-fit-4,16vw); }
.score-courtside:not(.phase-setup) .score-point>.score-numeral {
  min-height:0; flex:1 1 0; width:100%; display:grid; place-items:center;
  margin:0; line-height:1; font-size:inherit;
}
.score-courtside:not(.phase-setup) .score-point strong { line-height:1; transition:none; animation:none; }
.score-point:disabled, .score-point:disabled span { opacity:1; visibility:visible; }
.score-courtside:not(.phase-setup) .score-games-won { flex:none; min-height:30px; margin:2px 0; }
.score-courtside:not(.phase-setup) .score-actions {
  grid-column:1/-1; grid-row:3; margin:0 16px; padding:0; min-height:44px; gap:8px;
}
.score-courtside:not(.phase-setup):has(.score-switch-method) .score-actions { grid-column:1; }
.score-courtside:not(.phase-setup) .score-actions button { min-height:44px; padding-block:4px; }
.score-courtside:not(.phase-setup) .score-switch-method { grid-column:2; grid-row:3; min-height:44px; margin:0 12px 0 0; padding:4px 8px; font-size:10px; }
/* Phase messages are in the existing focused transition dialog. Keeping the
   redundant action-row status out of flow prevents a game-end height jump. */
.score-courtside:not(.phase-setup) .score-rally-status { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip-path:inset(50%); }
.score-courtside .score-context .score-save { white-space:nowrap; min-height:14px; }
@media (orientation:portrait) and (max-width:650px) {
  .score-courtside:not(.phase-setup) .score-context { flex-wrap:nowrap; padding:2px 12px; gap:8px; min-height:44px; }
  .score-courtside:not(.phase-setup) .score-context .score-save { order:initial; width:auto; font-size:8px; }
  .score-courtside:not(.phase-setup) .score-context>span:first-child { font-size:8px; letter-spacing:0; }
  .score-courtside:not(.phase-setup) .score-context button { font-size:10px; }
  .score-courtside:not(.phase-setup) .score-gamebar { min-height:28px; padding:4px 0; }
  .score-courtside:not(.phase-setup) .score-player { min-height:80px; }
  .score-courtside:not(.phase-setup) .score-player h1 { margin:4px 0; }
  .score-courtside:not(.phase-setup) .score-serve { min-height:2.6em; }
}
@media (orientation:landscape) and (max-height:550px) and (max-width:1100px) {
  .score-courtside:not(.phase-setup) {
    grid-template-columns:clamp(112px,15vw,144px) minmax(0,1fr) auto;
    grid-template-rows:minmax(0,1fr) 44px;
    column-gap:8px; padding-bottom:4px;
  }
  .score-courtside:not(.phase-setup) .score-match-info { grid-column:1; grid-row:1; display:flex; flex-direction:column; justify-content:space-between; padding:4px 0; }
  .score-courtside:not(.phase-setup) .score-context { flex-direction:column; justify-content:flex-start; gap:8px; padding:0; min-height:0; text-align:center; }
  .score-courtside:not(.phase-setup) .score-context>span:first-child { justify-content:center; }
  .score-courtside:not(.phase-setup) .score-context .score-save { order:initial; width:auto; font-size:8px; }
  .score-courtside:not(.phase-setup) .score-context button { font-size:10px; }
  .score-courtside:not(.phase-setup) .score-gamebar { flex-wrap:wrap; justify-content:center; margin:0; padding:6px 0; gap:8px; min-height:44px; font-size:8px; }
  .score-courtside:not(.phase-setup) .score-gamebar>span:last-child { width:100%; min-height:20px; text-align:center; }
  .score-courtside:not(.phase-setup) .score-pads { grid-column:2/-1; grid-row:1; padding:0; min-height:0; }
  .score-courtside:not(.phase-setup) .score-side { padding:0 8px; }
  .score-courtside:not(.phase-setup) .score-player { min-height:0; padding:0; }
  .score-courtside:not(.phase-setup) .score-player h1 { font-size:clamp(16px,2.2vw,21px); line-height:1.1; margin:2px 0; }
  .score-courtside:not(.phase-setup) .score-serve { min-height:15px; font-size:9px; line-height:1.2; }
  .score-courtside:not(.phase-setup) .score-point { --score-number-size:var(--score-fit-2,45svh); min-height:44px; }
  .score-courtside:not(.phase-setup) .score-point[data-score-digits="1"] { --score-number-size:var(--score-fit-1,45svh); }
  .score-courtside:not(.phase-setup) .score-point>.score-numeral { min-height:0; font-size:inherit; }
  .score-courtside:not(.phase-setup) .score-games-won { min-height:24px; margin:0; }
  .score-courtside:not(.phase-setup) .score-actions,
  .score-courtside:not(.phase-setup):has(.score-switch-method) .score-actions { grid-column:2/-1; grid-row:2; margin:0; }
  .score-courtside:not(.phase-setup) .score-switch-method { grid-column:1; grid-row:2; margin:0; font-size:10px; }
}

/* Fixed teen band: retain size through 10–19; wide band safely fits 88/99. */
.score-courtside:not(.phase-setup) .score-point[data-score-band="teens"] { --score-number-size:var(--score-fit-teens,clamp(120px,min(44vw,38svh),240px)); }

/* v7: invisible background tap routing uses the existing courtside element.
   No overlay or geometry change: controls keep their own native hit regions. */
.score-courtside { -webkit-tap-highlight-color:transparent; }
.score-app .score-header-tools { min-width:44px; }
.score-courtside .score-games-won img { transform:scale(1.16); transform-origin:center; opacity:1; filter:contrast(1.08); }
/* Neutral scorecard actions. Keep the method dialog's cream primary untouched. */
.score-mobile-rubber button,
.score-mobile-rubber button:first-child,
.score-method-choices button:not(.score-primary) {
  background:#202020; color:#f2efe6; border-color:#727272;
}
@media (hover:hover) and (pointer:fine) {
  .score-mobile-rubber button:not(:disabled):hover,
  .score-method-choices button:not(.score-primary):not(:disabled):hover { background:#2b2b2b; border-color:#a0a0a0; }
}
.score-mobile-rubber button:not(:disabled):active,
.score-method-choices button:not(.score-primary):not(:disabled):active { background:#303030; border-color:#b4b4b4; }
.score-mobile-rubber button:disabled,
.score-method-choices button:not(.score-primary):disabled { background:#242424; color:#b8b8b8; border-color:#606060; opacity:1; }

/* v8 full-width landscape. Two equal visual/player surfaces; metadata shares
   the protected control strip, not a left rail or a new row above the scores.
   Existing native point buttons and v7 background routing keep their semantics. */
@media (orientation:landscape) and (max-height:550px) and (max-width:1100px) {
  .score-courtside:not(.phase-setup) {
    grid-template-columns:auto auto minmax(0,1fr) auto auto;
    grid-template-rows:minmax(0,1fr) 44px;
    column-gap:6px;
  }
  .score-courtside:not(.phase-setup) .score-match-info { display:contents; }
  .score-courtside:not(.phase-setup) .score-pads { grid-column:1/-1; grid-row:1; }
  .score-courtside:not(.phase-setup) .score-context {
    grid-column:1; grid-row:2; flex-direction:row; align-items:center;
    justify-content:flex-start; gap:4px; padding:0; min-height:44px;
  }
  .score-courtside:not(.phase-setup) .score-context>span:first-child { display:contents; }
  .score-courtside:not(.phase-setup) .score-context:not(:has(.score-new-match))>span:first-child { display:flex; }
  /* Quick's mode already has a selected header tab. Retain the New Match action. */
  .score-courtside:not(.phase-setup) .score-context:has(.score-new-match)>span:first-child { display:none; }
  .score-courtside:not(.phase-setup) .score-context:has(.score-new-match) .score-dot { display:none; }
  .score-courtside:not(.phase-setup) .score-context button { padding:4px 6px; font-size:10px; white-space:nowrap; }
  .score-courtside:not(.phase-setup) .score-context .score-save { max-width:120px; white-space:normal; font-size:9px; }
  .score-courtside:not(.phase-setup) .score-gamebar {
    grid-column:3; grid-row:2; align-self:center; justify-content:center;
    flex-wrap:wrap; column-gap:8px; row-gap:0; min-height:0;
    padding:0 2px; border:0; font-size:8px;
  }
  .score-courtside:not(.phase-setup) .score-gamebar>span:last-child { width:auto; min-height:0; }
  .score-courtside:not(.phase-setup) .score-gamebar>span:last-child:empty { display:none; }
  .score-courtside:not(.phase-setup) .score-gamebar strong { font-size:16px; }
  .score-courtside:not(.phase-setup) .score-game-dots { gap:5px; }
  .score-courtside:not(.phase-setup) .score-actions,
  .score-courtside:not(.phase-setup):has(.score-switch-method) .score-actions { display:contents; }
  .score-courtside:not(.phase-setup) .score-actions>button:first-child { grid-column:2; grid-row:2; }
  .score-courtside:not(.phase-setup) .score-actions>button:last-child { grid-column:4; grid-row:2; }
  .score-courtside:not(.phase-setup) .score-switch-method { grid-column:5; grid-row:2; padding-inline:6px; white-space:nowrap; }
}

/* Neutral Score surfaces only. Screen-only so the official print scorecard's
   white paper treatment is untouched. Portalled Score dialogs/pickers receive
   the same tokens; no public-site selectors or team assets are changed. */
@media screen {
  .score-app,
  .score-app.theme-badgers,
  .score-app.theme-titans { --panel:#1c1c1c; --muted:#bcbcbc; background:#111111; }
  .score-shade,.score-picker-shade { --panel:#1c1c1c; --muted:#bcbcbc; }
  .score-app .score-fixture,
  .score-app .score-rosters>div,
  .score-app .score-mobile-rubber,
  .score-shade .score-review-rubbers>li { background:#191919; border-color:#555555; }
  .score-app .score-table-scroll { border-color:#666666; }
  .score-app .score-official,.score-shade .score-official { background:#181818; }
  .score-app .score-official th,.score-app .score-official td,
  .score-shade .score-official th,.score-shade .score-official td { border-color:#484848; }
  .score-app .score-official thead,.score-shade .score-official thead { background:#252525; }
  .score-app .score-official tr.next,.score-shade .score-official tr.next { background:#292929; }
  .score-app .score-official tr.in-progress,.score-shade .score-official tr.in-progress { background:#222222; }
  .score-app .score-official tr.new-group>* { border-top-color:#888888; }
  .score-app .score-official caption,.score-shade .score-official caption { color:#d4d4d4; }
  .score-app .score-fixture small,.score-app .score-mobile-rubber p,
  .score-app .score-back,.score-app .score-footer,
  .score-app .score-footer>span:last-child span,.score-app .score-serve,
  .score-shade .score-review-side,.score-shade .score-review-games small { color:#bcbcbc; }
  .score-app .score-serve.serving { color:var(--accent); }
  .score-app .score-game-dots i { border-color:#929292; }
  .score-app .score-game-dots .home { border-color:var(--accent); }
  .score-app .score-game-dots .away { border-color:var(--copper); }
  .score-app .score-rubber-timeline button.done { border-color:#888888; }
  .score-app .score-rubber-timeline button.done>span { color:#dedede; }
  .score-app .score-transition { background:#1b1b1bf5; }
  .score-app .score-transition p { color:#cccccc; }
  .score-shade .score-dialog,.score-picker-shade .score-picker-sheet,
  .score-shade.score-quick-dialog .score-dialog { background:#1b1b1b; color:#f2efe6; border-color:#777777; }
  .score-shade .score-dialog-head,.score-shade.score-quick-dialog .score-dialog-head { background:#1b1b1b; }
  .score-shade .score-dialog p:not(.score-error):not(.score-warning) { color:#c7c7c7; }
  .score-app input,.score-app select,.score-app .score-player-field,
  .score-shade input,.score-shade select,.score-shade .score-player-field,
  .score-picker-shade .score-picker-sheet input { background:#111111; color:#f2efe6; border-color:#777777; }
  .score-app input::placeholder,.score-shade input::placeholder,.score-picker-shade input::placeholder { color:#adadad; }
  .score-app label { color:#e2e2e2; }
  .score-shade .score-file { border-color:#888888; }
  .score-picker-shade .score-picker-options small { color:#c5c5c5; }
  .score-picker-shade .score-picker-options button[aria-selected=true] { background:#dcc08a18; }
  .score-app .score-header nav button { color:#c7c7c7; }
  .score-app .score-header nav button.active { color:#171717; background:#e9e6db; }
  /* Cream/gold primaries, warnings/errors and keyboard focus remain intentional. */
}

/* v9: persistence interlocks remain native disabled controls. Do not apply the
   global 45% disabled opacity to BOTH actions on every local write. Only actual
   unavailability (no history / blocked workspace) changes the individual label.
   No geometry, pointer semantics, transitions or compositing layers are added. */
.score-courtside .score-actions>button,
.score-courtside .score-actions>button:disabled,
.score-courtside .score-actions>button:hover,
.score-courtside .score-actions>button:active,
.score-courtside .score-new-match,
.score-courtside .score-new-match:disabled,
.score-courtside .score-new-match:hover,
.score-courtside .score-new-match:active {
  opacity:1; visibility:visible; background:transparent;
  transition:none; animation:none; filter:none;
  appearance:none; -webkit-appearance:none;
  -webkit-tap-highlight-color:transparent;
}
.score-courtside .score-actions>button[data-score-unavailable="true"],
.score-courtside .score-new-match[data-score-unavailable="true"] { color:#868686; }

/* Finish the neutral screen palette. Forms, practical cards and read-only
   review retain their own structure/elevation; cream/gold carries hierarchy. */
@media screen {
  .score-app .score-matrix-toggle { background:#202020; border-color:#777777; color:#dedede; }
  .score-app .score-position,.score-shade .score-position { border-color:#666666; }
  .score-shade .score-captain { border-color:#666666; }
  .score-shade .score-dialog summary { color:#d5d5d5; }
  .score-shade .score-review-results { border-color:#555555; }
  .score-shade .score-review-rubbers>li { background:#171717; border-color:#626262; }
  .score-shade .score-review-games>li { background:#222222; border-color:#626262; }
  .score-shade .score-dialog input,.score-shade .score-dialog select,
  .score-picker-shade .score-picker-sheet input { background:#101010; border-color:#858585; }
  .score-shade .score-dialog .score-player-field { background:#151515; border-color:#777777; }
  .score-app .score-secondary,
  .score-app .score-card-footer>button.score-secondary { display:inline-flex; align-items:center; justify-content:center; gap:12px; min-height:52px; padding:12px 21px; font-size:13px; font-weight:600; color:#f2efe6; background:#202020; border:1px solid #777777; border-radius:6px; }
  .score-app .score-secondary:not(:disabled):active,
  .score-app .score-matrix-toggle:not(:disabled):active { background:#2b2b2b; border-color:#aaaaaa; }
  .score-shade .score-review-disclosure { display:flex; align-items:center; gap:8px; list-style:none; }
  .score-shade .score-review-disclosure::marker { content:""; }
  .score-shade .score-review-disclosure::-webkit-details-marker { display:none; }
  .score-shade .score-review-disclosure>svg { flex:none; color:#bcbcbc; transform:rotate(0deg); transition:none; }
  .score-shade details[open]>.score-review-disclosure>svg { transform:rotate(90deg); }
}
@media screen and (max-width:650px) {
  .score-app .score-card-footer>.score-secondary { width:100%; }
}
@media screen and (hover:hover) and (pointer:fine) {
  .score-app .score-secondary:not(:disabled):hover,
  .score-app .score-matrix-toggle:not(:disabled):hover { background:#292929; border-color:#aaaaaa; }
}

/* v10: one Score interface palette, including nested team cards and portalled
   dialogs. Team assets retain their own identity. Primary surfaces stay cream;
   --accent/--copper are compatibility aliases, never team-selected colours. */
@media screen {
  .score-app,.score-app.theme-badgers,.score-app.theme-titans,
  .score-app .theme-badgers,.score-app .theme-titans,
  .score-shade,.score-shade.score-quick-dialog,.score-picker-shade {
    --score-gold-rgb:220,192,138;
    --score-gold:rgb(var(--score-gold-rgb));
    --score-gold-line:rgba(var(--score-gold-rgb),.4);
    --score-gold-wash:rgba(var(--score-gold-rgb),.1);
    --score-cream:#f2efe6; --panel:#1c1c1c; --muted:#bcbcbc;
    --accent:var(--score-gold); --copper:var(--score-gold);
  }
  .score-app .score-primary,.score-shade .score-primary { background:var(--score-cream); color:#151515!important; }
  .score-app .score-point strong { color:var(--score-cream); }
  .score-app .score-context .score-new-match:not([data-score-unavailable="true"]) { color:var(--score-gold); border-color:var(--score-gold-line); }
  .score-app .score-game-dots .home { background:var(--score-gold); border-color:var(--score-gold); }
  .score-app .score-game-dots .away { background:var(--score-gold-wash); border-color:var(--score-gold); }
  .score-app .score-serve.serving i { box-shadow:none; }
  .score-app .score-transition { border-color:var(--score-gold-line); }
  .score-app .score-advanced>summary,.score-shade .score-advanced>summary,
  .score-picker-shade .score-picker-team,.score-picker-shade .score-picker-search-toggle { color:var(--score-gold); }
  .score-app .score-review-state,.score-shade .score-review-state,
  .score-app .score-review-total>strong,.score-shade .score-review-total>strong,
  .score-app .score-review-rubber-head>b,.score-shade .score-review-rubber-head>b,
  .score-app .score-review-pairs span,.score-shade .score-review-pairs span { color:var(--score-gold); }
  .score-app .score-result-preview,.score-shade .score-result-preview,
  .score-app .score-review-winner,.score-shade .score-review-winner { color:var(--score-gold)!important; }
  .score-app .score-approved,.score-shade .score-approved,
  .score-picker-shade .score-picker-options button[aria-selected=true] { background:var(--score-gold-wash); }
  .score-app :focus-visible,.score-shade :focus-visible,.score-picker-shade :focus-visible { outline-color:var(--score-gold); }
}
/* Titans alpha bounds: (70,70)–(1622,1978) in 1692×2048. Normalise visible
   height to the existing 1.16× image footprint, not a bigger layout box.
   The 3px optical shift adds separation without moving the games/numerals. */
.score-courtside .score-games-won img[data-score-team="titans"] {
  transform:translateX(3px) scale(1.245);
}

/* v11: optical clearance only. Keep the v10 image slots, scales and natural
   artwork intact; move painted pixels away from the games numeral and the
   lower row edge. Titans' 70px transparent inset is included in the fit.
   Transforms do not change the flex row, score targets or control geometry. */
.score-courtside:not(.phase-setup) .score-games-won img[data-score-team="badgers"] {
  transform:translate(4px,-4px) scale(1.16);
}
.score-courtside:not(.phase-setup) .score-games-won img[data-score-team="titans"] {
  transform:translate(7px,-5px) scale(1.245);
}

/* Integrated approved Release B completion: geometry retained; A palette authority. */

/* Captain completion only. Exported artwork and active scoring are unchanged. */
.score-completion-dialog .score-dialog,.score-captain-signing .score-dialog{background:#1b1b1b;color:#f2efe6;border-color:#777777}
.score-completion-dialog .score-dialog-head,.score-captain-signing .score-dialog-head{background:#1b1b1b}
.score-completion-dialog input,.score-captain-signing input{background:#111111;border-color:#777777;color:#f2efe6}
.score-completion-dialog .score-review-rubbers>li{background:#ffffff03;border-color:#ffffff20}
.score-completion-steps{display:flex;gap:8px;justify-content:space-between;list-style:none;padding:0;margin:0 0 20px;font-size:11px;color:#bcbcbc}
.score-completion-steps li{padding:8px 0;border-bottom:2px solid #ffffff25;flex:1}
.score-completion-steps [aria-current=step]{color:var(--score-gold);border-color:var(--score-gold)}
.score-completion-actions{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin:20px 0}
.score-completion-actions>button{min-height:48px;padding:10px 14px}
.score-approval-summary section{border-left:2px solid var(--score-gold);padding:8px 14px;margin:12px 0}
.score-approval-summary p{margin:6px 0 0}
.score-captain-signing .score-dialog{width:min(100%,1100px);max-width:1100px;overscroll-behavior:contain;scroll-padding-top:72px}
.score-captain-signing .score-dialog-head{margin-bottom:12px}
.score-signing-info h3{font-size:22px;line-height:1.2;overflow-wrap:anywhere;margin:0 0 14px}
.score-signing-info label{margin-bottom:12px}
.score-signing-info .score-note{margin:6px 0 12px;font-size:11px}
.score-signing-info .score-eyebrow{margin:0 0 6px}
.score-signature-expanded .score-ink{height:clamp(240px,42svh,460px);aspect-ratio:auto;background:#111111;border-color:#777777;touch-action:none;-webkit-user-select:none;-webkit-touch-callout:none}
.score-signature-expanded>button{min-height:48px;border:1px solid #777777;border-radius:6px;padding:8px 18px}
.score-signing-actions{display:flex;gap:12px;justify-content:space-between;flex-wrap:wrap;margin-top:12px}
.score-signing-actions button{min-height:48px;padding:12px 16px}
.score-captain-signing .score-agreement input{flex-shrink:0}
@media(max-width:650px){.score-completion-actions>button{width:100%}.score-captain-signing .score-dialog{padding-top:10px}.score-signing-actions{position:sticky;bottom:-20px;background:#1b1b1b;padding-block:10px}.score-signing-actions .score-primary{flex:1}.score-completion-steps{font-size:10px;gap:6px}}
@media (orientation:landscape) and (max-height:550px){
 .score-captain-signing{padding:0;align-items:stretch}
 .score-captain-signing .score-dialog{width:100%;max-width:none;max-height:100%!important;height:100%;border-radius:0;padding:8px max(16px,env(safe-area-inset-right)) max(8px,env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left))}
 .score-captain-signing .score-dialog-head{position:static;margin:0 0 6px;padding:0}
 .score-captain-signing .score-dialog-head h2{font-size:18px}
 .score-signing-form{display:grid;grid-template-columns:minmax(180px,32%) minmax(0,1fr);grid-template-areas:"info ink" "actions ink";gap:8px 20px;align-items:start}
 .score-signing-info{grid-area:info}.score-signing-info h3{font-size:17px;margin-bottom:8px}
 .score-signing-info .score-note{font-size:10px}.score-signing-info .score-agreement{font-size:11px}
 .score-signature-expanded{grid-area:ink}.score-signature-expanded .score-ink{height:max(150px,calc(100svh - 120px))}
 .score-signing-actions{grid-area:actions;margin:0;position:static;padding:0;gap:8px}
 .score-signing-actions button{font-size:11px;padding:8px;min-height:44px}
}
.score-completion-dialog,.score-captain-signing{--accent:var(--score-gold);--muted:#bcbcbc}
.score-completion-dialog .score-dialog p:not(.score-warning):not(.score-error):not(.score-review-state),.score-captain-signing .score-dialog p:not(.score-warning):not(.score-error){color:#c7c7c7}
.score-completion-dialog .score-review-side{color:#bcbcbc}

/* Result entry and pairing share completion's neutral, gold-accented palette. */
.score-result-dialog,.score-doubles-dialog{--accent:var(--score-gold);--muted:#bcbcbc}
.score-result-dialog .score-dialog,.score-doubles-dialog .score-dialog{background:#1b1b1b;color:#f2efe6;border-color:#777777}
.score-result-dialog .score-dialog-head,.score-doubles-dialog .score-dialog-head{background:#1b1b1b}
.score-result-dialog input,.score-doubles-dialog input,.score-doubles-dialog select{background:#111111;color:#f2efe6;border-color:#777777;min-height:48px}
.score-result-dialog .score-dialog p:not(.score-error):not(.score-warning),.score-doubles-dialog .score-dialog p:not(.score-error):not(.score-warning){color:#c7c7c7}
.score-result-dialog .score-result-preview{background:#dcc08a0d;border-color:#dcc08a55;color:var(--score-gold)!important}
.score-result-dialog .score-manual-row strong,.score-result-dialog .score-manual-head{color:#bcbcbc}
.score-doubles-picker{min-width:0}.score-doubles-picker select{width:100%;max-width:100%}
.score-completion-dialog .score-dialog,.score-completion-dialog .score-dialog-head,.score-captain-signing .score-dialog,.score-captain-signing .score-dialog-head,.score-signature-expanded .score-ink,.score-signing-actions{background:#1b1b1b}
.score-doubles-dialog .score-doubles-team{border-color:#777777}.score-doubles-dialog .score-doubles-team small,.score-completion-dialog .score-review-games small{color:#bcbcbc}

/* Integration v2: result-entry frame and intrinsic fixture fields only.
   Active scoring, signature capture and export artwork remain unchanged. */
.score-result-dialog { align-items:flex-start; overflow:visible; padding:max(12px,env(safe-area-inset-top)) max(16px,env(safe-area-inset-right)) max(12px,env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left)); }
.score-result-dialog .score-dialog { display:flex; flex-direction:column; min-height:0; padding-block:16px; overflow:visible; }
.score-result-dialog .score-dialog-head { flex:none; margin-bottom:12px; }
.score-result-dialog .score-dialog-body { flex:1 1 auto; min-height:0; overflow:auto; overscroll-behavior:contain; overflow-anchor:none; scroll-padding-block:8px; -webkit-overflow-scrolling:touch; }
.score-result-dialog .score-manual-row input { scroll-margin-block:8px; }
.score-result-dialog .score-result-preview { min-block-size:3em; line-height:1.5; margin-block:12px; }
.score-setup .score-form-grid,.score-setup .score-lineups,.score-setup fieldset,.score-setup label { min-inline-size:0; max-inline-size:100%; }
.score-setup input:not([type=radio]):not([type=checkbox]),.score-setup select,.score-setup .score-player-field { box-sizing:border-box; min-inline-size:0; inline-size:100%; max-inline-size:100%; }
.score-setup input::-webkit-date-and-time-value { min-inline-size:0; }
.score-setup select { text-overflow:ellipsis; }
.score-completion-dialog .score-share-primary { display:flex; width:100%; justify-content:center; min-height:52px; }
.score-completion-dialog .score-file-options { margin-top:16px; }
.score-completion-dialog .score-file-options .score-pdf-actions { margin-top:12px; }

/* Integration v3: isolated data-entry surfaces. Scoring/export geometry untouched. */
.score-entry-frame.score-shade{position:fixed;inset:0 auto auto 0;width:100%;height:var(--entry-height,100dvh);max-height:100dvh;z-index:20;display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;padding:0;overflow:hidden;background:#1b1b1b;box-sizing:border-box;color:#f2efe6}
.score-entry-header{flex:none;display:flex;align-items:center;justify-content:space-between;gap:12px;padding: max(8px,env(safe-area-inset-top)) max(16px,env(safe-area-inset-right)) 8px max(16px,env(safe-area-inset-left));border-bottom:1px solid #555;background:#1b1b1b}
.score-entry-header h2{font-size:18px;line-height:1.3;margin:0;min-width:0}
.score-entry-close{flex:none;min-height:44px;padding:8px 12px;border:1px solid #777;border-radius:5px}
.score-entry-body{flex:1 1 auto;min-height:0;min-width:0;overflow:auto;overscroll-behavior:contain;overflow-anchor:none;-webkit-overflow-scrolling:touch;padding:12px max(16px,env(safe-area-inset-right)) max(16px,env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left));scroll-padding-block:12px;touch-action:pan-y pinch-zoom}
.score-entry-body>.score-setup{min-height:0;max-width:1000px;width:100%;padding:0;margin:auto}
.score-result-editor{width:100%;max-width:600px;margin:0 auto}
.score-result-editor input{box-sizing:border-box;min-width:0;width:100%;max-width:100%;border:1px solid #858585;border-radius:5px;background:#101010;color:#f2efe6;padding:12px;font:inherit;font-size:22px;text-align:center;min-height:52px;scroll-margin-block:12px}
.score-result-editor input:focus,.score-result-editor input:focus-visible{outline:0;border-color:#dcc08a;box-shadow:inset 0 0 0 2px #dcc08a}
.score-result-editor .score-manual-head,.score-result-editor .score-manual-row{grid-template-columns:36px minmax(0,1fr) minmax(0,1fr);gap:12px}
.score-result-editor .score-result-preview{min-height:4.5em;line-height:1.5;color:#dcc08a;margin-block:12px}
.score-entry-frame .score-primary{background:#f2efe6;color:#151515;min-height:52px;padding:12px 20px;border-radius:6px}
/* Defeat native date/time intrinsic widths without replacing their pickers. */
.score-entry-frame .score-setup fieldset,.score-entry-frame .score-setup label,.score-entry-frame .score-form-grid,.score-entry-frame .score-lineups{box-sizing:border-box;min-width:0;min-inline-size:0;width:auto;max-width:100%}
.score-entry-frame .score-setup fieldset{margin-inline:0}
.score-entry-frame .score-setup .score-form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
.score-entry-frame .score-setup label{display:block;overflow-wrap:anywhere}
.score-entry-frame .score-setup input:not([type=radio]):not([type=checkbox]),.score-entry-frame .score-setup select,.score-entry-frame .score-player-field{box-sizing:border-box;display:block;width:100%;min-width:0;max-width:100%;inline-size:100%;min-inline-size:0;max-inline-size:100%;font-size:16px}
.score-entry-frame input[type=date],.score-entry-frame input[type=time]{appearance:none;-webkit-appearance:none;contain:inline-size;min-height:48px}
.score-entry-frame input::-webkit-date-and-time-value{min-width:0;text-align:left}
.score-entry-frame input::-webkit-datetime-edit{min-width:0;padding:0}
.score-entry-frame select{overflow:hidden;text-overflow:ellipsis}
@media(max-width:650px){.score-entry-frame .score-setup .score-form-grid{grid-template-columns:minmax(0,1fr)}}
.score-entry-frame .score-setup input:not([type=radio]):not([type=checkbox]),.score-entry-frame .score-setup select{min-height:48px;background:#101010;border:1px solid #858585;border-radius:5px;padding:12px 14px;color:#f2efe6;margin-top:7px;font-family:inherit}
.score-entry-frame .score-setup input[type=radio]{display:inline-block;width:18px;min-height:18px;margin:0 9px 0 0;accent-color:#dcc08a}
.score-entry-frame .score-setup input:focus-visible,.score-entry-frame .score-setup select:focus-visible{outline:0;border-color:#dcc08a;box-shadow:inset 0 0 0 2px #dcc08a}

/* Integration v4: viewport coverage and form dropdown indicators only. */
.score-entry-frame.score-shade{inset:0;width:auto;height:100%;min-height:max(100lvh,100%);max-height:none;display:block;isolation:isolate;background:#1b1b1b}
.score-entry-window{position:absolute;top:0;left:0;width:100%;height:var(--entry-height,100dvh);display:flex;flex-direction:column;min-width:0;min-height:0;overflow:hidden;box-sizing:border-box;background:#1b1b1b}
.score-entry-frame .score-player-field,.score-player-field{display:flex;align-items:center;gap:12px}
.score-player-field>.score-picker-value{flex:1 1 auto;min-width:0;overflow-wrap:anywhere}
.score-player-field>.score-picker-chevron{flex:none;width:18px;height:18px;color:#bcbcbc}
.score-entry-frame .score-setup select,.score-shade .score-doubles-picker select{appearance:none;-webkit-appearance:none;padding-inline-end:44px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23bcbcbc' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center;background-size:18px 18px}

/* Private beta: crisp fixed headers; do not transform the accepted entry frame. */
.score-header,.score-entry-header,.score-dialog-head {isolation:isolate;backdrop-filter:none;background:#1b1b1b;}
.score-completion-steps{font-size:13px;line-height:1.4;gap:8px}
.score-completion-steps li{min-height:44px;display:flex;align-items:center}
.score-team-choices button strong,.score-team-choices button span{display:block}
.score-team-choices button span{font-size:13px;color:#c7c7c7;margin-top:8px}
/* Saved teams and reference setup are outside the approved active scoreboard. */
.score-my-teams{padding-block:20px;border-block:1px solid #555;margin-bottom:24px}
.score-saved-team{padding:14px;border:1px solid #555;border-radius:12px;background:#1b1b1b;min-width:0}
.score-saved-team>button:first-child{width:100%;text-align:left;border:0;background:none;margin-bottom:8px}
.score-saved-team img{width:60px;height:60px;object-fit:contain}
.score-initials{display:inline-flex;align-items:center;justify-content:center;min-width:32px;min-height:32px;border:1px solid #777;border-radius:50%;font-size:12px;color:#dcc08a;letter-spacing:1px}
.score-games-won .score-initials{min-width:28px;min-height:28px;max-width:40px;font-size:10px}
.score-season-details{margin-top:24px}.score-setup textarea{width:100%;max-width:100%;box-sizing:border-box;background:#222;color:#eeeade;border:1px solid #777;border-radius:8px;padding:12px;font:inherit}
.score-setup select{min-width:0;max-width:100%;text-overflow:ellipsis}

/* League beta refinement: preparation surfaces only; accepted scoring geometry is unchanged. */
.score-match-night{width:100%;max-width:1040px;padding-top:28px}
.score-match-night>.score-section-head{align-items:center;margin-bottom:24px}
.score-match-night>.score-section-head h1{font-size:clamp(30px,5vw,44px);margin:6px 0;letter-spacing:-.045em}
.score-match-night>.score-section-head p{display:none}
.score-one-off{display:inline-flex;align-items:center;gap:5px;color:#d9bf87;font-size:13px;white-space:nowrap}
.score-my-teams{border:0;padding:0;margin:0 0 36px;width:100%;min-width:0}
.score-my-teams-heading{display:flex;justify-content:space-between;gap:16px;align-items:center;margin-bottom:20px}
.score-my-teams-heading h2{font-size:28px;letter-spacing:-.04em;margin:6px 0}
.score-my-teams-heading p{color:#aaa9a3;font-size:14px;margin:0;line-height:1.5}
.score-my-teams-heading .score-eyebrow{font-size:9px;color:#d9bf87;letter-spacing:.16em}
.score-add-team{display:flex;align-items:center;justify-content:center;gap:6px;border:1px solid #d9bf874d;border-radius:12px;padding:8px 12px;color:#e4c88e;white-space:nowrap;font-size:13px;flex-shrink:0}
.score-team-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;width:100%}
.score-saved-team{padding:18px;border:1px solid #ffffff26;border-radius:18px;background:#1b1b1a;min-width:0;width:100%;overflow:hidden}
.score-team-card-head{display:flex;gap:14px;align-items:center}
.score-team-card-copy{min-width:0;flex:1}
.score-team-card-copy h3{font-size:19px;font-weight:600;line-height:1.25;letter-spacing:-.025em;margin:0 0 6px;overflow-wrap:anywhere}
.score-team-card-copy p,.score-team-card-copy small{margin:0;color:#b8b5ad;font-size:12px;line-height:1.5;display:block}
.score-team-card-copy small{color:#908e87}
.score-team-edit{flex:none;border:0!important;margin:0!important;padding:0!important;width:44px;min-height:44px;border-radius:12px;background:#ffffff06!important;display:grid;place-items:center;color:#c5c0b5}
.score-team-card-foot{display:flex;justify-content:space-between;align-items:center;gap:10px;border-top:1px solid #ffffff12;padding-top:12px;margin-top:16px}
.score-team-card-foot>small{font-size:11px;line-height:1.4;color:#a9a69d;max-width:45%}
.score-saved-team .score-start-team{display:flex;align-items:center;justify-content:center;gap:6px;background:#dec48b;color:#191815;min-height:44px;border-radius:10px;font-size:13px;font-weight:600;padding:10px 12px;margin:0;white-space:nowrap}
.score-source-review{font-size:12px;color:#dec48b;min-height:44px;padding:6px 0 0;display:block}
.score-monogram,.score-team-mark{flex:none;display:inline-grid;place-items:center;width:60px;height:60px;vertical-align:middle}
.score-monogram{border-radius:16px;border:1px solid #d9bd7955;background:#d9bd7910;color:#e7ce95;position:relative;isolation:isolate}
.score-monogram:before{content:"";position:absolute;inset:5px;border:1px solid #d9bd7926;border-radius:11px;pointer-events:none}
.score-monogram>span{display:block;font-size:21px;line-height:1;font-weight:600;letter-spacing:-.055em;padding-right:.055em;text-align:center}
.score-team-mark img,.score-saved-team .score-team-mark img{width:100%;height:100%;object-fit:contain;display:block}
.score-fixture>.score-monogram,.score-fixture>.score-team-mark{width:48px;height:48px}
.score-fixture-crest>.score-monogram,.score-fixture-crest>.score-team-mark{width:70px;height:70px}
.score-teams-empty{text-align:center;border:1px solid #ffffff20;border-radius:18px;padding:30px 20px;background:#1b1b1a}
.score-teams-empty h3{font-size:22px;letter-spacing:-.03em}.score-teams-empty p{color:#b8b5ad;font-size:14px}
.score-teams-empty .score-primary{margin:12px auto 0}
.score-season-details{margin-top:24px;border-top:1px solid #ffffff18;padding-top:16px;color:#a9a69d;font-size:12px;line-height:1.6}
.score-season-details>summary{min-height:44px;cursor:pointer;color:#c3beb2;display:list-item;list-style-position:inside}
.score-season-details input{max-width:100%;margin-top:8px}
.score-team-editor.score-setup{max-width:680px;padding-bottom:16px}
.score-team-editor h1{font-size:30px;line-height:1.15;letter-spacing:-.04em;margin:12px 0}
.score-team-editor>form>p{color:#aaa79f;line-height:1.5}
.score-directory-fields{display:grid;gap:20px;margin-top:24px}
.score-team-confirm{display:flex;gap:16px;align-items:center;padding:20px 0;margin:12px 0;border-bottom:1px solid #ffffff1c;min-width:0}
.score-team-confirm>div{min-width:0;overflow-wrap:anywhere}.score-team-confirm strong{font-size:20px}.score-team-confirm p{margin:6px 0;font-size:13px;color:#bcb5a7}.score-team-confirm small{color:#96938b}
.score-squad-editor{margin-top:28px;border-top:1px solid #ffffff1c;padding-top:12px}.score-squad-editor h2{font-size:21px}.score-squad-editor h2 small{color:#d9bf87;font-size:14px;margin-left:6px}
.score-squad-row{display:flex;align-items:center;gap:8px;border-bottom:1px solid #ffffff12;padding:4px 0}
.score-entry-frame .score-squad-row input{border:0!important;box-shadow:none;background:transparent!important;margin:0!important;flex:1;padding-left:0!important}
.score-squad-row button{width:44px;flex:none;color:#99958c;display:grid;place-items:center}
.score-add-player{display:flex;align-items:end;gap:10px;margin-block:16px}.score-add-player input{flex:1;min-width:0}.score-add-player button{white-space:nowrap;min-height:48px;border:1px solid #d9bf8755;border-radius:10px;padding:8px 12px;color:#e3c78e}
.score-squad-editor details{border:1px solid #d9bf8733;border-radius:12px;padding:12px;margin-block:18px;font-size:13px}.score-squad-editor summary{min-height:32px;cursor:pointer;color:#e3c78e}
.score-source-player{display:flex;align-items:center;justify-content:space-between;gap:12px;border-top:1px solid #ffffff15}.score-source-player button{color:#e3c78e;min-width:56px}
.score-team-save{width:100%;justify-content:center;margin-block:18px 6px}
.score-team-danger{border-top:1px solid #ffffff16;margin-top:24px;padding-top:16px;display:flex;flex-wrap:wrap;gap:12px;align-items:center}.score-team-danger button{color:#cf9f8e;display:flex;gap:8px;align-items:center;font-size:13px}.score-team-danger small{color:#99958c;font-size:11px}
.score-prep-heading{display:flex;align-items:center;gap:16px;margin-block:8px 22px;min-width:0}.score-prep-heading>div{min-width:0}.score-prep-heading h1{font-size:28px;line-height:1.15;letter-spacing:-.035em;margin:7px 0;overflow-wrap:anywhere}.score-prep-heading p{font-size:12px;color:#aaa69d;margin:0;line-height:1.5}
.score-prep-steps{display:flex;gap:16px;list-style:none;padding:0 0 18px;margin:0 0 18px;border-bottom:1px solid #ffffff1c;color:#b3ada1;font-size:12px}.score-prep-steps li:first-child{color:#e3c78e}
.score-entry-frame .score-setup fieldset{padding:18px 0;margin:0 0 20px;border:0;border-bottom:1px solid #ffffff20;border-radius:0}
.score-entry-frame .score-setup legend{font-size:12px;letter-spacing:.06em;color:#ddc591;text-transform:uppercase;font-weight:600;padding:0}
.score-entry-frame .score-setup label{font-size:13px;color:#bcb7ac;line-height:1.5}
.score-entry-frame .score-setup input:not([type=radio]):not([type=checkbox]),.score-entry-frame .score-setup select,.score-entry-frame .score-player-field{border-color:#ffffff35;border-radius:10px;background-color:#141413;min-height:50px}
.score-entry-frame .score-setup .score-form-grid{gap:18px;margin-block:18px 0}
.score-entry-frame .score-lineups{gap:24px}.score-entry-frame .score-lineups fieldset{background:none;padding:18px 0}
.score-prep-team-name{font-size:17px;margin:0 0 8px;font-weight:600}
.score-entry-frame .score-primary{border-radius:11px;background:#e1c68c;color:#191815;font-weight:600}
.score-entry-frame .score-setup>form>.score-primary{width:100%;justify-content:center}
/* Opaque headers own their safe area; no backdrop filter acts on title text. */
.score-desk-view>.score-header{height:auto;min-height:88px;padding-top:max(12px,env(safe-area-inset-top));background:#141413;backdrop-filter:none;-webkit-backdrop-filter:none;position:relative;z-index:3}
.score-entry-header{background:#1b1b1b;border-bottom-color:#ffffff20;padding-top:max(10px,env(safe-area-inset-top));min-height:64px;backdrop-filter:none;-webkit-backdrop-filter:none;position:relative;z-index:2}
.score-entry-header h2{font-size:16px;letter-spacing:-.02em}.score-entry-close{border:0;border-radius:10px;background:#ffffff08;color:#dfc78e;font-size:13px}
.score-completion-dialog .score-dialog-head,.score-captain-signing .score-dialog-head{position:sticky;top:0;background:#1b1b1b;padding:12px 0;z-index:4;backdrop-filter:none;-webkit-backdrop-filter:none;filter:none;isolation:isolate}
.score-completion-dialog .score-dialog-head h2{font-size:18px;line-height:1.3}
.score-completion-steps{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;font-size:11px;line-height:1.4;margin-bottom:16px;counter-reset:completion}
.score-completion-steps li{min-height:48px;border-top:2px solid #ffffff20;padding-top:8px;display:block;overflow-wrap:normal;color:#a7a298}
.score-completion-steps li[aria-current=step]{border-color:#dfc78e;color:#f1dfb9;font-weight:600}
/* Keep the device-accepted origin/focus/viewport handler untouched. Reduce
   reserved status space and keep the save action present in the scrolling editor. */
.score-result-editor .score-result-preview{min-height:0;margin:12px 0;line-height:1.5}
.score-result-actions>.score-primary{width:100%;justify-content:center}
@media(max-width:650px){
 .score-team-grid{grid-template-columns:minmax(0,1fr);gap:12px}
 .score-match-night{padding-inline:18px;padding-top:22px}
 .score-match-night>.score-section-head{gap:8px;margin-bottom:20px}
 .score-match-night>.score-section-head .score-eyebrow{font-size:8px;letter-spacing:.12em}
 .score-my-teams-heading{margin-bottom:16px}.score-my-teams-heading h2{font-size:26px}
 .score-saved-team{padding:16px}.score-team-card-head{gap:12px}.score-team-card-copy h3{font-size:18px}
 .score-team-card-foot{margin-top:14px}.score-team-card-foot>small{font-size:10px}
 .score-desk-view>.score-header{row-gap:10px;padding-bottom:12px;min-height:104px}
 .score-completion-dialog{padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom);background:#1b1b1b}
 .score-completion-dialog .score-dialog{padding-top:0!important}.score-completion-dialog .score-dialog-head{margin-bottom:8px}
}
.score-my-teams-heading h1{font-size:32px;letter-spacing:-.04em;margin:6px 0}
.score-match-night>.score-one-off{margin-top:-16px;margin-bottom:24px;padding:0;color:#a9a395;font-size:12px}
.score-match-night>h2{font-size:20px;letter-spacing:-.02em;margin-top:8px}
.score-fixture-picker>details>summary,.score-fixture-details>summary{min-height:48px;display:list-item;cursor:pointer;list-style-position:inside;color:#e2c98e;font-size:14px;padding-block:12px}
.score-reference-list{display:grid;gap:8px;max-height:320px;overflow:auto;overscroll-behavior:contain;margin-bottom:12px;padding:2px}
.score-reference-list>button{text-align:left;border:1px solid #ffffff25;border-radius:12px;background:#ffffff04;padding:12px 14px;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 10px;min-width:0;width:100%}
.score-reference-list>button>span{font-size:12px;color:#c8baa0;grid-column:1/-1}.score-reference-list>button>strong{font-size:15px;line-height:1.4;overflow-wrap:anywhere;font-weight:600}.score-reference-list>button>small{color:#aaa397;align-self:center;font-size:11px}
.score-previous-fixtures>summary{min-height:44px;font-size:12px;cursor:pointer;color:#aaa397;list-style-position:inside}
.score-fixture-confirm{padding:16px;border:1px solid #dfc78e44;border-radius:14px;background:#dfc78e06;margin:8px 0 16px;overflow-wrap:anywhere}.score-fixture-confirm>strong{display:flex;flex-direction:column;gap:4px;font-size:19px;line-height:1.3;margin:12px 0}.score-fixture-confirm>strong>span{font-size:12px;color:#8f8a7d}.score-fixture-confirm p{font-size:13px;margin:6px 0;color:#d2c9b8}.score-fixture-confirm small{font-size:11px;color:#a59e90;line-height:1.5}
.score-manual-fixture{font-size:12px;color:#b8b1a2;text-decoration:underline;text-underline-offset:4px;padding-inline:0}
.score-fixture-details{margin-block:6px 12px}

/* V3: actions are content, not a floating keyboard toolbar. Entry handlers unchanged. */
.score-result-actions{position:static;inset:auto;z-index:auto;padding:16px 0 max(16px,env(safe-area-inset-bottom));margin-top:8px;background:#1b1b1b;border:0}
.score-v3.score-compact-header>.score-header{height:calc(56px + env(safe-area-inset-top));min-height:calc(56px + env(safe-area-inset-top));padding:env(safe-area-inset-top) max(16px,env(safe-area-inset-right)) 0 max(16px,env(safe-area-inset-left));flex-wrap:nowrap;gap:12px;row-gap:0;flex:none;position:relative;background:#141413;filter:none;backdrop-filter:none;-webkit-backdrop-filter:none}
.score-v3.score-compact-header .score-identity{gap:12px;min-width:0;min-height:44px}
.score-v3.score-compact-header .score-identity img{width:100px;height:34px}
.score-v3.score-compact-header .score-word{font-size:17px;padding-left:12px}
.score-v3.score-compact-header .score-word>span{display:none}
.score-v3 .score-header-tools button{min-height:44px}
.score-v3.score-full-header>.score-header{height:auto;min-height:110px;flex-wrap:wrap;padding-top:calc(20px + env(safe-area-inset-top));padding-bottom:20px;background:#141413;gap:20px}
.score-v3.score-full-header .score-header nav{padding:5px;border-radius:16px;gap:5px}
.score-v3.score-full-header .score-header nav button{min-height:52px;min-width:150px;border-radius:11px;background:#e2c68b;color:#191815;font-size:15px;font-weight:600}
.score-v3.score-full-header .score-header nav button+button{background:#252420;color:#e9d3a5}
.score-v3 .score-landing-v3{width:100%;flex:1;min-height:0;max-width:1100px;padding-top:clamp(48px,10vh,100px);padding-bottom:56px}
.score-v3 .score-landing-v3 h1{font-size:clamp(42px,7vw,78px);line-height:1.04;letter-spacing:-.055em;max-width:850px;margin-top:20px}
.score-v3 .score-landing-v3 p{font-size:17px;line-height:1.7;color:#b8b2a6;margin-block:24px}
.score-landing-rule{display:flex;align-items:center;gap:12px;max-width:260px;margin-block:40px}
.score-landing-rule>i{width:7px;height:7px;border:1px solid #d9c18a;border-radius:50%}.score-landing-rule>span{height:1px;background:#d9c18a55;flex:1}
.score-landing-v3>small{font-size:12px;color:#999387}
/* Equal reserved identity rows; both numeral surfaces use the wider digit band. */
.score-v3 .score-courtside .score-player{height:116px;min-height:116px;display:grid;grid-template-rows:18px 66px 24px;align-content:start;gap:4px;padding-inline:8px}
.score-v3 .score-courtside .score-player-kicker{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:18px;min-width:0}
.score-v3 .score-courtside .score-player h1{font-size:clamp(20px,4.8vw,28px);line-height:1.15;margin:0;align-self:center;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;overflow-wrap:anywhere;max-height:2.3em}
.score-v3 .score-courtside .score-serve{justify-content:center;min-height:24px;margin:0}
.score-v3 .score-courtside .score-side{display:flex;flex-direction:column;min-width:0}
.score-v3 .score-courtside:not(.phase-setup)[data-score-width-band] .score-point{flex:1;--score-number-size:var(--score-fit-1,180px)}
.score-v3 .score-courtside:not(.phase-setup)[data-score-width-band="teens"] .score-point{--score-number-size:var(--score-fit-teens,160px)}
.score-v3 .score-courtside:not(.phase-setup)[data-score-width-band="2"] .score-point{--score-number-size:var(--score-fit-2,140px)}
.score-v3 .score-courtside:not(.phase-setup)[data-score-width-band="3"] .score-point{--score-number-size:var(--score-fit-3,100px)}
.score-v3 .score-courtside:not(.phase-setup)[data-score-width-band="4"] .score-point{--score-number-size:var(--score-fit-4,76px)}
.score-v3 .score-courtside:not(.phase-setup)[data-score-width-band] .score-point strong{font-size:var(--score-number-size)}
.score-entry-header{min-height:calc(56px + env(safe-area-inset-top));padding-top:calc(6px + env(safe-area-inset-top));padding-bottom:6px;filter:none;backdrop-filter:none;-webkit-backdrop-filter:none}
/* The modal header is outside its scrolling body and outside the app's mask. */
.score-modal-v3.score-shade{z-index:30;padding:max(12px,env(safe-area-inset-top)) max(12px,env(safe-area-inset-right)) max(12px,env(safe-area-inset-bottom)) max(12px,env(safe-area-inset-left));overflow:hidden;backdrop-filter:none;-webkit-backdrop-filter:none}
.score-modal-v3 .score-dialog{display:flex;flex-direction:column;overflow:hidden;padding:0!important;min-height:0;background:#1b1b1b;color:#f2efe6;border-color:#ffffff30}
.score-modal-v3 .score-dialog-head{position:relative;top:auto;flex:none;min-height:56px;padding:6px 16px!important;margin:0!important;border-bottom:1px solid #ffffff18;z-index:2;background:#1b1b1b;filter:none;backdrop-filter:none;-webkit-backdrop-filter:none;align-items:center}
.score-modal-v3 .score-dialog-head h2{font-size:19px;line-height:1.3}
.score-modal-v3 .score-dialog-body{min-height:0;flex:1 1 auto;overflow:auto;overscroll-behavior:contain;padding:16px;scroll-padding-block:12px;-webkit-overflow-scrolling:touch}
.score-modal-v3 .score-completion-steps{gap:8px;margin:0 0 16px;font-size:12px;line-height:1.4}
.score-modal-v3 .score-completion-steps li{border-top:0;min-height:44px;padding:6px 0;border-bottom:2px solid #ffffff20}
.score-modal-v3 .score-completion-steps li[aria-current=step]{border-bottom-color:#dfc78e}
.score-serving-dialog .score-dialog{max-width:560px;border:1px solid #d7be8470;box-shadow:0 24px 100px #000b}
.score-serving-dialog .score-dialog-head{min-height:70px}.score-serving-dialog .score-dialog-head h2{font-size:25px}
.score-serving-dialog .score-serve-intro{margin:0 0 20px;color:#bfb7a7;font-size:14px}
.score-server-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.score-server-choice{display:flex;flex-direction:column;justify-content:space-between;gap:18px;text-align:left;min-height:140px;padding:18px 16px;border:1px solid #d9c18a55;border-radius:12px;background:#e1c68b0b;min-width:0}
.score-server-choice strong{font-size:clamp(18px,4.6vw,24px);line-height:1.25;letter-spacing:-.025em;overflow-wrap:anywhere}
.score-server-choice>span{font-size:12px;color:#ddc28b}.score-server-choice[aria-pressed=true]{border-color:#dfc78e;background:#dfc78e22}
.score-serving-back{display:block;font-size:13px;color:#bdb5a6;margin-top:16px;padding:8px 0;min-height:44px}
.score-first-doubles{display:grid;gap:12px;margin-top:20px}.score-first-doubles label{display:grid;gap:8px;font-size:13px}.score-first-doubles select{min-height:48px;max-width:100%;width:100%;padding:10px;color:#f2efe6;background:#141413;border:1px solid #ffffff40;border-radius:8px}
@media(max-width:650px){
 .score-v3.score-full-header>.score-header{display:grid;grid-template-columns:1fr auto;padding-inline:18px;gap:24px 12px}
 .score-v3.score-full-header .score-header nav{grid-column:1/-1;grid-row:2;width:100%;display:grid;grid-template-columns:1fr 1fr}
 .score-v3.score-full-header .score-header nav button{min-width:0;padding-inline:8px;min-height:60px}
 .score-v3.score-full-header .score-header-tools{grid-column:2;grid-row:1}
 .score-v3 .score-landing-v3{padding-top:42px;padding-bottom:42px}
 .score-modal-v3.score-completion-dialog,.score-modal-v3.score-captain-signing{padding:env(safe-area-inset-top) 0 env(safe-area-inset-bottom);background:#1b1b1b}
 .score-modal-v3.score-completion-dialog .score-dialog,.score-modal-v3.score-captain-signing .score-dialog{height:100%;max-height:100%!important;width:100%;border:0;border-radius:0}
}
@media(orientation:landscape) and (max-height:550px) and (max-width:1100px){
 .score-v3 .score-courtside .score-player{height:74px;min-height:74px;grid-template-rows:12px 40px 18px;gap:2px;padding-inline:8px}
 .score-v3 .score-courtside .score-player-kicker{font-size:8px;line-height:12px}
 .score-v3 .score-courtside .score-player h1{font-size:18px;line-height:1.1}
 .score-v3 .score-courtside .score-serve{min-height:18px;font-size:9px}
 .score-serving-dialog .score-dialog-head{min-height:56px}.score-server-choice{min-height:100px}
}

.score-rubber-result{max-width:620px;margin:auto;padding-block:16px}.score-rubber-result h1{font-size:26px;line-height:1.3;overflow-wrap:anywhere}.score-rubber-result h1>span{display:block;font-size:14px;color:#aaa;margin:8px 0}.score-result-total{font-size:64px;letter-spacing:-.05em}.score-rubber-result ol{list-style:none;padding:0;margin:24px 0}.score-rubber-result li{display:flex;justify-content:space-between;padding:14px 0;border-bottom:1px solid #ffffff20}.score-rubber-result li strong{font-size:22px}.score-rubber-result p{color:#bdb6a9;line-height:1.6;font-size:13px}

.score-v3 .score-courtside .score-side:first-child{border-right:0;box-shadow:1px 0 #ffffff1b}

/* V4 shared sheets: fixed chrome follows Safari's visible top, while the input
   grid retains its original layout origin and native scroll/focus behaviour. */
.score-entry-frame.score-shade{--score-safe-top:env(safe-area-inset-top,0px);color-scheme:dark}
.score-entry-frame .score-entry-window{height:var(--entry-extent,var(--entry-height,100dvh))}
.score-entry-frame .score-entry-header{position:absolute;top:var(--entry-chrome-top,0px);left:0;right:0;height:calc(57px + var(--entry-safe-top,env(safe-area-inset-top)));min-height:0;padding:calc(6px + var(--entry-safe-top,env(safe-area-inset-top))) max(16px,env(safe-area-inset-right)) 6px max(16px,env(safe-area-inset-left));z-index:5;background:#1b1b1b;opacity:1;filter:none;backdrop-filter:none;-webkit-backdrop-filter:none;transform:none}
.score-entry-frame .score-entry-body{position:absolute;top:calc(57px + var(--entry-safe-top,env(safe-area-inset-top)));left:0;right:0;bottom:0;background:#1b1b1b;scroll-padding-top:calc(69px + var(--entry-safe-top,env(safe-area-inset-top)) + var(--entry-chrome-top,0px));scroll-padding-bottom:16px}
.score-entry-frame .score-entry-close{min-width:64px;min-height:44px;color:#f1dfb4;background:#34312b;border:1px solid #8f8267;font-size:14px;font-weight:600;opacity:1}
.score-entry-frame .score-entry-header h2{color:#f2efe6;opacity:1;font-size:17px;line-height:1.25}
.score-settings{width:100%;max-width:600px;margin:0 auto;padding:12px 0 24px;min-width:0}
.score-settings h3{font-size:20px;line-height:1.35;margin:0 0 14px;letter-spacing:-.025em}
.score-settings form{display:grid;grid-template-columns:minmax(0,1fr);gap:20px;margin:0}
.score-settings label{display:grid;grid-template-columns:minmax(0,1fr);gap:8px;margin:0;font-size:14px;line-height:1.4;color:#d2cabe;min-width:0}
.score-settings input:not([type=checkbox]),.score-settings select{display:block;width:100%;min-width:0;max-width:100%;min-height:52px;margin:0;padding:12px 14px;border:1px solid #8b8478;border-radius:10px;background:#141413;color:#f2efe6;font-size:16px;line-height:1.5;box-sizing:border-box;color-scheme:dark}
.score-settings select{appearance:none;-webkit-appearance:none;padding-right:42px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23d8c9aa' stroke-width='2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 14px center;background-size:18px}
.score-settings input:focus-visible,.score-settings select:focus-visible{outline:2px solid #e1c68c;outline-offset:2px}
.score-settings .score-toggle{min-height:50px;font-size:14px;line-height:1.5;padding:12px 0;color:#f2efe6;gap:12px}
.score-settings .score-toggle>span{color:#dfc78e}
.score-settings .score-quick-actions>p{font-size:13px;line-height:1.6;color:#bdb5a6;margin:0 0 10px}
.score-settings .score-quick-actions>.score-toggle{border-bottom:1px solid #ffffff14}
.score-settings .score-quick-actions>.score-toggle:last-of-type{color:#e6b2a2}
.score-settings hr{border:0;border-top:1px solid #ffffff24;margin:28px 0}
.score-settings .score-primary{width:100%;justify-content:center;min-height:52px}
.score-settings .score-note{font-size:12px;line-height:1.6;color:#bdb5a6}
.score-settings .score-advanced{border-top:1px solid #ffffff24;margin:20px 0 0;padding-top:8px}
.score-settings .score-advanced>summary{min-height:48px;display:list-item;list-style-position:inside;cursor:pointer;color:#e3c991;font-size:15px;padding-block:12px}
.score-settings .score-advanced p{font-size:13px;line-height:1.7;color:#c7beb0}
.score-settings .score-advanced h3{margin-top:16px}
/* V3 primary inherited dark text but neutral button backgrounds. Own both
   colours together; enabled primary and disabled controls cannot be confused. */
.score-app .score-mobile-rubber button.score-primary:enabled{background:#e2c98e;color:#171715!important;border:1px solid #e2c98e;opacity:1;font-weight:600}
.score-app .score-mobile-rubber button:not(.score-primary):enabled{background:#202020;color:#f2efe6;border:1px solid #918575;opacity:1}
.score-app .score-mobile-rubber button:disabled{background:#292929;color:#aaa69e!important;border:1px dashed #77736c;opacity:1;cursor:not-allowed}
.score-app .score-mobile-rubber button.score-primary:enabled:active{background:#d4b978;color:#171715!important}
/* Marks are fixed flex items. The old generic >span flex rule must never grow a crest. */
.score-fixture>.score-team-mark,.score-fixture>.score-monogram{flex:0 0 52px;width:52px;height:52px;min-width:52px;max-width:52px;max-height:52px;align-self:center;overflow:hidden}
.score-fixture>.score-team-mark{padding:3px}
.score-fixture>.score-team-mark>img{display:block;width:100%;height:100%;max-width:100%;max-height:100%;object-fit:contain;margin:0}
.score-fixture>.score-fixture-copy{flex:1 1 auto;min-width:0}
.score-fixture-action{display:flex;align-items:center;gap:7px;font-size:13px;color:#e2c98e;font-weight:600;min-height:36px;margin-top:5px}
.score-saved-team .score-team-mark{padding:3px;overflow:hidden}.score-saved-team .score-team-mark img{max-width:100%;max-height:100%;object-fit:contain}
.score-fixture-crest{flex:0 0 70px;max-width:70px;min-width:0;overflow:hidden}.score-fixture-crest>.score-team-mark{width:70px;height:70px;padding:4px;overflow:hidden}.score-fixture-crest img{max-width:100%;max-height:100%;object-fit:contain}
/* One landing composition. Neither mode is preselected. */
.score-v3.score-full-header>.score-header{min-height:96px;padding:calc(12px + env(safe-area-inset-top)) max(18px,env(safe-area-inset-right)) 12px max(18px,env(safe-area-inset-left));display:flex;flex-wrap:nowrap;gap:14px}
.score-full-header .score-identity{gap:14px;min-width:0}.score-full-header .score-identity img{width:124px;height:42px}.score-full-header .score-word{font-size:20px;padding-left:14px}.score-full-header .score-word>span{display:none}
.score-v3 .score-landing-v4{flex:1;min-height:0;width:100%;max-width:1000px;display:flex;align-items:center;padding:clamp(20px,4svh,48px) max(20px,env(safe-area-inset-right)) clamp(24px,5svh,56px) max(20px,env(safe-area-inset-left))}
.score-landing-content{width:100%;max-width:680px;margin:auto}
.score-landing-v4 .score-eyebrow{color:#dec48c;font-size:10px;letter-spacing:.16em;margin:0 0 18px}
.score-v3 .score-landing-v4 h1{font-size:clamp(37px,10.2vw,66px);line-height:1.08;letter-spacing:-.05em;margin:0 0 18px}
.score-v3 .score-landing-v4 p{font-size:16px;line-height:1.5;color:#c4bdb0;margin:0 0 26px}
.score-landing-modes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-bottom:28px}
.score-landing-modes button{min-height:76px;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:18px 16px;border:1px solid #cdb77e;border-radius:14px;background:#25231e;color:#f1dfb5;font-size:16px;font-weight:600;text-align:left}
.score-landing-modes button:active{background:#3a3327}.score-landing-v4 small{font-size:12px;color:#aba394;line-height:1.5}
.score-app.score-full-header>.score-footer{padding-block:12px}.score-app.score-full-header>.score-footer>span:last-child{display:none}
@media(max-width:650px){.score-v3.score-full-header>.score-header .score-header-tools{display:flex;grid-column:auto;grid-row:auto}.score-v3.score-full-header>.score-header .score-identity{flex:1}.score-settings{padding-top:10px}.score-fixture{gap:12px;padding:16px}.score-fixture strong{font-size:17px;line-height:1.35}.score-fixture>b{font-size:24px}.score-fixture>svg{display:none}}
@media(orientation:landscape) and (max-height:550px) and (max-width:1100px){
 .score-v3 .score-courtside .score-player{height:74px;min-height:74px;padding-top:8px;grid-template-rows:12px 38px 12px;gap:2px}
 .score-v3 .score-courtside .score-player h1{font-size:17px;line-height:1.1}
 .score-v3 .score-courtside .score-serve{min-height:12px;font-size:9px;line-height:1.2}
 .score-v3 .score-landing-v4{padding-block:20px}.score-v3 .score-landing-v4 h1{font-size:38px}.score-landing-modes button{min-height:60px}
}
.score-directory-choice{display:grid;gap:8px;min-width:0}.score-directory-choice>.score-field-label{font-size:13px;color:#cfc5b3;line-height:1.5}
.score-select-field{display:flex;justify-content:space-between;align-items:center;gap:12px;text-align:left;min-height:52px;border:1px solid #8b8478;border-radius:10px;padding:12px 14px;background:#141413;color:#f2efe6;font-size:16px;width:100%;min-width:0}
.score-select-field>span{min-width:0;overflow-wrap:anywhere}.score-select-field>svg{flex:none;color:#dfc78e}
.score-directory-options{display:grid;gap:8px}.score-directory-options>button{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:52px;padding:14px;text-align:left;border:1px solid #8b8478;border-radius:10px;background:#202020;color:#f2efe6;font-size:16px;line-height:1.4}
.score-directory-options>button>span{min-width:0;overflow-wrap:anywhere}.score-directory-options>button[aria-selected=true]{background:#e1c68c;color:#171715;border-color:#e1c68c;font-weight:600}
.score-choice-dialog .score-dialog{max-width:560px}.score-choice-dialog .score-dialog-head h2{font-size:20px}
.score-app-version{border-top:1px solid #ffffff24;margin-top:24px;padding-top:20px}.score-app-version dl{margin:0}.score-app-version dl>div{display:flex;justify-content:space-between;gap:16px;padding:8px 0;font-size:13px;line-height:1.5}.score-app-version dt{color:#bdb5a6}.score-app-version dd{margin:0;text-align:right;overflow-wrap:anywhere;font-variant-numeric:tabular-nums;color:#f2efe6}.score-app-version>p{font-size:12px;line-height:1.6;color:#bdb5a6}.score-update-available{padding:16px;border:1px solid #bba16a;border-radius:12px;margin-top:16px;background:#e1c68b0a}.score-update-available>strong{font-size:16px;color:#e1c68c}.score-update-available>p{font-size:13px;line-height:1.6;color:#d6ccba}
.score-modal-v3 .score-dialog-body label:not(.score-agreement){display:grid;gap:8px;min-width:0;margin:0 0 18px;font-size:14px;line-height:1.5;color:#d2cabe}
.score-modal-v3 .score-dialog-body input:not([type=checkbox]):not([type=radio]),.score-modal-v3 .score-dialog-body select{display:block;width:100%;max-width:100%;min-width:0;min-height:50px;margin:0;padding:12px 14px;border:1px solid #8b8478;border-radius:9px;background:#141413;color:#f2efe6;font-size:16px;line-height:1.5;color-scheme:dark}
.score-modal-v3 .score-dialog-head>button{color:#f1dfb4;background:#34312b;border:1px solid #8f8267;border-radius:10px;min-height:44px;min-width:44px;opacity:1}
/* Absolute artwork bounds avoid intrinsic grid-track growth from tall crests. */
.score-team-mark{position:relative;overflow:hidden}
.score-team-mark>img,.score-app .score-team-mark>img,.score-fixture>.score-team-mark>img,.score-saved-team .score-team-mark>img,.score-fixture-crest>.score-team-mark>img{position:absolute;inset:4px;width:calc(100% - 8px);height:calc(100% - 8px);max-width:none;max-height:none;min-width:0;min-height:0;object-fit:contain;margin:0;transform:none}

/* V5: one safe-area owner per scoring edge. Preserve the existing numeral
   allocation/fitting; remove the duplicate app inset above the compact header. */
.score-v3.score-compact-header:has(>.score-courtside){padding-top:0;padding-bottom:env(safe-area-inset-bottom,0px);height:100svh;height:100dvh;min-height:0}
.score-v3.score-compact-header:has(>.score-courtside)>.score-header{height:calc(56px + env(safe-area-inset-top,0px));min-height:calc(56px + env(safe-area-inset-top,0px));padding-top:env(safe-area-inset-top,0px)}
/* Header clarity is an explicit shared contract, including their ancestors.
   No translucent overlay, filter, fading animation or inherited opacity. */
.score-app,.score-entry-frame,.score-entry-window,.score-modal-v3,.score-dialog,.score-picker-shade,.score-picker-sheet{filter:none;backdrop-filter:none;-webkit-backdrop-filter:none;opacity:1}
.score-header,.score-entry-header,.score-dialog-head,.score-picker-head{background:#1b1b1b!important;filter:none!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;opacity:1!important;isolation:isolate;border-bottom:1px solid #ffffff24}
.score-header *,.score-entry-header *,.score-dialog-head *,.score-picker-head *{filter:none!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;opacity:1!important;text-shadow:none;animation:none;transition:none}
.score-desk-view>.score-header{position:sticky;top:0;z-index:6}
.score-header::before,.score-header::after,.score-entry-header::before,.score-entry-header::after,.score-dialog-head::before,.score-dialog-head::after,.score-picker-head::before,.score-picker-head::after{display:none}
.score-choose-fixture{display:block;width:100%;padding:14px;text-align:left;min-height:52px;border:1px solid #a58e61;border-radius:10px;color:#efdab0;background:#29251e;font-weight:600}
.score-fixture-choice .score-dialog{max-width:620px}
.score-fixture-choice .score-dialog-body{padding-bottom:max(16px,env(safe-area-inset-bottom))}
.score-fixture-choice .score-reference-list{max-height:none;overflow:visible;margin-bottom:16px}
.score-fixture-choice .score-dialog-body>h3{margin:0 0 14px}
.score-fixture-choice summary{cursor:pointer;min-height:48px;padding:12px 0;color:#e4c98e}
.score-fixture-choice .score-reference-list>button{min-height:78px;padding:12px 14px}
.score-fixture-choice .score-reference-list>button>em{grid-column:1/-1;color:#bdb5a6;font-style:normal;font-size:12px;line-height:1.4;overflow-wrap:anywhere}
.score-fixture-choice .score-reference-list>button[aria-pressed=true]{border-color:#e2c98e;background:#e2c98e12}
.score-card-options{flex-basis:100%;border-top:1px solid #ffffff24;margin-top:8px;padding-top:4px}
.score-card-options>summary{cursor:pointer;min-height:48px;padding:14px 4px;color:#d2c5a8;font-size:13px}
.score-card-options>div{display:flex;align-items:center;flex-wrap:wrap;gap:12px;padding:8px 0}
.score-card-options button{display:flex;align-items:center;gap:8px;min-height:48px;padding:10px 14px;border:1px solid #77736a;border-radius:8px;font-size:13px}
.score-card-options .score-remove-card{flex-basis:100%;margin-top:12px;padding-top:14px;border-color:#916f61;color:#e4b8a7}
@media(max-width:800px){.score-app .score-mobile-rubber{padding:10px 12px}.score-app .score-mobile-rubber p{margin:5px 0}.score-app .score-mobile-rubbers{gap:8px}.score-app .score-mobile-rubber button{min-height:46px}}

.score-landing-v4 .score-offline-warning{font-size:12px!important;line-height:1.6!important;color:#e5c69b!important;padding:12px 14px;border:1px solid #8f7959;border-radius:8px;margin:16px 0 0!important}
/* Player pickers use the same visible safe-area budget as modal selectors. */
.score-picker-shade{padding:max(8px,env(safe-area-inset-top)) max(8px,env(safe-area-inset-right)) max(8px,env(safe-area-inset-bottom)) max(8px,env(safe-area-inset-left))}

/* V5.2: bound the scoring shell by the actual visible viewport, in both modes.
   Header owns the top inset; root owns the bottom inset. Editor remains separate. */
@media(orientation:portrait){
 .score-v3.score-compact-header:has(>.score-courtside){height:var(--score-visible-height,100dvh);max-height:100dvh;min-height:0;overflow:visible}
}
@media(orientation:portrait) and (max-width:650px){
 .score-v3 .score-courtside .score-player{height:100px;min-height:100px;grid-template-rows:18px 50px 24px}
 .score-v3 .score-courtside .score-point>.score-numeral{align-items:center;padding-top:0;padding-bottom:clamp(0px,calc(var(--score-visible-height,100dvh) - 640px),64px)}
 .score-v3 .score-courtside .score-point{justify-content:flex-start}
 .score-v3 .score-courtside .score-context button{font-size:12px}
}
.score-position-order{display:block;font-size:13px;line-height:1.5;color:#dfc78e;margin-top:3px;letter-spacing:0}
.score-season-details{margin-block:12px!important;padding-top:12px}.score-my-teams{margin-bottom:12px!important;padding-bottom:0!important}
.score-match-night>.score-one-off{margin-top:0;margin-bottom:16px;min-height:44px;font-size:13px}.score-match-night .score-fixture small{font-size:12px}
.score-court-diagnostics summary{min-height:48px;padding-block:12px;color:#d2c5a8;font-size:13px;cursor:pointer}
.score-court-diagnostics p{font-size:13px;line-height:1.6}
.score-header .score-identity,.score-header .score-identity img,.score-header .score-word{transform:none;will-change:auto;image-rendering:auto}

/* V5.3: one viewport-anchored brand plane. Desk routes used document scrolling
   while Quick Score clipped the root; a relative rule also overrode the older
   desk sticky rule. Reserve exactly the old header extent, then keep its paint
   out of route scrolling. No transform/GPU layer or scoring-space change. */
.score-v3{--score-header-extent:calc(56px + env(safe-area-inset-top,0px))}
.score-v3.score-full-header{--score-header-extent:calc(96px + env(safe-area-inset-top,0px))}
.score-v3::before{content:"";display:block;flex:none;height:var(--score-header-extent);min-height:var(--score-header-extent)}
.score-v3>.score-header{position:fixed!important;inset:0 0 auto!important;z-index:8;height:var(--score-header-extent)!important;min-height:var(--score-header-extent)!important;align-items:flex-start!important;padding-top:calc(6px + env(safe-area-inset-top,0px))!important;padding-bottom:5px!important;overflow:visible;transform:none;will-change:auto}
.score-v3.score-full-header>.score-header{align-items:center!important;padding-block:calc(12px + env(safe-area-inset-top,0px)) 12px!important}
.score-v3.score-compact-header .score-identity{height:44px;min-height:44px;align-items:center}
.score-v3.score-compact-header .score-word{line-height:24px}
.score-v3.score-compact-header .score-identity img{object-position:left center;flex:none}
/* These are non-scrolling shells; only their body owns momentum scrolling. */
.score-entry-window,.score-modal-v3 .score-dialog,.score-picker-sheet{-webkit-overflow-scrolling:auto}

/* Names first. One scroll owner in the sheet; short squads shrink naturally. */
.score-picker-sheet{display:flex;flex-direction:column;overflow:hidden}
.score-picker-options{flex:0 1 auto;max-height:none;min-height:0;overflow:auto;margin:8px 0}
.score-picker-options button{min-height:48px;padding:12px;font-size:16px;line-height:1.4;gap:0}
.score-picker-options strong{font-weight:400}
.score-picker-options button[aria-selected=true] strong{font-weight:600}
.score-picker-search-toggle{flex:none;min-height:48px;text-align:left;padding:12px;font-size:15px}
.score-picker-absent{flex:none;min-height:48px;margin-top:6px;border-top:1px solid #ffffff24;padding:12px;text-align:left;color:#bcbcbc;font-size:14px}
.score-picker-remember{display:flex!important;flex-wrap:wrap;align-items:center;gap:8px;font-size:14px;line-height:1.5;padding:8px 0}
.score-picker-remember input{width:22px!important;height:22px;min-height:22px!important;flex:none;margin:0!important;padding:0!important;accent-color:#dcc08a}
.score-picker-remember small{flex-basis:100%;font-size:12px;color:#bcbcbc;margin-left:30px}
.score-player-picker>.score-field-label{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 12px}
.score-position-order{display:inline;margin:0}
/* Review details support the captain workflow, with one quiet boundary. */
.score-completion-dialog .score-review-details{padding:8px 0;border-bottom:0;border-top:1px solid #ffffff24;margin-top:8px}
.score-review-details>summary{display:flex;flex-wrap:wrap;align-items:center;gap:4px 12px;list-style:none;min-height:48px;padding:10px 0;font-size:14px}
.score-review-details>summary::-webkit-details-marker{display:none}
.score-review-details>summary>span::before{content:"+ ";color:#dcc08a}
.score-review-details[open]>summary>span::before{content:"− "}
.score-review-details>summary small{font-size:12px;line-height:1.5;color:#bcbcbc;overflow-wrap:anywhere}
.score-modal-v3 .score-review-details-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:8px 0}
.score-modal-v3 .score-review-details-grid label{display:flex!important;flex-direction:column;justify-content:flex-end;gap:5px!important;margin:0!important;font-size:12px!important;min-width:0}
.score-modal-v3 .score-review-details-grid input{height:44px;min-height:44px!important;max-height:44px;padding:8px 10px!important;border-radius:6px!important;line-height:1.25!important;min-inline-size:0;max-inline-size:100%;appearance:none;-webkit-appearance:none;contain:inline-size}
.score-review-details-grid input::-webkit-date-and-time-value{text-align:left;min-width:0}
.score-review-details-grid input::-webkit-datetime-edit{min-width:0;padding:0}
.score-modal-v3 .score-review-details-grid label:nth-child(-n+2),.score-modal-v3 .score-review-details-grid label:nth-child(n+5){grid-column:1/-1}
.score-details-save{min-height:44px;padding:8px 12px;border:1px solid #8b8478;border-radius:6px;font-size:13px;margin-top:4px}
.score-completion-dialog .score-dialog-body>details:has(>.score-review-disclosure){border-bottom:0;padding-bottom:4px}

/* V5.4: the active scoreboard and its fixed header share one viewport origin.
   A rotated document or retained root scroll cannot slide content underneath
   the header. Existing height budget, numerals and interior grid are retained. */
.score-app.score-v3[data-score-court=active]{position:fixed;inset:0 0 auto;width:100%;margin:0;overflow-y:auto;overscroll-behavior:none;overflow-anchor:none}

/* V5.4 header chrome is a viewport sibling of route scrolling. Keep the same
   reserved extent, branding geometry and modal ownership; no forced GPU layer. */
.score-header-plane{--accent:#dcc08a;--muted:#b7bdb7;position:fixed;inset:0 0 auto;height:var(--score-header-extent);z-index:8;pointer-events:none;font-size:15px}
.score-header-plane::before{display:none}
.score-header-plane>.score-header{pointer-events:auto}
.score-header-plane .score-header-tools{min-width:44px}
.score-entry-frame>.score-entry-header{position:fixed}

/* Carry forward the exact courtside header media rules onto its sibling. */
@media (max-width:650px) and (orientation:portrait) {
  .score-header-plane.score-header-court .score-header {
    height:auto; min-height:104px; padding-block:6px; row-gap:4px;
  }
}
@media (max-width:650px) and (orientation:portrait) {
  .score-header-plane.score-header-court .score-header nav button,.score-header-plane.score-header-court .score-header-tools button {
    min-height:44px;
  }
}
@media (max-width:650px) and (orientation:portrait) {
  .score-header-plane.score-header-court .score-header-tools button { width:44px; }
}
@media (max-width:650px) and (orientation:portrait) {
  .score-header-plane.score-header-court .score-word>span { display:none; }
}
@media (max-width:650px) and (orientation:portrait) {
  .score-header-plane.score-header-court>.score-header { flex-shrink:0; }
}
@media (max-width:650px) and (orientation:portrait) {
  .score-header-plane.score-header-court .score-header { padding-block:4px; row-gap:2px; }
}
@media (orientation:landscape) and (max-height:550px) and (max-width:1100px) {
  .score-header-plane.score-header-court>.score-header {
    height:auto; min-height:44px; padding:0 max(12px,env(safe-area-inset-right)) 0 max(12px,env(safe-area-inset-left));
    flex-shrink:0; gap:8px;
  }
}
@media (orientation:landscape) and (max-height:550px) and (max-width:1100px) {
  .score-header-plane.score-header-court .score-identity { gap:8px; }
}
@media (orientation:landscape) and (max-height:550px) and (max-width:1100px) {
  .score-header-plane.score-header-court .score-identity img { width:80px; height:28px; }
}
@media (orientation:landscape) and (max-height:550px) and (max-width:1100px) {
  .score-header-plane.score-header-court .score-word { font-size:14px; padding-left:8px; }
}
@media (orientation:landscape) and (max-height:550px) and (max-width:1100px) {
  .score-header-plane.score-header-court .score-word>span { display:none; }
}
@media (orientation:landscape) and (max-height:550px) and (max-width:1100px) {
  .score-header-plane.score-header-court .score-header nav { padding:0; }
}
@media (orientation:landscape) and (max-height:550px) and (max-width:1100px) {
  .score-header-plane.score-header-court .score-header nav button { min-height:44px; padding:0 10px; font-size:11px; }
}
@media (orientation:landscape) and (max-height:550px) and (max-width:1100px) {
  .score-header-plane.score-header-court .score-header-tools { gap:4px; }
}
@media (orientation:landscape) and (max-height:550px) and (max-width:1100px) {
  .score-header-plane.score-header-court .score-header-tools button { min-height:44px; width:44px; }
}

/* V5.4.1: the score surface uses ordinary document hit-test coordinates instead
   of a fixed overflow scroller. Keep all existing sizes, colours and safe areas. */
.score-app.score-v3[data-score-court=active]{position:absolute}
/* Settings only: offset compensation was written for absolute chrome. Native
   select panning must not apply it to a separately fixed header a second time.
   The manual-result editor and its viewport/focus handling are unchanged. */
.score-entry-frame:has(.score-settings)>.score-entry-header{position:absolute}

/* V5.4.2: scoring has no scroll origin independent of its viewport header.
   The page lock is held for the scoring lifetime, including nested sheets. */
.score-app.score-v3[data-score-court=active]{position:fixed;overflow:hidden;overflow:clip}
/* Settings/New Match use one fixed frame with flow header and one scrolling
   body. They do not consume the manual editor's visual-viewport top/extent
   compensation. The accepted manual editor retains its original rules. */
.score-entry-frame.score-shade:has(.score-settings){--entry-safe-top:env(safe-area-inset-top,0px)!important;display:flex;flex-direction:column;min-height:0;height:100dvh;max-height:100dvh}
.score-entry-frame.score-shade:has(.score-settings input:focus){height:min(100dvh,var(--entry-height,100dvh))}
.score-entry-frame:has(.score-settings)>.score-entry-header{position:static;flex:none;top:auto}
.score-entry-frame:has(.score-settings)>.score-entry-window{position:relative;flex:1;min-height:0;height:auto}
.score-entry-frame:has(.score-settings) .score-entry-body{top:0;scroll-padding-top:12px}

/* V5.4.4 presentation only. Viewport, numeral and point rules are unchanged. */
.score-app .score-courtside .score-context .score-new-match{display:inline-flex;align-items:center;justify-content:center;gap:5px;min-width:44px;min-height:44px;border:0;background:transparent}
.score-entry-frame .score-entry-close{min-width:64px;min-height:44px;border:0;background:transparent;border-radius:0}
.score-modal-v3 .score-dialog-head>button[aria-label="Close dialog"]{min-width:44px;min-height:44px;border:0;background:transparent}
.score-new-match:focus-visible,.score-entry-close:focus-visible{outline:3px solid #efd592;outline-offset:2px}
.score-server-choice strong{overflow-wrap:normal;word-break:normal;hyphens:none}
@media(orientation:portrait) and (max-width:650px){
 .score-server-options-long{grid-template-columns:minmax(0,1fr)}
 .score-server-options-long .score-server-choice{min-height:100px}
 .score-v3 .score-courtside .score-player-pair{height:132px;min-height:132px;grid-template-rows:18px 82px 24px}
 .score-v3 .score-courtside .score-player-pair h1{font-size:18px;line-height:1.1}
}
.score-v3 .score-courtside .score-player-pair h1{display:block;-webkit-line-clamp:unset;overflow:visible;max-height:none;overflow-wrap:normal;word-break:normal;hyphens:none}
.score-pair-name{display:block}
@media(orientation:landscape) and (max-height:550px) and (max-width:1100px){
 .score-v3 .score-courtside .score-player-pair h1{font-size:16px;line-height:1.1}
}
.score-league-advanced,.score-developer-details{margin-top:16px}
