:root{color-scheme:dark;--surface: #080f20;--panel: #101e34;--control: #1d3451;--hover: #29496b;--text: #f3f7ff;--muted: #a4b8d3;--accent: #63ddf1;--on-accent: #082337;--border: #ffffff25;--scrim: #030916cc;--font: 15px system-ui, sans-serif;--radius: 9px;--panel-radius: 16px;--target-size: 44px;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px}:root[data-theme=midnight]{--surface: #0d1424;--panel: #182237;--control: #263652;--hover: #354969;--text: #ecf2ff;--muted: #b8c7e2;--accent: #9cc5ff;--on-accent: #0d1930;--scrim: #070d1ccc}:root[data-theme=ivory]{color-scheme:light;--surface: #ebe2d2;--panel: #fff9ee;--control: #f0e5d3;--hover: #e7d9c3;--text: #2b2319;--muted: #685744;--accent: #805122;--on-accent: #fff9ee;--border: #56391f35;--scrim: #21170fb0}.ui-button,.ui-select{min-height:var(--target-size);border:1px solid var(--border);border-radius:var(--radius);padding:0 var(--space-3);background-color:var(--control);color:inherit;font:inherit}.ui-button{cursor:pointer}.ui-button:disabled{cursor:default;opacity:.55}.ui-button:focus-visible,.ui-select:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media(hover:hover){.ui-button:hover:enabled,.ui-select:hover{background-color:var(--hover)}}.ui-button--primary,.ui-button[aria-pressed=true],.ui-button--primary:hover:enabled,.ui-button[aria-pressed=true]:hover:enabled{background-color:var(--accent);color:var(--on-accent)}.ui-field{display:grid;grid-template-columns:5.5rem minmax(0,1fr);align-items:center;gap:var(--space-2);color:var(--muted)}.ui-select{appearance:none;width:100%;padding-inline-end:34px;color:var(--text);cursor:pointer}.ui-select-wrap{position:relative;min-width:0}.ui-select-wrap:after{content:"";position:absolute;inset-inline-end:15px;top:50%;width:6px;height:6px;border:solid var(--accent);border-width:0 2px 2px 0;transform:translateY(-70%) rotate(45deg);pointer-events:none}@supports (appearance: base-select) and selector(::picker(select)){@media(pointer:fine){.ui-select,.ui-select::picker(select){appearance:base-select}.ui-select{display:inline-flex;align-items:center;line-height:1.4}.ui-select::picker-icon{display:none}.ui-select::picker(select){margin-block:var(--space-1);padding:var(--space-1);border:1px solid var(--border);border-radius:var(--radius);background:var(--panel);color:var(--text);box-shadow:0 10px 24px var(--scrim)}.ui-select option{padding:var(--space-2) var(--space-3);border-radius:var(--radius)}.ui-select option:is(:hover,:focus-visible){background:var(--hover)}.ui-select option:checked{color:var(--accent)}}}.ui-dialog{width:min(460px,calc(100% - 24px));max-height:90dvh;padding:var(--space-4);border:1px solid var(--border);border-radius:var(--panel-radius);background:var(--panel);color:var(--text)}.ui-dialog::backdrop{background:var(--scrim)}.ui-dialog h2,.ui-dialog p{margin:0}.ui-dialog p{color:var(--muted)}.ui-dialog form{display:grid;gap:var(--space-2)}.ui-dialog-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:var(--space-2);margin-top:var(--space-2)}*{box-sizing:border-box}html{width:100%;overflow-x:clip;overscroll-behavior-x:none}*::-webkit-scrollbar{width:10px;height:10px}*::-webkit-scrollbar-track{background:transparent}*::-webkit-scrollbar-thumb{border:3px solid transparent;border-radius:20px;background:color-mix(in srgb,var(--accent) 40%,var(--panel));background-clip:padding-box}*::-webkit-scrollbar-thumb:hover,*::-webkit-scrollbar-thumb:active{border-width:1px;background-color:var(--accent)}*::-webkit-scrollbar-corner{background:transparent}@supports not selector(::-webkit-scrollbar){*{scrollbar-width:thin;scrollbar-color:var(--accent) var(--panel)}}body{margin:0;height:100vh;height:100dvh;overflow:hidden;background:var(--surface);color:var(--text);font:var(--font)}main{position:fixed;inset:0;min-width:0;min-height:0}canvas{display:block;width:100%;height:100%;touch-action:none}canvas[hidden]{display:none}main,.game-hud,#ballHand{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent}#ballHand:not([hidden]){position:fixed;z-index:1;width:30px;height:34px;transform:translate(-50%,-90%);pointer-events:none;filter:drop-shadow(0 2px 2px #0009)}#ballHand svg{width:100%;height:100%;fill:#fff4d9;stroke:#463820;stroke-width:1.5;stroke-linejoin:round}.fine-aim{display:grid;justify-items:center;gap:6px}.fine-aim>small{font-size:.6rem}#fineAim{width:44px;height:min(120px,20dvh);min-width:0;padding:4px;touch-action:none;cursor:ns-resize}#fineAim>span{display:flex;flex-direction:column;align-items:center;gap:6px;height:100%;pointer-events:none}.aim-ruler{flex:1;width:16px;background:repeating-linear-gradient(180deg,transparent 0 9px,var(--accent) 9px 10px);mask-image:linear-gradient(180deg,transparent,#000 25% 75%,transparent)}@media(max-width:600px){.fine-aim{display:flex;flex:1 1 100%;align-items:center;gap:6px}#fineAim{flex:1;width:auto;height:auto;min-height:44px;cursor:ew-resize}#fineAim>span{flex-direction:row;gap:10px}.aim-ruler{flex:1;width:auto;height:16px;background:repeating-linear-gradient(90deg,transparent 0 9px,var(--accent) 9px 10px);mask-image:linear-gradient(90deg,transparent,#000 25% 75%,transparent)}}.fullscreen-notice:not([hidden]){position:fixed;z-index:30;top:16px;left:50%;transform:translate(-50%);width:max-content;max-width:calc(100% - 32px);margin:0;padding:14px 20px;border:1px solid var(--border);border-radius:var(--radius);background:var(--panel);color:var(--text);text-align:center;box-shadow:0 8px 28px #00000050}.ui-dialog.tv-detection{width:min(720px,calc(100% - 48px))}.tv-detection p{font-size:1.1rem;line-height:1.6}.tv-detection .ui-button{min-height:52px;font-size:1rem}.tv-detection .ui-button:focus{outline:4px solid #ffe3a1;outline-offset:3px}dialog.dialog-fallback:not([open]){display:none}dialog.dialog-fallback[open]{position:fixed;z-index:20;top:6vh;left:0;right:0;margin-inline:auto;max-height:88vh;overflow:hidden;box-shadow:0 0 0 100vmax #080d0acc}.camera-zoom{position:fixed;z-index:1;right:max(6px,env(safe-area-inset-right));top:50%;transform:translateY(-50%);display:grid;justify-items:center;width:46px;padding:8px 0 3px;border:1px solid var(--border);border-radius:12px;background:color-mix(in srgb,var(--panel) 88%,transparent);backdrop-filter:blur(12px);box-shadow:0 4px 18px #00000020}.game-notice:not([hidden]){position:fixed;z-index:2;top:var(--notice-top, 90px);left:50%;transform:translate(-50%);display:grid;gap:5px;width:max-content;max-width:calc(100% - 100px);padding:10px 16px;border:1px solid color-mix(in srgb,var(--accent) 55%,var(--border));border-radius:12px;background:color-mix(in srgb,var(--panel) 95%,transparent);backdrop-filter:blur(12px);text-align:center;box-shadow:0 8px 28px #00000025;pointer-events:none}.game-notice strong{font-size:.9rem;overflow-wrap:anywhere}.game-notice small{font-size:.7rem}.victory-emblem{display:none}.game-notice[data-kind=win]{top:50%;transform:translate(-50%,-50%);width:min(360px,calc(100% - 36px));max-width:calc(100% - 36px);padding:26px 30px 28px;gap:14px;border-radius:22px;pointer-events:auto;border-color:color-mix(in srgb,var(--accent) 75%,var(--panel));background:radial-gradient(ellipse at 50% 0,#eac16a26,transparent 68%),var(--panel);box-shadow:0 0 0 100vmax #07110e65,0 24px 80px #00000045,0 0 60px #eac16a20,inset 0 1px #fff5d440}.game-notice[data-kind=win][data-outcome=winner] .victory-emblem{display:grid;place-items:center;width:110px;height:110px;margin:-4px auto 0;border-radius:50%;background:radial-gradient(circle,#eac16a30,transparent 72%)}.victory-emblem svg{width:96px;height:96px;filter:drop-shadow(0 5px 9px #ad742430)}.game-notice[data-kind=win] .eyebrow{font-size:.7rem;letter-spacing:.25em}.game-notice[data-kind=win] strong{font:clamp(2rem,6vw,2.7rem)/1.08 Georgia,serif;text-wrap:balance}.game-notice[data-kind=win] small{font-size:.85rem;line-height:1.5;text-wrap:balance}.game-notice[data-kind=win] .ui-button{margin-top:8px;min-height:48px;box-shadow:0 4px 14px #00000015}#victoryConfetti{position:fixed;inset:0;z-index:3;pointer-events:none;overflow:hidden}.confetti-piece{position:absolute;top:-20px;width:7px;height:12px;border-radius:1px;opacity:0;background:var(--confetti-color);animation:confetti-fall var(--fall-time) var(--fall-delay) ease-in forwards}.confetti-piece:nth-child(3n){width:6px;height:6px;border-radius:50%}@keyframes confetti-fall{0%{opacity:0;transform:translate3d(0,-20px,0) rotate(0)}8%,80%{opacity:.95}to{opacity:0;transform:translate3d(var(--drift),105dvh,0) rotate(var(--spin))}}@keyframes victory-arrive{0%{opacity:0;transform:translate(-50%,-46%) scale(.93)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}@media(prefers-reduced-motion:no-preference){.game-notice[data-kind=win]:not([hidden]){animation:victory-arrive .45s cubic-bezier(.2,.8,.2,1) both}}@media(prefers-reduced-motion:reduce){.confetti-piece{display:none;animation:none}}@media(max-height:500px){.game-notice[data-kind=win]{padding:16px 24px;gap:8px;max-height:calc(100dvh - 24px);overflow-y:auto}.game-notice[data-kind=win][data-outcome=winner] .victory-emblem{width:72px;height:72px}.victory-emblem svg{width:68px;height:68px}}.zoom-label{font-size:.5rem;color:var(--muted);letter-spacing:.12em}.zoom-button{appearance:none;border:0;background:transparent;color:var(--text);width:44px;min-height:36px;padding:0;font:inherit;font-size:1.25rem;cursor:pointer;border-radius:8px}.zoom-button:hover{color:var(--accent);background:var(--control)}.zoom-button:focus-visible,#cameraZoom:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.zoom-value{font:600 .65rem system-ui,sans-serif;color:var(--accent);font-variant-numeric:tabular-nums}.zoom-ruler{position:relative;height:min(170px,25dvh);width:44px}.camera-zoom .fine-aim{position:absolute;top:calc(100% + 8px);right:0;width:46px;margin:0;padding-top:8px;border-top:1px solid var(--border)}.zoom-ruler:before{content:"";position:absolute;inset:7px 13px;pointer-events:none;background:repeating-linear-gradient(to bottom,var(--muted) 0 1px,transparent 1px 10px);opacity:.5}.zoom-ruler:after{content:"";position:absolute;left:50%;top:7px;bottom:7px;border-left:1px solid var(--border);pointer-events:none}#cameraZoom{position:relative;z-index:1;appearance:none;writing-mode:vertical-lr;direction:rtl;width:44px;height:100%;margin:0;padding:5px 0;background:transparent;cursor:ns-resize;touch-action:none}#cameraZoom::-webkit-slider-runnable-track{width:2px;height:100%;background:transparent}#cameraZoom::-webkit-slider-thumb{appearance:none;width:24px;height:5px;margin-left:-11px;border-radius:2px;background:var(--accent);box-shadow:0 0 0 2px var(--panel)}#cameraZoom::-moz-range-track{width:2px;background:transparent}#cameraZoom::-moz-range-thumb{width:24px;height:5px;border:0;border-radius:2px;background:var(--accent);box-shadow:0 0 0 2px var(--panel)}@media(pointer:coarse){.zoom-button{min-height:44px}}@media(max-height:500px){.zoom-ruler{height:60px}.camera-zoom{padding-top:4px}}small{display:block;color:var(--muted)}header,footer{position:fixed;z-index:1;display:flex;align-items:center;gap:12px;padding:5px 10px;background:color-mix(in srgb,var(--panel) 92%,transparent);border:1px solid var(--border);border-radius:10px;box-shadow:0 4px 16px #00000020;backdrop-filter:blur(12px)}header{top:max(6px,env(safe-area-inset-top));left:max(6px,env(safe-area-inset-left));right:max(6px,env(safe-area-inset-right));display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);gap:12px}header>.game-heading{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:2px 8px;min-width:0}.game-heading>strong{font:500 1.05rem Georgia,serif}header nav{justify-self:end}#score{color:var(--accent);font-size:.75rem}#status{grid-column:1 / -1;font-size:.7rem;line-height:1.2}nav{display:flex;flex-shrink:0;gap:2px}nav .ui-button{min-height:36px;padding-inline:10px;font-size:.75rem;border-color:transparent;background:transparent}#openSettings{border-color:var(--border);background:var(--control)}footer{bottom:max(6px,env(safe-area-inset-bottom));left:50%;transform:translate(-50%);width:min(540px,calc(100% - 12px - env(safe-area-inset-left) - env(safe-area-inset-right)));flex-wrap:wrap}#shotClock:not([hidden]){grid-column:1;grid-row:2;font-size:.7rem;font-weight:700;color:var(--accent);font-variant-numeric:tabular-nums}header:has(#shotClock:not([hidden])) #status{grid-column:2}#shotClock.urgent{color:#ff9e80}.call-pocket:not([hidden]){flex:1 1 100%;display:flex;align-items:center;gap:10px;order:-1;font-size:.7rem;color:var(--accent)}.call-pocket label{flex-shrink:0}.call-pocket select{min-width:0;min-height:36px;font-size:.75rem}.contact{display:flex;align-items:center;gap:8px;padding-right:12px;border-right:1px solid var(--border)}.control-label{font-size:.65rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase}#tip,#stroke{touch-action:none;user-select:none}#tip{position:relative;flex-shrink:0;width:44px;height:44px;padding:0;border-radius:50%;background:radial-gradient(circle at 34% 26%,#fffdf5,#bfb29b);border:2px solid #f8edda}#tipMark{position:absolute;width:8px;height:8px;border-radius:50%;background:#ad3329;transform:translate(-50%,-50%);pointer-events:none}.power{flex:1;min-width:0;display:grid;grid-template-columns:auto minmax(0,1fr) 32px;align-items:center;gap:10px}#lockAim{flex-shrink:0;font-size:.7rem;padding-inline:8px}.power-label{display:contents}.power-label .control-label{grid-column:1;grid-row:1;max-width:60px;line-height:1.4}#powerValue{grid-column:3;grid-row:1;color:var(--accent);font-size:.8rem;text-align:right;font-variant-numeric:tabular-nums}#stroke{grid-column:2;grid-row:1;display:grid;align-content:center;gap:3px;min-width:0;width:100%;min-height:44px;padding:5px 10px;overflow:hidden;background:var(--surface);cursor:grab}#stroke:active{cursor:grabbing}.cue-track{position:relative;display:block;height:21px}.cue-stick{position:absolute;right:21px;top:6px;width:74%;height:10px;transform:translate(var(--cue-pull, 0%));clip-path:polygon(0 0,100% 29%,100% 71%,0 100%);background:linear-gradient(90deg,var(--cue-butt, #673925) 0 22%,#302620 22% 37%,var(--cue-shaft, #ce944f) 38%,#f3ce91 94%,#fff5dc 94% 98%,#63aabd 98%)}.cue-target{position:absolute;right:2px;top:3px;width:15px;height:15px;border-radius:50%;background:radial-gradient(circle at 34% 26%,#fff,#c9baa1)}.power-track{display:block;height:3px;background:var(--border);border-radius:4px;overflow:hidden}.power-track span{display:block;height:100%;width:var(--power, 0%);background:linear-gradient(90deg,#c58b47,#ffe0a2)}#strokeHint{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.eyebrow{display:block;color:var(--accent);font-size:.64rem;letter-spacing:.18em;font-weight:700}.ui-dialog{width:min(530px,calc(100% - 24px));max-width:calc(100vw - 24px);max-height:90vh;max-height:90dvh;padding:0;overflow:hidden;overscroll-behavior:contain;box-shadow:0 24px 80px #00000060}.ui-dialog[open]{display:flex;flex-direction:column}.ui-dialog>form{display:flex;flex-direction:column;flex:1 1 auto;min-height:0;max-height:inherit;gap:0;margin:0;overflow:hidden}.dialog-body{display:grid;align-content:start;gap:12px;flex:1 1 auto;min-height:0;padding:16px;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;scroll-padding-block:12px}.ui-dialog.modal-parent{opacity:.68;transform:translateY(12px) scale(.965);filter:brightness(.88)}.ui-dialog.modal-child::backdrop{background:#00000012}@keyframes dialog-reveal{0%{opacity:0;transform:translateY(8px) scale(.99)}to{opacity:1;transform:none}}@keyframes dialog-child-reveal{0%{opacity:0;transform:translateY(-16px) scale(1.015)}70%{opacity:1;transform:translateY(2px) scale(.998)}to{opacity:1;transform:none}}@keyframes dialog-backdrop-reveal{0%{opacity:0}to{opacity:1}}@media(prefers-reduced-motion:no-preference){.ui-dialog{transition:opacity .2s ease,transform .24s cubic-bezier(.2,.75,.25,1),filter .2s ease}.ui-dialog[open]{animation:dialog-reveal .2s cubic-bezier(.2,.7,.2,1) backwards}.ui-dialog.modal-child[open]{animation:dialog-child-reveal .26s cubic-bezier(.2,.75,.25,1) backwards}.ui-dialog[open]::backdrop{animation:dialog-backdrop-reveal .18s ease-out}}.settings-heading{display:grid;gap:8px}.settings-heading h2{font:1.65rem Georgia,serif}.ui-dialog form{min-width:0;max-width:100%}.ui-dialog :is(input,select,fieldset,.ui-field,.ui-select-wrap,.sound-row>div){min-width:0;max-width:100%}.ui-dialog p,.sound-row{overflow-wrap:anywhere}.sound-row .ui-button{flex-shrink:0}.ui-dialog fieldset{min-width:0;margin:0;border:1px solid var(--border);border-radius:12px;padding:14px;display:grid;gap:10px}.ui-dialog legend{padding:0 8px;font-size:.72rem;text-transform:uppercase;letter-spacing:.1em;color:var(--accent)}.sound-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.sound-row strong{font-size:.85rem}.sound-row small{margin-top:4px;font-size:.75rem}.volume-row{display:flex;align-items:center;gap:12px;font-size:.85rem}.volume-row input{min-width:0;flex:1;min-height:44px;accent-color:var(--accent)}.volume-row output{width:3em;text-align:end;font-variant-numeric:tabular-nums}.settings-note{font-size:.75rem}.ui-dialog-actions{position:sticky;bottom:0;z-index:1;flex:0 0 auto;margin:0;padding:12px 16px max(12px,env(safe-area-inset-bottom));border-top:1px solid var(--border);background:var(--panel)}#mobileGameMenu .game-menu-heading{display:flex;align-items:center;justify-content:space-between;gap:16px}#mobileGameMenu .game-menu-close{flex-shrink:0;display:grid;place-items:center;width:44px;height:44px;padding:0;font-size:1.6rem;line-height:1;background:var(--control);color:var(--text)}#mobileGameMenu #tableActions{display:grid;grid-template-columns:minmax(0,1fr);width:100%;gap:8px;padding:0;border:0;background:none}#mobileGameMenu .hud-action{display:grid;grid-template-columns:38px minmax(0,1fr) 12px;grid-template-rows:auto auto;align-items:center;gap:3px 12px;min-height:68px;width:100%;padding:12px;text-align:left;border:1px solid var(--border);border-radius:var(--radius);background:var(--control);color:var(--text);box-shadow:none}#mobileGameMenu .hud-action>svg{grid-column:1;grid-row:1 / 3;width:36px;height:36px;padding:8px;border:1px solid var(--border);border-radius:8px;color:var(--accent);background:var(--surface)}#mobileGameMenu .hud-label{grid-column:2;grid-row:1;align-self:end;font:600 .85rem/1.3 system-ui,sans-serif;text-transform:none;letter-spacing:normal;white-space:normal}#mobileGameMenu .menu-description{display:block;grid-column:2;grid-row:2;align-self:start;color:var(--muted);font:.72rem/1.4 system-ui,sans-serif}#mobileGameMenu .hud-action:after{content:"›";grid-column:3;grid-row:1 / 3;color:var(--accent);font-size:1.3rem}#mobileGameMenu .hud-action:hover:enabled{background:var(--hover);border-color:var(--accent)}#mobileGameMenu .hud-action:active:enabled{transform:translateY(2px) scale(.99);box-shadow:inset 0 2px 5px #00000020}#mobileGameMenu .hud-action[aria-pressed=true]{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 14%,var(--control));color:var(--text)}#mobileGameMenu .ui-dialog-actions{margin-top:16px}#mobileGameMenu .ui-dialog-actions form{width:100%}@media(max-width:600px){header{flex-wrap:wrap;gap:4px;padding:5px 8px}header>.game-heading{grid-template-columns:auto minmax(0,1fr);gap:2px 8px}.game-heading>strong{font-size:.9rem}#score{text-align:right}#status{font-size:.65rem}nav{width:100%}nav .ui-button{flex:1;min-height:36px;padding-inline:4px;font-size:.7rem}footer{gap:8px;padding-inline:8px}.contact{gap:5px;padding-right:8px}.contact .control-label{display:none}.power{gap:6px;grid-template-columns:auto minmax(0,1fr) 30px}.power-label .control-label{display:none}.power{grid-template-columns:minmax(0,1fr) 30px}#stroke{grid-column:1}#powerValue{grid-column:2}.ui-field{grid-template-columns:4.2rem minmax(0,1fr)}}@media(max-height:500px)and (min-width:601px){header>.game-heading{grid-template-columns:auto auto minmax(0,1fr);gap:8px}#status{grid-column:auto}}@media(pointer:coarse){nav .ui-button{min-height:44px}}#score{display:flex;justify-content:center;gap:8px;min-width:0}.player-score{display:grid;grid-template-columns:30px minmax(0,1fr);align-items:center;gap:2px 8px;padding:5px 10px;border-radius:9px;color:var(--muted);min-width:145px;max-width:220px;overflow-wrap:anywhere}.player-name{grid-column:2;font:600 .75rem system-ui,sans-serif}.player-group{grid-column:2;font-size:.65rem;white-space:nowrap}.potted-balls{grid-column:2;display:flex;align-items:center;min-height:20px;padding-left:0;margin-top:2px}.potted-balls.empty{font-size:.6rem;color:var(--muted)}.score-ball{position:relative;flex-shrink:0;display:grid;place-items:center;width:21px;height:21px;margin-left:-5px;border:1px solid var(--panel);border-radius:50%;font:700 8px system-ui,sans-serif;background:radial-gradient(circle at 35% 25%,#ffffff80,transparent 50%),var(--ball-color);color:#fff;text-shadow:0 1px 2px #000}.score-ball:first-child{margin-left:0}.score-ball.stripe{background:radial-gradient(circle at 32% 20%,#ffffff85,transparent 55%),linear-gradient(to bottom,#f3eddb 0 27%,var(--ball-color) 27% 73%,#f3eddb 73%);box-shadow:inset -1px -2px 3px #00000025}.score-ball.stripe .ball-number{display:grid;place-items:center;width:12px;height:12px;border-radius:50%;background:#fff9eb;color:#29251f;text-shadow:none;line-height:1}.score-ball.pending{opacity:.22;filter:saturate(.5)}.score-ball.achieved{box-shadow:0 2px 4px #00000030}.player-score.active{color:var(--accent);background:var(--control);box-shadow:inset 2px 0 var(--accent)}.group-marker{grid-column:1;grid-row:1 / 4;width:30px;height:30px;border-radius:50%;background:radial-gradient(circle at 32% 22%,#ffffff70,transparent 60%),var(--accent);box-shadow:inset -3px -4px 6px #00000035}.group-marker.stripes{background:radial-gradient(circle at 32% 22%,#ffffff85,transparent 60%),linear-gradient(0deg,#f3eddb 0 30%,var(--accent) 30% 70%,#f3eddb 70%)}.group-marker.open{background:transparent;border:1px solid var(--muted)}#online h2{margin:8px 0}#online p{font-size:.85rem;line-height:1.5}#playerId{font-family:monospace;letter-spacing:.08em;user-select:all}#invite{display:grid;justify-items:center;gap:10px;margin-block:14px;padding:14px;border:1px solid var(--border);border-radius:14px;background:#080f2073}.barcode-heading{font-size:.72rem;font-weight:700;color:var(--accent);letter-spacing:.08em;text-transform:uppercase}#inviteQr{width:190px;height:190px;max-width:100%;aspect-ratio:1;border-radius:12px;background:#fff;padding:10px;box-shadow:0 4px 20px #00000045}#inviteLink{max-width:100%;overflow-wrap:anywhere;color:var(--accent);font-size:.8rem;text-align:center}#inviteNote{font-size:.75rem;text-align:center}.invite-buttons{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;width:100%}.invite-buttons .ui-button{flex:1 1 140px;min-height:40px}.join-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;margin-top:20px}.join-row label{grid-column:1 / -1;font-size:.8rem}.join-row input{min-width:0;width:100%;font-family:monospace;text-transform:uppercase}.profile-name{display:grid;gap:6px;margin-block:12px;font-size:.85rem}.profile-name input{cursor:text;padding-inline-end:12px}.scan-actions{display:flex;flex-wrap:wrap;gap:8px;margin-block:12px}.photo-picker{display:inline-flex;align-items:center;position:relative;overflow:hidden}.photo-picker input{position:absolute;inset:0;opacity:0;cursor:pointer}.photo-picker:focus-within{outline:2px solid var(--accent);outline-offset:2px}.spin-dialog{width:min(420px,calc(100% - 24px));border-color:color-mix(in srgb,var(--accent) 35%,var(--border))}.spin-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}.spin-heading>button{flex-shrink:0;width:44px;padding:0;font-size:1.6rem}.spin-dialog #spinHelp{font-size:.85rem;line-height:1.5}.spin-surface{position:relative;display:grid;place-items:center;padding:24px 30px}#spinBall{position:relative;width:min(240px,56vw,42dvh);aspect-ratio:1;padding:0;touch-action:none;user-select:none;cursor:crosshair;border:1px solid #fffbe9;border-radius:50%;background:radial-gradient(ellipse at 32% 22%,#fff 0 9%,#fffef5 28%,#eee8d9 62%,#b7b3aa 87%,#7b8290);box-shadow:inset -12px -18px 30px #29324b25,inset 6px 8px 18px #fff9,0 18px 35px #0005}#spinBall:before{content:"";position:absolute;inset:11%;border:1px dashed #283b552c;border-radius:50%;pointer-events:none}#spinBall:focus-visible{outline:2px solid var(--accent);outline-offset:7px}.spin-crosshair{position:absolute;inset:12%;pointer-events:none}.spin-crosshair:before,.spin-crosshair:after{content:"";position:absolute;background:#263c5222}.spin-crosshair:before{left:0;right:0;top:50%;height:1px}.spin-crosshair:after{top:0;bottom:0;left:50%;width:1px}#spinMark{position:absolute;width:27px;height:27px;transform:translate(-50%,-50%);border:4px solid #f03d60;border-radius:50%;box-shadow:0 0 0 2px #fffc;pointer-events:none}.spin-direction{position:absolute;color:var(--muted);font-size:.55rem;letter-spacing:.17em;font-weight:700}.spin-top{top:4px}.spin-bottom{bottom:4px}.spin-left{left:-3px}.spin-right{right:-3px}#spinValue{text-align:center;color:var(--accent);font-size:.8rem;min-height:1.4em;font-variant-numeric:tabular-nums}.spin-dialog .ui-dialog-actions{justify-content:space-between}#scanner:not([hidden]){display:grid;gap:8px}#scanVideo{width:100%;max-height:240px;object-fit:cover;border-radius:10px}@media(max-width:1100px){header{grid-template-columns:minmax(0,1fr) auto;gap:5px 12px}header>.game-heading{grid-column:1;grid-row:1}header nav{grid-column:2;grid-row:1}#score{grid-column:1 / -1;grid-row:2}}@media(max-width:600px){header{grid-template-columns:minmax(0,1fr);gap:4px}header>.game-heading{grid-column:1;grid-row:1}#score{grid-column:1;grid-row:2;gap:6px}header nav{grid-column:1;grid-row:3;justify-self:stretch}.player-score{min-width:0;flex:1;max-width:190px;padding:4px 6px;grid-template-columns:28px minmax(0,1fr);gap:2px 6px}.group-marker{width:28px;height:28px}.score-ball{width:18px;height:18px;margin-left:-5px;font-size:7px}}.spin-reset-option{display:flex;align-items:center;justify-content:space-between;gap:16px;padding-top:16px;border-top:1px solid var(--border)}.spin-reset-option strong{font-size:.82rem;line-height:1.4}.spin-reset-option small{margin-top:4px;font-size:.72rem;line-height:1.4}.spin-switch{appearance:none;display:grid;align-items:center;flex:0 0 52px;width:52px;height:44px;padding:6px 4px;border:0;background:transparent;cursor:pointer;position:relative}.spin-switch:before{content:"";position:absolute;inset:7px 0;border:1px solid var(--border);border-radius:20px;background:var(--control)}.spin-switch span{position:relative;display:block;width:22px;height:22px;border-radius:50%;background:var(--muted);box-shadow:0 1px 4px #0003;transition:transform .15s ease}.spin-switch[aria-checked=true]:before{background:var(--accent)}.spin-switch[aria-checked=true] span{transform:translate(22px);background:var(--on-accent)}.spin-switch:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:20px}@media(prefers-reduced-motion:reduce){.spin-switch span{transition:none}}@media(max-width:600px){.ui-dialog{padding:0}.ui-dialog .dialog-body{padding:14px;gap:10px}.ui-dialog .ui-dialog-actions{padding:10px 14px;bottom:0}.spin-dialog .spin-surface{padding-block:22px}.spin-dialog .spin-reset-option{padding-top:10px;gap:10px}}.player-score{font-family:inherit;cursor:pointer}.player-score:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.player-ball-section{padding-block:12px;border-top:1px solid var(--border)}.player-ball-section h3{margin:0 0 10px;font-size:.85rem}.player-detail-tray{display:flex;flex-wrap:wrap;gap:8px}.player-detail-tray .score-ball{width:30px;height:30px;margin:0;font-size:11px}.player-detail-tray .ball-number{display:grid;place-items:center;width:16px;height:16px;border-radius:50%;background:#fff8e9;color:#182337;text-shadow:none}#playerDetailsSummary,#playerDetailsBalls>p{font-size:.8rem;line-height:1.5}.offline-player-name{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:12px;color:var(--muted);font-size:.8rem}.offline-player-name input{min-width:0}.offline-avatar-picker{min-width:0;margin:0;padding:8px 10px 10px;border:1px solid var(--border);border-radius:10px}.offline-avatar-picker legend{padding-inline:5px;color:var(--muted);font-size:.75rem}.offline-avatar-options{display:grid;grid-template-columns:1fr 1fr;gap:10px}.avatar-choice-group{display:grid;gap:5px;color:var(--muted);font-size:.7rem}.avatar-choice-buttons{display:flex;flex-wrap:wrap;gap:5px}.avatar-choice{display:grid;place-items:center;width:42px;height:42px;padding:3px;border:1px solid var(--border);border-radius:50%;background:var(--surface);cursor:pointer}.avatar-choice svg{display:block;width:34px;height:34px}.avatar-choice[aria-pressed=true]{border-color:var(--accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 35%,transparent)}.avatar-choice:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.player-avatar{display:inline-flex;width:19px;height:19px;flex:0 0 19px;border-radius:50%;overflow:hidden;vertical-align:middle}.player-avatar svg{display:block;width:100%;height:100%}.game-hud .player-name{display:flex;align-items:center;gap:5px}#svgTable{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;background:radial-gradient(ellipse at 50% 40%,#1a2b40,#080f1d 80%)}#svgTable[hidden]{display:none}.score-ball.svg-ball-badge,.game-hud .score-ball.svg-ball-badge{border:0;background:none;box-shadow:none;text-shadow:none}.svg-ball-badge>svg{display:block;width:100%;height:100%;overflow:visible}.game-hud .group-marker.svg-group-marker{background:none!important;border:0;box-shadow:none}.svg-group-marker>svg{display:block;width:100%;height:100%;overflow:visible}@media(pointer:coarse),(max-width:600px){.ui-dialog :is(input,textarea,select),.call-pocket select{font-size:16px}}#stroke .cue-stick{top:3px;height:16px;background:none;clip-path:none}#stroke .cue-stick svg{display:block;width:100%;height:100%;overflow:visible}.game-hud{--panel: #101e34;--surface: #080f20;--control: #1d3451;--hover: #29496b;--text: #f3f7ff;--muted: #9db4d3;--accent: #63ddf1;--on-accent: #082337;--border: #83bbef30;--hud-wood: #111e33;--hud-grain: #ffffff00;color:var(--text);color-scheme:dark}:root[data-theme=midnight] .game-hud{--panel: #111d35;--surface: #0b1227;--control: #25395c;--hover: #314f79;--hud-wood: #111b30}:root[data-theme=ivory] .game-hud{--hud-wood: #111e33;--hud-grain: #ffffff00}header.game-hud{gap:12px;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none;backdrop-filter:none;align-items:stretch}header.game-hud>.game-heading,header.game-hud>#score,header.game-hud>nav,footer.game-hud,.camera-zoom.game-hud{border:1px solid var(--border);border-radius:12px;background:linear-gradient(180deg,#ffffff08,transparent 45%),repeating-linear-gradient(4deg,transparent 0 5px,var(--hud-grain) 5px 6px),var(--hud-wood);box-shadow:inset 0 1px #f8df9c24,inset 0 -2px #00000040,0 5px 16px #00000035}header.game-hud>.game-heading{padding:8px 12px;border-color:#c5a76c30;background:linear-gradient(115deg,#142b48ed,#0b172bed)}.game-hud .game-heading>strong{display:flex;align-items:center;gap:8px;color:#f4f8ff;font:500 1.05rem Georgia,serif;letter-spacing:.06em}.brand-ball{display:grid;place-items:center;flex-shrink:0;width:24px;height:24px;color:#241f15;border:5px solid #171813;border-radius:50%;background:#f4f8ff;font:800 10px system-ui,sans-serif;letter-spacing:0;box-shadow:0 1px 3px #0008,inset 0 -1px 2px #0002}.game-hud #status{font-size:.65rem;line-height:1.35;color:var(--muted)}.game-hud #shotClock:not([hidden]){padding:3px 5px;border:1px solid var(--border);border-radius:4px;background:#0a1528;font:700 .7rem ui-monospace,monospace}header.game-hud #score{position:relative;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:clamp(330px,32vw,430px);align-items:stretch;gap:16px;padding:4px}header.game-hud #score:after{content:"◆";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);color:var(--accent);font-size:7px;opacity:.7}.game-hud .player-score{grid-template-columns:32px minmax(0,1fr);grid-template-rows:auto auto 22px;min-width:0;max-width:none;min-height:70px;gap:2px 8px;border:1px solid #ffffff0c;border-radius:9px;background:linear-gradient(140deg,#1b3251,#0d192c);padding:7px 10px 6px;color:#cbd9ed;box-shadow:inset 0 1px 5px #00000035;text-align:left}.game-hud .player-score.active{border-color:#63ddf180;background:linear-gradient(140deg,#164960,#10273f);color:#a2f3ff;box-shadow:inset 0 -2px #63ddf1,0 0 12px #63ddf118}.game-hud .player-name{grid-row:1;align-self:end;font-size:.74rem;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.game-hud .player-group{grid-row:2;align-self:start;color:#9db4d3;font-size:.62rem;overflow:hidden;text-overflow:ellipsis}.game-hud .player-score.active .player-group{color:#b5e5ef}.game-hud .potted-balls{grid-column:1 / -1;grid-row:3;justify-content:center;align-self:end;min-width:0;margin-top:3px}.game-hud .potted-balls.empty{color:#849ab9}.game-hud .score-ball{border-color:#0c182b}.game-hud .group-marker{grid-row:1 / 3;align-self:center;width:30px;height:30px;outline:1px solid #e9d3a72b;outline-offset:2px}header.game-hud>nav{align-items:center;gap:4px;padding:4px;align-self:center}.game-hud #mobileMenu,.menu-close-icon,.menu-description{display:none}header[data-menu-open=true] .menu-open-icon{display:none}header[data-menu-open=true] .menu-close-icon{display:inline}.game-hud .hud-action,header.game-hud #openSettings{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:5px;min-width:48px;min-height:48px;padding:6px;border:1px solid #d5b27228;border-radius:7px;background:linear-gradient(#233f61,#13253e);box-shadow:inset 0 1px #ffffff0d,0 2px #00000045;color:#e0eafa;transition:background-color .15s,border-color .15s,transform .15s}.hud-action svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}.hud-label{font:600 .52rem/1 system-ui,sans-serif;letter-spacing:.055em;text-transform:uppercase;white-space:nowrap}.game-hud .hud-action:hover:enabled{border-color:#63ddf180;background:linear-gradient(#315a80,#1b3d5d);color:#a3f4ff}.game-hud .hud-action:active:enabled{transform:translateY(1px);box-shadow:inset 0 2px 5px #0004}.game-hud .hud-action[aria-pressed=true]{background:linear-gradient(#8aeaf7,#3db5d4);color:#082337;border-color:#9aeaf6;box-shadow:inset 0 1px #fff1c4,0 2px #291d10}.game-hud .hud-action:disabled{opacity:.4;box-shadow:none}footer.game-hud{width:min(590px,calc(100% - 12px - env(safe-area-inset-left) - env(safe-area-inset-right)));gap:12px;padding:7px 10px}footer.game-hud #lockAim{min-width:52px;font-size:inherit;padding:6px}footer.game-hud .contact{gap:7px;padding-right:12px;border-color:#c5a76c30}footer.game-hud .control-label{color:#a4c1e4;font-size:.58rem;letter-spacing:.1em}footer.game-hud #tip{width:46px;height:46px;border:3px solid #ccb078;outline:1px solid #1c1a11;box-shadow:0 2px 5px #0005,inset -2px -3px 8px #5f543640}footer.game-hud #tipMark{background:#ee4264;width:7px;height:7px;box-shadow:0 0 0 2px #ffffff80}footer.game-hud #stroke{min-height:48px;border:1px solid #0a150f;border-radius:6px;background:repeating-linear-gradient(90deg,#ffffff03 0 1px,transparent 1px 4px),linear-gradient(#09182c,#152a43);box-shadow:inset 0 2px 8px #0007,0 1px #d5b27235;padding-inline:12px}footer.game-hud .cue-stick{filter:drop-shadow(0 2px 1px #0007)}footer.game-hud .power-track{position:relative;height:5px;background:#070f20;border-radius:1px}footer.game-hud .power-track span{background:linear-gradient(90deg,#78b578,#e1c26d 65%,#e7995b)}footer.game-hud .power-track:after{content:"";position:absolute;inset:0;background:repeating-linear-gradient(90deg,transparent 0 calc(5% - 1px),#0b192c calc(5% - 1px) 5%)}footer.game-hud #powerValue{padding:7px 0;border-block:1px solid #c5a76c38;color:#9aeaf6;font:700 .75rem ui-monospace,monospace}footer.game-hud .call-pocket{padding-bottom:6px;border-bottom:1px solid var(--border)}.camera-zoom.game-hud{border-radius:9px}.game-hud .zoom-label{color:#a4c1e4}.game-hud .zoom-button{color:#b8d6f4}.game-hud .zoom-button:hover{background:#16304e}@media(max-width:1100px){header.game-hud{gap:6px 10px}header.game-hud>#score{justify-self:center;width:min(430px,100%)}}@media(max-width:600px){header.game-hud{grid-template-columns:minmax(0,1fr) 44px;gap:5px}header.game-hud>.game-heading{padding:5px 9px}.game-hud .game-heading>strong{font-size:.85rem;gap:6px}.brand-ball{width:20px;height:20px;border-width:4px;font-size:8px}.game-hud #status{font-size:.6rem}header.game-hud>#score{grid-column:1 / -1;width:100%;gap:12px;padding:3px}.game-hud .player-score{grid-template-columns:28px minmax(0,1fr);grid-template-rows:auto auto 20px;min-height:64px;padding:6px 8px 5px;gap:2px 7px}.game-hud .group-marker{width:27px;height:27px}.game-hud .player-name{font-size:.7rem}.game-hud .player-group{font-size:.6rem}.game-hud #mobileMenu{display:flex;grid-column:2;grid-row:1;width:44px;min-height:44px;align-self:center;border-color:#d5b27260}header.game-hud>nav{display:none}header.game-hud>nav .hud-action,header.game-hud #openSettings{min-width:0;min-height:44px;flex:1;padding:4px;gap:4px}header.game-hud>nav .hud-action svg{width:18px;height:18px}header.game-hud>nav .hud-label{font-size:.49rem}footer.game-hud{gap:8px;padding:6px 8px}footer.game-hud #lockAim{flex:0 0 48px;min-width:48px;min-height:46px}footer.game-hud .contact{padding-right:8px}footer.game-hud #tip{width:44px;height:44px}footer.game-hud #stroke{min-height:46px}.camera-zoom.game-hud{width:36px;padding-top:5px;right:max(4px,env(safe-area-inset-right));border-radius:7px}.camera-zoom .zoom-label{font-size:.43rem;letter-spacing:.07em}.camera-zoom .zoom-button{width:34px;min-height:30px;font-size:1rem}.camera-zoom .zoom-value{min-height:28px;font-size:.58rem}.camera-zoom .zoom-ruler{width:34px;height:min(105px,16dvh)}.camera-zoom .zoom-ruler:before{left:10px;right:10px}.camera-zoom #cameraZoom{width:34px}.camera-zoom #cameraZoom::-webkit-slider-thumb{width:20px;height:4px;margin-left:-9px}.camera-zoom #cameraZoom::-moz-range-thumb{width:20px;height:4px}}@media(prefers-reduced-motion:reduce){.game-hud .hud-action{transition:none}}header.game-hud>.game-heading,header.game-hud>#score,header.game-hud>nav,footer.game-hud,.camera-zoom.game-hud{background:linear-gradient(150deg,#1b3150ee,#0b172bed);border-color:#88b9ef30;box-shadow:inset 0 1px #ffffff10,0 8px 24px #02091650;backdrop-filter:blur(16px)}.game-hud .game-heading>strong{font:750 1rem system-ui,sans-serif;letter-spacing:.02em}.game-hud .player-score{border-radius:8px}.game-hud .player-score.active{box-shadow:inset 0 -2px #63ddf1,0 0 18px #33bddd15}.game-hud .player-name{font-weight:750}.game-hud .hud-action,header.game-hud #openSettings{border-color:#91baf025;border-radius:9px}footer.game-hud #tip{border:2px solid #e6efff;outline:3px solid #63ddf12b;background:radial-gradient(circle at 30% 24%,#fff 5%,#fffbee 35%,#b6bac2)}footer.game-hud #tipMark{width:10px;height:10px;background:transparent;border:2px solid #ee4264;box-shadow:0 0 0 1px #fff9}footer.game-hud .power-track span{background:linear-gradient(90deg,#3cb7e9,#69e6df 65%,#f4ce83)}footer.game-hud .contact{flex-direction:column-reverse;gap:5px;border:0;padding-right:0}footer.game-hud .contact .control-label{display:block;font-size:.52rem}.game-hud .zoom-button{color:#c6e3ff}@media(max-width:600px){header.game-hud{top:max(8px,env(safe-area-inset-top));left:max(8px,env(safe-area-inset-left));right:max(8px,env(safe-area-inset-right));gap:6px}header.game-hud>.game-heading{border:0;background:transparent;box-shadow:none;padding:3px 4px}header.game-hud .game-brand{display:none}header.game-hud>#score{border-radius:14px;padding:4px;gap:8px}.game-hud .player-score{min-height:64px}footer.game-hud{border-radius:16px;padding:7px 10px;gap:7px 8px;bottom:max(8px,env(safe-area-inset-bottom))}.camera-zoom.game-hud .fine-aim{position:static;top:auto;right:auto;gap:6px;flex:1 1 100%;width:100%;min-width:125px;order:2;margin:0;padding:0;border:0}.camera-zoom.game-hud #fineAim{min-height:38px;border:0;background:#08162a}.camera-zoom.game-hud .fine-aim>small{display:none}footer.game-hud .contact{flex:0 0 40px}footer.game-hud #tip{width:40px;height:40px}footer.game-hud #lockAim{min-height:48px;min-width:44px;padding:4px}footer.game-hud #stroke{min-height:48px;border-radius:9px}.camera-zoom.game-hud{position:static;display:flex;align-items:center;gap:2px;order:2;flex:1 1 100%;width:auto;height:40px;padding:2px 3px;margin:0;border:1px solid var(--border);border-radius:8px;background:#08162a;box-shadow:none;transform:none}.camera-zoom.game-hud .zoom-label{display:block}.camera-zoom.game-hud .zoom-ruler{display:block;flex:1;width:auto;height:32px}.camera-zoom.game-hud .zoom-ruler:before{inset:13px 7px;background:repeating-linear-gradient(90deg,var(--muted) 0 1px,transparent 1px 10px)}.camera-zoom.game-hud .zoom-ruler:after{inset:50% 7px auto;border-left:0;border-top:1px solid var(--border)}.camera-zoom.game-hud .zoom-button{width:30px;min-height:32px;height:32px;font-size:.95rem}.camera-zoom.game-hud .zoom-value{width:auto;min-width:34px;font-size:.62rem}.camera-zoom.game-hud #cameraZoom{writing-mode:horizontal-tb;direction:ltr;width:100%;height:100%;padding:0 5px;cursor:ew-resize}.camera-zoom.game-hud #cameraZoom::-webkit-slider-runnable-track{width:100%;height:2px;background:transparent}.camera-zoom.game-hud #cameraZoom::-webkit-slider-thumb{width:5px;height:20px;margin:-9px 0 0}.camera-zoom.game-hud #cameraZoom::-moz-range-track{width:100%;height:2px;background:transparent}.camera-zoom.game-hud #cameraZoom::-moz-range-thumb{width:5px;height:20px}.camera-zoom.game-hud .fine-aim{display:none}body.compact-hud .camera-zoom.game-hud{display:flex}body.compact-hud .camera-zoom.game-hud>:not(.fine-aim){display:none}body.compact-hud .camera-zoom.game-hud .fine-aim{display:flex}}body.compatibility-table :is(#viewMode,#camera){display:none}body.compatibility-table .camera-zoom>:not(.fine-aim){display:none}body.tv-mode footer.game-hud>:not(#tvControls),body.tv-mode .camera-zoom,body.tv-mode header.game-hud>#tableActions,body.tv-mode #mobileGameMenu :is(#viewMode,#camera){display:none}body.tv-mode #tvControls{display:flex;align-items:center;gap:24px;width:100%;padding:8px 16px}body.tv-mode #tvControls>div{flex:1;min-width:0;display:grid;gap:8px}body.tv-mode #tvStep{font-size:clamp(1rem,1.5vw,1.4rem);color:var(--text)}body.tv-mode #tvHelp{font-size:clamp(.85rem,1.25vw,1.15rem);color:var(--text)}body.tv-mode #tvPower{color:var(--accent);font-size:1.6rem;font-variant-numeric:tabular-nums}body.tv-mode .ui-dialog{width:min(760px,calc(100vw - 64px));font-size:1.1rem}body.tv-mode .ui-dialog :is(button,select,input){min-height:48px;font-size:1rem}body.tv-mode .ui-dialog :is(small,.settings-note){font-size:.95rem}body.tv-mode :is(button,input,select,a):focus{outline:4px solid #ffe3a1;outline-offset:4px;box-shadow:0 0 0 7px #121d17}body.tv-mode header.game-hud{grid-template-columns:minmax(0,1fr) auto 64px}body.tv-mode header.game-hud #mobileMenu{display:flex;grid-column:3;grid-row:1;width:56px;min-height:48px}body.tv-mode .game-hud #status{font-size:.9rem}@media(max-width:600px){body.tv-mode #tvControls{gap:12px;padding:4px;flex-wrap:wrap}body.tv-mode #tvControls>div{flex-basis:70%}body.tv-mode header.game-hud{grid-template-columns:minmax(0,1fr) 64px}body.tv-mode header.game-hud #mobileMenu{grid-column:2}}.game-hud .potted-balls{gap:3px;justify-content:flex-start}.game-hud .score-ball{margin-left:0;width:18px;height:18px;font-size:7px}.game-hud .score-ball.pending{opacity:1;filter:none}.game-hud .score-ball.achieved{opacity:.22;filter:grayscale(1);box-shadow:none}.game-hud .score-ball.stripe .ball-number{width:11px;height:11px}.game-hud .player-score{grid-template-columns:24px minmax(0,1fr);gap:2px 7px;padding:7px 8px}.game-hud .group-marker{width:22px;height:22px;outline:none}.hud-toggle,.snooker-game .game-hud .potted-balls{display:none}.snooker-game .game-hud .player-score{grid-template-rows:auto auto;min-height:46px}.snooker-game .game-hud .player-score.active{border-color:#e8ad8299;box-shadow:inset 0 -2px #e8ad82}@media(max-width:600px){footer.game-hud .hud-toggle{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;flex:0 0 38px;min-width:38px;min-height:38px;height:38px;padding:2px 3px;font-size:.85rem;border-radius:8px}.hud-toggle span{font-size:.5rem;line-height:1}.game-hud .score-ball{width:clamp(12px,4vw,18px);height:clamp(12px,4vw,18px)}.game-hud .potted-balls{gap:2px}.compact-hud .game-brand{display:none}.compact-hud header.game-hud>.game-heading{display:flex;grid-column:1 / -1;grid-row:2;align-items:center;justify-content:center;padding:0;background:transparent;border:0;box-shadow:none;min-height:16px}.compact-hud header.game-hud #status{font-size:.62rem;color:#a4c1e4;text-align:center;line-height:1.2}.compact-hud header.game-hud>#score{grid-column:1;grid-row:1;border:0;padding:0;background:transparent;box-shadow:none}.compact-hud .game-hud .player-score{grid-template-columns:minmax(0,1fr);grid-template-rows:auto auto;min-height:44px;padding:5px 7px;border-radius:8px}.compact-hud .game-hud :is(.group-marker,.potted-balls){display:none}.compact-hud footer.game-hud #lockAim{display:none}.compact-hud footer.game-hud{padding:6px 8px;gap:8px}.compact-hud footer.game-hud #stroke{min-height:48px}}@media(max-width:600px){.compact-hud header.game-hud:has(#shotClock:not([hidden]))>.game-heading{display:flex}.compact-hud #shotClock:not([hidden]){width:max-content;margin-inline:auto;margin-right:6px}}@media(max-width:600px){.compact-hud header.game-hud{align-items:center;gap:8px}.compact-hud header.game-hud>#score{gap:14px}.compact-hud header.game-hud #score:after{content:"VS";font:700 8px system-ui,sans-serif;color:var(--muted);opacity:.8}.compact-hud .game-hud .player-score{grid-template-columns:16px minmax(0,1fr);gap:3px 8px;padding:8px;min-height:54px;text-align:left;border:1px solid var(--border);background:var(--panel)}.compact-hud .game-hud .player-name,.compact-hud .game-hud .player-group{grid-column:2;text-align:left}.compact-hud .game-hud .player-name{font-size:.76rem;line-height:1.2;color:var(--text)}.compact-hud .game-hud .player-group{font-size:.62rem;line-height:1.2;color:var(--muted)}.compact-hud .game-hud .group-marker{display:block;grid-column:1;grid-row:1 / 3;width:14px;height:14px;align-self:center}.compact-hud .game-hud .group-marker.solids{background:radial-gradient(circle at 30% 25%,#fff9,transparent 60%),#e8bb5a}.compact-hud .game-hud .group-marker.stripes{background:linear-gradient(#fff8e8 25%,#e8bb5a 25% 75%,#fff8e8 75%)}.compact-hud .game-hud .player-score.active{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 9%,var(--panel));box-shadow:inset 3px 0 var(--accent)}.compact-hud .game-hud .player-score.active .player-name{color:var(--accent)}.compact-hud header.game-hud #mobileMenu{min-height:44px;width:44px;border-radius:12px}}.game-hud .player-score.active{grid-template-columns:24px minmax(0,1fr) auto;border-color:var(--accent);background:linear-gradient(120deg,color-mix(in srgb,var(--accent) 22%,var(--panel)),var(--panel));box-shadow:inset 3px 0 var(--accent),0 0 12px #63ddf125}.game-hud .player-score.active .player-name{grid-column:2 / 4}.game-hud .player-turn{grid-column:3;grid-row:2;align-self:center;padding:3px 5px;border-radius:4px;background:var(--accent);color:var(--on-accent);font:800 8px/1 system-ui,sans-serif;letter-spacing:.06em}@media(max-width:600px){.compact-hud .game-hud .player-score.active{grid-template-columns:16px minmax(0,1fr) auto;background:color-mix(in srgb,var(--accent) 18%,var(--panel));border-color:var(--accent);box-shadow:inset 3px 0 var(--accent),0 0 10px #63ddf125}.compact-hud .game-hud .player-score.active .player-name{grid-column:2 / 4}.compact-hud .game-hud .player-turn{font-size:7px;padding:3px 4px}}@media(min-width:601px){.vertical-controls footer.game-hud{top:50%;bottom:auto;left:auto;right:max(8px,env(safe-area-inset-right));transform:translateY(-50%);flex-direction:column;flex-wrap:nowrap;align-items:stretch;width:76px;padding:5px;max-height:calc(100dvh - 24px);overflow-y:auto;gap:8px}.vertical-controls .camera-zoom.game-hud{left:max(8px,env(safe-area-inset-left));right:auto;grid-template-rows:auto auto minmax(60px,auto) auto auto auto;padding-bottom:8px}.vertical-controls .camera-zoom.game-hud .fine-aim{position:static;top:auto;right:auto;width:100%;margin:0;padding-top:8px;border-top:1px solid var(--border)}.vertical-controls.vertical-controls-left footer.game-hud{left:max(8px,env(safe-area-inset-left));right:auto}.vertical-controls.vertical-controls-left .camera-zoom.game-hud{left:auto;right:max(8px,env(safe-area-inset-right))}.vertical-controls footer.game-hud #lockAim{width:100%;min-width:0;min-height:42px;padding:4px 2px;flex-shrink:0}.vertical-controls footer.game-hud #lockAim svg{width:16px;height:16px}.vertical-controls footer.game-hud #lockAim .hud-label{font-size:.48rem}.vertical-controls footer.game-hud .contact{flex-direction:column-reverse;justify-content:center;align-items:center;width:100%;gap:4px;padding:0 0 6px;border:0;border-bottom:1px solid var(--border)}.vertical-controls footer.game-hud .power{display:grid;grid-template-columns:1fr;grid-template-rows:auto minmax(190px,1fr);width:100%;gap:4px}.vertical-controls footer.game-hud .power-label{display:flex;flex-direction:column;align-items:center;gap:4px}.vertical-controls footer.game-hud .power-label .control-label{max-width:none;white-space:nowrap;text-align:center;font-size:.48rem;letter-spacing:.06em}.vertical-controls footer.game-hud #powerValue{text-align:center}.vertical-controls footer.game-hud #stroke{grid-column:1;grid-row:2;display:flex;align-items:center;justify-content:space-evenly;gap:5px;width:100%;min-height:200px;padding:8px 5px;cursor:ns-resize}.vertical-controls footer.game-hud .cue-track{flex:1;min-width:0;width:36px;height:180px}.vertical-controls footer.game-hud #stroke .cue-stick{top:50%;right:auto;bottom:auto;left:calc(50% + 1px);width:180px;height:16px;transform:translate(-50%,calc(-50% + 10px)) rotate(-90deg) translate(var(--cue-pull, 0%))}.vertical-controls footer.game-hud #stroke .cue-target{top:calc(50% - 87.5px);right:auto;left:50%;transform:translate(-50%)}.vertical-controls footer.game-hud .power-track{display:flex;flex-direction:column;justify-content:flex-end;width:4px;height:180px;flex:0 0 4px}.vertical-controls footer.game-hud .power-track span{width:100%;height:var(--power, 0%);margin-top:auto}.vertical-controls footer.game-hud .power-track:after{background:repeating-linear-gradient(to top,transparent 0 calc(5% - 1px),#0b192c calc(5% - 1px) 5%)}.vertical-controls footer.game-hud #strokeHint{display:none}}.game-hud .player-score.active,.compact-hud .game-hud .player-score.active{border-color:#d6b77999;background:linear-gradient(120deg,#242c39,#151e30);box-shadow:none}.game-hud .player-score.active .player-name,.compact-hud .game-hud .player-score.active .player-name{color:#f3f7ff}.game-hud .player-turn,.compact-hud .game-hud .player-turn{display:inline-flex;align-items:center;gap:4px;padding:0;background:transparent;color:#dec18b;border-radius:0;font:600 9px/1.2 system-ui,sans-serif;letter-spacing:normal}.game-hud .player-turn:before{content:"";width:4px;height:4px;flex-shrink:0;border-radius:50%;background:#dec18b}.game-brand img{display:block;width:165px;height:auto;max-width:100%}.menu-brand{display:block;width:206px;height:auto;max-width:100%;padding:8px;border:1px solid #d9bf8838;border-radius:9px;background:#101e34}@media(max-width:600px){.game-brand img{width:150px}}@media(max-width:600px){.desktop-control-settings{display:none}}
