:root{--bg:#071710;--panel:#10271b;--panel2:#153523;--light:#eef9ee;--muted:#94b39f;--accent:#81edaa;--lime:#adf8b9;--border:#2a4b36;--green:#155f3d}*{box-sizing:border-box}html,body{margin:0;min-height:100%;font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:var(--light);background:var(--bg)}body{overflow-x:hidden}.ambient{position:fixed;inset:0;pointer-events:none;background:radial-gradient(ellipse 70% 28% at 50% -4%,#1e5736 0%,transparent 80%),radial-gradient(ellipse at 110% 65%,#09281b 0%,transparent 50%)}button,input,select{font:inherit}button{cursor:pointer;-webkit-tap-highlight-color:transparent}button:disabled{cursor:not-allowed;opacity:.35}.app{position:relative;width:min(100%,620px);padding:0 17px;margin:auto}.mast{display:flex;align-items:center;justify-content:space-between;padding:26px 0 22px;gap:10px}.brand{display:flex;gap:12px;align-items:center}.brandball{height:45px;width:45px;display:grid;place-items:center;background:radial-gradient(circle at 35% 25%,#526c59 0%,#111 32%,#000 82%);border:1px solid #647d67;border-radius:50%;font-size:24px;font-weight:900;box-shadow:0 4px 15px #0009,inset -5px -6px 10px #000}.brandtitle{font-size:22px;font-weight:950;letter-spacing:.045em;line-height:1.05}.brandtitle span{color:var(--accent)}.brandsub{font-size:9px;letter-spacing:.15em;color:#91aa98;margin-top:5px;font-weight:750}.brandsub i{height:3px;width:3px;border-radius:50%;background:var(--accent);display:inline-block;vertical-align:middle;margin:0 5px}.j4link{color:#c0e7c9;text-decoration:none;font-weight:750;border:1px solid var(--border);background:#102b1d;border-radius:10px;padding:9px 10px;font-size:13px;white-space:nowrap}.j4link span{color:#82dd9d}.hero{border:1px solid #28583c;border-radius:23px;padding:31px 24px 27px;background:linear-gradient(125deg,#0e3924,#10261c 66%,#10261c);box-shadow:0 20px 70px #0004}.hero-eye{font-size:10px;letter-spacing:.18em;color:#a1e4b1;font-weight:850}.hero-eye span{padding:0 5px}.hero h1{font-size:clamp(40px,11vw,58px);line-height:1.09;letter-spacing:-.065em;margin:18px 0}.hero em{font-style:normal;color:#8deeac}.hero p{color:#b3cabe;line-height:1.6;font-size:15px;max-width:455px}.hero-benefits{display:flex;gap:10px;flex-wrap:wrap;margin-top:24px}.hero-benefits span{font-size:11px;color:#a0e4b1;background:#1a4e31;padding:8px 9px;border:1px solid #36704b;border-radius:9px}.card{border:1px solid var(--border);background:linear-gradient(155deg,#132b1e,#0c2016);border-radius:18px}.setup{margin:16px 0 26px;padding:20px}.setup-tabs{display:flex;border-bottom:1px solid var(--border);margin-bottom:20px;gap:10px}.tab{flex:1;background:none;border:none;border-bottom:3px solid transparent;color:var(--muted);font-weight:800;padding:8px 5px 15px}.tab.selected{border-color:var(--accent);color:#f0fff1}.setup label{display:block;font-size:13px;color:#c2d9c8;font-weight:650;margin-bottom:15px}.setup label small{font-weight:400;color:#83a38e}.setup input,.setup select{margin-top:7px;width:100%;height:49px;background:#0a1e14;border:1px solid #375441;border-radius:11px;color:#effff2;outline:0;padding:0 13px}.setup input:focus,.setup select:focus{border-color:var(--accent)}.setup input::placeholder{color:#668672}.btn{min-height:47px;border:none;border-radius:11px;padding:12px 16px;font-size:14px;font-weight:850;display:inline-flex;align-items:center;justify-content:center;gap:10px;transition:filter .15s}.btn:active{filter:brightness(.8)}.btn.primary{background:linear-gradient(130deg,#a4ffb3,#6bdda1);color:#092516;box-shadow:0 3px 22px #5cd68b2c}.btn.primary span{margin-left:auto;font-size:19px}.setup .btn{width:100%}.fineprint{color:#819b88;font-size:11px;line-height:1.5;margin-top:16px}.gamehead{display:flex;justify-content:space-between;align-items:center;margin:4px 0 14px}.gamehead h1{font-size:32px;margin:4px 0 0;letter-spacing:-.04em}.gamehead h1 small{font-size:12px;color:#9cb2a0;letter-spacing:0;font-weight:600}.game-eyebrow{font-size:10px;letter-spacing:.14em;color:#92cda5;font-weight:850}.game-eyebrow span{margin-left:7px;color:#5eea9c}.mini{padding:9px 12px;border-radius:9px;border:1px solid #365540;background:#14291d;color:#bbdac6;font-weight:750;font-size:12px}.sharebar{border:1px solid #356044;background:#133a27;border-radius:11px;padding:9px 10px 9px 13px;display:flex;gap:8px;align-items:center;justify-content:space-between;margin-bottom:15px;color:#c0dfcc;font-size:12px}.sharebar strong{letter-spacing:.08em;color:#e5ffe7}.btn.tiny{min-height:35px;padding:7px 10px;background:#2f704c;color:#f1fff1;font-size:11px;white-space:nowrap}.scoreboard{display:grid;grid-template-columns:minmax(0,1fr) 20px minmax(0,1fr);align-items:center;gap:4px}.playercard{min-width:0;padding:15px 12px 12px;background:#102b1d;border:1px solid #27533a;border-radius:15px}.playercard.active{background:linear-gradient(145deg,#1a603a,#16452e);border-color:#72d394;box-shadow:0 0 25px #55e48b18}.playername{font-size:13px;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.score{font-variant-numeric:tabular-nums;font-size:48px;line-height:1.22;font-weight:900;letter-spacing:-.04em;margin:8px 0}.playerbottom{display:flex;justify-content:space-between;gap:5px;flex-wrap:wrap;color:#afc8b7;font-size:11px}.playerbottom b{color:#fff}.versus{font-size:10px;color:#8dac96;text-align:center;font-weight:900}.breakbanner{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-radius:13px;margin:14px 0 24px;background:linear-gradient(100deg,#1a663c,#12452d);border:1px solid #43855b}.breakbanner small{color:#a8daba;letter-spacing:.1em;font-size:9px;font-weight:850;display:block}.breakbanner strong{font-size:38px;font-weight:950;line-height:1.2;font-variant-numeric:tabular-nums}.breakbanner .right{text-align:right}.breakbanner .right strong{font-size:16px;display:block;max-width:190px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.breakbanner .sub{font-size:11px;color:#c5f0ce}.table-heading{display:flex;align-items:center;justify-content:space-between;gap:10px}.table-heading h2{font-size:17px;margin:0}.table-heading p{font-size:11px;color:#8fb6a0;line-height:1.5;margin:4px 0 12px;max-width:270px}.redcount{font-size:9px;color:#b5cebc;border:1px solid #315540;border-radius:9px;padding:7px;text-align:center;white-space:nowrap}.redcount strong{display:block;font-size:20px;color:#ffaaaa}.table-wrap{border:8px solid #513526;padding:6px;background:#27180f;border-radius:21px;box-shadow:0 24px 40px #0007;margin-bottom:16px}.snooker-table{position:relative;width:100%;height:360px;border-radius:7px;background:linear-gradient(92deg,#095536,#116f45 30%,#0e6541 65%,#08472e);box-shadow:inset 0 0 24px #042719,inset 0 0 3px 3px #1f9960;overflow:hidden}.cloth-shine{position:absolute;inset:0;background:repeating-linear-gradient(0deg,transparent 0 90px,#ffffff03 91px 110px);pointer-events:none}.pocket{position:absolute;width:29px;height:29px;background:#050705;border:5px solid #503024;border-radius:50%;z-index:3;box-shadow:0 2px 5px #000;pointer-events:none}.tl{top:-14px;left:-14px}.tr{top:-14px;right:-14px}.ml{top:50%;left:-14px;transform:translateY(-50%)}.mr{top:50%;right:-14px;transform:translateY(-50%)}.bl{bottom:-14px;left:-14px}.br{bottom:-14px;right:-14px}.baulk-line{position:absolute;top:81%;height:1.5px;left:5%;right:5%;background:#ffffff7b;pointer-events:none}.d-arc{position:absolute;top:81%;left:50%;width:125px;height:62px;transform:translate(-50%,-100%);border:1.5px solid #ffffff76;border-bottom:none;border-radius:80px 80px 0 0;pointer-events:none}.midline{position:absolute;width:1px;top:0;bottom:0;left:50%;background:#ffffff0a;pointer-events:none}.ball{position:absolute;width:36px;height:36px;border-radius:50%;padding:0;transform:translate(-50%,-50%);border:1px solid #ffffff70;box-shadow:inset -6px -7px 9px #0008,inset 4px 5px 7px #fff5,0 6px 5px #0006;z-index:2;display:grid;place-items:center;font-weight:950;font-size:13px}.ball span{color:#fff;text-shadow:0 1px 2px #0009}.ball.yellow span,.ball.green span{color:#091309;text-shadow:none}.ball.black{background:radial-gradient(circle at 35% 28%,#727272,#111 46%,#000)}.ball.red{background:radial-gradient(circle at 35% 28%,#ff9898,#be1025 50%,#760013)}.ball.pink{background:radial-gradient(circle at 35% 28%,#ffd1e9,#e37aab 52%,#7d2f5e)}.ball.blue{background:radial-gradient(circle at 35% 28%,#c2e6ff,#2562c7 53%,#092e79)}.ball.yellow{background:radial-gradient(circle at 35% 28%,#fff9bf,#e8b316 53%,#bc7605)}.ball.brown{background:radial-gradient(circle at 35% 28%,#dfb797,#854723 53%,#502209)}.ball.green{background:radial-gradient(circle at 35% 28%,#c6ffd4,#39bd5b 53%,#006027)}.ball:not(:disabled):focus-visible{outline:4px solid #fff;outline-offset:4px}.ball.available{box-shadow:inset -6px -7px 9px #0008,inset 4px 5px 7px #fff5,0 0 0 3px #efffee,0 0 17px #b7ffba;animation:halo 1.5s infinite alternate}.ball.vanished{display:none}.ball:disabled{opacity:.34;filter:saturate(.4)}@keyframes halo{from{box-shadow:inset -6px -7px 9px #0008,inset 4px 5px 7px #fff5,0 0 0 2px #d5ffd9}to{box-shadow:inset -6px -7px 9px #0008,inset 4px 5px 7px #fff5,0 0 0 4px #d5ffd9,0 0 22px #c4ffc4}}.table-foot{font-size:9px;letter-spacing:.07em;display:flex;justify-content:center;gap:6px;margin:11px 0 5px;color:#adc4b3;text-align:center}.table-foot span{color:#7fed9f}.controls{display:grid;grid-template-columns:1.5fr .8fr .8fr;gap:8px;margin-bottom:14px}.controls .btn{padding:10px 8px;font-size:12px}.btn.light{background:#b6f4c4;color:#11301d}.btn.outline{background:#102b1c;color:#e5f5e8;border:1px solid #42694e}.btn.finish{background:#214d33;border:1px solid #3d7852;color:#cbefd2;width:100%}.foulpanel{background:#203721;padding:14px;border:1px solid #567651;border-radius:12px;margin:0 0 14px;font-size:13px}.foulchoices{display:flex;gap:8px;margin-top:12px}.foulchoices button{flex:1;background:#aee8b6;color:#102a16;border-radius:8px;border:0;font-weight:900;padding:12px}.cancel-link{display:block;background:none;color:#9fcdb1;border:0;margin:10px auto 0}.framefinish{padding:17px;margin-bottom:14px}.framefinish h3{margin:0 0 6px;font-size:16px}.framefinish p{margin:0 0 14px;color:#a1b9aa;font-size:12px;line-height:1.5}.framefinish .btn{width:100%}.history{padding:17px}.history-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.history-head h3{font-size:15px;margin:0 0 9px}.history-head span{font-size:10px;color:#92c19f}.history-head.secondary-title{border-top:1px solid #36533e;padding-top:13px;margin-top:14px}.frameslist p,.events p{color:#87a693;font-size:12px}.frameentry{display:flex;justify-content:space-between;padding:10px;background:#1a3525;border-radius:8px;font-size:12px;margin:7px 0;gap:10px}.frameentry b{color:#acecb8}.evententry{font-size:12px;color:#aec5b3;border-bottom:1px solid #244431;padding:8px 0}.small-note{font-size:11px;line-height:1.6;color:#7e9b89;margin:18px 2px 5px}footer{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:7px;color:#779481;padding:35px 0 30px;font-size:10px;font-weight:750;letter-spacing:.045em}footer span{border-radius:50%;width:20px;height:20px;display:grid;place-items:center;background:#030604;color:white;font-size:13px}footer b{color:#9fd9ad}footer a{color:#9fd9ad;text-decoration:none}#alert{display:none;position:sticky;top:8px;z-index:15;padding:11px 14px;font-size:13px;line-height:1.5;color:#102515;background:#c4f7c9;border-radius:12px;margin-bottom:12px;box-shadow:0 8px 25px #0007}#alert.error{background:#ffe0d7;color:#651c0c}#alert.show{display:block}[hidden]{display:none!important}@media(min-width:570px){.snooker-table{height:470px}.ball{width:43px;height:43px;font-size:16px}.mast{padding-top:33px}.app{padding:0 28px}}@media(max-width:375px){.j4link{padding:8px;font-size:10px}.brandtitle{font-size:19px}.score{font-size:41px}.table-foot{font-size:8px}.ball{width:32px;height:32px}}

.manual-toggle{display:block;margin:13px auto 3px;background:none;border:none;color:#acd9b8;font-size:12px;text-decoration:underline;text-underline-offset:3px}.manual-box{margin-top:14px;border-top:1px solid #36573f;padding-top:13px}.manual-head,.manualrow{display:grid;grid-template-columns:1.3fr .8fr 1fr;gap:7px;align-items:center}.manual-head{color:#a2c5ad;font-size:10px;margin-bottom:7px}.manualrow{margin-bottom:8px}.manualrow strong{font-size:12px;font-weight:750;overflow:hidden;text-overflow:ellipsis}.manualrow input{min-width:0;width:100%;border-radius:7px;background:#091f14;color:#e9ffed;border:1px solid #39644a;padding:9px 7px;font-size:15px}.manual-box .btn{width:100%;margin-top:7px}