@font-face{font-family:Smiley;src:url('assets/display.woff2')}@font-face{font-family:Round;src:url('assets/round.woff2');font-weight:100 900}
:root{--grass:#afd58c;--track:#ef857f;--ink:#273b2b;--paper:#fff9e9;--yellow:#ffe078;--red:#e4675f;--line:#29412f;--font:Round,'PingFang SC',sans-serif}*{box-sizing:border-box}body{margin:0;background:var(--grass);color:var(--ink);font-family:var(--font);font-weight:550}button,input{font:inherit}button,a,input{-webkit-tap-highlight-color:transparent}button{cursor:pointer;color:inherit;border:0}button:disabled{opacity:.55;cursor:wait}button:focus-visible,a:focus-visible,input:focus-visible{outline:3px solid #47669b;outline-offset:5px}button{transition:transform .16s,background .16s}button:active{transform:translateY(3px)}a{color:inherit}.topbar{height:92px;padding:22px 4%;position:absolute;inset:0 0 auto;z-index:5;display:flex;align-items:center;justify-content:space-between}.brand img{width:138px;height:54px;object-fit:contain}.top-actions{display:flex;align-items:center;gap:24px;font-size:12px}.edition{letter-spacing:2px}.icon-button{background:transparent;font-size:12px;padding:10px}.small-button{padding:11px 18px;border:1.5px solid var(--ink);border-radius:30px;background:var(--paper)}main{min-height:100svh}.screen{display:none;min-height:100svh}.screen.active{display:block}#home{position:relative;overflow:hidden;height:max(800px,100svh)}#herd{position:absolute;width:100%;height:100%;inset:0}.home-copy{position:relative;z-index:2;padding:140px 0 0 10%;pointer-events:none}.eyebrow{font-size:11px;letter-spacing:3px;font-weight:750}.home-copy h1{font-family:Smiley,sans-serif;font-size:clamp(58px,6.9vw,100px);line-height:1.06;font-weight:400;margin:20px 0;color:#233a2b;letter-spacing:-3px;text-shadow:2px 3px 0 #d5e8b9}.home-copy p{font-size:17px;line-height:1.8;margin:0}.mobile-only{display:none}.talking-cap{position:absolute;z-index:2;left:54%;top:165px;background:none;width:260px;height:320px;transform:rotate(4deg)}.talking-cap canvas{width:100%;height:100%;object-fit:contain}.talking-cap span{display:block;position:absolute;top:-22px;left:-25px;background:#fff9e9;border:2px solid var(--ink);border-radius:48% 48% 48% 8%;padding:18px 24px;white-space:nowrap;font-size:15px;box-shadow:3px 4px 0 #283d2c24}.entry-ticket{position:relative;z-index:3;width:398px;margin:40px 0 80px 10%;background:var(--paper);padding:19px 24px 17px;box-shadow:6px 7px 0 #38503025;transform:rotate(-1.5deg);border-radius:4px}.entry-ticket:before,.entry-ticket:after{content:'';position:absolute;width:18px;height:18px;border-radius:50%;background:var(--grass);top:44px}.entry-ticket:before{left:-9px}.entry-ticket:after{right:-9px}.ticket-top{display:flex;justify-content:space-between;border-bottom:1px dashed #73856380;padding-bottom:13px;font-size:11px}.ticket-code{font-size:9px;letter-spacing:1.2px;color:#6c7b61}.entry-main{display:flex;align-items:center;gap:12px;padding:15px 0}.name-field{flex:1;min-width:0}.name-field>span{font-size:10px;color:#748269;display:block}.name-field input{background:transparent;border:0;border-bottom:1px solid #bcc6ab;width:100%;padding:7px 0 5px;font-size:16px;color:var(--ink);border-radius:0}.color-picks{display:flex;gap:7px}.swatch{background:var(--red);width:21px;height:21px;border-radius:50%;border:3px solid var(--paper);box-shadow:0 0 0 1px transparent}.swatch[data-color="1"]{background:#47785d}.swatch[data-color="2"]{background:#6085a4}.swatch[data-color="3"]{background:#997bac}.swatch.chosen{box-shadow:0 0 0 1.5px var(--ink)}.primary{width:100%;padding:17px 24px;background:var(--ink);color:var(--paper);border:2px solid var(--ink);border-radius:8px;font-weight:750;font-size:17px;display:flex;align-items:center;justify-content:center;gap:25px}.primary:hover{background:#3b543d}.entry-ticket .primary{justify-content:space-between}.primary span{font-size:23px}.ticket-bottom{display:flex;align-items:center;gap:9px;font-size:11px;margin-top:15px}.ticket-bottom button{padding:0;background:none}.practice-label{margin-left:auto;color:#7a816b;font-size:9px}.home-foot{position:absolute;bottom:22px;left:4%;right:4%;display:flex;justify-content:space-between;font-size:10px;letter-spacing:1.5px;z-index:2}.text-button{background:transparent;padding:12px 6px;font-size:12px;text-decoration:underline;text-underline-offset:4px}.secondary{width:100%;background:var(--paper);border:1.5px solid var(--ink);border-radius:8px;font-size:15px;font-weight:650;padding:15px 20px}.secondary:hover{background:#fff0c0}.screen:not(#home){padding:116px 6% 32px}h2{font-family:Smiley,sans-serif;font-size:44px;line-height:1.2;margin:12px 0;font-weight:400}.lobby-card{max-width:640px;margin:25px auto;text-align:center;background:var(--paper);padding:40px;border-radius:8px;border:1.5px solid #687954;box-shadow:7px 8px 0 #546e3620}.lobby-card p{font-size:13px;line-height:1.9;color:#67785c}.room-code{background:#e9edda;padding:18px;margin:24px 0;border:1px dashed #92a37d;display:flex;align-items:center;justify-content:space-between}.room-code>span{font-size:12px}.room-code strong{font:32px Smiley;letter-spacing:5px}.lobby-player{display:flex;align-items:center;text-align:left;padding:14px 0;border-bottom:1px solid #d7ddc9;gap:14px}.bib-dot{width:34px;height:34px;color:white;display:grid;place-items:center;border-radius:10px}.lobby-player .ready-status{margin-left:auto;font-size:11px}.lobby-note{margin:20px 0}.lobby-card .secondary{margin-top:10px}[hidden]{display:none!important}.race-heading{display:flex;justify-content:space-between;align-items:center;max-width:1300px;margin:0 auto 18px}.race-heading h2{font-size:36px}.timer{display:flex;align-items:baseline;gap:8px}.timer>span{font-size:11px}.timer strong{font:48px Smiley;min-width:115px;text-align:right;font-variant-numeric:tabular-nums}.timer small{font-size:16px}.track-wrap{height:clamp(340px,49vh,530px);position:relative;margin:0 auto;max-width:1300px;border:3px solid var(--ink);border-radius:18px;overflow:hidden;background:var(--track);box-shadow:0 8px 0 #273b2b18}#track{width:100%;height:100%;display:block}.countdown{position:absolute;inset:0;display:grid;place-items:center;font:140px Smiley;color:var(--paper);text-shadow:6px 7px 0 var(--ink);pointer-events:none;background:#273b2b15}.countdown:empty{background:none}.race-notice{position:absolute;top:10px;left:50%;transform:translateX(-50%);background:var(--paper);border-radius:30px;padding:7px 18px;white-space:nowrap;font-size:11px;box-shadow:0 2px 0 #0002}.race-bottom{max-width:860px;margin:25px auto 0;display:grid;grid-template-columns:1fr 1.2fr;gap:14px 38px;align-items:center}.effort>div:first-child{display:flex;justify-content:space-between;font-size:13px}.effort-bar{height:10px;margin-top:10px;border-radius:10px;background:#90b270;overflow:hidden}.effort-bar i{display:block;height:100%;width:0;background:var(--ink);border-radius:10px;transition:width .1s}.effort p{font-size:10px;color:#536e43;margin:8px 0 0}.tap-pads{display:flex;gap:12px}.tap-pad{flex:1;touch-action:none;user-select:none;background:var(--paper);border:2px solid var(--ink);box-shadow:0 5px 0 var(--ink);border-radius:12px;padding:20px 10px;font-size:18px;font-weight:750;position:relative}.tap-pad.right{background:var(--yellow)}.tap-pad span{font-size:25px}.tap-pad kbd{font:9px var(--font);position:absolute;top:5px;right:8px;opacity:.5}.tap-pad.pressed{transform:translateY(5px);box-shadow:0 0 0 var(--ink);background:#f5af6a}#quit-race{grid-column:1/-1;justify-self:center;padding:4px}.result-copy{text-align:center}.result-copy h2{font-size:48px}.result-copy p{font-size:14px;margin:8px 0 24px}.result-layout{max-width:950px;margin:0 auto;display:grid;grid-template-columns:1.1fr 1fr;gap:64px;align-items:center}.photo-wrap{transform:rotate(-3deg);position:relative;box-shadow:9px 10px 0 #52663d2b}.photo-wrap canvas{width:100%;display:block}.photo-pin{position:absolute;left:39%;width:22%;height:25px;top:-9px;background:#faf1bc99;transform:rotate(4deg);backdrop-filter:blur(3px)}.result-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;padding:0 0 20px;border-bottom:1px solid #6b875548}.stat span{display:block;font-size:10px;color:#5c754c}.stat strong{font:34px Smiley;display:block;margin-top:8px}.finish-list{margin:15px 0 22px}.finish-row{display:flex;gap:13px;font-size:12px;padding:10px 0;align-items:center}.finish-row b{font:20px Smiley;width:22px}.finish-row small{margin-left:auto;font-variant-numeric:tabular-nums}.finish-row.you{font-weight:850}.result-details .secondary{margin-top:12px}.result-details>.text-button{display:block;margin:6px auto}.result-note{font-size:10px;line-height:1.8;color:#5a724b;text-align:center}dialog{border:2px solid var(--ink);border-radius:15px;padding:36px;width:min(540px,calc(100% - 28px));max-height:85svh;background:var(--paper);color:var(--ink);box-shadow:8px 9px 0 #273b2b44}dialog::backdrop{background:#263e2c77;backdrop-filter:blur(5px)}dialog h2{font-size:35px;margin:15px 0}dialog p{font-size:12px;line-height:1.8}.close-dialog{position:absolute;right:12px;top:10px;background:none;font-size:26px}.fine-print{font-size:10px!important;color:#788069;margin:24px 0 0}.board-tabs{display:flex;gap:10px;margin:20px 0}.board-tabs button{border:1px solid var(--ink);padding:8px 16px;border-radius:25px;background:transparent;font-size:12px}.board-tabs .selected{background:var(--ink);color:white}.empty-board{padding:35px 10px;background:#e9edda;text-align:center;font-size:13px;line-height:2;border-radius:8px}.board-row{padding:13px 0;border-bottom:1px solid #d4dbc6;display:flex;align-items:center;gap:14px;font-size:13px}.board-row b{font:24px Smiley}.board-row strong{margin-left:auto}.divider{text-align:center;font-size:11px;margin:25px 0 15px;color:#7a846c}#join-form{display:flex;gap:12px}#join-form input{min-width:0;width:55%;border:1.5px solid #819172;border-radius:8px;background:white;padding:12px}#join-form button{width:45%;padding:12px}#toast{position:fixed;z-index:30;bottom:30px;left:50%;transform:translate(-50%,20px);opacity:0;pointer-events:none;background:var(--ink);color:var(--paper);padding:13px 22px;border-radius:10px;max-width:90%;font-size:13px;transition:opacity .2s,transform .2s}#toast.visible{opacity:1;transform:translate(-50%,0)}
@media(min-width:1600px){.entry-ticket{margin-top:55px}.talking-cap{top:190px;width:310px;height:370px}}
@media(max-width:700px){.topbar{height:78px;padding:17px 20px}.brand img{width:105px;height:42px}.edition{display:none}.top-actions{gap:7px}.small-button{font-size:10px;padding:9px 12px}.icon-button{font-size:10px}#home{height:max(830px,100svh)}.home-copy{padding:115px 22px 0}.home-copy h1{font-size:59px;margin:16px 0 15px;letter-spacing:-2px}.home-copy .eyebrow{font-size:9px;letter-spacing:2px}.home-copy p{font-size:13px;line-height:1.7}.mobile-only{display:block}.talking-cap{left:auto;right:8px;top:313px;width:156px;height:183px;transform:rotate(5deg)}.talking-cap span{font-size:10px;padding:11px 15px;top:-3px;left:-28px}.entry-ticket{width:calc(100% - 44px);max-width:390px;margin:193px auto 70px;padding:17px 22px;transform:rotate(-2deg)}.home-foot{left:20px;right:20px;bottom:16px;font-size:8px;letter-spacing:0}.home-foot>span:first-child{max-width:65%}.screen:not(#home){padding:96px 16px 22px}.race-heading{align-items:flex-end;margin-bottom:13px}.race-heading h2{font-size:26px;margin:10px 0 0}.race-heading .eyebrow{font-size:8px;letter-spacing:1px}.timer{display:block;text-align:right;position:relative;padding-right:13px}.timer>span{font-size:9px;display:block}.timer strong{font-size:36px;min-width:0}.timer small{position:absolute;right:0;bottom:3px;font-size:12px}.track-wrap{height:43svh;min-height:300px;border-radius:12px;border-width:2px}.race-notice{font-size:9px;top:7px;padding:6px 12px}.race-bottom{display:flex;flex-direction:column;gap:14px;margin:18px auto 0}.effort{width:100%}.effort>div:first-child{font-size:11px}.effort p{text-align:center;font-size:9px}.tap-pads{width:100%;gap:16px}.tap-pad{padding:16px 10px;font-size:20px}.tap-pad kbd{display:none}.lobby-card{padding:28px 20px;margin:12px auto}.lobby-card h2{font-size:32px}.room-code{padding:14px 10px;gap:5px}.room-code strong{font-size:28px;letter-spacing:3px}.room-code>span{font-size:10px}.result-copy h2{font-size:32px}.result-copy p{font-size:11px}.result-layout{display:flex;flex-direction:column;gap:30px;padding:0 12px}.photo-wrap{max-width:315px}.result-details{width:100%;max-width:380px}.result-stats{text-align:center}.finish-list{margin:10px 0 18px}.result-copy .eyebrow{font-size:8px;letter-spacing:1.7px}dialog{padding:30px 22px}dialog h2{font-size:30px}.countdown{font-size:105px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important}.talking-cap,.photo-wrap,.entry-ticket{transform:none}}

.topbar{background:linear-gradient(#afd58cef,#afd58c9c,transparent)}.home-foot{background:#afd58cda;padding:7px 10px;border-radius:5px}

/* Selected cover: cream paper, terracotta track, amber light, cocoa typography. */
:root{--grass:#fff4df;--track:#c5533c;--ink:#753e2b;--paper:#fff8e9;--yellow:#f9d99a;--red:#c55a40;--line:#753e2b}
body{background:#fff4df}.topbar{background:linear-gradient(#fff5e9f5,#fff5e9b8,transparent)}.primary:hover{background:#925139}.home-foot{background:transparent}.hero-art{width:100%;height:100%;object-fit:contain}#herd,#hero-cap{display:none}#home{background:#fff3df url('assets/cover-milk-coral-v6.png') right center/auto 115% no-repeat;height:max(780px,100svh)}#home:before{content:'';position:absolute;inset:0;background:linear-gradient(90deg,#fff5e7 0%,#fff5e7f5 30%,#fff5e780 50%,transparent 68%)}.home-copy{padding:160px 0 0 8%}.home-copy h1{color:var(--ink);text-shadow:none;font-size:clamp(64px,6.8vw,100px);line-height:1.13;letter-spacing:0;margin:20px 0}.home-copy p{font-size:15px}.home-copy .eyebrow{color:#a7704c;letter-spacing:4px}.talking-cap{left:57%;top:26%;width:30%;height:49%;transform:rotate(-5deg)}.talking-cap span{font-size:13px;border:1px solid #d3af85;box-shadow:0 5px 20px #9c643c15;top:-10px;left:5%;padding:14px 20px}.entry-ticket{margin:34px 0 75px 8%;width:390px;transform:none;border:1px solid #dfc29b;border-radius:16px;padding:19px 24px;box-shadow:0 12px 35px #9c643c12;background:#fff9edeb}.entry-ticket:before,.entry-ticket:after{display:none}.ticket-code,.name-field>span,.practice-label{color:#987858}.name-field input{border-color:#d9c3a0}.primary{border-radius:40px}.home-foot{color:#967455}.ticket-top{border-color:#d5b993}.swatch[data-color="1"]{background:#aa793d}.swatch[data-color="2"]{background:#91756a}.swatch[data-color="3"]{background:#af7770}
.screen:not(#home){background:radial-gradient(ellipse at 50% 0,#fffaf0,transparent 65%)}#race{padding:100px max(20px,calc((100vw - 1060px)/2)) 24px}.race-heading{margin-bottom:16px}.race-heading h2{font-size:36px}.timer strong{color:#a14a32;font-size:43px}.race-hud{display:flex;align-items:center;justify-content:space-between;margin:0 auto 10px;font-size:11px;color:#956748}.race-hud strong{font-size:15px;color:var(--ink)}.track-wrap{height:clamp(350px,50svh,520px);border:1px solid #d9b990;border-radius:100px 100px 22px 22px;box-shadow:0 12px 32px #8b4b2e16;background:#fff1d6}.race-notice{top:14%;border:1px solid #e3c9a7;font-size:10px;padding:6px 15px;box-shadow:0 3px 8px #70412c10}.countdown{background:#72351f18}.race-bottom{max-width:800px;margin-top:20px;gap:12px 32px}.effort-bar{background:#edd8b8;height:8px}.effort-bar i{background:linear-gradient(90deg,#e9b46d,#b95036)}.effort p,.result-note,.stat span,.fine-print,.divider{color:#947052}.tap-pad{border:1px solid #9c5c3e;background:#fff8e7;box-shadow:0 5px 0 #bd9069;border-radius:22px}.tap-pad.right{background:#83432e;color:#fff5df}.tap-pad.pressed{background:#e5ad62;color:#64351f}.lobby-card{border-color:#d9bb95;box-shadow:0 12px 35px #9a653019}.lobby-card p{color:#927152}.room-code,.empty-board{background:#f5e7cf;border-color:#d7ba91}.lobby-player,.board-row{border-color:#dfc8a7}dialog::backdrop{background:#55311f66}.result-stats{border-color:#d8b893}.photo-wrap{box-shadow:9px 10px 0 #a6734520}button:focus-visible,a:focus-visible,input:focus-visible{outline-color:#b36b3e}
@media(max-width:700px){.topbar{height:70px;padding:13px 18px}.brand img{width:100px}.top-actions{gap:2px}#home{height:max(860px,100svh);background-size:auto 83%;background-position:60% 25%}#home:before{background:linear-gradient(#fff5e7 0%,#fff5e780 22%,transparent 38%,#fff5e720 60%,#fff5e7 83%)}.home-copy{padding:99px 24px 0;text-align:center}.home-copy .eyebrow{font-size:8px;letter-spacing:2px}.home-copy h1{font-size:46px;line-height:1.1;margin:12px 0}.home-copy h1 br{display:none}.home-copy p{font-size:12px}.mobile-only{display:none}.talking-cap{left:21%;top:280px;width:62%;height:245px}.talking-cap span{font-size:10px;top:-20px;left:5%;padding:9px 16px}.entry-ticket{position:absolute;bottom:52px;left:22px;width:calc(100% - 44px);max-width:none;margin:0;padding:17px 20px}.entry-main{padding:12px 0}.home-foot{bottom:13px;font-size:8px}.primary{padding:14px 20px}#race{padding:85px 16px 16px}.race-heading h2{font-size:25px}.race-heading{margin-bottom:14px}.timer strong{font-size:34px}.race-hud{font-size:9px;margin-bottom:8px}.race-hud strong{font-size:12px}.track-wrap{height:46svh;min-height:310px;border-radius:65px 65px 18px 18px}.race-notice{font-size:9px}.race-bottom{gap:12px;margin-top:16px}.tap-pad{padding:16px 8px;border-radius:20px;font-size:19px}.effort p{min-height:14px;margin-top:7px}.race-bottom #quit-race{font-size:10px;padding:6px}.result-copy h2{font-size:30px}}
@media(max-width:700px) and (max-height:740px){#race{padding-top:73px}.track-wrap{height:42svh;min-height:255px}.race-heading{margin-bottom:9px}.race-heading h2{font-size:22px}.race-bottom{margin-top:12px;gap:9px}.tap-pad{padding:12px 8px}}

.tap-pad.right.pressed{background:#a65d3c;color:#fff8e7}.tap-pad.right{color:#fff8e7}body[data-screen="race"] .topbar{background:#fff5e9}#race.screen{padding-left:max(16px,calc((100vw - 1060px)/2));padding-right:max(16px,calc((100vw - 1060px)/2))}

/* Lateral race camera: four horizontal lanes. */
.track-wrap{border-radius:22px}.race-notice{top:8px;font-size:9px;padding:5px 12px}.track-wrap{height:clamp(380px,52svh,540px)}@media(max-width:700px){.track-wrap{height:49svh;min-height:360px;border-radius:16px}.race-notice{max-width:48%;overflow:hidden;text-overflow:ellipsis;font-size:8px}}@media(max-width:700px) and (max-height:740px){.track-wrap{height:43svh;min-height:300px}}

/* Milk-white + grapefruit coral. Character yellow stays the warm focal point. */
:root{--grass:#fffdf8;--paper:#fffdf8;--yellow:#ffe5ac}body{background:#fffdf8}.topbar{background:linear-gradient(#fffdf8f5,#fffdf8b8,transparent)}body[data-screen="race"] .topbar{background:#fffdf8}#home{background-color:#fffdf8}#home:before{background:linear-gradient(90deg,#fffdf8 0%,#fffdf8f5 30%,#fffdf880 50%,transparent 68%)}.home-copy h1{color:#684333}.home-copy .eyebrow{color:#b47b6c}.entry-ticket{background:#ffffffee;border-color:#f0d9cd;box-shadow:0 12px 35px #bd766510}.ticket-top{border-color:#e6c9bb}.entry-ticket .primary{background:#cc6559;border-color:#cc6559;color:#fff}.entry-ticket .primary:hover{background:#b7544c}.talking-cap span{background:#fffdf8;border-color:#e1c5b6;color:#79513b}.talking-cap{left:57%;width:28%;height:45%;top:27%}.cheer-friend{position:absolute;right:4%;top:22%;width:110px;z-index:2;transform:rotate(8deg)}.cheer-friend img{width:100%;display:block}.cheer-friend span{display:block;text-align:center;font-size:13px;color:#986c51;transform:rotate(-8deg);margin-bottom:8px}.family-invitation{position:absolute;right:6%;top:70%;width:170px;z-index:2;transform:rotate(6deg)}.waiting-friend{width:66px;position:absolute;left:-43px;bottom:7px;transform:rotate(-12deg)}.mini-family{background:#fffdf8;border:1px solid #ecd8c9;padding:12px 10px 9px;box-shadow:0 5px 15px #8c5a3212}.mini-family>div{display:flex;align-items:flex-end;justify-content:center;gap:5px}.mini-family img{width:39px;height:50px;object-fit:contain}.mini-family span{display:block;text-align:center;font-size:10px;margin-top:8px;letter-spacing:1px;color:#946b50}.home-foot{color:#987f70}
@media(max-width:700px){#home:before{background:linear-gradient(#fffdf8 0%,#fffdf890 22%,transparent 38%,#fffdf820 60%,#fffdf8 83%)}.talking-cap{left:23%;top:279px;width:60%;height:245px}.cheer-friend{top:247px;right:18px;width:62px}.cheer-friend span{font-size:10px;margin-bottom:5px}.family-invitation{top:453px;left:24px;right:auto;width:99px;transform:rotate(-9deg)}.waiting-friend{width:42px;left:-10px;bottom:54px;transform:rotate(8deg)}.mini-family{padding:8px 5px 7px}.mini-family img{width:24px;height:31px}.mini-family>div{gap:1px}.mini-family span{font-size:7px;letter-spacing:0;margin-top:5px}.home-copy h1{font-size:45px}}

/* Rhythm race: shared by practice and server-authoritative multiplayer. */
.rhythm-controls{display:flex;gap:16px;align-items:center;margin:12px 0}.beat-guide{flex:1;min-width:0;font-size:14px;color:#754e3e}.beat-rail{height:14px;background:#efdfd3;border-radius:20px;position:relative;margin:10px 8px 9px 0}.beat-rail b{position:absolute;left:48%;width:37%;height:100%;background:#df9c8d;border-radius:10px}.beat-rail i{position:absolute;z-index:1;top:-3px;width:20px;height:20px;border:3px solid #fffaf0;border-radius:50%;background:#7c4935;transform:translateX(-50%)}.sprint-button{border:0;border-radius:18px;background:#cb6659;color:white;padding:18px 20px;font:inherit;min-width:170px;touch-action:manipulation}.sprint-button:disabled{background:#ead6c6;color:#846353}.boosting{box-shadow:0 0 0 5px #efb85b,0 0 32px #f1c99088}.photo-album{background:#fff8ed;border:1px solid #ecd8c5;border-radius:16px;padding:16px;margin-bottom:16px}.photo-album h3{margin:0}.photo-album p{font-size:14px}.photo-album small{font-size:12px;color:#967663}#album-choices{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:10px}#album-choices button{font:inherit;font-size:13px;border:1px solid #dfb7a3;background:#fffdf7;color:#754e3e;border-radius:10px;padding:12px}#album-choices button.selected{background:#cc695e;color:white}#album-choices button:disabled{opacity:.55}#save-photo:disabled{opacity:.45;cursor:not-allowed}@media(max-width:600px){.rhythm-controls{gap:10px}.sprint-button{min-width:130px;padding:16px 10px;font-size:14px}.beat-guide{font-size:12px}}
.rhythm-controls{width:100%}.sprint-button:disabled{opacity:1;cursor:default}.race-bottom .tap-pads{grid-column:1/-1;width:100%}@media(max-width:700px){#race .track-wrap{height:36svh;min-height:260px}#race .race-bottom{gap:6px;margin-top:12px}#race .rhythm-controls{margin:4px 0}#race #tap-help{display:none}}@media(max-height:740px) and (max-width:700px){#race .track-wrap{min-height:230px;height:33svh}}

/* Guided foot cues */
.beat-rail[hidden]{display:none}.beat-guide small{display:block;margin-top:8px}.tap-pad.foot-lit,#run-lesson .foot-lit{background:#ffd782!important;color:#653e2e!important;box-shadow:0 0 0 4px #fff8e7,0 0 0 7px #d9775e!important;transform:translateY(-3px)}.tap-pad.foot-lit:before{content:'现在点 ';font-size:13px}.sprint-button.sprint-ready,#lesson-sprint.sprint-ready{background:#c95749;color:white;box-shadow:0 0 0 4px #ffd782}.race-bottom #tap-help{display:none}#run-lesson{width:min(440px,calc(100vw - 32px));border:2px solid #e4b59c;border-radius:28px;padding:28px;background:#fffbf3;color:#754e3e;text-align:center}#run-lesson h2{font-size:25px;margin:18px 0}#run-lesson p{line-height:1.7;font-size:15px}.lesson-kicker{font-size:12px;letter-spacing:2px}.lesson-feet{display:flex;gap:16px;margin:26px 0}.lesson-feet button{flex:1;padding:24px 10px;border-radius:18px;background:#ead9cd;font:inherit}.lesson-feet small{display:block;font-size:12px;margin-top:8px}#lesson-sprint{width:100%;padding:19px;border-radius:20px;font:inherit;background:#ead9cd}#run-lesson button:disabled{opacity:.65;cursor:default}

/* Approved sports collage cover: preserve the entire illustration. */
#home.sports-home{background:#fffdf8;height:max(760px,100svh)}#home.sports-home:before,#home.sports-home:after{display:none}#home.sports-home #herd,#home.sports-home .talking-cap,#home.sports-home .cheer-friend,#home.sports-home .family-invitation{display:none}.sports-cover{position:absolute;right:2%;top:94px;width:54%;height:calc(100% - 140px);object-fit:contain;display:block}#home.sports-home .home-copy{padding:160px 0 0 6%;max-width:46%;text-align:left}#home.sports-home .home-copy h1{font-size:clamp(48px,5.5vw,82px);color:#764b35;text-shadow:none}#home.sports-home .home-copy p{font-size:16px}#home.sports-home .entry-ticket{position:relative;inset:auto;width:36%;max-width:460px;margin:32px 0 70px 6%;transform:none;background:#fffdf8;box-shadow:none;border:1px solid #e7d8c9}#home.sports-home .entry-ticket:before,#home.sports-home .entry-ticket:after{display:none}#home.sports-home .primary{background:#d86a41;border-color:#d86a41}#home.sports-home .primary:hover{background:#bd5231}#home.sports-home .home-foot{background:none}
@media(max-width:700px){#home.sports-home.active{display:flex;flex-direction:column;align-items:center;height:auto;min-height:100svh;overflow:hidden}#home.sports-home .home-copy{order:0;padding:85px 18px 0;max-width:none;text-align:center;width:100%}#home.sports-home .home-copy .eyebrow{display:none}#home.sports-home .home-copy h1{font-size:35px;margin:8px 0}#home.sports-home .home-copy h1 br{display:none}#home.sports-home .home-copy p{font-size:12px;line-height:1.7}#home.sports-home .mobile-only{display:none}.sports-cover{order:1;position:static;width:100%;height:auto;max-height:48svh;object-fit:contain;margin:8px 0}#home.sports-home .entry-ticket{order:2;position:static;width:calc(100% - 36px);max-width:430px;margin:0 18px 15px;padding:12px 16px}#home.sports-home .ticket-top{display:none}#home.sports-home .entry-main{padding:4px 0 12px}#home.sports-home .ticket-bottom{margin-top:12px}#home.sports-home .home-foot{order:3;position:static;width:calc(100% - 36px);margin:0 18px 15px;font-size:8px;letter-spacing:0}}
/* Full-bleed cover with controls over the artwork. */
#home.sports-home,#home.sports-home.active{display:block;position:relative;height:100svh;min-height:640px;isolation:isolate;background:#fffdf8;overflow:hidden}
#home.sports-home .sports-cover{position:absolute;inset:0;width:100%;height:100%;max-height:none;object-fit:cover;object-position:center;margin:0;z-index:-2}
#home.sports-home:before{content:'';display:block;position:absolute;inset:0;z-index:-1;pointer-events:none;background:linear-gradient(180deg,rgba(255,253,248,.94) 0%,rgba(255,253,248,.7) 13%,transparent 34%,transparent 62%,rgba(255,253,248,.65) 83%,rgba(255,253,248,.96) 100%)}
#home.sports-home .home-copy{position:absolute;top:105px;left:0;width:100%;max-width:none;padding:0 24px;text-align:center;pointer-events:none}
#home.sports-home .home-copy .eyebrow{display:none}#home.sports-home .home-copy h1{font-size:clamp(38px,5vw,68px);margin:0 0 10px;line-height:1.15;text-shadow:0 2px 0 #fffdf8,0 0 25px #fffdf8}#home.sports-home .home-copy h1 br{display:none}#home.sports-home .home-copy p{font-size:15px;text-shadow:0 1px 6px #fffdf8}
#home.sports-home .entry-ticket{position:absolute;top:auto;left:50%;bottom:55px;transform:translateX(-50%);width:min(440px,calc(100% - 40px));max-width:none;margin:0;padding:0;border:0;background:none;box-shadow:none}
#home.sports-home .ticket-top,#home.sports-home .entry-main{display:none}#home.sports-home .primary{border-radius:50px;justify-content:center;padding:19px 25px;font-size:22px;background:#cf5b36;border:2px solid #fff8e7;box-shadow:0 5px 0 #9f442c,0 10px 24px #64352330}#home.sports-home .ticket-bottom{justify-content:center;font-size:13px;gap:12px;padding:12px 16px;margin-top:15px;border-radius:30px;background:#fffdf8e8}#home.sports-home .practice-label{display:none}
#home.sports-home .home-foot{position:absolute;left:22px;right:22px;bottom:16px;width:auto;margin:0;font-size:9px;color:#714a35}
body:has(#home.active.sports-home) .topbar{background:transparent}body:has(#home.active.sports-home) .edition{display:none}
@media(max-width:700px){#home.sports-home,#home.sports-home.active{height:100svh;min-height:560px}#home.sports-home .home-copy{top:90px;padding:0 12px}#home.sports-home .home-copy h1{font-size:clamp(30px,8.8vw,44px)}#home.sports-home .home-copy p{font-size:11px}#home.sports-home .entry-ticket{bottom:46px}#home.sports-home .primary{font-size:20px;padding:16px 22px}#home.sports-home .home-foot{left:14px;right:14px;font-size:8px}}

/* Approved-source cover. The image and hit areas share the same 2:3 stage. */
#home.official-home,#home.official-home.active{min-height:0;height:100svh;background:#fffdfa}
#home.official-home:before{display:none}
#home.official-home .sports-cover{object-fit:contain;object-position:center}
#home.official-home .home-copy{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);padding:0}
#home.official-home .entry-ticket{bottom:calc((100svh - min(100svh,150vw))/2 + min(100svh,150vw)*.042);width:min(41.5vw,27.67svh);height:calc(min(100svh,150vw)*.106);padding:0}
#home.official-home #practice{width:100%;height:calc(min(100svh,150vw)*.085);padding:0;border:0;background:transparent;color:transparent;box-shadow:none;border-radius:40%;font-size:0}
#home.official-home #practice span{display:none}
#home.official-home #practice:hover{background:#fff7d929;transform:translateY(-2px)}
#home.official-home #practice:focus-visible{outline:3px solid #309069;outline-offset:3px}
#home.official-home .ticket-bottom{height:calc(min(100svh,150vw)*.027);margin:0;padding:0;gap:8px;background:transparent;white-space:nowrap}
#home.official-home .ticket-bottom button,#home.official-home .ticket-bottom>span{color:transparent;font-size:clamp(9px,1.5svh,20px);min-height:26px}
#home.official-home .ticket-bottom button:focus-visible{outline:2px solid #309069}
#home.official-home .home-foot{display:none}
body:has(#home.official-home.active) .topbar .brand{visibility:hidden}
body:has(#home.official-home.active) .top-actions{padding:4px;background:#fffdfaeb;border-radius:20px}
body:has(#home.official-home.active) .topbar{padding:12px 16px;pointer-events:none}
body:has(#home.official-home.active) .top-actions{pointer-events:auto}
@media(max-width:700px){body:has(#home.official-home.active) .topbar{padding:4px 8px}body:has(#home.official-home.active) .top-actions{transform:scale(.8);transform-origin:right top}}
/* Selected mobile jelly-race scene. Live SVG labels and real HTML controls. */
body[data-screen="race"]{background:#f0eee9}body[data-screen="race"] .topbar{display:none}
#race.active{padding:0!important;min-height:100svh;display:block}#race> :not(#jelly-race){display:none!important}
#jelly-race{position:relative;width:min(100%,480px);margin:auto;aspect-ratio:1/2;background:#fffdfa;touch-action:manipulation;user-select:none}
#jelly-race svg{display:block;width:100%;height:auto}#jelly-race .j-hit{position:absolute;border:0;background:transparent;padding:0;box-shadow:none;min-width:44px;min-height:44px}
.j-back{left:2%;top:1.5%;width:11%;height:5%}.j-pause{right:3%;top:1.5%;width:11%;height:5%}.j-sprint{left:10%;top:82.5%;width:80%;height:11%;border-radius:45%!important}.j-toggle{left:15%;top:94%;width:70%;height:4%}.j-taps{position:absolute;left:43%;right:5%;top:70%;display:flex;gap:10px}.j-taps button{flex:1;border:1px solid #decfbc;background:#fff9e8;border-radius:18px;padding:12px 4px;color:#79513d;font-size:14px;touch-action:none}.j-count{position:absolute;top:39%;left:0;width:100%;text-align:center;font:700 48px Round;color:#704332;pointer-events:none;text-shadow:0 2px 0 white}
@media(max-height:680px) and (min-width:600px){#jelly-race{width:340px}}

#jelly-race .j-taps{top:72.5%;left:19%;right:6%}#jelly-race .j-taps button{padding:10px 4px;min-height:42px}
/* Show the current-race leaderboard before the commemorative photo. */
#result .result-layout{display:flex;flex-direction:column;max-width:760px;margin:auto;gap:24px}
#result .result-details{order:0;width:100%}#result .photo-wrap{order:1;width:min(100%,520px);margin:auto}
#result .finish-list{background:#fffdfa;border-radius:20px;padding:10px 18px;margin-bottom:20px}#result .finish-row:first-child{background:#fff0ba;border-radius:12px}#result .finish-row{padding:14px 10px}
#result .result-details>.photo-wrap{display:block;max-width:380px;width:100%;margin:22px auto 28px;transform:none}#result .result-details>.photo-wrap canvas{display:block;width:100%;height:auto}
