.app-header{height:68px;padding-top:7px}.logo{display:block;flex:none;width:165px;height:46px}.logo img{display:block;width:100%;height:100%;object-fit:contain;object-position:left}.preview-label{display:none}.wallet{margin-left:auto}.scene-top,.scene-bottom,.race-heading{display:none!important}.camera-button{position:fixed;right:22px;top:90px;z-index:5;width:34px;height:34px;display:grid;place-items:center;padding:7px;border-radius:50%;background:#30263990;border:1px solid #fff3;backdrop-filter:blur(12px)}.camera-button svg{display:block;width:20px;height:20px}.survival-strip{position:fixed;z-index:4;left:28px;top:83px;display:flex;gap:6px;padding:8px 11px;background:#2d243580;border:1px solid #ffffff1c;border-radius:30px;backdrop-filter:blur(12px);pointer-events:none}.survival-orb{position:relative;width:16px;height:16px;border-radius:50%;background:radial-gradient(circle at 28% 22%,#fff8,var(--orb) 30%,color-mix(in srgb,var(--orb),#21132d 45%) 98%);box-shadow:inset -2px -2px 3px #0003;transition:opacity .2s,filter .2s,transform .2s}.survival-orb.out{opacity:.25;filter:grayscale(1);transform:scale(.75)}.survival-orb.out:after{content:'';position:absolute;inset:1px;border:1px solid #d7c8df;border-radius:50%;background:linear-gradient(45deg,transparent 45%,#d7c8df 46% 54%,transparent 55%)}.survival-orb.backed{outline:1px solid var(--gold);outline-offset:2px}.road-button{position:fixed;z-index:5;left:28px;top:128px;display:grid;place-items:center;width:29px;height:29px;border:1px solid #ffffff20;background:#30263980;color:#e5d0a8;border-radius:7px;backdrop-filter:blur(12px);padding:6px}.road-button svg{display:block;width:17px;height:17px}.road-strip{position:fixed;z-index:4;top:131px;left:66px;display:flex;gap:5px;pointer-events:none}.road-dot{width:23px;height:23px;display:grid;place-items:center;border-radius:50%;font-size:8px;font-weight:700;color:#fff7e8;background:radial-gradient(circle at 30% 20%,var(--orb),color-mix(in srgb,var(--orb),#24182d 55%));border:1px solid #ffffff42;box-shadow:0 2px 6px #21112e30}.count-clock{position:fixed!important;left:50%!important;right:auto!important;top:42%!important;transform:translate(-50%,-50%);width:94px!important;height:94px!important;z-index:4;pointer-events:none;filter:drop-shadow(0 3px 16px #21112e44)}.count-clock svg{width:94px!important;height:94px!important}.count-clock circle{fill:#30243888;stroke:#ffffff24;stroke-width:1.4}.count-clock #clock-ring{stroke-width:2.4;stroke:#ffdc8d}.count-clock b{font-size:37px;line-height:1;letter-spacing:-2px}.count-clock small{font-size:10px;margin-top:7px;color:#f7e5c4}.count-clock #clock-ring{transition:stroke-dashoffset .15s}body[data-phase="racing"] .count-clock,body[data-phase="settled"] .count-clock{display:none}.race-announcement{position:fixed;left:50%;top:42%;background:transparent;border:0;box-shadow:none;font-size:58px;font-style:italic;font-weight:900;color:var(--gold);text-shadow:0 4px 20px #291d36;pointer-events:none}.race-announcement small{display:none}.ball-card.out:before{content:'';position:absolute;left:50%;top:50%;width:18px;height:1px;background:#c4b1cc;transform:translate(-50%,-50%) rotate(-40deg)}.ball-card.out small{display:none}.ball-card.winner:before{content:'♛';position:absolute;right:3px;top:-6px;color:#ffd482;font-size:13px}.selected-count{font-size:10px}.road-grid{display:grid;grid-template-rows:repeat(3,1fr);grid-auto-flow:column;grid-auto-columns:minmax(44px,1fr);gap:8px;min-height:150px;align-items:start;overflow-x:auto}.road-cell{display:flex;flex-direction:column;align-items:center;gap:5px}.road-cell i{font-style:normal;width:36px;height:36px;display:grid;place-items:center;font-size:12px;font-weight:700;border-radius:50%;background:radial-gradient(circle at 30% 20%,var(--orb),color-mix(in srgb,var(--orb),#24182d 55%));border:1px solid #fff4}.road-cell b{font-size:9px;color:#e7c58c}#road-dialog p{font-size:10px}.result-card .crown{color:var(--gold);font-size:24px;letter-spacing:0}.result-card .champion-orb{margin:9px auto}.result-card{padding:20px}.result-card h2{margin-bottom:8px}.result-card p{margin:5px 0}.preview-start{font-size:0!important}.preview-start:after{content:'▷';font-size:15px}.preview-start:disabled{visibility:hidden}.bet-panel{background:linear-gradient(145deg,#30253ddd,#292135d6)}
@media(max-width:780px){.app-header{height:63px;padding:calc(7px + env(safe-area-inset-top)) 13px 5px;gap:6px}.logo{width:139px;height:43px}.wallet{padding:7px 8px;gap:5px}.wallet>span{display:none}.wallet b{font-size:14px}.wallet i{font-size:13px}.icon-button{width:28px;height:28px}.survival-strip{top:calc(77px + env(safe-area-inset-top));left:13px;right:13px;justify-content:space-between;padding:9px 12px;gap:0}.survival-orb{width:15px;height:15px}.road-button{left:14px;top:calc(125px + env(safe-area-inset-top));width:27px;height:27px}.road-strip{top:calc(127px + env(safe-area-inset-top));left:49px;gap:4px;max-width:calc(100vw - 105px);overflow:hidden}.road-dot{width:21px;height:21px;flex:none;font-size:7px}.camera-button{right:14px;top:calc(125px + env(safe-area-inset-top));width:28px;height:28px;padding:6px}.camera-button svg{width:17px;height:17px}.count-clock{top:39%!important;width:86px!important;height:86px!important}.count-clock svg{width:86px!important;height:86px!important}.count-clock b{font-size:34px}.count-clock small{font-size:9px}.ball-card strong{font-size:10px;letter-spacing:.4px}.ball-card small{font-size:8px}.result-card{top:36%;padding:18px}.result-card .crown{font-size:22px}.result-card .champion-orb{width:40px;height:40px}body:not([data-phase="betting"]) .ball-card strong{font-size:10px}body:not([data-phase="betting"]) .ball-card small{font-size:8px}.race-announcement{top:39%;font-size:51px}.result-card h2{font-size:19px}}
@media(max-width:780px) and (max-height:700px){.survival-strip{top:66px;padding:7px 11px}.survival-orb{width:13px;height:13px}.road-button,.camera-button{top:106px}.road-strip{top:108px}.count-clock{top:35%!important;width:72px!important;height:72px!important}.count-clock svg{width:72px!important;height:72px!important}.count-clock b{font-size:28px}.count-clock small{font-size:8px;margin-top:5px}.logo{width:130px;height:38px}.app-header{height:54px}.result-card{top:37%;padding:12px}.result-card .crown{font-size:18px}.result-card .champion-orb{width:30px;height:30px}.race-announcement{top:35%}}
@media(orientation:landscape) and (max-height:560px){.app-header{height:48px;padding:3px 16px}.logo{width:124px;height:38px}.survival-strip{top:56px;left:16px;right:auto;width:300px;padding:7px 10px;gap:5px}.survival-orb{width:12px;height:12px}.road-button{top:96px;left:16px}.road-strip{top:99px;left:51px}.camera-button{top:56px;right:16px}.count-clock{top:42%!important;width:72px!important;height:72px!important}.count-clock svg{width:72px!important;height:72px!important}.result-card{top:42%;padding:10px}.result-card .crown{display:none}.result-card h2{margin-top:4px}.race-announcement{top:42%}}

.sound-toggle{display:grid;place-items:center;flex:none;padding:6px;color:#f4d393}.sound-toggle svg{width:19px;height:19px;display:block}.sound-toggle .sound-slash{display:none}.sound-toggle[data-state="ready"] .sound-waves{opacity:.35}.sound-toggle[data-state="muted"]{color:#b9a7c5}.sound-toggle[data-state="muted"] .sound-waves{display:none}.sound-toggle[data-state="muted"] .sound-slash{display:block}.sound-toggle[data-state="playing"]{border-color:#e5c18277;background:#886b3b33}.sound-toggle[data-state="unavailable"]{opacity:.45}
@media(max-width:780px){.app-header{gap:6px}.logo{width:132px}.wallet{padding:7px 7px}.sound-toggle{padding:5px}.sound-toggle svg{width:17px;height:17px}}
@media(max-width:350px){.logo{width:114px}.wallet b{font-size:12px}.wallet{gap:3px;padding:6px}.app-header{gap:5px;padding-left:11px;padding-right:11px}.icon-button{width:26px;height:26px}}
/* Track contact → prize burst → the matching ball card. */
.reward-layer{position:fixed;inset:0;z-index:7;pointer-events:none;overflow:hidden;contain:strict}.reward-burst{position:absolute;width:1px;height:1px;color:#ffe7a6;isolation:isolate}.reward-prize{position:absolute;left:0;top:0;display:flex;align-items:center;flex-direction:column;white-space:nowrap;transform:translate(-50%,-50%);animation:reward-prize 1.65s both;filter:drop-shadow(0 4px 5px #291331);text-align:center}.reward-prize small{font-size:10px;font-weight:800;color:#fff1cf;padding:4px 8px;border:1px solid #ffe5a55c;border-radius:18px;background:#3b2437d9;display:flex;gap:5px;align-items:center}.reward-prize small i{width:9px;height:9px;border:1px solid #fff9;border-radius:50%;background:var(--reward-color)}.reward-prize strong{font-size:44px;line-height:1.1;letter-spacing:-1px;font-weight:1000;color:#ffe7a4;text-shadow:0 2px #8c4a32,0 4px #552437,0 0 23px #ffb72d99;-webkit-text-stroke:.5px #fff1bb}.reward-prize span{font-size:10px;color:#fff3d9;font-weight:800;letter-spacing:2px}.reward-burst.backed .reward-prize strong{font-size:49px}.reward-flare{position:absolute;width:130px;height:130px;left:-65px;top:-65px;border-radius:50%;background:radial-gradient(circle,#fffbd4bb, #ffc24f44 27%,transparent 68%);animation:reward-flare .65s both;mix-blend-mode:screen}.reward-ripple{position:absolute;width:75px;height:75px;border:2px solid #ffe8a0;border-radius:50%;left:-37px;top:-37px;animation:reward-ripple .65s both;box-shadow:0 0 16px #ffc95b}.reward-coin{position:absolute;left:0;top:0;display:grid;place-items:center;width:12px;height:12px;border-radius:50%;border:1.5px solid #fff0a8;background:linear-gradient(135deg,#fff1aa,#f2b947 55%,#ac6b26);box-shadow:0 2px 0 #92532d,0 0 5px #ffcd7266;color:#fffce2;font-size:7px;font-style:normal;will-change:transform,opacity}.ball-card.reward-collected{animation:reward-card 1.5s both}
@keyframes reward-prize{0%{opacity:0;transform:translate(-50%,0) scale(.3) rotate(-7deg)}16%{opacity:1;transform:translate(-50%,-55%) scale(1.18) rotate(3deg)}28%,68%{opacity:1;transform:translate(-50%,-50%) scale(1) rotate(0)}100%{opacity:0;transform:translate(-50%,-100%) scale(.9)}}
@keyframes reward-flare{0%{opacity:0;transform:scale(.15)}25%{opacity:1}100%{opacity:0;transform:scale(1.7)}}
@keyframes reward-ripple{0%{opacity:1;transform:scale(.2)}100%{opacity:0;transform:scale(2)}}
@keyframes reward-card{0%,45%{border-color:#ffe29a;box-shadow:0 0 20px #ffd56888,inset 0 0 16px #f4ce6f33}100%{box-shadow:none}}
@media(max-width:780px){.reward-prize strong{font-size:37px}.reward-burst.backed .reward-prize strong{font-size:42px}.reward-prize small{font-size:9px}.reward-prize span{font-size:9px}}
@media(prefers-reduced-motion:reduce){.reward-prize{animation:none;opacity:1}.reward-flare,.reward-ripple{display:none}.ball-card.reward-collected{animation:none;border-color:#ffe29a}}
