:root{color-scheme:dark;--felt: #0e6f58;--felt-dark: #064237;--rail: #302017;--rail-lit: #5b3b26;--brass: #d5a74a;--chalk: #eef4e6;--ink: #0b0d0c;--panel: rgba(10, 16, 14, .78);--line: rgba(238, 244, 230, .16);--muted: rgba(238, 244, 230, .68);--danger: #d9694f;--ok: #8bd06a}body.theme-light{--chalk: #16241f;--muted: rgba(22, 36, 31, .66);--line: rgba(22, 36, 31, .16);--panel: rgba(248, 250, 246, .88)}body.theme-light .meter,body.theme-light .match-row .meter,body.theme-light .break-bar .break-now,body.theme-light .break-bar .break-high{background:#ffffffb8}body.theme-light .meter span,body.theme-light .match-row .meter span,body.theme-light .break-bar span,body.theme-light .break-bar .break-high strong{color:var(--muted)}body.theme-light .turn-tag{color:var(--chalk);background:#ffffffa8}body.theme-light .result-btn{background:var(--brass);color:var(--ink)}body.theme-light .segmented{background:#0000000f}body.theme-light .start-card{background:radial-gradient(140% 90% at 50% -10%,rgba(213,167,74,.16),transparent 55%),linear-gradient(180deg,#fcfdfaf5,#f0f4eefa)}body.theme-light .start-screen{background:radial-gradient(120% 80% at 50% 8%,rgba(120,190,168,.22),transparent 60%),radial-gradient(100% 100% at 50% 120%,rgba(120,130,125,.18),transparent 55%),#d6deda8c}*{box-sizing:border-box}html,body{margin:0;min-height:100%;overflow:hidden;background:var(--ink);color:var(--chalk);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}button,input{font:inherit}#game{position:fixed;inset:0;touch-action:none}body.cue-in-hand #game{cursor:grab}body.cue-in-hand.placing-cue #game{cursor:grabbing}.hud{position:fixed;left:16px;right:16px;bottom:16px;z-index:5;display:flex;align-items:flex-start;justify-content:center;gap:8px;pointer-events:none}.brand,.panel,.toast{border:1px solid var(--line);background:var(--panel);backdrop-filter:blur(16px);box-shadow:0 18px 60px #00000057}.panel{transition:opacity .28s ease;opacity:.82}body.balls-moving .panel{opacity:.16}.brand{display:none}.toast{display:none!important}h1{margin:0;font-size:clamp(22px,4vw,46px);line-height:.95;letter-spacing:0;text-transform:uppercase;font-family:Georgia,Times New Roman,serif;font-weight:700}.sub{margin-top:8px;color:var(--muted);font-size:13px;line-height:1.35;max-width:560px}.panel{position:relative;width:min(760px,calc(100vw - 84px));margin:0 auto;padding:6px;border:1px solid rgba(238,244,230,.22);border-radius:6px;background:linear-gradient(180deg,#eef4e614,#eef4e600),#050807e0;box-shadow:0 18px 54px #00000070,inset 0 1px #ffffff14;backdrop-filter:blur(14px);pointer-events:none}.panel:before{display:none}.score-row{display:none;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-bottom:10px}.match-row{display:grid;grid-template-columns:minmax(116px,1fr) minmax(116px,1fr);gap:0;margin-bottom:4px;border-radius:4px;overflow:hidden;border:1px solid rgba(238,244,230,.14);background:#eef4e60a}body.solo-mode .match-row,.break-bar{display:none}body.snooker .break-bar{display:grid;grid-template-columns:1fr 1fr;margin-bottom:8px;border-radius:4px;overflow:hidden;border:1px solid rgba(238,244,230,.14);background:#eef4e60a}.break-bar .break-now,.break-bar .break-high{display:flex;align-items:baseline;justify-content:space-between;gap:8px;padding:5px 10px;background:#070c0aeb}.break-bar .break-high{border-left:1px solid rgba(238,244,230,.1)}.break-bar span{font-size:11px;text-transform:uppercase;letter-spacing:.03em;color:#eef4e69e}.break-bar strong{font-size:20px;font-weight:950;font-variant-numeric:tabular-nums;color:var(--chalk);transition:color .18s ease}.break-bar .break-high strong{font-size:15px;color:#eef4e6cc}.break-bar.you .break-now strong{color:#d5a74a}.break-bar.ai .break-now strong{color:#60b3ff}body.training .match-row,body.training .break-bar,body.training .power-meter{display:none}body.training .score-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}body.snooker .pocketed-rack,body.snooker .hit-lamps{display:none}.match-row .meter.active{border-color:#d5a74a9e;background:linear-gradient(90deg,#d5a74a47,#d5a74a14),#eef4e614}.turn-tag{position:fixed;top:16px;left:50%;transform:translate(-50%);z-index:7;min-height:0;max-width:min(360px,calc(100vw - 92px));padding:5px 8px;border:1px solid rgba(238,244,230,.16);border-radius:4px;text-align:center;font-size:11px;line-height:1.1;font-weight:850;letter-spacing:0;color:#eef4e6d6;background:#0508078f;backdrop-filter:blur(10px);display:block;text-transform:uppercase;pointer-events:none}.turn-tag.you{color:var(--chalk)}.turn-tag.ai{color:#f1b24a}.turn-tag.over{color:#8fd6a0}.ball-pip{display:inline-block;flex:0 0 auto;width:20px;height:20px;border-radius:50%;vertical-align:middle;margin-left:7px;border:1px solid rgba(0,0,0,.35);box-shadow:inset -3px -3px 4px #0006,inset 2px 2px 3px #fff9}.ball-pip.solid{background:radial-gradient(circle at 34% 30%,#f4d572 0 18%,#e0a92e 70%,#b9831f)}.ball-pip.stripe{background:#f6f2e6;position:relative;overflow:hidden}.ball-pip.stripe:after{content:"";position:absolute;left:0;right:0;top:50%;transform:translateY(-50%);height:50%;background:linear-gradient(180deg,#e8b53a,#cf8f24)}.meter{min-width:0;min-height:50px;padding:7px 9px;border:0;border-radius:0;background:#070c0aeb;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px}.match-row .meter{grid-template-columns:26px minmax(0,1fr) minmax(24px,auto);overflow:hidden}.match-row .meter:before{content:"";grid-column:1;grid-row:1;justify-self:center;width:22px;height:22px;min-width:22px;border:1px solid rgba(238,244,230,.24);border-radius:50%;background:#eef4e614;box-shadow:inset 0 1px #ffffff1f,0 4px 10px #00000038}.human-meter:before{background:radial-gradient(circle at 50% 36%,rgba(238,244,230,.96) 0 22%,transparent 24%),radial-gradient(ellipse at 50% 86%,rgba(238,244,230,.96) 0 36%,transparent 38%),#eef4e614}.ai-meter:before{border-radius:5px;background:radial-gradient(circle at 32% 38%,#60b3ff 0 8%,transparent 10%),radial-gradient(circle at 68% 38%,#60b3ff 0 8%,transparent 10%),linear-gradient(#60b3ff 0 0) 50% 70% / 44% 2px no-repeat,#60b3ff1f;border-color:#60b3ff6b}.match-row .meter:first-of-type{grid-column:1;grid-row:1}.match-row .meter:nth-of-type(2){grid-column:2;grid-row:1}.meter span{display:block;min-width:0;color:#eef4e6d1;font-size:12px;line-height:1.2;text-transform:uppercase;letter-spacing:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.meter strong{display:block;min-width:24px;margin-top:0;color:var(--chalk);font-size:28px;line-height:1;font-weight:950;font-variant-numeric:tabular-nums;text-align:right;justify-self:end}.match-row .meter span{grid-column:2;grid-row:1;display:flex;align-items:center;overflow:visible}.match-row .meter strong{grid-column:3;grid-row:1}.hit-lamps{display:none;grid-template-columns:repeat(3,1fr);gap:7px;margin-bottom:10px}.lamp{height:34px;border:1px solid var(--line);border-radius:999px;background:#ffffff0a;color:var(--muted);display:grid;place-items:center;font-size:12px;font-weight:800;letter-spacing:0;text-transform:uppercase;transition:background .18s ease,color .18s ease,border-color .18s ease}.lamp.on{border-color:#d5a74ab8;background:#d5a74a38;color:var(--chalk)}.pocketed-rack{display:grid;grid-template-columns:1fr;align-items:center;gap:8px;margin-bottom:0;padding:5px 7px;border:1px solid rgba(238,244,230,.12);border-radius:4px;background:linear-gradient(90deg,#eef4e614,#eef4e608);backdrop-filter:none;box-shadow:none}.rack-label,.rack-count{display:none;color:var(--muted);font-size:10px;font-weight:800;line-height:1;text-transform:uppercase;letter-spacing:0;white-space:nowrap}.rack-label{display:none;color:#d5a74a}.ball-strip{display:grid;grid-template-columns:repeat(8,minmax(0,22px));gap:4px;justify-content:start;min-width:0;width:100%}#pocketedRack{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:center;gap:12px;width:100%}#pocketedRack .ball-strip:nth-child(2){justify-content:end}.ball-chip{position:relative;display:grid;place-items:center;width:22px;height:22px;min-width:0;border-radius:50%;border:1px solid rgba(255,255,255,.48);color:#111;font-size:11px;font-weight:900;line-height:1;box-shadow:inset 0 0 0 2px #f7f3e885,0 5px 12px #0000002e;opacity:.4;transform:scale(.88)}.ball-chip.solid{background:var(--ball-color)}.ball-chip.stripe{background:#f7f3e8}.ball-chip.stripe:before{content:"";position:absolute;inset:28% 0;background:var(--ball-color);z-index:0}.ball-chip span{position:relative;z-index:1;display:grid;place-items:center;width:70%;height:70%;border-radius:50%;background:#f7f3e8;color:#050505;font-weight:950;box-shadow:0 0 0 1px #000000ad,0 1px 2px #00000059;text-shadow:0 1px 0 rgba(255,255,255,.75)}.ball-chip.stripe span{box-shadow:0 0 0 1.5px #000000c7,0 1px 3px #00000075}.ball-chip.down{opacity:1;transform:scale(1);box-shadow:inset 0 0 0 2px #f7f3e8b8,0 0 18px #d5a74a5c}.settings-menu{position:fixed;top:16px;right:16px;pointer-events:auto;display:flex;gap:8px;align-items:flex-start}.menu-btn.muted{opacity:.42}.compact-toggle{position:absolute;top:7px;right:7px;z-index:3;width:26px;height:26px;display:grid;place-items:center;border:1px solid var(--line);border-radius:6px;background:#eef4e614;color:var(--muted);cursor:pointer;pointer-events:auto}.compact-toggle:hover{color:var(--chalk);border-color:#d5a74a99}.compact-score{position:fixed;top:16px;left:16px;z-index:30;display:none;align-items:center;gap:12px;padding:7px 9px;border:1px solid var(--line);border-top:3px solid var(--brass);border-radius:10px;background:var(--panel);backdrop-filter:blur(16px);box-shadow:0 18px 60px #00000057;pointer-events:auto}body.hud-compact .compact-score{display:flex}body.hud-compact .panel,body.hud-compact .brand{display:none}.compact-score .cs-item{display:inline-flex;align-items:baseline;gap:6px}.compact-score em{font-style:normal;font-size:10px;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}.compact-score b{font-size:15px;font-weight:800;color:var(--chalk)}.compact-score .cs-sep{width:1px;height:16px;background:var(--line)}.compact-expand{margin-left:2px;width:26px;height:26px;display:grid;place-items:center;border:1px solid var(--line);border-radius:6px;background:#eef4e614;color:var(--chalk);cursor:pointer}.compact-expand:hover{border-color:#d5a74a99}.menu-btn{position:relative;z-index:32;width:36px;height:36px;border:1px solid var(--line);border-radius:6px;background:var(--panel);color:var(--chalk);display:grid;place-items:center;cursor:pointer;backdrop-filter:blur(16px);box-shadow:0 18px 60px #00000057}.menu-btn:hover,.menu-btn:focus-visible{border-color:#d5a74ac7;outline:none}.settings-panel{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);width:min(620px,94vw);max-height:86vh;overflow-y:auto;display:none;gap:8px;padding:16px;border:1px solid var(--line);border-top:4px solid var(--brass);border-radius:14px;background:var(--panel);backdrop-filter:blur(16px);z-index:31;box-shadow:0 30px 80px #0009}.settings-menu.open .settings-panel{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));box-shadow:0 30px 80px #0009,0 0 0 100vmax #060908b8;animation:start-fade .25s ease both}#settingsPanel label:has(#nameInput),#resetSettingsBtn{grid-column:1 / -1}.settings-action,.settings-toggle{min-height:36px;border:1px solid var(--line);border-radius:6px;background:#eef4e614;color:var(--chalk);display:flex;align-items:center;justify-content:space-between;gap:10px;padding:0 10px;font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:0}.settings-action{cursor:pointer}.settings-action:hover,.settings-action:focus-visible{border-color:#d5a74ac7;outline:none}.settings-toggle input{width:34px;accent-color:var(--brass)}.controls{display:none;grid-template-columns:1fr auto auto;gap:8px;align-items:center}.power{min-width:0;display:grid;gap:6px}.power label{color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:0}input[type=range]{width:100%;accent-color:var(--brass)}.icon-btn{width:42px;height:42px;border:1px solid var(--line);border-radius:6px;background:#eef4e614;color:var(--chalk);cursor:pointer;display:grid;place-items:center;transition:border-color .16s ease,background .16s ease,transform .16s ease}.icon-btn:hover,.icon-btn:focus-visible{border-color:#d5a74ac7;background:#d5a74a2e;outline:none}.icon-btn:active{transform:translateY(1px)}.toast{position:fixed;left:50%;bottom:18px;transform:translate(-50%);max-width:min(620px,calc(100vw - 36px));min-height:44px;padding:12px 16px;border-radius:8px;border:1px solid var(--line);background:#0e110fd1;color:var(--chalk);font-size:13px;line-height:1.35;z-index:6;pointer-events:none;animation:toast-in .22s ease both}@keyframes toast-in{0%{opacity:0;transform:translate(-50%) translateY(6px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.online-bar{position:fixed;top:12px;left:50%;transform:translate(-50%);display:none;align-items:center;gap:8px;max-width:calc(100vw - 24px);padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:#0e110feb;color:var(--chalk);font-size:12px;z-index:8}body.online .online-bar{display:flex}.online-link{width:230px;max-width:42vw;padding:5px 8px;border:1px solid var(--line);border-radius:6px;background:#ffffff0d;color:var(--muted);font:inherit}.online-btn{appearance:none;border:1px solid var(--line);border-radius:6px;padding:5px 10px;font:inherit;color:var(--chalk);background:#ffffff0f;cursor:pointer}.online-btn:hover{filter:brightness(1.15)}body:not(.online-room) .online-link,body:not(.online-room) #copyLink{display:none}.toast.good{border-color:#8bd06a8c}.toast.bad{border-color:#d9694f8c}.stroke-hud{position:fixed;left:50%;bottom:250px;width:min(420px,calc(100vw - 36px));transform:translate(-50%) translateY(8px);padding:10px 12px 12px;border:1px solid rgba(213,167,74,.45);border-radius:8px;background:var(--panel);color:var(--chalk);opacity:0;pointer-events:none;transition:opacity .12s ease,transform .12s ease;z-index:7}.stroke-hud.active{opacity:1;transform:translate(-50%) translateY(0)}.stroke-hud-top{display:flex;justify-content:space-between;gap:12px;margin-bottom:8px;color:var(--muted);font-size:12px;font-weight:800;text-transform:uppercase}.stroke-track{height:10px;overflow:hidden;border:1px solid rgba(238,244,230,.2);border-radius:999px;background:#eef4e614}.stroke-track{display:none}.stroke-fill{width:8%;height:100%;border-radius:inherit;background:linear-gradient(90deg,#8bd06a,#d5a74a,#d9694f);transition:width 70ms linear}.stroke-cue{position:relative;height:22px;margin-top:4px;overflow:hidden}.stroke-cue-stick{position:absolute;left:4px;right:30px;top:50%;height:8px;border-radius:4px 2px 2px 4px;background:linear-gradient(90deg,#5b3d22,#8a5d33 45%,#c08a4c);box-shadow:inset 0 -2px 2px #00000059,0 1px 2px #0006;transform:translateY(-50%);transition:transform 70ms linear}.stroke-cue-stick:after{content:"";position:absolute;right:-9px;top:50%;transform:translateY(-50%);width:9px;height:8px;border-radius:1px 3px 3px 1px;background:linear-gradient(90deg,#efe6cf 0 50%,#3a6ea5 50% 100%)}.stroke-cue-ball{position:absolute;right:2px;top:50%;transform:translateY(-50%);width:16px;height:16px;border-radius:50%;background:radial-gradient(circle at 34% 30%,#fff 0 30%,#d8d2c2 70%,#8c8675);box-shadow:inset -2px -3px 4px #0000004d}.strike-widget{position:fixed;right:18px;bottom:18px;display:none;width:118px;padding:10px;border:1px solid var(--line);border-radius:8px;background:var(--panel);color:var(--muted);font-size:11px;font-weight:800;text-transform:uppercase;z-index:6;pointer-events:none}body.strike-visible .strike-widget{display:block}body.precision-aim .strike-widget{border-color:#60b3ffad}.strike-ball{position:relative;width:86px;height:86px;margin:0 auto 8px;border-radius:50%;background:radial-gradient(circle at 34% 28%,#fff 0 10%,#eee9da 26%,#bfb7a3 72%,#766f61);box-shadow:inset -12px -16px 26px #00000040,0 12px 30px #0000004d}.strike-ball:before,.strike-ball:after{content:"";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background:#14100d47}.strike-ball:before{width:64%;height:1px}.strike-ball:after{width:1px;height:64%}.strike-dot{position:absolute;left:50%;top:50%;width:13px;height:13px;transform:translate(-50%,-50%);border:2px solid #fff2df;border-radius:50%;background:#d83a2f;box-shadow:0 0 0 2px #d83a2f47,0 3px 8px #00000059}.load-error{position:fixed;inset:0;display:none;place-items:center;padding:28px;background:var(--ink);z-index:10}.load-error>div{max-width:560px;border:1px solid var(--line);border-radius:8px;padding:18px;background:var(--panel)}.load-error h2{margin:0 0 8px;font-size:22px}.load-error p{margin:0;color:var(--muted);line-height:1.45}body.cdn-failed .load-error{display:grid}.result-screen{position:fixed;inset:0;display:none;place-items:center;padding:28px;background:#080a099e;backdrop-filter:blur(3px);z-index:12}body.match-over .result-screen{display:grid}.result-card{min-width:280px;max-width:420px;text-align:center;border:1px solid var(--line);border-top:4px solid var(--line);border-radius:12px;padding:26px 26px 22px;background:var(--panel);box-shadow:0 24px 60px #00000073;animation:result-pop .32s cubic-bezier(.2,.9,.3,1.3) both}body.match-over.win-result .result-card{border-top-color:#8bd06a}body.match-over.lose-result .result-card{border-top-color:#d9694f}.result-card h2{margin:0 0 8px;font-size:30px;letter-spacing:.01em}.result-card p{margin:0 0 18px;color:var(--muted);font-size:14px;line-height:1.45}.result-btn{appearance:none;border:1px solid var(--line);border-radius:8px;padding:11px 22px;font:inherit;font-weight:700;color:var(--ink);background:var(--chalk);cursor:pointer;transition:transform .08s ease,filter .12s ease}.result-btn:hover{filter:brightness(1.08)}.result-btn:active{transform:scale(.97)}.result-hint{margin-top:10px;color:var(--muted);font-size:12px}.start-screen{position:fixed;inset:0;display:none;place-items:center;padding:26px;z-index:30;background:radial-gradient(120% 80% at 50% 8%,rgba(21,120,96,.28),transparent 60%),radial-gradient(100% 100% at 50% 120%,rgba(0,0,0,.55),transparent 55%),#060908b8;backdrop-filter:blur(6px);animation:start-fade .35s ease both}body.pre-game .start-screen{display:grid}.start-card{width:min(360px,92vw);text-align:center;border:1px solid var(--line);border-top:4px solid var(--brass);border-radius:16px;padding:30px 28px 24px;background:radial-gradient(140% 90% at 50% -10%,rgba(213,167,74,.14),transparent 55%),linear-gradient(180deg,#0e1613f5,#080d0bfa);box-shadow:0 30px 80px #0009,inset 0 1px #ffffff0d;animation:result-pop .4s cubic-bezier(.2,.9,.3,1.3) both}.start-brand{display:flex;align-items:center;justify-content:center;gap:12px}.start-ball{width:26px;height:26px;border-radius:50%;background:radial-gradient(circle at 36% 32%,#fff 0 18%,#eef2e6 28%,#c9cebd 70%,#9aa08d);box-shadow:inset 0 -2px 4px #00000059,0 3px 8px #00000080}.start-brand h1{margin:0;font-size:40px;font-weight:900;letter-spacing:.03em;color:var(--chalk)}.start-tagline{margin:8px 0 22px;color:var(--muted);font-size:13.5px;line-height:1.45}.start-field{text-align:left;margin-bottom:16px}.start-label{display:block;margin:0 0 7px 2px;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.segmented{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:4px;padding:4px;border:1px solid var(--line);border-radius:10px;background:#00000047}.segmented button{appearance:none;border:0;border-radius:7px;padding:10px 8px;font-weight:700;font-size:14px;color:var(--muted);background:transparent;cursor:pointer;transition:background .15s ease,color .15s ease,transform .08s ease}.segmented button:hover{color:var(--chalk)}.segmented button:active{transform:scale(.97)}.segmented button.on{color:var(--ink);background:linear-gradient(180deg,#e7c477,var(--brass));box-shadow:0 2px 8px #d5a74a4d}.start-btn{appearance:none;width:100%;margin-top:6px;border:1px solid transparent;border-radius:10px;padding:14px;font-weight:800;font-size:16px;letter-spacing:.01em;color:var(--ink);background:linear-gradient(180deg,#eace82,var(--brass));cursor:pointer;transition:filter .12s ease,transform .08s ease}.start-btn:hover{filter:brightness(1.06)}.start-btn:active{transform:scale(.98)}.start-btn.ghost{margin-top:10px;color:var(--chalk);background:transparent;border-color:var(--line)}.start-btn.ghost:hover{background:#eef4e60f}.start-hint{margin-top:16px;color:var(--muted);font-size:11.5px;letter-spacing:.02em}@keyframes start-fade{0%{opacity:0}to{opacity:1}}.start-link{appearance:none;margin:14px auto 0;display:block;border:0;background:none;color:var(--muted);font-size:13px;font-weight:600;text-decoration:underline;text-underline-offset:3px;cursor:pointer}.start-link:hover{color:var(--chalk)}.tutorial-screen{position:fixed;inset:0;display:none;place-items:center;padding:26px;z-index:60;background:#060908c7;backdrop-filter:blur(6px);animation:start-fade .3s ease both}body.show-tutorial .tutorial-screen,body.show-credits #creditsScreen{display:grid}.credits-card{max-width:560px}.credits-intro{margin:0 0 14px;font-size:13px;color:var(--muted)}.credits-body{max-height:52vh;overflow-y:auto;margin-bottom:18px;text-align:left}.credits-body h3{margin:14px 0 6px;font-size:12.5px;letter-spacing:.02em;color:var(--chalk)}.credits-body h3:first-child{margin-top:0}.credits-body ul{margin:0;padding-left:18px}.credits-body li{font-size:12.5px;line-height:1.5;color:var(--muted)}.credits-body a{color:var(--brass);text-decoration:none}.credits-body a:hover{text-decoration:underline}.credits-foot{margin:14px 0 0;font-size:12px;color:var(--muted)}.tutorial-card{width:min(440px,94vw);max-height:88vh;overflow-y:auto;border:1px solid var(--line);border-top:4px solid var(--brass);border-radius:16px;padding:26px 26px 22px;background:linear-gradient(180deg,#0e1613f7,#080d0bfa);box-shadow:0 30px 80px #0009;animation:result-pop .38s cubic-bezier(.2,.9,.3,1.3) both}body.theme-light .tutorial-card{background:linear-gradient(180deg,#fcfdfaf7,#f0f4eefa)}.tutorial-card h2{margin:0 0 16px;font-size:24px;text-align:center;color:var(--chalk)}.tutorial-list{list-style:none;margin:0 0 20px;padding:0;display:grid;gap:11px}.tutorial-credits{margin:0 0 18px;font-size:11px;line-height:1.5;color:var(--muted);opacity:.8}.tutorial-credits a{color:var(--brass);text-decoration:none}.tutorial-credits a:hover{text-decoration:underline}.tutorial-list li{display:grid;grid-template-columns:104px 1fr;gap:12px;align-items:start;font-size:13.5px;line-height:1.4;color:var(--muted)}.tut-key{justify-self:start;padding:4px 8px;border:1px solid var(--line);border-radius:7px;background:#d5a74a1f;color:var(--chalk);font-size:12px;font-weight:700;white-space:nowrap;text-align:center}.tutorial-card .start-btn{margin-top:4px}@keyframes result-pop{0%{opacity:0;transform:scale(.9) translateY(8px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes foul-pulse{0%,to{box-shadow:0 0 #d9694f00}30%{box-shadow:0 0 0 2px #d9694fd9}}body.foul .match-row{animation:foul-pulse .9s ease;border-radius:6px}.turn-tag.ai:after{content:"";display:inline-block;width:7px;height:7px;margin-left:7px;border-radius:50%;background:currentColor;vertical-align:middle;animation:ai-blink .9s ease-in-out infinite}@keyframes ai-blink{0%,to{opacity:.25}50%{opacity:1}}@media (max-width: 760px){.hud{left:10px;right:10px;bottom:10px;justify-content:center}.brand{padding:10px 12px}.sub{display:none}.panel{width:calc(100vw - 20px);padding:5px}.match-row{grid-template-columns:minmax(112px,1fr) minmax(112px,1fr)}.match-row .meter{grid-template-columns:22px minmax(0,1fr) minmax(20px,auto);gap:5px}.match-row .meter:before{width:19px;height:19px;min-width:19px}.pocketed-rack{grid-template-columns:1fr;gap:5px}.rack-label,.rack-count{font-size:9px}.meter{min-height:46px;padding:6px}.meter strong{font-size:21px}.meter span,.turn-tag{font-size:10px}.ball-strip{grid-template-columns:repeat(8,minmax(0,17px));gap:2px}#pocketedRack{gap:6px}.ball-chip{width:17px;height:17px;font-size:9px}.controls{grid-template-columns:1fr repeat(2,40px)}.icon-btn{width:40px;height:40px}}.landing{position:fixed;inset:0;z-index:50;display:none;overflow-y:auto;overflow-x:hidden;color:#eef4e6;background:radial-gradient(80% 55% at 50% -8%,rgba(21,120,96,.34),transparent 60%),radial-gradient(55% 45% at 88% 12%,rgba(213,167,74,.12),transparent 60%),linear-gradient(180deg,#0a1310,#070b0a 42%,#060807)}body.show-landing .landing{display:block}.landing-nav{display:flex;align-items:center;justify-content:space-between;max-width:1080px;margin:0 auto;padding:20px 24px}.landing-logo{display:flex;align-items:center;gap:10px;font-weight:900;font-size:20px;letter-spacing:.02em}.landing-navbtn{appearance:none;border:1px solid rgba(238,244,230,.16);background:#ffffff0a;color:#eef4e6;padding:8px 20px;border-radius:999px;font-weight:700;cursor:pointer;transition:background .15s ease}.landing-navbtn:hover{background:#ffffff1a}.landing-hero{max-width:1080px;margin:0 auto;padding:44px 24px 34px;display:grid;grid-template-columns:1.08fr .92fr;gap:44px;align-items:center;min-height:60vh}.hero-eyebrow{text-transform:uppercase;letter-spacing:.14em;font-size:12px;font-weight:700;color:var(--brass);margin-bottom:16px}.hero-title{font-size:clamp(46px,8vw,88px);line-height:.96;margin:0 0 20px;font-weight:950;letter-spacing:-.02em}.hero-sub{font-size:17px;line-height:1.6;color:#eef4e6b8;max-width:48ch;margin:0 0 28px}.hero-actions{display:flex;gap:12px;flex-wrap:wrap}.hero-meta{margin-top:18px;font-size:12.5px;color:#eef4e680;letter-spacing:.02em}.landing-btn{appearance:none;border:1px solid transparent;border-radius:12px;padding:14px 26px;font-weight:800;font-size:16px;cursor:pointer;transition:transform .08s ease,filter .12s ease,background .15s ease}.landing-btn.primary{color:var(--ink);background:linear-gradient(180deg,#eace82,var(--brass));box-shadow:0 12px 34px #d5a74a47}.landing-btn.primary:hover{filter:brightness(1.06)}.landing-btn.ghost{color:#eef4e6;background:transparent;border-color:#eef4e62e}.landing-btn.ghost:hover{background:#ffffff0f}.landing-btn:active{transform:scale(.98)}.landing-btn.big{padding:17px 42px;font-size:18px}.hero-art{display:grid;place-items:center}.hero-felt{position:relative;width:100%;max-width:400px;aspect-ratio:1.4;border-radius:20px;background:radial-gradient(120% 120% at 28% 18%,rgba(255,255,255,.08),transparent 55%),linear-gradient(160deg,#12876a,#0a5643);border:1px solid rgba(0,0,0,.45);box-shadow:inset 0 2px 26px #0006,0 34px 70px #0000008c;overflow:hidden}.art-ball{position:absolute;width:15%;aspect-ratio:1;border-radius:50%;display:grid;place-items:center;font-weight:800;color:#111;font-size:15px;box-shadow:inset -4px -6px 10px #00000073,inset 3px 4px 8px #fff6,0 6px 12px #0006}.b-cue{background:radial-gradient(circle at 36% 30%,#fff,#d9dbcf);left:31%;top:50%}.b-red{background:radial-gradient(circle at 36% 30%,#ff7a6b,#c62f22);left:66%;top:22%}.b-yellow{background:radial-gradient(circle at 36% 30%,#ffe08a,#e0a92e);left:62%;top:44%}.b-black{background:radial-gradient(circle at 36% 30%,#555,#000);color:#fff;left:54%;top:30%}.art-cue{position:absolute;left:-6%;top:82%;width:46%;height:2.2%;border-radius:4px;background:linear-gradient(90deg,#6b4a2c,#caa46a 70%,#ead9b6);transform:rotate(-30deg);transform-origin:left center;box-shadow:0 4px 8px #0006}.landing-features{max-width:1080px;margin:0 auto;padding:30px 24px 20px;display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.feature-card{border:1px solid rgba(238,244,230,.12);border-radius:14px;padding:22px 20px;background:linear-gradient(180deg,#ffffff0a,#ffffff03)}.feature-ico{font-size:24px;color:var(--brass);margin-bottom:12px;line-height:1}.feature-card h3{margin:0 0 8px;font-size:17px}.feature-card p{margin:0;font-size:13.5px;line-height:1.5;color:#eef4e6a8}.landing-cta{text-align:center;padding:52px 24px 40px}.landing-cta h2{font-size:clamp(26px,4vw,38px);margin:0 0 22px}.landing-footer{max-width:1080px;margin:0 auto;padding:22px 24px 34px;display:flex;justify-content:space-between;gap:12px;border-top:1px solid rgba(238,244,230,.12);color:#eef4e680;font-size:13px}.landing-footer span:first-child{font-weight:800;color:#eef4e6b3}@media (max-width: 820px){.landing-hero{grid-template-columns:1fr;padding-top:22px;min-height:auto;gap:28px}.hero-art{order:-1}.hero-felt{max-width:320px}.landing-features{grid-template-columns:1fr 1fr}}@media (max-width: 520px){.landing-features{grid-template-columns:1fr}.landing-footer{flex-direction:column;gap:6px}}.beta-tag{display:inline-block;vertical-align:middle;margin-left:3px;padding:2px 7px;border-radius:999px;border:1px solid rgba(213,167,74,.5);background:#d5a74a24;color:var(--brass);font-size:10px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;line-height:1.5;-webkit-text-fill-color:var(--brass)}.brand h1 .beta-tag{font-size:9px}body.theme-light .landing{color:#16241f;background:radial-gradient(80% 55% at 50% -8%,rgba(21,120,96,.2),transparent 60%),radial-gradient(55% 45% at 88% 12%,rgba(213,167,74,.16),transparent 60%),linear-gradient(180deg,#f4f7f2,#e9efe7 45%,#e3e9e1)}body.theme-light .landing-navbtn{border-color:#14201c33;background:#00000008;color:#16241f}body.theme-light .landing-navbtn:hover{background:#0000000f}body.theme-light .hero-sub{color:#16241fbd}body.theme-light .hero-meta{color:#16241f8c}body.theme-light .landing-btn.ghost{color:#16241f;border-color:#14201c38}body.theme-light .landing-btn.ghost:hover{background:#0000000d}body.theme-light .feature-card{border-color:#14201c1f;background:linear-gradient(180deg,#ffffffb8,#ffffff6b)}body.theme-light .feature-card p{color:#16241fa8}body.theme-light .landing-footer{border-top-color:#14201c1f;color:#16241f8c}body.theme-light .landing-footer span:first-child{color:#16241fb8}.hero-shot{display:block;width:100%;max-width:480px;border-radius:16px;border:1px solid rgba(0,0,0,.4);box-shadow:0 34px 70px #0000008c}body.theme-light .hero-shot{border-color:#14201c24;box-shadow:0 24px 54px #00000038}.landing-duo{max-width:1080px;margin:0 auto;padding:38px 24px 20px;display:grid;grid-template-columns:1fr 1fr;gap:20px;align-items:stretch}.duo-card{border:1px solid rgba(238,244,230,.12);border-radius:16px;padding:24px 22px;background:linear-gradient(180deg,#ffffff0a,#ffffff03);display:flex;flex-direction:column}.duo-card h2{font-size:clamp(20px,2.6vw,26px);margin:0 0 8px;font-weight:900}.duo-card p{color:#eef4e6b3;font-size:14.5px;line-height:1.55;margin:0 0 18px}.duo-card strong{color:var(--brass);font-weight:700}.duo-shot{display:block;width:100%;margin-top:auto;border-radius:12px;border:1px solid rgba(0,0,0,.4);box-shadow:0 20px 44px #0000006b}.duo-spin{width:150px;margin:auto auto 0;padding:12px;background:#00000038}body.theme-light .duo-card{border-color:#14201c1f;background:linear-gradient(180deg,#ffffffb8,#ffffff6b)}body.theme-light .duo-card p{color:#16241fb3}body.theme-light .duo-shot{border-color:#14201c24;box-shadow:0 12px 30px #00000029}body.theme-light .duo-spin{background:#0000000d}@media (max-width: 720px){.landing-duo{grid-template-columns:1fr}}
