:root,:root[data-theme="1"]{--bg: #07140d;--felt: #12351f;--felt-deep: #0b2416;--ink: #f4efe3;--muted: #b7c4b4;--gold: #d4af37;--gold-soft: rgba(212, 175, 55, .18);--lime: #8dff4a;--line: rgba(244, 239, 227, .12);--danger: #c44536;--shadow: 0 12px 40px rgba(0, 0, 0, .35);--page-glow: #1a4a2c;--scoreboard-bg: #050805;--black-ball-ring: rgba(255, 255, 255, .55)}:root[data-theme="2"]{--bg: #101820;--felt: #1c3a4a;--felt-deep: #122833;--ink: #e8eef2;--muted: #9db0bc;--gold: #c4a574;--gold-soft: rgba(196, 165, 116, .16);--lime: #7ec8e3;--line: rgba(232, 238, 242, .12);--danger: #b85c50;--shadow: 0 12px 40px rgba(0, 0, 0, .35);--page-glow: #1a3344;--scoreboard-bg: #0a1218;--black-ball-ring: rgba(255, 255, 255, .6)}:root[data-theme="3"]{--bg: #1a1510;--felt: #3a2e22;--felt-deep: #241c14;--ink: #f3ebe1;--muted: #c2b4a4;--gold: #d2b48c;--gold-soft: rgba(210, 180, 140, .16);--lime: #e0c090;--line: rgba(243, 235, 225, .12);--danger: #a85a4a;--shadow: 0 12px 40px rgba(0, 0, 0, .35);--page-glow: #3a2a1c;--scoreboard-bg: #120e0a;--black-ball-ring: rgba(255, 255, 255, .55)}*{box-sizing:border-box}html,body,#root{min-height:100%}body{margin:0;color:var(--ink);background:radial-gradient(circle at top,var(--page-glow) 0%,var(--bg) 58%);font-family:Segoe UI,system-ui,sans-serif;font-variant-numeric:tabular-nums}.boot,.boot-error{max-width:28rem;margin:20vh auto 0;padding:0 24px;text-align:center;line-height:1.5}.boot-error{color:#ffb4a8}a{color:inherit}button,input{font:inherit}button{touch-action:manipulation;-webkit-tap-highlight-color:transparent}.screen{position:relative;min-height:100dvh;padding:56px 20px calc(24px + env(safe-area-inset-bottom))}.screen-select,.screen-edit,.screen-login{max-width:520px;margin:0 auto}.eyebrow,.scoreboard-org{margin:0;letter-spacing:.22em;font-size:.78rem;color:var(--gold)}h1,h2,h3{margin:8px 0 0;font-weight:700}.screen-select h1{margin-bottom:28px;font-size:clamp(2rem,8vw,3.4rem)}.table-grid,.mode-grid,.ball-grid,.foul-grid,.action-row,.edit-score{display:grid;gap:12px}.table-grid,.mode-grid{gap:14px}.btn,.ball,.field{width:100%;border:1px solid var(--line);border-radius:16px}.btn,.ball{min-height:72px;padding:16px;color:var(--ink);background:var(--felt);box-shadow:var(--shadow);cursor:pointer}.btn:disabled,.ball:disabled{opacity:.45;cursor:default}.btn-table,.btn-primary,.btn-switch{display:flex;flex-direction:column;align-items:center;justify-content:center;text-decoration:none;gap:4px}.btn-table span,.btn-primary,.btn-switch{font-size:1.35rem;font-weight:800;letter-spacing:.06em}.btn-table small,.hint{color:var(--muted)}.btn-primary,.btn-switch{background:#1f6b3a;border-color:#d4af3759}.btn-ghost,.btn-undo,.btn-danger,.btn-foul{font-weight:800;letter-spacing:.04em}.btn-danger{background:#5a1d18;border-color:#c4453680}.btn-foul{background:#6b4a12}.back-link,.edit-top a,.scoreboard-foot a,.text-btn{color:var(--gold);text-decoration:none;background:none;border:0;padding:8px 0;cursor:pointer}.back-link{display:inline-block;margin-top:24px}.panel,.modal{display:grid;gap:14px;padding:22px 18px;background:var(--felt-deep);border:1px solid var(--line);border-radius:20px;box-shadow:var(--shadow)}.panel label{display:grid;gap:8px;font-size:.85rem;letter-spacing:.08em}.match-mode{display:grid;gap:8px}.match-mode-label{margin:0;font-size:.85rem;letter-spacing:.08em}.match-mode-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.match-mode-option{display:flex;align-items:flex-end;justify-content:center;min-height:96px;padding:10px 4px 8px;border-radius:12px;border:1px solid var(--line);background:#06150c;color:inherit;cursor:pointer}.match-mode-option.is-selected{border-color:var(--lime);box-shadow:inset 0 0 0 1px var(--lime);background:color-mix(in srgb,var(--lime) 18%,#06150c)}.match-mode-rack{display:flex;flex-direction:column;align-items:center;gap:2px}.match-mode-rack-row{display:flex;justify-content:center;gap:2px}.match-mode-ball{width:10px;height:10px;box-shadow:0 1px 2px #00000073}.field{min-height:56px;padding:0 16px;color:var(--ink);background:#06150c}.error{margin:0;color:#ffb4a8}.edit-top,.action-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.edit-top{margin-bottom:8px;position:relative;justify-content:center}.edit-top a{position:absolute;left:0;top:50%;transform:translateY(-50%)}.edit-top h1{margin:0;font-size:1.15rem;letter-spacing:.16em;text-align:center}.undo-corner{color:var(--lime);font-weight:800}.undo-corner:disabled{opacity:.35}.field select,select.field{appearance:none}.action-row .btn{flex:1}.edit-score{grid-template-columns:1fr 1fr}.player-card,.player-col{text-align:center;padding:16px 10px;border:1px solid var(--line);border-radius:18px;background:var(--felt-deep)}.player-card.active,.player-col.active{border-color:var(--gold);box-shadow:0 0 0 3px var(--gold-soft)}.player-card h2,.player-col h2{margin:0;font-size:clamp(1rem,3.4vw,1.6rem);overflow-wrap:anywhere}.frames{margin:6px 0 0;color:var(--gold);font-size:clamp(2.6rem,10vw,5rem);line-height:1;font-weight:800}.points{margin:4px 0 0;font-size:clamp(2rem,8vw,4rem);line-height:1;font-weight:700}.points-label,.active-tag,.frame-line,.live{letter-spacing:.12em;font-size:.75rem}.frame-line{text-align:center;color:var(--muted)}.active-tag{min-height:1.2em;color:var(--gold)}.active-tag.hidden,.active-tag.muted{visibility:hidden}.ball-grid{grid-template-columns:1fr 1fr;margin:16px 0}.ball{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;background:var(--ball);background:color-mix(in srgb,var(--ball) 78%,#041008);border-color:color-mix(in srgb,var(--ball) 55%,white)}.ball:last-child{grid-column:1 / -1}.ball strong{font-size:1.6rem}.foul-grid{grid-template-columns:1fr 1fr}.foul-points-btn{display:inline-flex;align-items:center;justify-content:center;gap:10px}.foul-points-ball{width:22px;height:22px}.modal-backdrop{position:fixed;inset:0;display:grid;place-items:center;padding:16px;background:#0000009e;z-index:20}.modal{width:min(460px,100%);max-height:88dvh;overflow:auto}.modal.wide{width:min(560px,100%)}.history{display:grid;gap:18px}.history ol{margin:8px 0 0;padding:0;list-style:none}.history li{display:grid;grid-template-columns:64px 1fr auto;gap:8px;padding:8px 0;border-bottom:1px solid var(--line)}.live.on{color:#7dff9a}.live.off{color:#fc6}.scoreboard{min-height:100dvh;display:grid;grid-template-rows:auto 1fr auto;padding:16px 20px 12px}.scoreboard-top,.scoreboard-foot,.scoreboard-empty{text-align:center}.scoreboard-top h1{font-size:clamp(2.4rem,7vw,4.5rem)}.scoreboard-frame{margin:8px 0 0;color:var(--muted);letter-spacing:.18em}.scoreboard-grid{display:grid;grid-template-columns:1fr 8px 1fr;align-items:center;gap:16px}.scoreboard-divider{height:62%;background:var(--gold);opacity:.35}.scoreboard .frames{font-size:clamp(4.5rem,16vw,10rem)}.scoreboard .points{font-size:clamp(3rem,10vw,6.5rem)}.scoreboard-foot{display:flex;justify-content:space-between;align-items:center;font-size:.85rem}.screen.scoring{--score-gap: clamp(3px, .9vh, 8px);--score-pad-top: clamp(4px, 1vh, 10px);--score-pad-bottom: clamp(4px, 1vh, 12px);--felt-gap: clamp(3px, 1vh, 10px);--felt-pad-y: clamp(4px, 1.2vh, 14px);--felt-pad-x: clamp(6px, 1.5vw, 10px);--rack-gap-y: clamp(3px, 1.1vh, 14px);--rack-gap-x: clamp(4px, 1vw, 6px);--rack-margin-bottom: clamp(4px, 1vh, 14px);--ball-size: min(16vw, 6.8vh, 58px);--break-dot-size: clamp(12px, 2.2vh, 18px);--btn-min-h: clamp(32px, 5.2vh, 44px);--ctrl-min-h: clamp(34px, 5.6vh, 44px);--no-pot-margin: clamp(4px, 1vh, 12px);--mh-points-size: clamp(1.55rem, 5.2vh, 3.6rem);--mh-name-size: clamp(.78rem, 2.4vh, 1.35rem);--mh-cue-h: clamp(14px, 2.4vh, 22px);--mh-points-margin: clamp(2px, .6vh, 8px);--table-info-row-h: clamp(18px, 3.2vh, 28px);--table-info-pad: clamp(3px, .7vh, 6px);--header-font: clamp(.85rem, 2.2vh, 1.15rem);display:flex;flex-direction:column;gap:var(--score-gap);max-width:480px;width:100%;height:100dvh;height:100svh;max-height:100dvh;max-height:100svh;min-height:0;padding-top:var(--score-pad-top);padding-bottom:calc(var(--score-pad-bottom) + env(safe-area-inset-bottom,0px));overflow:hidden;box-sizing:border-box}.screen.scoring .edit-top{flex:0 0 auto;margin-bottom:0}.screen.scoring .edit-top h1{font-size:var(--header-font)}.screen.scoring .match-header{flex:0 0 auto}.screen.scoring .mh-cue{min-height:var(--mh-cue-h);margin-bottom:clamp(0px,.4vh,4px)}.screen.scoring .mh-player-name,.screen.scoring .mh-player h2{font-size:var(--mh-name-size)}.screen.scoring .mh-points{margin-top:var(--mh-points-margin);font-size:var(--mh-points-size)}.screen.scoring .match-center{padding:clamp(2px,.6vh,6px) clamp(6px,1.5vw,10px) clamp(2px,.6vh,8px);min-width:min(92px,28vw)}.screen.scoring .match-frames{font-size:clamp(1.1rem,3.6vh,1.8rem);gap:clamp(6px,1.5vw,14px);margin:0}.screen.scoring .last-action{flex:0 0 auto;margin:0}.screen.scoring .last-action-compact-row{gap:clamp(4px,1vw,8px)}.screen.scoring .felt{flex:1 1 0;min-height:0;display:flex;flex-direction:column;justify-content:flex-start;gap:var(--felt-gap);padding:var(--felt-pad-y) var(--felt-pad-x);overflow:hidden}.screen.scoring .referee-felt-break{flex:0 1 auto;min-height:0;gap:clamp(2px,.6vh,6px);margin:0}.screen.scoring .referee-felt-break-balls{gap:clamp(3px,.8vh,6px);min-height:0}.screen.scoring .referee-felt-break-dot{width:var(--break-dot-size);height:var(--break-dot-size)}.screen.scoring .referee-felt-break-value{font-size:clamp(.7rem,1.8vh,.85rem)}.screen.scoring .btn-no-pot,.screen.scoring .post-foul-actions{flex:0 0 auto;margin:0 0 var(--no-pot-margin);min-height:var(--btn-min-h)}.screen.scoring .btn-no-pot{font-size:clamp(.72rem,2vh,.95rem);padding-block:clamp(4px,.8vh,10px)}.screen.scoring .post-foul-actions{gap:clamp(4px,1vw,8px)}.screen.scoring .post-foul-actions .btn-post-foul{min-height:var(--btn-min-h);font-size:clamp(.62rem,1.6vh,.78rem)}.screen.scoring .rack{flex:1 1 auto;min-height:0;gap:var(--rack-gap-y) var(--rack-gap-x);margin-bottom:var(--rack-margin-bottom);align-content:center}.screen.scoring .rack-stage{position:relative;flex:1 1 auto;min-height:0;display:flex;flex-direction:column}.screen.scoring .frame-opener{position:absolute;left:0;right:0;top:50%;z-index:3;transform:translateY(-50%);display:flex;flex-direction:column;align-items:stretch;gap:clamp(2px,.6vh,6px);width:auto;min-width:0;margin:0;padding:clamp(6px,1vh,10px);border-radius:12px;background:color-mix(in srgb,#04140c 90%,transparent);box-shadow:0 10px 28px #00000073}.screen.scoring .rack-overlay-badge{position:absolute;left:0;right:0;top:0;z-index:3;margin:0;pointer-events:none}.screen.scoring .frame-opener-prompt{margin:0;text-align:center;font-size:clamp(.68rem,1.7vh,.85rem);font-weight:700;letter-spacing:.04em;color:var(--text, #f4f4f4)}.screen.scoring .frame-opener-badge{margin:0 0 clamp(2px,.4vh,4px);text-align:center;font-size:clamp(.62rem,1.5vh,.78rem);font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--muted, #a8b0bc)}.screen.scoring .frame-opener-buttons{display:flex;flex-direction:row;flex-wrap:nowrap;align-items:stretch;gap:clamp(4px,1vw,8px);width:100%;min-width:0}.screen.scoring .frame-opener-player{flex:1 1 0;min-width:0;min-height:var(--btn-min-h);font-size:clamp(.62rem,1.6vh,.85rem);padding-inline:clamp(4px,1vw,10px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.screen.scoring .frame-opener-previous{margin:0;text-align:center;font-size:clamp(.58rem,1.4vh,.75rem);color:var(--muted, #a8b0bc)}.screen.scoring .snooker-ball{width:var(--ball-size);height:var(--ball-size)}.screen.scoring .btn-foul{flex:0 0 auto;min-height:var(--btn-min-h);font-size:clamp(.75rem,2vh,.95rem);padding-block:clamp(4px,.8vh,10px)}.screen.scoring .btn-free-ball{flex:0 0 auto;min-height:clamp(28px,4.5vh,40px);font-size:clamp(.68rem,1.7vh,.85rem);padding-block:clamp(2px,.5vh,6px)}.screen.scoring .referee-table-info{flex:0 0 auto;gap:clamp(1px,.4vh,4px);padding:var(--table-info-pad) clamp(6px,1.5vw,10px)}.screen.scoring .referee-table-info-row{min-height:var(--table-info-row-h);gap:clamp(4px,1vw,8px)}.screen.scoring .referee-table-info-label{font-size:clamp(.62rem,1.5vh,.78rem)}.screen.scoring .referee-table-info-value{font-size:clamp(.78rem,2vh,.98rem)}.screen.scoring .btn-ctrl{min-height:var(--ctrl-min-h);font-size:clamp(.65rem,1.7vh,.82rem);padding-block:clamp(4px,.7vh,10px)}.screen.scoring .control-grid{flex:0 0 auto;gap:clamp(4px,.8vh,8px)}@media(max-height:820px){.screen.scoring{--ball-size: min(15vw, 5.8vh, 52px);--btn-min-h: clamp(30px, 4.8vh, 40px);--ctrl-min-h: clamp(32px, 5vh, 40px);--mh-points-size: clamp(1.45rem, 4.6vh, 2.8rem)}}@media(max-height:700px){.screen.scoring{--score-gap: clamp(2px, .6vh, 5px);--felt-gap: clamp(2px, .7vh, 6px);--felt-pad-y: clamp(3px, .8vh, 8px);--rack-gap-y: clamp(2px, .7vh, 8px);--rack-margin-bottom: clamp(2px, .6vh, 8px);--ball-size: min(14vw, 5vh, 44px);--break-dot-size: clamp(10px, 1.8vh, 14px);--btn-min-h: clamp(28px, 4.4vh, 36px);--ctrl-min-h: clamp(30px, 4.8vh, 36px);--no-pot-margin: clamp(2px, .6vh, 6px);--mh-points-size: clamp(1.3rem, 4.2vh, 2.2rem);--mh-name-size: clamp(.72rem, 2vh, 1rem);--mh-cue-h: clamp(12px, 2vh, 18px);--table-info-row-h: clamp(16px, 2.8vh, 22px)}.screen.scoring .match-center-label,.screen.scoring .match-best-of{font-size:.58rem}}@media(max-height:560px){.screen.scoring{--score-gap: 2px;--felt-gap: 2px;--felt-pad-y: 2px;--rack-gap-y: 2px;--rack-margin-bottom: 2px;--ball-size: min(12vw, 4.2vh, 36px);--break-dot-size: 10px;--btn-min-h: 28px;--ctrl-min-h: 28px;--no-pot-margin: 2px;--mh-points-size: clamp(1.15rem, 3.8vh, 1.8rem);--mh-name-size: .7rem;--mh-cue-h: 12px;--mh-points-margin: 2px;--table-info-row-h: 16px;--table-info-pad: 2px;--header-font: .8rem}.screen.scoring .btn-free-ball{min-height:26px;font-size:.62rem}}.referee-table-info{flex:0 0 auto;display:grid;gap:4px;padding:6px 10px;border:1px solid color-mix(in srgb,var(--lime) 28%,transparent);border-radius:10px;background:color-mix(in srgb,var(--felt-deep) 88%,black)}.referee-table-info-row{display:grid;grid-template-columns:1fr auto;align-items:center;gap:8px;min-height:28px}.referee-table-info-label{font-size:.78rem;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}.referee-table-info-value{font-size:.98rem;font-weight:700;font-variant-numeric:tabular-nums;min-width:2.2ch;text-align:right}.referee-table-info-total{font-size:.85em;font-weight:600;color:var(--muted)}.foul-modal-body{display:grid;gap:14px}.foul-removed-reds{display:grid;justify-items:center;gap:8px;padding:10px 8px;border-radius:12px;background:color-mix(in srgb,#c41e3a 14%,var(--felt-deep));border:1px solid color-mix(in srgb,#c41e3a 40%,transparent)}.foul-removed-reds-ball{width:28px;height:28px}.foul-removed-reds-label{margin:0;text-align:center;font-size:.85rem;font-weight:700}.foul-removed-reds-controls{display:inline-flex;align-items:center;gap:12px}.foul-removed-reds-value{min-width:2ch;text-align:center;font-size:1.35rem;font-weight:800;font-variant-numeric:tabular-nums}.foul-step{min-width:42px;min-height:42px!important;padding:0!important;font-size:1.25rem!important}.foul-points-label{margin:0;font-size:.8rem;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}.btn-free-ball{min-height:40px;font-size:.85rem;letter-spacing:.04em;border:1px solid color-mix(in srgb,var(--lime) 45%,transparent);background:color-mix(in srgb,var(--felt-deep) 80%,black)}.btn-free-ball.is-active{background:color-mix(in srgb,var(--lime) 28%,var(--felt-deep));color:#fff;border-color:var(--lime)}.rack.is-free-ball-active{outline:1px solid color-mix(in srgb,var(--lime) 55%,transparent);outline-offset:4px;border-radius:12px}.snooker-ball.is-unavailable{opacity:.42;filter:grayscale(.35);position:relative}.snooker-ball.is-unavailable:after{content:"";position:absolute;left:12%;right:12%;top:50%;height:2px;background:color-mix(in srgb,#fff 75%,transparent);transform:rotate(-28deg);pointer-events:none}.snooker-ball.is-not-on{opacity:.38;filter:grayscale(.2)}.snooker-ball.is-on{box-shadow:0 0 0 2px color-mix(in srgb,var(--lime) 55%,transparent)}.warning.scoring-warning{margin:0;padding:8px 10px;border-radius:8px;background:color-mix(in srgb,#e6b800 28%,var(--felt-deep));border:1px solid color-mix(in srgb,#e6b800 70%,transparent);color:#ffe9a3;font-size:.82rem;font-weight:600;line-height:1.25;text-align:center}.mh-player-name{margin:0;padding:0;border:0;background:transparent;color:inherit;font:inherit;font-size:clamp(.95rem,3.6vw,1.35rem);font-weight:700;line-height:1.15;overflow-wrap:anywhere}button.mh-player-name{cursor:pointer}.mh-player.is-selectable .mh-player-name:hover,.mh-player.is-selectable .mh-player-name:focus-visible{color:var(--lime);outline:none}.control-grid-referee{grid-template-columns:1fr 1fr}.last-action-compact-row{gap:8px}.last-action-compact{display:inline-flex;align-items:center;justify-content:center;gap:8px}.last-action-clock{color:var(--muted);flex:0 0 auto}.settings-options{display:grid;gap:10px;margin-top:12px}.ctrl-btn.ctrl-icon{min-width:36px;width:36px;height:36px;padding:0}.ctrl-back-label{display:none}.match-header{display:grid;grid-template-columns:1fr auto 1fr;align-items:start;gap:8px}.mh-player{text-align:center;min-width:0}.mh-cue{display:flex;align-items:center;justify-content:center;min-height:22px;margin-bottom:4px}.mh-player h2,.mh-player-name{margin:0;font-size:clamp(.95rem,3.6vw,1.35rem);line-height:1.15;overflow-wrap:anywhere}.mh-points{margin:8px 0 0;color:var(--lime);font-size:clamp(2.4rem,11vw,3.6rem);line-height:1;font-weight:800}.match-center{display:grid;justify-items:center;padding:6px 10px 8px;background:#06110a;border:1px solid var(--line);border-radius:12px;min-width:92px}.match-center-label,.match-best-of{margin:0;letter-spacing:.08em;font-size:.68rem;color:var(--muted);white-space:nowrap}.match-frames{display:flex;align-items:center;justify-content:center;gap:14px;margin:2px 0;color:var(--lime);font-size:1.8rem;font-weight:800;line-height:1}.match-frames-with-best-of{gap:8px}.match-frames-with-best-of .match-best-of-inline{color:var(--muted);font-size:.95rem;font-weight:700;letter-spacing:.02em}.red-ball{width:16px;height:16px;border-radius:50%;background:radial-gradient(circle at 32% 28%,#ffb3b3,#c41e3a 52%,#6d1018);box-shadow:0 1px 3px #0000008c}.red-ball-live{animation:ball-breathe 2.8s ease-in-out infinite}@keyframes ball-breathe{0%,to{transform:scale(1);box-shadow:0 1px 3px #0000008c,0 0 6px #c41e3a47}50%{transform:scale(1.08);box-shadow:0 1px 3px #0000008c,0 0 12px #c41e3a80}}@media(prefers-reduced-motion:reduce){.red-ball-live{animation:none}}.felt{padding:14px 10px 16px;background:radial-gradient(circle at top,#1c5c32,#0d2a18 70%);border-radius:20px}.referee-felt-break{display:grid;gap:6px;margin:0 0 10px;min-width:0}.referee-felt-break-balls{display:flex;flex-wrap:wrap;align-items:center;align-content:flex-start;gap:6px;width:100%;max-width:100%;min-width:0;min-height:22px}.referee-felt-break-dot{width:18px;height:18px;flex:0 0 auto}.referee-felt-break-value{margin:0;font-size:.85rem;font-weight:800;letter-spacing:.06em;color:color-mix(in srgb,#f4f7f2 88%,var(--lime))}.btn-no-pot{display:block;width:100%;min-height:44px;margin:0 0 12px;border:1px solid color-mix(in srgb,var(--lime) 45%,transparent);border-radius:12px;background:color-mix(in srgb,#0a1f12 70%,#14532d);color:#f4f7f2;font-size:.95rem;font-weight:800;letter-spacing:.08em}.btn-no-pot:disabled{opacity:.45}.post-foul-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:0 0 12px}.post-foul-actions .btn-post-foul{width:100%;margin:0;font-size:.78rem;letter-spacing:.04em;padding-inline:6px}.rack{display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,auto);justify-items:center;align-items:center;gap:14px 6px;margin-bottom:14px}.rack-red{grid-row:1;grid-column:2}.rack-yellow{grid-row:2;grid-column:1}.rack-green{grid-row:2;grid-column:2}.rack-brown{grid-row:2;grid-column:3}.rack-blue{grid-row:3;grid-column:1}.rack-pink{grid-row:3;grid-column:2}.rack-black{grid-row:3;grid-column:3}.shootout-rack-controls{display:contents}.rack-timer-frame{grid-row:1;grid-column:1}.rack-timer-shot{grid-row:1;grid-column:3}.rack-timer{width:var(--ball-size, min(22vw, 76px));height:var(--ball-size, min(22vw, 76px));min-width:0;min-height:0;box-sizing:border-box;padding:0;border-radius:50%;display:grid;place-items:center;cursor:pointer;box-shadow:0 6px 12px #0006}.rack-timer:disabled{cursor:default}.rack-timer-icon{width:68%;height:68%;display:block}.rack-timer-frame{color:#e7f1ff;background:radial-gradient(circle at 32% 28%,rgba(255,255,255,.38),transparent 36%),#24384c;border:2px solid #9ec0e2}.rack-timer-shot{color:#fff1dc;background:radial-gradient(circle at 32% 28%,rgba(255,255,255,.34),transparent 36%),#4a2c16;border:2px solid #e2a15a}.rack-timer.is-running{box-shadow:0 6px 12px #0006,0 0 0 3px color-mix(in srgb,currentColor 55%,transparent)}.rack-timer.is-finished{opacity:.42;filter:saturate(.45)}.snooker-ball{width:min(22vw,76px);height:min(22vw,76px);min-height:0;padding:0;border:0;border-radius:50%;background:radial-gradient(circle at 30% 26%,rgba(255,255,255,.72),transparent 34%),radial-gradient(circle at 70% 78%,rgba(0,0,0,.4),transparent 42%),var(--ball);box-shadow:0 8px 16px #00000073,inset 0 -8px 10px #00000047}.rack-black{box-shadow:0 8px 16px #00000073,inset 0 -8px 10px #00000047,0 0 0 1.5px var(--black-ball-ring)}.control-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.btn-ctrl{min-height:58px;font-size:.82rem;font-weight:800;letter-spacing:.04em}.btn-frame{border-color:#c9a227;color:#f0d36a}.scoreboard{position:relative;min-height:100dvh;display:grid;grid-template-rows:auto 1fr auto;align-items:center;padding:56px 28px 14px;background:var(--scoreboard-bg)}.fed-logo{position:absolute;top:14px;left:14px;width:72px;height:72px;object-fit:contain}.scoreboard-top{text-align:center}.scoreboard-top h1{display:inline-flex;align-items:center;gap:16px;margin:0;font-size:clamp(1.8rem,5vw,3rem);letter-spacing:.2em}.scoreboard-top h1:before,.scoreboard-top h1:after{content:"";width:min(18vw,120px);height:2px;background:var(--lime)}.scoreboard .match-header{align-items:center;gap:20px;padding:0 8px}.scoreboard .mh-cue{min-height:28px}.scoreboard .red-ball{width:22px;height:22px}.scoreboard .mh-player h2{font-size:clamp(1.4rem,4.2vw,2.6rem)}.scoreboard .mh-points{margin-top:18px;padding-top:16px;border-top:2px solid var(--lime);color:#fff;font-size:clamp(4.2rem,14vw,8.5rem)}.break-row{display:flex;flex-wrap:wrap;justify-content:flex-start;align-items:center;gap:6px;width:100%;min-height:var(--break-ball-size, 18px);margin:10px 0 0;padding:0;list-style:none}.break-row-empty{min-height:var(--break-ball-size, 18px)}.break-ball{width:var(--break-ball-size, 18px);height:var(--break-ball-size, 18px);border-radius:50%;background:radial-gradient(circle at 30% 26%,rgba(255,255,255,.72),transparent 34%),radial-gradient(circle at 70% 78%,rgba(0,0,0,.4),transparent 42%),var(--ball);box-shadow:0 2px 6px #0006}.break-ball-black{box-shadow:0 2px 6px #0006,0 0 0 1px var(--black-ball-ring)}.break-foul{color:#f0d36a;font-size:.68rem;font-weight:800;letter-spacing:.08em}.scoreboard .break-row{min-height:var(--break-ball-size, 18px);margin-top:12px;gap:6px}.scoreboard .break-ball{width:var(--break-ball-size, 18px);height:var(--break-ball-size, 18px)}.scoreboard .match-center{min-width:140px;padding:10px 18px 12px;background:transparent;border:0}.scoreboard .match-center-label,.scoreboard .match-best-of{font-size:.9rem}.scoreboard .match-frames{gap:28px;font-size:clamp(3rem,9vw,5.6rem)}.scoreboard.scoreboard-view{box-sizing:border-box;position:relative;display:grid;grid-template-rows:auto minmax(0,1fr) auto;align-items:stretch;height:100dvh;height:100svh;min-height:0;max-height:100dvh;max-height:100svh;overflow:hidden;padding:clamp(44px,7vh,56px) clamp(12px,2.5vw,28px) clamp(8px,1.5vh,14px);background:var(--scoreboard-bg);--view-player-scale: 1.5;--view-points-scale: 1.5;--view-frames-scale: 1.5;--view-break-scale: 1.5;--view-balls-scale: 1.5;--view-logo-scale: 1.5;--view-title-scale: .7;--view-frame-timer-scale: 1.5;--view-shot-timer-scale: 1.5;--view-break-size: calc(clamp(1.5rem, min(8vmin, 7vh), 5rem) * var(--view-break-scale, 1));--view-cue-size: calc(clamp(18px, min(3.6vmin, 3.8vh), 38px) * var(--view-balls-scale, 1))}.scoreboard-view>.scoreboard-top{grid-row:1;align-self:start;text-align:center;min-width:0}.scoreboard-view>.view-middle{grid-row:2;position:relative;display:flex;flex-direction:column;justify-content:center;align-items:stretch;gap:clamp(4px,1.2vh,16px);width:100%;min-width:0;min-height:0;overflow:hidden}.scoreboard-view .match-header-view .mh-cue{display:flex;align-items:flex-end;justify-content:center;margin-bottom:clamp(2px,.6vh,6px)}.scoreboard-view .match-header-view .mh-cue-stack{display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:clamp(4px,.8vh,10px);min-width:0}.scoreboard-view .match-header-view .view-break-value-slot{display:flex;align-items:center;justify-content:center;box-sizing:border-box;width:100%;min-height:var(--view-break-size);font-size:var(--view-break-size);line-height:1}.scoreboard-view .match-header-view .mh-cue-break{margin:0;color:var(--gold);font-size:inherit;font-weight:800;line-height:1;font-variant-numeric:tabular-nums;text-align:center}.scoreboard-view .match-header-view .mh-cue-ball-slot{display:flex;align-items:center;justify-content:center;flex:0 0 auto;width:var(--view-cue-size);height:var(--view-cue-size)}.scoreboard-view .match-header-view .red-ball{width:var(--view-cue-size);height:var(--view-cue-size)}.scoreboard-view .view-middle>.view-body{display:flex;flex-direction:column;justify-content:center;align-items:stretch;flex:1 1 auto;width:100%;min-width:0;min-height:0;overflow:hidden}.scoreboard-view .view-middle>.view-body>.layout-scale-target{flex:0 1 auto;width:100%;max-width:100%;max-height:100%;min-width:0;min-height:0}.scoreboard-view>.scoreboard-empty{grid-row:2;display:grid;place-items:center;min-height:0}.scoreboard-view .view-central-block{width:100%;min-width:0;flex:0 0 auto}.scoreboard-view .match-header-view{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);grid-template-rows:auto auto auto;align-items:center;column-gap:clamp(10px,2vw,20px);row-gap:0;width:100%;margin:0;padding:0 clamp(4px,1vw,8px)}.scoreboard-view .match-header-view .mh-name{margin:0;text-align:center;font-size:calc(clamp(1.25rem,min(6.8vmin,5.8vh),4.8rem) * var(--view-player-scale, 1));font-weight:800;line-height:1.12;overflow-wrap:anywhere}.scoreboard-view .match-header-view .mh-points{margin-top:clamp(6px,1.5vh,22px);padding-top:clamp(6px,1.4vh,20px);border-top:2px solid var(--lime);color:#fff;font-size:calc(clamp(2.5rem,min(20vmin,24vh),14rem) * var(--view-points-scale, 1));font-weight:800;line-height:1;text-align:center}.scoreboard-view .match-frames-inline{display:flex;align-items:center;justify-content:center;align-self:center;gap:clamp(10px,1.8vw,18px);margin:clamp(6px,1.5vh,22px) 0 0;padding-top:clamp(6px,1.4vh,20px);color:var(--lime);font-size:calc(clamp(1.5rem,min(11vmin,12vh),7rem) * var(--view-frames-scale, 1));font-weight:800;line-height:1;white-space:nowrap}.scoreboard-view .match-best-of-inline{color:var(--muted);font-size:.58em;font-weight:700;line-height:1}.scoreboard-view .mh-view-mid{min-width:0}.scoreboard-view .view-active-balls{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);column-gap:clamp(10px,2vw,20px);align-items:start;width:100%;min-width:0;margin-top:clamp(6px,1.5vh,18px);padding:0 clamp(4px,1vw,8px);--break-ball-size: calc(clamp(16px, min(3.8vmin, 4vh), 34px) * var(--view-balls-scale, 1));--break-ball-gap: clamp(6px, 1vmin, 10px);--view-active-balls-rows: 2;--view-active-balls-slot-height: calc( (var(--break-ball-size) * var(--view-active-balls-rows)) + (var(--break-ball-gap) * (var(--view-active-balls-rows) - 1)) )}.scoreboard-view .view-active-balls-slot{box-sizing:border-box;display:flex;align-items:flex-start;justify-content:flex-start;width:100%;min-width:0;height:var(--view-active-balls-slot-height);min-height:var(--view-active-balls-slot-height);max-height:var(--view-active-balls-slot-height);overflow:hidden}.scoreboard-view .view-active-balls .break-row{margin-top:0;width:100%;min-height:0;height:100%;align-content:flex-start;gap:var(--break-ball-gap)}.scoreboard-view .view-active-balls .break-ball{width:var(--break-ball-size);height:var(--break-ball-size)}.scoreboard-view .fed-logo{width:calc(clamp(48px,min(10vmin,10vh),100px) * var(--view-logo-scale, 1));height:calc(clamp(48px,min(10vmin,10vh),100px) * var(--view-logo-scale, 1))}.scoreboard-view .view-qr{width:clamp(56px,10vmin,88px);height:clamp(56px,10vmin,88px);bottom:clamp(28px,5vh,42px);right:clamp(10px,2vw,16px)}.scoreboard-view .scoreboard-top h1{font-size:calc(clamp(1.35rem,min(6vmin,5.2vh),4rem) * var(--view-title-scale, 1))}.scoreboard-view>.moonfire{grid-row:3;align-self:end;margin:0;padding-top:clamp(4px,.8vh,8px);text-align:center;font-size:clamp(.72rem,min(1.6vmin,1.5vh),.95rem);letter-spacing:.14em}@media(max-height:720px){.scoreboard.scoreboard-view{padding-top:40px;padding-bottom:8px}.scoreboard-view .view-middle{gap:6px}.scoreboard-view .match-header-view .mh-name{font-size:calc(clamp(1.15rem,min(5.5vmin,5vh),3.2rem) * var(--view-player-scale, 1))}.scoreboard-view .match-header-view .mh-points{font-size:calc(clamp(2.1rem,min(15vmin,18vh),7.5rem) * var(--view-points-scale, 1))}.scoreboard-view .match-frames-inline{font-size:calc(clamp(1.3rem,min(8vmin,9vh),4rem) * var(--view-frames-scale, 1))}.scoreboard-view .view-active-balls{--break-ball-size: calc(clamp(14px, min(3.2vmin, 3.4vh), 24px) * var(--view-balls-scale, 1))}}@media(max-height:560px){.scoreboard.scoreboard-view{padding-top:34px;padding-bottom:6px;--view-break-size: calc(clamp(1.15rem, min(5vmin, 5.5vh), 2.4rem) * var(--view-break-scale, 1));--view-cue-size: calc(clamp(14px, 3vh, 22px) * var(--view-balls-scale, 1))}.scoreboard-view .fed-logo{top:8px;left:8px;width:calc(clamp(32px,7vh,44px) * var(--view-logo-scale, 1));height:calc(clamp(32px,7vh,44px) * var(--view-logo-scale, 1))}.scoreboard-view .view-qr{display:none}.scoreboard-view .match-header-view .mh-name{font-size:calc(clamp(1.05rem,min(4.8vmin,4.5vh),2.4rem) * var(--view-player-scale, 1))}.scoreboard-view .match-header-view .mh-points{margin-top:4px;padding-top:4px;font-size:calc(clamp(1.8rem,min(12vmin,14vh),4.5rem) * var(--view-points-scale, 1))}.scoreboard-view .match-frames-inline{margin-top:4px;padding-top:4px;font-size:calc(clamp(1.15rem,min(6.5vmin,7vh),2.8rem) * var(--view-frames-scale, 1))}.scoreboard-view .view-active-balls{--break-ball-size: calc(clamp(12px, min(2.8vmin, 3vh), 18px) * var(--view-balls-scale, 1))}}@media(max-width:700px)and (orientation:portrait){.scoreboard-view .match-frames-inline{gap:8px}.scoreboard-view .view-qr{display:none}}.scoreboard-empty{text-align:center}.scoreboard-empty p{font-size:clamp(1.6rem,5vw,3rem);color:var(--muted)}.moonfire{margin:0;text-align:center;color:var(--lime);letter-spacing:.14em;font-size:.82rem}.app-version{position:fixed;right:14px;bottom:12px;margin:0;color:var(--muted);font-size:.75rem;letter-spacing:.08em;opacity:.7}.home-footer{display:flex;flex-direction:column;align-items:flex-end;gap:8px;position:fixed;right:14px;bottom:12px}.home-footer .app-version{position:static}.btn-logout{font-size:.85rem;padding:6px 12px;opacity:.85}.login-card{width:100%;margin-top:24px;background:color-mix(in srgb,var(--felt) 55%,var(--bg));border:1px solid var(--line);border-radius:14px;padding:20px;display:flex;flex-direction:column;gap:12px;box-shadow:var(--shadow)}.login-card h2{margin:0 0 4px}.login-card label{display:flex;flex-direction:column;gap:6px;color:var(--muted);font-size:14px}.login-card .field{width:100%}.screen-login h1{margin:8px 0 0;font-size:clamp(2rem,8vw,3.2rem)}.last-action{display:flex;align-items:center;justify-content:center;gap:10px;margin:0;text-align:center;color:var(--muted);letter-spacing:.08em;font-size:.78rem}.last-action-label{opacity:.8}.last-action-visual{display:inline-flex;align-items:center;gap:8px;color:var(--ink);font-weight:800}.last-action-foul{color:#f0d36a;letter-spacing:.12em}.last-action-empty{color:var(--muted)}.snooker-dot{display:inline-block;width:16px;height:16px;border-radius:50%;background:radial-gradient(circle at 30% 26%,rgba(255,255,255,.72),transparent 34%),radial-gradient(circle at 70% 78%,rgba(0,0,0,.4),transparent 42%),var(--ball);box-shadow:0 1px 3px #0006;flex:0 0 auto}.snooker-dot-black{box-shadow:0 1px 3px #0006,0 0 0 1px var(--black-ball-ring)}.last-action-ball{width:18px;height:18px}.stats-break-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.break-detail-btn{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:1px solid var(--line);border-radius:8px;background:transparent;color:var(--muted)}.break-detail-btn:hover,.break-detail-btn:focus-visible{color:var(--lime);border-color:var(--lime)}.break-sequence{display:flex;flex-wrap:wrap;gap:8px;max-height:40vh;overflow:auto;margin:16px 0;padding:8px 0}.break-sequence-ball{width:22px;height:22px}.break-modal{text-align:left}.stats-panel{text-align:center}.stats-grid{width:100%;margin:12px 0 8px;text-align:left}.stats-meta{margin-bottom:14px;text-align:center;color:var(--muted)}.stats-meta p{margin:4px 0}.stats-columns{display:grid;grid-template-columns:1fr 1fr;gap:16px}.stats-col{padding:12px;border:1px solid var(--line);border-radius:12px;background:var(--felt-deep)}.stats-col h3{margin:0;color:var(--gold);font-size:.78rem;letter-spacing:.08em}.stats-player-name{margin:6px 0 0;font-weight:700}.stats-col-score{margin:8px 0 0;color:var(--lime);font-size:2rem;font-weight:800}.stats-label{margin:10px 0 0;color:var(--muted);font-size:.72rem;letter-spacing:.06em;text-transform:uppercase}.stats-value{margin:4px 0 0;font-size:1.2rem;font-weight:700}.stats-breaks{margin:6px 0 0;padding:0;list-style:none;color:var(--ink)}.stats-breaks li{margin-top:4px}@media(max-width:560px){.stats-columns{grid-template-columns:1fr}}.stats-names{margin:8px 0 0;color:var(--muted)}.stats-score{margin:8px 0 0;color:var(--lime);font-size:2.4rem;font-weight:800}.stats-list{margin:8px 0 16px;padding:0;list-style:none;color:var(--muted)}.fs-btn{display:none}.screen-controls{position:absolute;top:12px;right:12px;z-index:5;display:flex;flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;max-width:calc(100% - 24px)}.screen.screen-select .screen-controls,.screen.screen-edit .screen-controls{position:fixed}.ctrl-btn{display:inline-flex;align-items:center;justify-content:center;gap:4px;min-width:36px;min-height:36px;padding:6px 10px;border:1px solid var(--line);border-radius:10px;background:var(--felt-deep);color:var(--muted);text-decoration:none;font-size:.68rem;font-weight:800;letter-spacing:.06em}.ctrl-btn:hover,.ctrl-btn:focus-visible{color:var(--ink);border-color:var(--lime)}.ctrl-lang{min-width:40px}.ctrl-fs{letter-spacing:.08em}.ctrl-back{margin-right:4px}.ctrl-back-label{font-size:.62rem}.home-link{margin-top:16px}.history-card{display:flex;flex-direction:column;align-items:flex-start;gap:4px;width:100%;margin-top:10px;padding:12px;border:1px solid var(--line);border-radius:12px;background:var(--felt-deep);color:inherit;text-decoration:none;text-align:left}.history-list{display:grid;gap:4px;width:100%}.history-detail h3,.history-detail h4{margin-top:18px}.break-groups{display:grid;gap:12px}.view-type{margin:0;padding:12px;border:1px solid var(--line);border-radius:12px}.view-type legend{padding:0 6px;color:var(--muted);font-size:.78rem;letter-spacing:.08em}.segmented{display:grid;grid-template-columns:1fr 1fr;gap:0;margin-top:8px;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:var(--felt-deep)}.segment{min-height:48px;border:0;border-radius:0;background:transparent;color:var(--muted);font-size:.78rem;font-weight:800;letter-spacing:.08em;cursor:pointer}.segment+.segment{border-left:1px solid var(--line)}.segment.active{background:var(--gold-soft);color:var(--gold)}.radio-row{display:flex;align-items:center;gap:10px;margin-top:8px}.live-stream-page .live-stream-panel{display:flex;flex-direction:column;gap:14px}.live-stream-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px}.live-stream-toolbar h2{margin:0 auto 0 0}.live-service-status{display:inline-flex;align-items:center;gap:8px;margin:0;color:var(--muted);font-size:.85rem;font-weight:700}.live-service-dot{width:10px;height:10px;border-radius:50%;background:var(--danger)}.live-service-status.is-online .live-service-dot{background:var(--lime)}.live-service-status.is-online{color:var(--ink)}.live-stream-list{display:grid;gap:12px}.live-stream-card{margin:0;padding:14px 16px}.live-stream-card h3{margin:0 0 12px;font-size:1.05rem;letter-spacing:.04em}.live-control-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px 16px;padding:10px 0;border-top:1px solid var(--line)}.live-control-meta{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;min-width:0}.live-control-label{font-size:.78rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase}.live-state-badge{display:inline-flex;align-items:center;min-height:24px;padding:2px 8px;border:1px solid var(--line);border-radius:999px;color:var(--muted);font-size:.68rem;font-weight:800;letter-spacing:.06em}.live-state-running,.live-state-starting{color:var(--lime);border-color:color-mix(in srgb,var(--lime) 45%,var(--line))}.live-state-reconnecting{color:var(--gold);border-color:color-mix(in srgb,var(--gold) 45%,var(--line))}.live-state-error{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 50%,var(--line))}.live-stream-last-error{margin:0 0 4px;font-size:.8rem}.live-stream-card .segmented{display:inline-flex;flex-wrap:wrap;gap:0;border:1px solid var(--line);border-radius:10px;overflow:hidden}.live-stream-card .segment{min-width:64px;min-height:36px;padding:6px 12px;border:0;border-radius:0;background:transparent;color:var(--muted);font-size:.72rem;font-weight:800;letter-spacing:.06em;cursor:pointer}.live-stream-card .segment+.segment{border-left:1px solid var(--line)}.live-stream-card .segment.active{background:var(--gold-soft);color:var(--gold)}.live-stream-card .segment:disabled{opacity:.45;cursor:not-allowed}@media(max-width:700px){.live-control-row{align-items:stretch}.live-stream-card .segmented{width:100%}.live-stream-card .segment{flex:1}}.scoreboard.scoreboard-view.scoreboard-player>.player-footer{grid-row:5;align-self:end;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:clamp(8px,1.4vh,14px);width:100%;margin:0;padding-top:clamp(4px,.8vh,8px)}.scoreboard-player .player-footer .player-last{margin:0}.scoreboard-player .player-controls-block{display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:clamp(8px,1.4vh,14px);width:100%}.scoreboard-player .player-balls{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:clamp(6px,1.2vw,10px);width:100%}.scoreboard-player .player-ball{width:clamp(34px,7vmin,48px);height:clamp(34px,7vmin,48px);flex:0 0 auto}.scoreboard-player .player-actions{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:clamp(6px,1.2vw,8px);width:100%}.scoreboard-player .player-actions .btn-ctrl{width:auto;min-width:clamp(64px,14vw,88px);min-height:clamp(40px,6.5vh,48px);flex:0 0 auto;padding:8px 12px;font-size:.72rem}.scoreboard-player .player-footer-error{position:absolute;left:50%;bottom:clamp(110px,18vh,160px);transform:translate(-50%);z-index:6;margin:0;text-align:center}@media(max-height:720px){.scoreboard-player .player-ball{width:clamp(30px,6vmin,40px);height:clamp(30px,6vmin,40px)}.scoreboard-player .player-actions .btn-ctrl{min-height:40px;min-width:60px;padding:6px 10px}}@media(max-width:700px)and (orientation:portrait){.scoreboard-player .player-actions .btn-ctrl{min-width:56px;font-size:.66rem}}.view-qr{position:absolute;right:16px;bottom:42px;width:88px;height:88px;border-radius:8px}.scoreboard-fab-cluster{position:fixed;right:max(12px,env(safe-area-inset-right));bottom:max(14px,env(safe-area-inset-bottom));z-index:30;display:flex;flex-direction:column-reverse;align-items:center;gap:10px}.scoreboard-fab-cluster--left{right:auto;left:max(12px,env(safe-area-inset-left))}.scoreboard-player .scoreboard-fab-cluster{bottom:max(92px,calc(env(safe-area-inset-bottom) + 84px))}.screen.screen-edit.scoring .scoreboard-fab-cluster{bottom:max(18px,env(safe-area-inset-bottom))}.hold-fab{--hold-fab-ring: calc(2 * 3.1415926535 * 18);position:relative;display:inline-flex;align-items:center;justify-content:center;width:48px;height:48px;margin:0;padding:0;border:1px solid var(--line);border-radius:50%;background:var(--felt-deep);color:var(--muted);box-shadow:var(--shadow);touch-action:none;user-select:none;-webkit-user-select:none;cursor:pointer}.hold-fab:hover,.hold-fab:focus-visible{color:var(--ink);border-color:var(--lime);outline:none}.hold-fab:disabled{opacity:.45;cursor:not-allowed}.hold-fab.is-holding,.hold-fab.is-activating{color:var(--ink);border-color:var(--lime)}.hold-fab-ring{position:absolute;inset:0;width:100%;height:100%;transform:rotate(-90deg);pointer-events:none}.hold-fab-ring-track,.hold-fab-ring-progress{fill:none;stroke-width:2.5}.hold-fab-ring-track{stroke:var(--line)}.hold-fab-ring-progress{stroke:var(--lime);stroke-linecap:round;stroke-dasharray:var(--hold-fab-ring);stroke-dashoffset:var(--hold-fab-ring);transition:stroke-dashoffset .15s ease-out}.hold-fab-icon{position:relative;z-index:1;display:inline-flex;align-items:center;justify-content:center}.layout-scale-target{width:100%;display:flex;justify-content:center;align-items:flex-start;min-width:0;min-height:0}.layout-scale-inner{width:100%;min-width:0;transform-origin:top center}.layout-scale-target.is-fit{align-self:center}.layout-scale-target.is-editable{outline:1px dashed color-mix(in srgb,var(--lime) 45%,transparent);outline-offset:6px;border-radius:8px;touch-action:none;cursor:pointer}.layout-scale-target.is-selected{outline:2px solid var(--lime);outline-offset:6px}.layout-mode-toolbar{position:fixed;left:50%;top:max(52px,calc(env(safe-area-inset-top) + 44px));transform:translate(-50%);z-index:40;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:8px 10px;max-width:calc(100% - 24px);padding:8px 10px;border:1px solid var(--line);border-radius:12px;background:color-mix(in srgb,var(--felt-deep) 92%,transparent);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.layout-mode-targets,.layout-mode-scale,.layout-mode-actions{display:flex;align-items:center;gap:6px}.layout-target-btn,.layout-scale-btn{display:inline-flex;align-items:center;justify-content:center;min-height:34px;padding:6px 10px;border:1px solid var(--line);border-radius:10px;background:var(--felt-deep);color:var(--muted);font-size:.68rem;font-weight:800;letter-spacing:.04em;cursor:pointer}.layout-target-btn.is-active,.layout-scale-btn:hover,.layout-target-btn:hover,.layout-scale-btn:focus-visible,.layout-target-btn:focus-visible{color:var(--ink);border-color:var(--lime);outline:none}.layout-scale-btn{min-width:34px;font-size:1rem;line-height:1}.layout-scale-btn:disabled{opacity:.4;cursor:not-allowed}.layout-scale-value{min-width:3.4em;color:var(--ink);font-size:.78rem;font-weight:800;text-align:center;font-variant-numeric:tabular-nums}.layout-toolbar-btn{min-height:34px;padding:6px 12px;font-size:.68rem}.view-config-toolbar{position:fixed;left:50%;top:max(52px,calc(env(safe-area-inset-top) + 44px));transform:translate(-50%);z-index:40;display:flex;flex-direction:column;gap:10px;width:min(420px,calc(100% - 24px));max-height:min(70dvh,calc(100dvh - 72px));padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:color-mix(in srgb,var(--felt-deep) 94%,transparent);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);overflow:hidden}.view-config-toolbar-header{flex:0 0 auto}.view-config-toolbar-title{margin:0;color:var(--ink);font-size:.85rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;text-align:center}.view-config-toolbar-rows{display:flex;flex-direction:column;gap:8px;flex:1 1 auto;min-height:0;overflow-y:auto;padding-right:2px}.view-config-row{display:grid;grid-template-columns:minmax(6.2rem,9rem) minmax(0,1fr) 3.2rem;align-items:center;gap:8px 10px;margin:0}.view-config-row-label{color:var(--muted);font-size:.72rem;font-weight:700;letter-spacing:.02em}.view-config-slider{width:100%;min-width:0;accent-color:var(--lime);cursor:pointer}.view-config-row-value{color:var(--ink);font-size:.78rem;font-weight:800;text-align:right;font-variant-numeric:tabular-nums}.view-config-toolbar-actions,.display-config-toolbar-actions{display:grid;grid-template-columns:1fr;align-items:stretch;gap:8px;flex:0 0 auto;padding-top:4px;border-top:1px solid var(--line)}.config-scale-presets{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));align-items:stretch;gap:6px;min-width:0}.config-primary-actions{display:grid;grid-template-columns:1fr;align-items:stretch;gap:8px;min-width:0}.config-scale-presets .layout-toolbar-btn,.config-primary-actions .layout-toolbar-btn{width:100%;min-width:0;justify-content:center}.scoreboard.is-view-config:after{content:"";position:fixed;inset:0;z-index:30;pointer-events:none;box-shadow:inset 0 0 0 2px color-mix(in srgb,var(--lime) 55%,transparent)}.scoreboard.is-layout-mode .view-qr,.scoreboard.is-layout-mode .scoreboard-fab-cluster,.scoreboard.is-view-config .view-qr,.scoreboard.is-view-config .scoreboard-fab-cluster{display:none}@media(max-width:700px)and (orientation:portrait){.hold-fab{width:44px;height:44px}.scoreboard-player .scoreboard-fab-cluster{bottom:max(108px,calc(env(safe-area-inset-bottom) + 96px))}.layout-mode-toolbar{top:max(48px,calc(env(safe-area-inset-top) + 40px));gap:6px;padding:6px 8px}.layout-target-btn{font-size:.62rem;padding:5px 8px}}@media(max-width:700px)and (orientation:portrait){.fed-logo{width:48px;height:48px}.scoreboard-top h1:before,.scoreboard-top h1:after{width:36px}.ctrl-back-label{display:none}.screen-controls{top:10px;right:10px;gap:6px}}.display-page{--display-player-scale: 1;--display-points-scale: 1;--display-frames-scale: 1;--display-break-scale: 1;--display-balls-scale: 1;--display-logo-scale: 1;--display-title-scale: 1;--display-gap: clamp(8px, 1.2vmin, 18px);--display-pad: clamp(12px, 2vmin, 28px);--display-logo-size: calc(clamp(40px, 5.5vmin, 96px) * var(--display-logo-scale, 1));--display-logo-gap: clamp(14px, 2.2vmin, 32px);--display-ball: calc(clamp(14px, 2.4vmin, 36px) * var(--display-balls-scale, 1));position:relative;box-sizing:border-box;min-height:100dvh;min-height:100vh;width:100%;margin:0;padding:var(--display-pad);padding-top:calc(max(10px,env(safe-area-inset-top)) + var(--display-logo-size) + var(--display-logo-gap));color:var(--ink);background:radial-gradient(circle at top,var(--page-glow) 0%,var(--scoreboard-bg) 62%);display:flex;flex-direction:column}.display-page>.fed-logo{position:absolute;top:max(10px,env(safe-area-inset-top));left:50%;z-index:2;width:var(--display-logo-size);height:var(--display-logo-size);margin:0;transform:translate(-50%);object-fit:contain;pointer-events:none}.display-page.is-single{--display-logo-gap: clamp(18px, 2.8vmin, 40px)}.display-split{flex:1;min-height:0;display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr;gap:var(--display-gap)}.display-single{flex:1;min-height:0;display:flex}.display-panel{min-height:0;display:flex;flex-direction:column;gap:clamp(8px,1.5vmin,20px);padding:clamp(12px,2vmin,28px);border:1px solid var(--line);border-radius:clamp(10px,1.2vmin,18px);background:color-mix(in srgb,var(--felt-deep) 88%,black);box-shadow:var(--shadow)}.display-single .display-panel{flex:1;width:100%;justify-content:center}.display-panel-top{text-align:center}.display-panel-table{margin:0;font-size:calc(clamp(1.1rem,3.2vmin,2.6rem) * var(--display-title-scale, 1));font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--gold)}.display-panel--full .display-panel-table{font-size:calc(clamp(1.6rem,4.5vmin,3.4rem) * var(--display-title-scale, 1))}.display-panel-idle{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.35em;text-align:center}.display-idle-title{margin:0;font-size:clamp(1.2rem,3.8vmin,2.8rem);font-weight:800;letter-spacing:.12em}.display-idle-subtitle{margin:0;font-size:clamp(.95rem,2.8vmin,2rem);letter-spacing:.18em;color:var(--muted)}.display-panel-match{flex:1;display:flex;flex-direction:column;justify-content:center;gap:clamp(10px,2vmin,28px);min-height:0}.display-players{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:clamp(8px,1.5vmin,20px)}.display-player{display:flex;flex-direction:column;align-items:center;gap:clamp(4px,.8vmin,10px);min-width:0}.display-player-cue{width:clamp(22px,3.5vmin,48px);height:clamp(22px,3.5vmin,48px);display:grid;place-items:center}.display-player-cue .red-ball{width:100%;height:100%}.display-player-name{margin:0;max-width:100%;font-size:calc(clamp(.85rem,2.6vmin,2.1rem) * var(--display-player-scale, 1));font-weight:700;text-align:center;line-height:1.15;overflow-wrap:anywhere}.display-panel--full .display-player-name{font-size:calc(clamp(1.35rem,4.2vmin,3.2rem) * var(--display-player-scale, 1))}.display-player-points{margin:0;font-size:calc(clamp(1.6rem,5.5vmin,4.5rem) * var(--display-points-scale, 1));font-weight:800;line-height:1}.display-panel--full .display-player-points{font-size:calc(clamp(2.4rem,8vmin,6.5rem) * var(--display-points-scale, 1))}.display-player.is-active .display-player-name,.display-player.is-active .display-player-points{color:var(--lime)}.display-frames{display:flex;flex-direction:row;flex-wrap:nowrap;align-items:center;justify-content:center;gap:clamp(.35em,1.2vmin,.75em);font-size:calc(clamp(1.2rem,4vmin,3rem) * var(--display-frames-scale, 1));font-weight:800;line-height:1;white-space:nowrap}.display-frames-won{flex:0 0 auto}.display-panel--full .display-frames{font-size:calc(clamp(1.8rem,5.5vmin,4rem) * var(--display-frames-scale, 1))}.display-best-of{flex:0 0 auto;font-size:.55em;font-weight:600;color:var(--muted);line-height:1}.display-break{display:flex;flex-direction:column;align-items:center;gap:clamp(6px,1vmin,12px);min-height:calc(var(--display-ball) + 1.6em * var(--display-break-scale, 1))}.display-break--empty{visibility:hidden}.display-break-value{margin:0;font-size:calc(clamp(1.1rem,3.2vmin,2.4rem) * var(--display-break-scale, 1));font-weight:800;color:var(--gold)}.display-break-row{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:clamp(4px,.7vmin,10px);max-width:100%;min-height:var(--display-ball)}.display-break .break-ball{width:var(--display-ball);height:var(--display-ball)}.display-break .break-foul{font-size:clamp(.7rem,1.6vmin,1rem);align-self:center}.display-panel--split{--display-ball: calc(clamp(10px, 1.8vmin, 22px) * var(--display-balls-scale, 1))}.display-panel--full{--display-ball: calc(clamp(18px, 3.2vmin, 44px) * var(--display-balls-scale, 1))}.display-moonfire{flex:0 0 auto;margin:clamp(6px,1vmin,12px) 0 0;padding:0;text-align:center;font-size:clamp(.72rem,min(1.6vmin,1.5vh),.95rem);letter-spacing:.14em}.display-page.is-display-config .scoreboard-fab-cluster{display:none}.display-config-toolbar{position:fixed;left:50%;top:max(52px,calc(env(safe-area-inset-top) + 44px));z-index:40;transform:translate(-50%);width:min(440px,calc(100vw - 24px));max-height:calc(100dvh - 72px);overflow:auto;display:flex;flex-direction:column;gap:12px;padding:14px 16px;border:1px solid var(--line);border-radius:14px;background:color-mix(in srgb,var(--felt-deep) 94%,transparent);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.display-config-toolbar-header{flex:0 0 auto}.display-config-toolbar-title{margin:0;color:var(--ink);font-size:.95rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase}.display-config-group{display:flex;flex-direction:column;gap:8px}.display-config-group-title{margin:0;font-size:.75rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.display-config-toolbar-rows{display:flex;flex-direction:column;gap:10px}.display-config-row{display:grid;grid-template-columns:minmax(7rem,1fr) minmax(0,1.4fr) auto;align-items:center;gap:10px}.display-config-row-label{font-size:.82rem;color:var(--muted)}.display-config-slider{width:100%;accent-color:var(--lime)}.display-config-row-value{min-width:4.5rem;text-align:right;font-size:.9rem;font-weight:700;font-variant-numeric:tabular-nums}.shootout-setup{display:grid;gap:10px}.shootout-toggle{display:flex;align-items:center;justify-content:center;gap:10px;min-height:64px;border-radius:14px;cursor:pointer;border:1px dashed var(--line);background:transparent;color:var(--muted);letter-spacing:.12em;text-transform:uppercase;font-weight:800}.shootout-toggle.is-on{border-style:solid;border-color:var(--gold);color:var(--gold);background:var(--gold-soft)}.shootout-toggle.is-on .shootout-toggle-icon{animation:shootout-arm .45s ease}@keyframes shootout-arm{0%{transform:scale(.82) rotate(-10deg)}55%{transform:scale(1.1) rotate(6deg)}to{transform:scale(1) rotate(0)}}.shootout-setup-fields{display:grid;gap:10px}.shootout-hud{position:absolute;inset:0;z-index:3;pointer-events:none}.shootout-frame-anchor,.shootout-shot-anchor{position:absolute;left:50%;transform:translate(-50%);text-align:center}.shootout-frame-anchor{top:0}.shootout-shot-anchor{top:clamp(96px,18vh,168px)}.shootout-hud-match{margin:0;color:var(--gold);font-size:calc(clamp(1.45rem,min(5vmin,5.4vh),3.4rem) * var(--view-frame-timer-scale, 1.5));font-weight:800;font-variant-numeric:tabular-nums;letter-spacing:.08em;line-height:1;text-shadow:0 0 18px color-mix(in srgb,var(--gold) 45%,transparent)}.shootout-hud-shot{margin:0;font-size:calc(clamp(2.8rem,min(11vmin,12vh),7.5rem) * var(--view-shot-timer-scale, 1.5));font-weight:800;line-height:.9;font-variant-numeric:tabular-nums;color:var(--ink)}.shootout-hud-shot.is-paused{opacity:.55}.shootout-hud-shot.is-warning{color:#ffb020;animation:shootout-warn 1s ease-in-out infinite}.shootout-hud-shot.is-zero{color:var(--danger);animation:none}@keyframes shootout-warn{0%,to{transform:scale(1)}50%{transform:scale(1.06)}}.field.is-invalid{border-color:var(--danger);box-shadow:0 0 0 2px color-mix(in srgb,var(--danger) 35%,transparent)}.shootout-field-error{color:var(--danger);font-size:.78rem;font-weight:700}.shootout-heat{position:absolute;inset:0;z-index:4;pointer-events:none;background:radial-gradient(ellipse at center,transparent 42%,rgba(255,120,30,calc(var(--heat) * .28)) 78%,rgba(180,40,0,calc(var(--heat) * .55)) 100%);box-shadow:inset 0 0 calc(40px + var(--heat) * 90px) rgba(255,90,20,calc(var(--heat) * .65));animation:shootout-heat-pulse 2.8s ease-in-out infinite}.scoreboard-view.is-heat-hot .shootout-heat{animation-duration:1.5s}.scoreboard-view.is-heat-critical .shootout-heat{animation-duration:.85s;filter:saturate(1.15)}.shootout-hud-match.is-warm,.shootout-hud-match.is-hot,.shootout-hud-match.is-critical{color:#ffd7a1;text-shadow:0 0 18px rgba(255,150,40,calc(var(--heat) * .9))}.shootout-hud-match.is-hot,.shootout-hud-match.is-critical{transform:scale(calc(1 + var(--heat) * .06))}@keyframes shootout-heat-pulse{0%,to{opacity:.72}50%{opacity:1}}.shootout-hud-shot.is-tension{color:#ffe1a8;text-shadow:0 0 24px rgba(255,140,40,calc(.35 + var(--tension, .5)));animation:shootout-tension .8s ease-in-out infinite}.shootout-hud-shot.is-tension[data-second="5"]{--tension: .4}.shootout-hud-shot.is-tension[data-second="4"]{--tension: .55;animation-duration:.68s}.shootout-hud-shot.is-tension[data-second="3"]{--tension: .7;animation-duration:.54s}.shootout-hud-shot.is-tension[data-second="2"]{--tension: .85;animation-duration:.42s}.shootout-hud-shot.is-tension[data-second="1"]{--tension: 1;animation-duration:.32s;color:#fff2d8}.shootout-shot-impact{display:inline-block;animation:shootout-shot-impact .32s cubic-bezier(.2,.8,.2,1)}@keyframes shootout-tension{0%,to{transform:scale(1)}50%{transform:scale(1.07)}}@keyframes shootout-shot-impact{0%{transform:scale(1.28)}to{transform:scale(1)}}.scoreboard-view.is-shaking{animation:view-shake .42s linear;will-change:transform}@keyframes view-shake{0%,to{transform:translateZ(0)}18%{transform:translate3d(calc(var(--shake) * -1),calc(var(--shake) * .35),0)}36%{transform:translate3d(var(--shake),calc(var(--shake) * -.28),0)}54%{transform:translate3d(calc(var(--shake) * -.55),calc(var(--shake) * .2),0)}72%{transform:translate3d(calc(var(--shake) * .35),calc(var(--shake) * -.12),0)}}.screen-break{position:absolute;inset:0;z-index:4;pointer-events:none;overflow:hidden}.screen-break-flash{position:absolute;inset:0;background:#fff4e4;animation:screen-break-flash .4s ease-out forwards}.screen-break-cracks{position:absolute;inset:0;width:100%;height:100%}.screen-break-cracks path{fill:none;stroke:#fff6e8f2;stroke-width:.7;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:48;stroke-dashoffset:48;filter:drop-shadow(0 0 2px rgba(0,0,0,.65));animation:screen-break-crack .5s ease-out forwards}.screen-break-shard{position:absolute;left:50%;top:50%;width:26vmax;height:16vmax;background:linear-gradient(155deg,rgba(255,244,224,.22),rgba(8,14,12,.08) 40%,transparent 70%);clip-path:polygon(8% 0,100% 12%,78% 100%,0 68%);opacity:0;animation:screen-break-shard .85s ease-out .38s forwards;transform:translate3d(-50%,-50%,0) rotate(var(--rot))}@keyframes screen-break-flash{0%{opacity:.9}to{opacity:0}}@keyframes screen-break-crack{to{stroke-dashoffset:0}}@keyframes screen-break-shard{0%{opacity:.75;transform:translate3d(-50%,-50%,0) rotate(var(--rot)) scale(.35)}to{opacity:0;transform:translate3d(-50%,-50%,0) rotate(var(--rot)) translateY(var(--dist)) scale(1.12)}}@media(prefers-reduced-motion:reduce){.scoreboard-view.is-shaking,.shootout-heat,.shootout-hud-shot.is-tension,.shootout-shot-impact,.screen-break-shard,.screen-break-cracks path{animation:none}.screen-break-cracks path{stroke-dashoffset:0}}
