*{box-sizing:border-box}html,body{margin:0;min-height:100%;font-family:Arial,"Microsoft YaHei",sans-serif}body{background:#e9ecea;min-height:100svh;display:flex;align-items:center;justify-content:center;color:#fff}button,input,select{font:inherit}button{cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent}button:focus-visible{outline:4px solid #ffeb5d;outline-offset:3px}[hidden]{display:none!important}.phone{width:min(100vw,calc(100svh * 828 / 1576),480px);aspect-ratio:828/1576;border-radius:32px;overflow:hidden;background:#efefef;box-shadow:0 18px 70px #0032231c;position:relative;flex-shrink:0}.scene-wrap{position:relative;width:100%;aspect-ratio:828/1392;margin-top:11.111111%}.scene{width:828px;height:1392px;position:absolute;left:0;top:0;transform-origin:top left;overflow:hidden}.backdrop{position:absolute;inset:0;width:828px;height:1392px;user-select:none;pointer-events:none}.header-art{position:absolute;left:73px;top:113px;width:684px;height:235px;pointer-events:none}.quick{position:absolute;left:73px;top:156px;height:56px;width:226px;background:linear-gradient(100deg,#2079bc,#328bdc);border:0;border-radius:7px;color:white;display:flex;align-items:center;justify-content:center;font-size:27px;white-space:nowrap;padding:4px 10px;gap:5px;box-shadow:inset 0 0 8px #fff2}.quick strong{font-size:26px;background:#fff;color:#7c7e82;min-width:30px;height:39px;line-height:39px;border-radius:5px 0 0 5px;max-width:69px;overflow:hidden;padding:0 5px;margin-right:-5px}.thermometer{font-size:46px;font-weight:bold;line-height:1;color:#9bd0fe;transform:rotate(180deg);margin-left:-5px}.gear{font-size:33px;line-height:39px;background:#fff;color:#64758f;height:39px;border-radius:0 5px 5px 0;padding-right:3px}.issue{position:absolute;left:96px;top:272px;width:227px;height:38px;line-height:38px;font-size:28px;color:#e5f7f8;background:linear-gradient(90deg,#198dd7,#369ae3);white-space:nowrap}.timer{position:absolute;left:595px;top:155px;width:132px;height:132px;border-radius:50%;box-shadow:0 0 18px #efb34080;display:grid;place-items:center;background:#ffa600}.timer svg{position:absolute;width:132px;height:132px;fill:none;stroke:#ffce68;stroke-width:4}.timer .arc{stroke:#ffe8b2;stroke-width:3;stroke-dasharray:190 30;transform-origin:center;transform:rotate(-95deg)}.timer strong{font-size:40px;color:white;line-height:1;position:relative}.timer.sealed{background:#fa0000;box-shadow:0 0 18px #ff000055}.timer.sealed svg{stroke:#ff8383}.timer.sealed .arc{stroke:#ffbbbb}.timer.result{background:#bed6ff;box-shadow:0 0 18px #cde4ff80}.timer.result svg{stroke:#e0ecff}.timer.result .arc{stroke:#e0ecff}.timer:not(.open) strong{width:26px;height:26px;border-radius:50%;border:4px solid #fff8;font-size:0}.phase-label{position:absolute;left:573px;top:304px;width:176px;height:32px;line-height:32px;text-align:center;background:#ffb000;border-radius:25px;color:white;font-size:25px;font-weight:500;white-space:nowrap}.phase-label.sealed{background:red;font-size:23px}.phase-label.result{background:#c5dbff;color:#355c92}.bets{position:absolute;left:93px;top:360px;width:644px;height:264px;display:grid;grid-template-columns:1fr 1fr;grid-template-rows:repeat(3,80px);gap:12px}.bets button{position:relative;border:none;border-radius:9px;color:white;background:linear-gradient(110deg,#278cd4,#2082dd 53%,#2c96f5);box-shadow:inset 0 1px 9px #b4e0ff40;display:flex;align-items:center;justify-content:center;padding:0;overflow:hidden}.bets button:before{content:"";position:absolute;left:0;top:0;height:100%;width:105px;background:linear-gradient(120deg,#a8d4ef85,#a2c6e635 59%,transparent 60%);clip-path:polygon(0 0,100% 0,48% 100%,0 100%)}.odds{position:absolute;left:13px;top:6px;font-size:30px;line-height:35px}.bet-name{font-size:30px;font-weight:bold;position:relative;left:48px;line-height:39px;text-shadow:0 0 3px #fff5}.bet-name small{display:block;font-size:25px;color:#9dd3f7;line-height:28px}.bets button.selected{outline:2px solid white;outline-offset:-2px;filter:brightness(1.12)}.bets button:active{filter:brightness(1.2)}.bets button:disabled{background:#00332d;color:#638379;opacity:.86;box-shadow:none;cursor:default}.bets button:disabled:before{opacity:0}.bets button:disabled .bet-name small{color:#638379}.bets button .bet-chip{position:absolute;bottom:3px;right:6px;min-width:37px;border-radius:10px;padding:2px 7px;font-size:16px;background:#ffc531;color:#154d35;z-index:2;font-weight:bold}.score-title{position:absolute;left:110px;top:638px;width:200px;height:40px;background:#055b42;color:#62995b;font-size:29px;font-weight:bold;line-height:40px}.tabs{position:absolute;left:93px;top:686px;width:644px;height:74px;display:flex;gap:9px;background:#00563f}.tabs button{width:calc((100% - 18px)/3);border:0;border-radius:10px 10px 0 0;background:#002e24;color:#969c30;font-size:32px;font-weight:bold;position:relative;overflow:hidden}.tabs button[aria-selected=true]{background:linear-gradient(125deg,#7b8e80 0,#263d31 38%,#002319 39%);color:#f1f000;transform:translateY(-8px);height:82px}.tabs button[aria-selected=true]:after{content:"";position:absolute;inset:0;box-shadow:inset 0 2px 9px #a2b9aa44;pointer-events:none}.statistics{position:absolute;left:93px;top:758px;width:644px;height:74px;display:flex;align-items:center;background:#001f16;color:#d8dc47;font-size:29px;z-index:1}.statistics span{width:50%;text-align:center;line-height:40px}.statistics span+span{border-left:1px solid #5a74654d}.road{position:absolute;left:93px;top:832px;width:644px;height:298px;display:grid;grid-template-columns:repeat(13,1fr);grid-template-rows:repeat(6,1fr);border-radius:0 0 7px 7px;overflow:hidden;background:#0a2a21;box-shadow:inset 0 0 30px #0007}.road-cell{border-right:2px solid #061e17;border-bottom:2px solid #061e17;display:grid;place-items:center;background:#9dbda405}.ball{height:38px;width:38px;border-radius:50%;background:radial-gradient(circle at 35% 20%,#83a9d1,#4774aa 55%,#163a75 99%);color:#dce9ff;line-height:38px;text-align:center;font-size:29px;box-shadow:inset 0 1px 4px #adc7df55,0 2px 2px #0008}.ball.red{background:radial-gradient(circle at 35% 20%,#e66b5f,#b62a2b 58%,#750d10 99%);color:#ffe8dc;box-shadow:inset 0 1px 4px #f6c0b855,0 2px 2px #0008}.players-button,.info-button,.sound-button{position:absolute;background:transparent;border:0}.players-button{left:98px;top:1154px;width:186px;height:55px;border-radius:32px}.info-button{left:615px;top:1155px;width:52px;height:52px;border-radius:50%}.sound-button{left:676px;top:1155px;width:52px;height:52px;border-radius:50%}.sound-button.muted:after{content:"";position:absolute;width:38px;height:4px;top:24px;left:7px;transform:rotate(-45deg);background:white;box-shadow:0 0 2px #004d3d}.dark-modal{position:absolute;left:93px;top:360px;width:644px;height:852px;border-radius:10px;background:linear-gradient(#000c,#00121bd9),url('assets/stadium.jpg') center/cover;z-index:10;overflow:hidden}.rule-copy{font-size:29px;line-height:42px;padding:31px 30px;color:white}.modal-close{position:absolute;bottom:0;left:0;right:0;height:68px;line-height:66px;text-align:center;border:0;border-top:2px solid #b4c8cd;background:#001117cf;color:white;font-size:33px;letter-spacing:3px;box-shadow:0 -8px 15px #091b2055}.player-scroll{height:784px;overflow-y:auto;overscroll-behavior:contain;padding:20px 18px 6px;display:grid;grid-template-columns:1fr 1fr;gap:42px 24px;align-content:start;scrollbar-width:thin;scrollbar-color:#394a50 transparent}.player-card{width:292px;height:293px;display:block;object-fit:fill}.player-card:nth-last-child(-n+2){margin-bottom:22px}.result-card{position:absolute;left:107px;top:372px;width:616px;height:380px;z-index:5;border:4px solid #48ff36;border-bottom-color:#4bdaff;border-radius:14px;background:#002c39;box-shadow:0 0 16px #44ff5f,inset 0 0 10px #50f662;overflow:visible;animation:reveal .4s ease-out}.result-title{height:44px;background:linear-gradient(120deg,#13ba39,#068a1b,#15ca2e);text-align:center;font-size:28px;font-weight:bold;line-height:44px;text-shadow:0 0 7px white;border-radius:9px 9px 0 0}.result-photo{height:259px;background:#082c36 url('assets/result-8.jpg') center/cover;position:relative}.result-photo.generic{background-image:linear-gradient(#00182b55,#001c2b55),url('assets/stadium.jpg');background-size:cover;overflow:hidden}.result-photo.generic img{height:293px;width:292px;object-fit:cover;position:absolute;right:20px;top:-18px;transform:scale(1.14);transform-origin:top right}.result-photo.generic .winner-name{position:absolute;left:25px;top:26px;font-size:33px;font-style:italic;font-weight:bold;width:230px;text-shadow:0 3px 4px #000;z-index:1}.winner-number{position:absolute;left:34px;top:137px;border-radius:50%;background:radial-gradient(circle at 30% 25%,#ffff6f,#b9cc00 60%,#7e9300);font-size:65px;line-height:88px;width:88px;text-align:center;font-weight:bold;color:#1f88c6;-webkit-text-stroke:2px white;z-index:1}.result-attributes{height:51px;background:linear-gradient(#477486,#00283e 50%,#000f1c);border:2px solid white;border-radius:8px;margin:0 28px;display:flex;position:relative;top:0;font-size:30px;line-height:47px;text-align:center}.result-attributes span{width:33.3333%}.result-attributes span+span{border-left:2px solid #000b}.settlement{position:absolute;left:50%;bottom:-46px;transform:translateX(-50%);background:#003d2e;white-space:nowrap;border:1px solid #bef09b;border-radius:20px;padding:4px 18px;font-size:23px;color:#fff4a4}.ticket{position:absolute;left:93px;top:636px;width:644px;min-height:756px;z-index:20;background:white;color:black;box-shadow:0 0 12px #003b3d33}.ticket header{height:52px;background:#0782ff;display:flex;align-items:center;justify-content:space-between;padding:0 18px 0 22px;color:white;font-size:26px}.ticket header button{border:0;background:transparent;color:white;font-size:58px;line-height:48px;font-weight:200;padding:0}.ticket-body{padding:0 24px 30px}.ticket-brand{height:88px;display:flex;align-items:center;justify-content:center;font-size:25px;position:relative}.tennis-logo{position:absolute;left:0;top:14px;width:50px;height:50px;border:2px solid #788f09;color:white;background:radial-gradient(circle at 30% 20%,#ddf526,#9bb315);font-size:43px;font-weight:bold;line-height:44px;border-radius:50%;font-style:italic;transform:rotate(-15deg)}.ticket-selection{height:114px;background:linear-gradient(123deg,#e1ecfc 68%,#d7e3fc 68%);border-left:8px solid #6086ba;border-radius:9px;display:flex;align-items:center;justify-content:space-between;padding:0 29px 0 24px;color:#58616b;font-size:25px}.ticket-selection strong{display:block;color:black;font-size:33px;font-weight:normal;margin-top:14px}.ticket-selection>b{font-size:41px;color:black}.amount-box{margin-top:16px;height:77px;border:2px solid #d89549;border-radius:10px;display:flex;align-items:center;overflow:hidden}.amount-box label{color:#888;font-size:33px;height:100%;line-height:73px;padding:0 13px;border-right:2px solid #ddd}.amount-box input{border:0;outline:none;width:100%;min-width:0;text-align:right;font-size:38px;padding:0 12px;height:100%;color:#333;background:white}.amount-box input::selection{background:#b6d9ff}.amount-box button{background:white;border:0;font-size:28px;line-height:1;width:66px;flex-shrink:0;color:#222}.payout{text-align:right;font-size:25px;margin:16px 24px 14px;height:30px}.payout span{color:#e38664;font-size:29px}.keypad{display:grid;grid-template-columns:repeat(5,1fr) 1.85fr;grid-template-rows:68px 68px;gap:11px;margin:0 3px}.keypad button{border:2px solid #d9d9d9;border-radius:8px;background:linear-gradient(#efefef,#dadada);font-size:30px;color:black}.increments{display:grid;grid-template-columns:repeat(3,1fr) 1.3fr;gap:11px;margin:11px 3px 21px}.increments button{height:69px;background:linear-gradient(#ffda74,#ffad00);border:2px solid #ebb63a;border-radius:8px;color:black;font-size:29px;white-space:nowrap}.submit-bet{width:100%;height:70px;border:0;border-radius:8px;background:linear-gradient(#668bc4,#0345a9);font-size:34px;color:white;box-shadow:inset 0 -2px 0 #123f8a}.submit-bet:disabled{filter:grayscale(1);cursor:default}.toast{position:absolute;left:50%;top:605px;transform:translateX(-50%);border:1px solid #b9dbca88;padding:17px 27px;background:#001d18ed;border-radius:10px;font-size:26px;max-width:660px;text-align:center;white-space:nowrap;z-index:40;box-shadow:0 4px 25px #0004}.dev-toggle{position:fixed;right:20px;bottom:20px;border:1px solid #d0dad3;background:#fff;color:#476354;box-shadow:0 4px 20px #00351e12;border-radius:30px;padding:11px 16px;font-size:12px;z-index:50}.dev-toggle span{margin-left:8px;color:#94a29b}.dev-panel{position:fixed;right:20px;top:20px;bottom:72px;width:340px;max-width:calc(100vw - 32px);background:#fcfdfb;color:#234237;border:1px solid #d6dfd7;border-radius:16px;z-index:50;padding:24px;box-shadow:0 15px 70px #002e2629;overflow-y:auto;font-size:13px}.dev-panel header{display:flex;align-items:flex-start;justify-content:space-between}.dev-panel header small{font-size:9px;letter-spacing:2px;color:#789182}.dev-panel h1{font-size:23px;margin:6px 0 0;letter-spacing:2px}.dev-panel header button{font-size:25px;background:none;border:0;color:#82968a;padding:0}.dev-note{color:#8e9f95;font-size:11px;margin:12px 0 24px}.balance-card{position:relative;padding:16px;border:1px solid #dae5d9;border-radius:10px;background:#f1f6ee}.balance-card span{display:block;font-size:10px;color:#799172}.balance-card strong{display:block;font-size:32px;font-variant-numeric:tabular-nums;margin-top:8px;font-weight:500}.balance-card button{position:absolute;right:14px;top:16px;border:0;background:transparent;color:#6a8563;font-size:10px}.state-line{display:flex;justify-content:space-between;align-items:center;font-size:10px;color:#8da094;padding:18px 0}.state-line b{font-weight:normal;color:#3f7658}.dev-actions{display:flex;gap:8px}.dev-actions button{width:50%;border:1px solid #cbd8cb;background:white;color:#426d4a;border-radius:7px;padding:11px 0;font-size:12px}.dev-actions button+button{background:#32694a;color:white;border-color:#32694a}.select-label{display:flex;justify-content:space-between;gap:8px;align-items:center;margin-top:18px;font-size:11px}.select-label select,.select-label input{width:150px;border:1px solid #d4dfd5;border-radius:5px;background:white;padding:8px;color:#3e6549;font-size:11px}.hint{font-size:10px;line-height:1.7;color:#91a094;margin:9px 0 22px}.dev-panel h2{font-size:12px;font-weight:500;margin:22px 0 11px;display:flex;justify-content:space-between}.dev-panel h2 span{color:#97a399;font-size:10px}.empty{color:#a4b0a5;font-size:11px;text-align:center;padding:14px;border:1px dashed #d9e2d9;border-radius:6px}.bet-row{display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #e4eae2;padding:10px 0;font-size:11px}.bet-row b{color:#3e7051}.recent-results{display:flex;gap:5px;flex-wrap:wrap}.mini-ball{width:30px;height:30px;border-radius:50%;background:#eaf1e5;display:grid;place-items:center;font-size:11px;color:#50704b}.dev-panel details{margin-top:24px;border-top:1px solid #e0e8de;padding-top:16px;color:#78907c;font-size:10px;line-height:1.8}.dev-panel summary{cursor:pointer;color:#53715a}.dev-panel details p{margin:10px 0}@keyframes reveal{from{transform:scale(.9);opacity:0}to{transform:scale(1);opacity:1}}@media(max-width:600px){.phone{box-shadow:none;border-radius:28px}.dev-toggle{right:9px;bottom:9px;font-size:10px;padding:8px 11px;opacity:.84}.dev-panel{right:12px;top:12px;bottom:52px}}@media(prefers-reduced-motion:reduce){*{animation:none!important}}
/* The recording already supplies the textured scoreboard heading. */
.score-title{opacity:0;pointer-events:none}
.result-photo.generic img{width:320px;height:auto;right:0;top:0;object-fit:cover;transform:none}
.result-photo.generic .winner-name{width:260px;line-height:1.5;font-size:35px;word-break:break-all}
.payout #payoutLabel{color:inherit;font-size:inherit}
/* Quick betting switch and amount settings, matched to the second recording. */
.quick{display:flex;padding:0 11px 0 8px;gap:0}
.quick-toggle,.quick-settings{height:100%;border:0;background:transparent;color:white;display:flex;align-items:center;padding:0}
.quick-toggle{gap:10px;flex:1;min-width:0;font-size:27px;white-space:nowrap}
.quick-track{position:relative;height:40px;width:8px;flex-shrink:0;background:#145ba5;border-radius:5px;margin-left:4px;margin-right:5px}
.quick-track span{position:absolute;left:-4px;bottom:0;width:16px;height:16px;border-radius:50%;background:#8ac8ff}
.quick-settings{flex-shrink:0;margin-left:9px}
.quick.is-on .quick-track{background:#289c91}
.quick.is-on .quick-track span{bottom:24px;background:#00ff16}
.quick.is-on strong{color:#ed875f}
.ticket-actions{display:flex;gap:26px}
.ticket-actions .submit-bet{flex:1;min-width:0;width:auto}
.cancel-amount{flex:1;min-width:0;border:0;border-radius:8px;background:linear-gradient(#f0f0f0,#d9d9d9);color:black;font-size:34px;height:70px}
.ticket.is-quick-settings{top:220px;min-height:0;border-radius:9px;overflow:hidden}
.ticket.is-quick-settings header{height:56px;font-size:25px;font-weight:normal}
.ticket.is-quick-settings header b{font-weight:normal}
.ticket.is-quick-settings .ticket-body{padding:28px 24px 32px}
.ticket.is-quick-settings .ticket-brand,.ticket.is-quick-settings .ticket-selection,.ticket.is-quick-settings .payout{display:none}
.ticket.is-quick-settings .amount-box{margin-top:0}
.ticket.is-quick-settings .keypad{margin-top:22px}
.ticket.is-quick-settings header .quick-info{height:40px;width:40px;border-radius:50%;background:#124990;font-size:34px;line-height:40px;margin-right:6px}
.ticket.is-receipt{top:868px;min-height:0}
.ticket.is-receipt .amount-box,.ticket.is-receipt .payout,.ticket.is-receipt .keypad,.ticket.is-receipt .increments{display:none}
.receipt-details{display:flex;align-items:center;justify-content:space-evenly;height:84px;font-size:25px}
.receipt-details b{color:#e78561;font-size:31px;margin-left:7px}
.receipt-status{display:flex;align-items:center;justify-content:center;height:82px;margin:0 -24px;background:#f0faef;color:#28873a;font-size:30px}
.receipt-status.failed{background:#fff3f3;color:#d80000;border-top:1px solid #f1dada}
.ticket.is-receipt .ticket-actions{margin-top:8px}
