@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:600;src:url(/play/billiards/assets/nunito-cyrillic-ext-600-normal-CWPPjBOD.woff2) format("woff2"),url(/play/billiards/assets/nunito-cyrillic-ext-600-normal-vnfu4DTE.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:600;src:url(/play/billiards/assets/nunito-cyrillic-600-normal-DJGQ2h05.woff2) format("woff2"),url(/play/billiards/assets/nunito-cyrillic-600-normal-BUjmtIuu.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:600;src:url(/play/billiards/assets/nunito-vietnamese-600-normal-BY8O6Cug.woff2) format("woff2"),url(/play/billiards/assets/nunito-vietnamese-600-normal-DO1RqFw5.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:600;src:url(/play/billiards/assets/nunito-latin-ext-600-normal-Dd9Zuxh1.woff2) format("woff2"),url(/play/billiards/assets/nunito-latin-ext-600-normal-BKUpuB78.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:600;src:url(/play/billiards/assets/nunito-latin-600-normal-Br8yIETf.woff2) format("woff2"),url(/play/billiards/assets/nunito-latin-600-normal-Cd0eNu1l.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:800;src:url(/play/billiards/assets/nunito-cyrillic-ext-800-normal-B-cvGohL.woff2) format("woff2"),url(/play/billiards/assets/nunito-cyrillic-ext-800-normal-pjRatrRO.woff) format("woff");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:800;src:url(/play/billiards/assets/nunito-cyrillic-800-normal-D3igD7Kl.woff2) format("woff2"),url(/play/billiards/assets/nunito-cyrillic-800-normal-DymMgApb.woff) format("woff");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:800;src:url(/play/billiards/assets/nunito-vietnamese-800-normal-D_CZYdm9.woff2) format("woff2"),url(/play/billiards/assets/nunito-vietnamese-800-normal-Dz0hZPb5.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:800;src:url(/play/billiards/assets/nunito-latin-ext-800-normal-CtU8tJOV.woff2) format("woff2"),url(/play/billiards/assets/nunito-latin-ext-800-normal-CDcxIxx8.woff) format("woff");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:800;src:url(/play/billiards/assets/nunito-latin-800-normal-Dz8SOQK_.woff2) format("woff2"),url(/play/billiards/assets/nunito-latin-800-normal-D-J0wlBY.woff) format("woff");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg: #0b1220;--text: #eaf2ff;--text-dim: #9fb3c8;--accent: #f5b942;--accent-ink: #2a1d00;--surface: rgba(255, 255, 255, .06);--line: rgba(255, 255, 255, .18);--radius: 18px;--felt: #155e5a;--felt-light: #1d7570;--cushion: #104d49;--rail: #3b2a22;--brass: #c9a24a;--pocket: #0d0d0f;--pocket-rim: #24170f;--spot: rgba(234, 242, 255, .4);--cue-tip: #ece6d8;--cue-wood: #8a5a36;--cue-butt: #2a1b14;--guide: rgba(234, 242, 255, .9);--guide-faint: rgba(234, 242, 255, .35);--flash: rgba(255, 250, 235, .95);--splash: rgba(255, 236, 190, .9);--flash-scratch: #dc2626;--power-low: #22a447;--power-mid: #f5b942;--power-high: #dc2626;--ball-cue: #f8f6f0;--ball-1: #f4c430;--ball-2: #1d4ed8;--ball-3: #dc2626;--ball-4: #7c3aed;--ball-5: #f97316;--ball-6: #22a447;--ball-7: #7f1d1d;--ball-8: #111111;--ball-ink: #111111;--ball-shine: rgba(255, 255, 255, .75);--ball-shade: rgba(0, 0, 0, .38);--ball-shadow: rgba(0, 0, 0, .5);--top-bar-h: 40px;--slider-w: 56px;--shoot-size: 64px;--side-w: 72px;--control-min: 48px;font-family:Nunito,system-ui,sans-serif;font-weight:600;color:var(--text);color-scheme:dark;-webkit-tap-highlight-color:transparent}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:radial-gradient(120% 120% at 50% 50%,var(--bg) 55%,#000 100%) fixed;background-color:var(--bg);overflow:hidden;user-select:none;-webkit-user-select:none;touch-action:manipulation}.screen{height:100%;display:flex;flex-direction:column;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left)}.home{justify-content:center;align-items:center;gap:16px;text-align:center}.home h1{margin:0;font-weight:800;font-size:44px;letter-spacing:.02em}.home .version{margin:0;color:var(--text-dim);font-size:13px}.game{display:grid;grid-template-columns:minmax(0,1fr) var(--side-w);grid-template-rows:var(--top-bar-h) minmax(0,1fr)}.top-bar{grid-column:1 / -1;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:0 16px;font-size:15px}.top-bar .count{color:var(--text-dim)}.top-bar .count b{margin-left:6px;color:var(--text);font-weight:800}.table-area{position:relative;min-width:0;min-height:0}.table-area canvas{position:absolute;inset:0;width:100%;height:100%;touch-action:none}.side{display:flex;flex-direction:column;align-items:center;gap:8px;min-height:0;padding:4px 0 8px}.power{position:relative;flex:1;width:var(--slider-w);min-height:var(--control-min);border-radius:14px;background:linear-gradient(to top,var(--power-low),var(--power-mid) 55%,var(--power-high));border:1px solid var(--line);overflow:hidden;touch-action:none;cursor:ns-resize}.power .rest{position:absolute;inset:0 0 auto;background:var(--bg)}.power .knob{position:absolute;left:4px;right:4px;height:4px;margin-top:-2px;border-radius:2px;background:var(--text)}.power[aria-disabled=true],.shoot:disabled{opacity:.4}.shoot{flex:none;width:var(--shoot-size);height:var(--shoot-size);border:none;border-radius:50%;background:var(--accent);color:var(--accent-ink);font:inherit;font-weight:800;font-size:14px}:root{--sheet-bg: #142033;--scrim: rgba(0, 0, 0, .65);--tray-size: 20px}button{min-width:var(--control-min);min-height:var(--control-min);border:1px solid var(--line);border-radius:12px;padding:8px 16px;background:var(--surface);color:var(--text);font:inherit;font-weight:800;cursor:pointer}button:focus-visible,input:focus-visible{outline:3px solid var(--accent);outline-offset:2px}button.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}.home{position:relative;flex-direction:row;gap:clamp(24px,7vw,100px);padding:24px}.home-settings{position:absolute;top:max(8px,env(safe-area-inset-top));right:max(12px,env(safe-area-inset-right))}.home-brand,.home-actions{display:flex;flex-direction:column;align-items:center;gap:12px}.home-actions{min-width:260px}.home-actions>button{width:100%}p{margin:8px 0}.stats{display:flex;gap:24px;color:var(--text-dim)}.mark{display:block;width:112px;height:90px;object-fit:contain}.game{grid-template-rows:max(var(--top-bar-h),var(--control-min)) minmax(0,1fr)}.top-bar{gap:8px;padding:0 8px}.top-bar button{padding:0;font-size:24px;flex:none}.top-bar .count{white-space:nowrap}.tray{display:flex;justify-content:center;gap:2px;flex:1;min-width:0}.tray-slot{width:var(--tray-size);height:var(--tray-size);flex-shrink:0;border:1px solid var(--line);border-radius:50%;background:var(--surface);display:grid;place-items:center}.tray-slot.filled{background:var(--ball-color)}.tray-slot.stripe{background:linear-gradient(var(--ball-cue) 23%,var(--ball-color) 23% 77%,var(--ball-cue) 77%)}.tray-slot b{width:12px;height:12px;border-radius:50%;background:var(--ball-cue);color:var(--ball-ink);font-size:9px;line-height:12px;text-align:center}.scratch{position:absolute;top:8px;left:50%;transform:translate(-50%);border:1px solid var(--power-high);border-radius:12px;padding:10px 16px;background:var(--sheet-bg);white-space:nowrap;pointer-events:none}.sheet{width:min(560px,calc(100% - 32px));max-height:calc(100% - 24px);padding:20px;border:1px solid var(--line);border-radius:var(--radius);background:var(--sheet-bg);color:var(--text)}.sheet::backdrop{background:var(--scrim)}.sheet-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:12px}.sheet h2{font-size:24px;margin:0}.sheet h3{margin:0 0 8px;font-size:16px;color:var(--text-dim)}.sheet-heading button{padding:0;font-size:24px}.languages{display:flex;gap:8px}.languages button{display:flex;gap:8px;align-items:center;padding:8px 12px}.languages img{width:28px;height:20px;object-fit:cover;border-radius:3px}.languages [aria-pressed=true]{border-color:var(--accent)}.settings-grid{display:grid;grid-template-columns:1.3fr 1fr;gap:20px}.toggles label{display:flex;align-items:center;justify-content:space-between;min-height:var(--control-min);gap:8px;cursor:pointer}.toggles input{width:24px;height:24px;accent-color:var(--accent)}.reset{margin-top:16px}.actions{display:flex;gap:12px;margin-top:16px}.actions button{flex:1}.win-body{text-align:center}.stars{font-size:36px;line-height:1;color:var(--accent)}.score{font-size:26px;font-weight:800}.new-best{color:var(--accent)}@media(max-width:700px){:root{--tray-size: 17px}.tray{gap:1px}.top-bar{font-size:13px;gap:6px}.home h1{font-size:36px}}@media(orientation:portrait)and (max-width:600px){.home{flex-direction:column}.home-actions{min-width:0;width:min(100%,260px)}}:root{--scrim-win: rgba(0, 0, 0, .4);--ease-pop: cubic-bezier(.3, 1.6, .5, 1);--star-step: .28s;--star-start: .3s}button{transition:transform 90ms ease-out,filter 90ms ease-out}button:active:not(:disabled){transform:scale(.94);filter:brightness(1.12)}.shoot:active:not(:disabled){transform:scale(.9)}@keyframes float{0%,to{transform:translateY(-4px) rotate(-2deg)}50%{transform:translateY(5px) rotate(2deg)}}.mark{animation:float 3.6s ease-in-out infinite}@keyframes sheet-in{0%{transform:translateY(48px);opacity:0}}@keyframes sheet-out{to{transform:translateY(48px);opacity:0}}@keyframes fade-in{0%{opacity:0}}@keyframes fade-out{to{opacity:0}}.sheet[open]{animation:sheet-in .24s cubic-bezier(.2,.9,.3,1)}.sheet[open]::backdrop{animation:fade-in .24s ease-out}.sheet[data-closing]{animation:sheet-out .18s ease-in forwards}.sheet[data-closing]::backdrop{animation:fade-out .18s ease-in forwards}.sheet.win::backdrop{background:var(--scrim-win)}@keyframes notice-in{0%{transform:translate(-50%,-32px);opacity:0}}.scratch{animation:notice-in .22s cubic-bezier(.2,.9,.3,1)}@keyframes pop{0%{transform:scale(.2);opacity:0}70%{transform:scale(1.25);opacity:1}}.tray-slot[data-pop]{animation:pop .28s .16s var(--ease-pop) backwards}.star{display:inline-block}@keyframes star-pop{0%{transform:scale(0) rotate(-40deg);opacity:0}60%{transform:scale(1.35) rotate(8deg);opacity:1}}.star.on{animation:star-pop .38s var(--ease-pop) backwards;animation-delay:calc(var(--star-start) + var(--i) * var(--star-step));text-shadow:0 0 12px var(--accent)}@keyframes rise{0%{transform:translateY(10px);opacity:0}}.win-body .score,.win-body .win-best{animation:rise .28s ease-out backwards;animation-delay:calc(var(--star-start) + var(--stars) * var(--star-step))}@keyframes new-best{0%{transform:scale(.4) rotate(-6deg);opacity:0}55%{transform:scale(1.3) rotate(3deg);opacity:1}to{transform:none}}@keyframes shimmer{to{background-position:-200% 0}}.new-best{font-size:20px;font-weight:800;letter-spacing:.04em;background:linear-gradient(100deg,var(--accent) 35%,var(--text) 50%,var(--accent) 65%) 0 0 / 200% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:new-best .52s var(--ease-pop) backwards,shimmer 1.6s linear infinite;animation-delay:calc(var(--star-start) + var(--stars) * var(--star-step) + .25s),0s}@media(prefers-reduced-motion:reduce){*,*:before,*:after,::backdrop{animation:none!important;transition:none!important}.new-best{color:var(--accent);background:none}}
