*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;background:#b8d9b2;color:#24291f;font-family:Arial,'Malgun Gothic',sans-serif}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer;color:inherit}button:focus-visible,a:focus-visible{outline:3px solid #127de6;outline-offset:4px}.game{width:100%;height:100vh;height:100dvh;display:flex;flex-direction:column}.viewport{position:relative;flex:1;min-height:0;overflow:hidden}canvas{display:block;width:100%;height:100%}.hud{position:absolute;top:0;left:0;right:0;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 26px;pointer-events:none}.hud>*{pointer-events:auto}.brand{font-size:31px;font-weight:1000;letter-spacing:-3px;transform:rotate(-5deg);text-decoration:none;color:#293520}.brand span{color:#df5138}.race-info{display:flex;align-items:center;gap:12px;font-size:13px;color:#415836}.race-info strong{font-size:13px}.race-info #round{border:1px solid #769069;border-radius:20px;padding:4px 8px;font:bold 12px monospace}#clock{font:700 13px monospace;min-width:62px}.actions{display:flex;gap:8px}.actions button{border:1px solid #719264;background:#eaf0d2b0;width:36px;height:36px;border-radius:50%;font-size:23px;line-height:1}.actions button[aria-pressed="true"]{background:#f7ed47}.rankings{flex-shrink:0;display:grid;grid-template-columns:repeat(6,1fr);background:#f5f3df;border-top:2px solid #405631;padding-bottom:env(safe-area-inset-bottom)}.rank{display:flex;align-items:center;justify-content:center;gap:12px;padding:12px 10px;border-right:1px solid #d0d5bd;min-width:0}.rank:last-child{border-right:0}.rank-position{font:900 22px monospace;color:#839173}.rank:first-child .rank-position{color:#d65236}.runner-id{display:inline-flex;align-items:center;justify-content:center;width:23px;height:23px;border:1.5px solid #323d29;border-radius:50%;font:bold 12px monospace;background:var(--color);flex-shrink:0}.rank-name{font-size:14px;font-weight:800;white-space:nowrap}.rank-detail{font:12px monospace;color:#6f7b61}.infield{position:absolute;inset:0;display:grid;place-items:center;pointer-events:none}.infield h1{font-size:clamp(45px,8vw,100px);margin:0;color:#486d3980;transform:rotate(-5deg);letter-spacing:-5px}.finish-card{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%) rotate(-2deg);width:max-content;max-width:65%;text-align:center;background:#fffae3;border:2px solid #2e3d24;box-shadow:4px 4px 0 #2e3d24;padding:20px 25px}.finish-card>span{font-weight:900;font-size:13px;background:#f7ef42;padding:4px 10px}.finish-card h2{font-size:clamp(19px,2.3vw,30px);margin:13px 0}.finish-card button{font-size:13px;font-weight:bold;background:#2e3d24;color:#fffde6;border:0;padding:9px 15px}.finish-card small{display:block;font-size:11px;margin-top:10px;color:#707b60}.loading{position:absolute;inset:0;background:#b8d9b2;display:grid;place-items:center;font-weight:bold}.loading[hidden],.finish-card[hidden],.infield[hidden]{display:none}@media(max-width:650px){.hud{padding:12px;gap:8px}.brand{font-size:25px}.race-info{gap:5px}.race-info strong{display:none}.race-info #round{font-size:11px;padding:3px 5px}#clock{font-size:11px;min-width:45px}.actions{gap:5px}.actions button{width:30px;height:30px;font-size:20px}.rank{flex-wrap:wrap;gap:5px;padding:9px 4px}.rank-name{width:100%;text-align:center;font-size:11px}.rank-position{font-size:17px}.runner-id{width:18px;height:18px;font-size:10px}.rank-detail{font-size:10px}.finish-card{padding:16px 14px}.infield h1{font-size:53px}}@media(max-height:500px){.hud{padding:7px 14px}.brand{font-size:24px}.actions button{width:29px;height:29px}.rank{padding:7px}.rank-name{font-size:12px}.finish-card{padding:10px 16px}.finish-card h2{margin:9px 0;font-size:20px}}
.race-info{margin-right:auto;margin-left:12px}@media(max-width:650px){.race-info{margin-left:0}}

.rank{gap:8px;padding:11px 7px}.rank-name{font-size:13px}@media(max-width:1100px){.rank{flex-wrap:wrap;gap:5px}.rank-name{width:100%;text-align:center;font-size:12px}}@media(max-width:650px){.rankings{grid-template-columns:repeat(3,1fr)}.rank{padding:6px;border-bottom:1px solid #d0d5bd}.rank:nth-child(3n){border-right:0}.rank-name{font-size:11px}.rank-position{font-size:15px}.rank-detail{font-size:10px}}
.brand{padding:2px 10px 5px;background:#fff8e5ed;border:1px solid #405a3280;border-radius:7px;box-shadow:2px 2px 0 #28432425}.race-info{padding:8px 12px;background:#fff8e5ed;border:1px solid #405a3266;border-radius:22px}.actions button{background:#fff8e5f2;box-shadow:1px 2px 0 #28432425}@media(max-width:650px){.brand{padding:2px 7px 4px}.race-info{padding:6px 7px}}
/* The dock reserves independent surfaces for future tournament features. */
html,body{background:#a8b780}.viewport{min-height:270px}.brand{letter-spacing:-2px;font-size:28px}.race-dock{flex:0 0 auto;position:relative;background:#f5f1df;border-top:2px solid #435036;padding:0 18px max(12px,env(safe-area-inset-bottom));z-index:2}.dock-top{display:flex;align-items:center;justify-content:space-between;padding:10px 4px 8px;gap:8px;font-size:13px}.dock-top>strong{font-size:13px;color:#677354}.rankings{border-top:1px solid #d0d5bd;border-bottom:1px solid #d0d5bd;background:transparent;padding:0}.rank{padding:10px 7px}.rank-name{font-size:13px}.future-panels{display:grid;grid-template-columns:1.1fr 1fr 1.5fr;gap:12px;padding-top:12px}.future-panels>section{min-width:0;border:1px solid #d1d2ba;background:#ebe9d5;border-radius:8px;padding:10px 13px}.dock-label{display:block;color:#747b61;font-size:12px;margin-bottom:5px}.my-horse strong{font-size:14px}.my-horse small{font-size:11px;display:block;color:#92967e;margin-top:4px}.profile-panel{display:flex;justify-content:space-between;gap:14px}.profile-panel strong{font-size:16px}.profile-panel small{font-size:11px;color:#969b82}.chat-placeholder{font-size:13px;color:#969b82;display:flex;justify-content:space-between}.chat-placeholder span{font-size:20px;color:#babd9f}.roster-panel summary{cursor:pointer;font-size:13px;list-style:none;border-bottom:1px dashed #798567;padding:2px 0}.roster-panel summary:after{content:' ⌃'}.roster-panel[open] summary:after{content:' ⌄'}.roster-grid{position:absolute;bottom:calc(100% + 8px);left:18px;right:18px;display:grid;grid-template-columns:repeat(6,1fr);gap:7px;padding:12px;background:#fff9e9f5;border:2px solid #455235;box-shadow:3px 3px 0 #45523530;border-radius:9px}.horse-card{min-width:0;padding:8px;border:1px solid #d5d5bd;border-radius:5px}.horse-card>div{display:flex;gap:5px;align-items:center;flex-wrap:wrap}.horse-card b{font-size:13px}.horse-card p{font-size:12px;color:#687251;margin:7px 0 0}.condition{font-size:11px;border-radius:10px;padding:3px 6px;background:#e7e7d5}.condition.good{color:#3b7145;background:#dcebd5}.condition.bad{color:#a35a44;background:#f0ddd0}
@media(max-width:750px){.race-dock{padding:0 9px max(9px,env(safe-area-inset-bottom))}.future-panels{gap:6px;grid-template-columns:1fr 1fr;padding-top:8px}.future-panels>section{padding:8px 10px}.chat-panel{grid-column:1/-1}.chat-panel .dock-label{display:inline;margin-right:12px}.chat-placeholder{display:inline-flex;font-size:12px}.chat-placeholder span{display:none}.my-horse strong{font-size:12px}.dock-top{padding:7px 2px}.roster-grid{grid-template-columns:repeat(3,1fr);left:9px;right:9px;padding:7px;gap:5px}.horse-card{padding:6px}.horse-card b{font-size:11px}.horse-card p{font-size:10px}.horse-card .runner-id{width:16px;height:16px;font-size:10px}.brand{font-size:23px}.rank-name{font-size:11px}.rank{padding:6px 3px}.viewport{min-height:280px}.hud{padding:10px}.race-info{gap:6px}.race-info strong{display:none}.profile-panel strong{font-size:14px}}
@media(max-height:600px){html,body{overflow:auto}.game{min-height:620px;height:100dvh}.viewport{min-height:330px}.future-panels>section{padding:6px 10px}.race-dock{padding-bottom:8px}}
/* Finish-time labels must not resize the track while a race is running. */
.rank{min-height:46px}@media(min-width:651px) and (max-width:1100px){.rank{height:76px}}@media(max-width:650px){.rank{height:60px;display:grid;grid-template-columns:auto auto;grid-template-rows:18px 14px 12px;gap:2px 6px;align-content:center;justify-content:center}.rank-name,.rank-detail{grid-column:1/-1;text-align:center}.rank-name{width:auto}.rank-position,.runner-id{justify-self:center}}
.horse-card p{word-break:keep-all;line-height:1.45}
@media(max-height:500px) and (min-width:651px){html,body{overflow:hidden}.game{min-height:0;height:100dvh}.viewport{min-height:210px}.race-dock{max-height:145px;overflow:auto}.dock-top:has(.roster-panel[open]){display:block}.roster-panel[open]{margin-top:8px}.roster-grid{position:static;grid-template-columns:repeat(3,1fr);margin-top:8px}.rank{height:56px}.rank-name{font-size:11px}.future-panels{padding-bottom:5px}}
@media(max-height:500px) and (min-width:651px){.hud{padding:5px 12px}.brand{font-size:21px}.race-info{padding:5px 8px}.actions button{width:27px;height:27px}}
/* Reuse the actual detached horse mask as the brand mark. */
.brand{display:inline-flex;align-items:center;gap:6px;white-space:nowrap;letter-spacing:-1.5px;line-height:1;padding:4px 10px 4px 4px;transform:rotate(-3deg);font-size:25px}.brand .brand-icon{display:block;width:40px;height:40px;flex:0 0 40px}.brand .brand-name{color:#293520}.brand .brand-race{color:#df5138;font-size:.8em;letter-spacing:-1px}
@media(max-width:650px){.hud{display:grid;grid-template-columns:1fr auto;gap:6px 8px;align-items:center}.brand{font-size:22px;justify-self:start}.brand .brand-icon{width:32px;height:32px;flex-basis:32px}.actions{grid-column:2;grid-row:1}.race-info{grid-column:1/-1;grid-row:2;margin:0;justify-self:start;padding:4px 8px}.brand .brand-race{font-size:.8em}}
@media(max-height:500px) and (min-width:651px){.brand{font-size:21px;padding:2px 8px 2px 3px}.brand .brand-icon{width:28px;height:28px;flex-basis:28px}}
/* Compact the reserved dock so the stadium gains vertical room. */
.race-dock{padding-bottom:max(7px,env(safe-area-inset-bottom))}.dock-top{padding:6px 4px}.rank{min-height:38px;padding:7px}.future-panels{gap:8px;padding-top:7px}.future-panels>section{padding:6px 10px}.dock-label{margin-bottom:3px}.my-horse small{display:inline;margin-left:7px}.chat-placeholder span{font-size:16px}
@media(min-width:651px) and (max-width:1100px){.rank{height:62px}}
@media(max-width:750px){.future-panels{padding-top:5px;gap:5px}.future-panels>section{padding:5px 8px}.my-horse small{display:block;margin:2px 0 0}.chat-panel{padding-top:4px!important;padding-bottom:4px!important}.dock-top{padding:5px 2px}}
@media(max-width:650px){.rank{height:54px;padding:3px}.race-dock{padding-bottom:max(5px,env(safe-area-inset-bottom))}}
@media(max-height:500px) and (min-width:651px){.race-dock{max-height:115px}.rank{height:48px}}
.pick-horse{font-size:12px;font-weight:700;border:1px solid #67754d;background:#fffbed;border-radius:6px;padding:6px 9px;white-space:nowrap;min-height:30px}.pick-horse:hover{background:#efe8ad}.pick-horse[aria-pressed="true"]{background:#435b32;color:#fffbed}.rank.is-selected{background:#e0e8c5;box-shadow:inset 0 -3px #68883e}.rankings.picking .rank{flex-wrap:wrap;gap:5px}.rankings.picking .rank-name{width:auto}.rankings.picking .rank-position{display:none}#reward-message{font-size:14px;line-height:1.5;max-width:300px;word-break:keep-all;margin:8px auto 12px}#reward-message.reward-win{color:#b34d25;font-weight:800}#points-storage{display:block;font-size:10px;color:#7e876c;margin-top:3px}#points{font-variant-numeric:tabular-nums}
@media(max-width:650px){.rankings.picking .rank{grid-template-columns:18px 1fr;grid-template-rows:18px 30px;height:60px;gap:3px;padding:3px}.rankings.picking .rank-name{grid-column:2;font-size:10px;white-space:nowrap}.pick-horse{grid-column:1/-1;justify-self:center;padding:3px 10px;min-height:28px}.finish-card{max-width:85%}#reward-message{font-size:12px}.profile-panel{gap:7px}}
/* Paper tickets and a hand-painted scoreboard, matching the race sprites. */
.race-dock{background:#ead8a6;border-top:3px solid #3e392b;padding:0 14px max(9px,env(safe-area-inset-bottom));box-shadow:0 -4px 0 #fff1c5}.dock-top{padding:8px 3px;color:#3e392b}.dock-top>strong{color:#3e392b;font-size:14px;font-weight:900}.roster-panel summary{font-size:13px;font-weight:700;color:#4d4533;border:0;border-bottom:2px dotted #8e7952}.rankings{gap:7px;border:0}.rank{position:relative;background:#fff5d6;border:2px solid #4a4231!important;border-radius:5px 8px 5px 10px;box-shadow:2px 3px 0 #aa8f58;min-height:48px;padding:7px 6px;gap:6px}.rank:nth-child(2n){background:#f4edb7;transform:rotate(.45deg)}.rank:nth-child(2n+1){transform:rotate(-.45deg)}.rank-position{font-size:19px;color:#9c8052}.rank-name{font-size:13px;color:#382f23}.rank-detail{font-size:12px;color:#72583d}.runner-id{border:2px solid #453a2b;font-weight:900}.future-panels{grid-template-columns:1fr 1fr;gap:10px;padding-top:10px}.future-panels>section{border:2px solid #4a4231;border-radius:7px;background:#fff6db;box-shadow:2px 3px 0 #aa8f58;padding:7px 12px}.online-panel{display:flex;align-items:center;gap:10px;background:#f5bf83!important}.online-panel .dock-label{margin:0;color:#633b27;font-weight:900;font-size:14px}.online-panel strong{font:900 26px monospace;white-space:nowrap}.online-panel strong small{font-size:14px}.online-note{margin-left:auto;font-size:12px;color:#6b4931}.profile-panel{align-items:center}.profile-panel>div{display:flex;align-items:center;gap:8px}.profile-panel .dock-label{margin:0;font-size:13px;color:#70563c}.profile-panel strong{font-size:15px}.profile-panel #points-storage{font-size:12px;color:#70563c;max-width:150px;margin:0}.roster-grid{background:#fff5d8;border-color:#4a4231;box-shadow:3px 4px 0 #4a4231;border-radius:8px}.horse-card{border:1px dashed #ac9162}.finish-card{z-index:5;border:3px solid #42372a;border-radius:8px 5px 11px 5px;box-shadow:5px 6px 0 #42372a;background:#fff3cd;width:340px;max-width:90%;max-height:90%;overflow:auto;transform:translate(-50%,-50%) rotate(-1deg)}.finish-card h2{margin:12px 0 6px}.finish-card #close-result{background:#dc6949;border:2px solid #42372a;box-shadow:2px 2px 0 #42372a;border-radius:5px;padding:8px 23px;font-size:14px}.finish-card small{font-size:12px;color:#70563c}#result-list{list-style:none;padding:0;margin:10px 0 15px;text-align:left}#result-list li{display:flex;gap:10px;align-items:center;border-bottom:1px dashed #c5aa74;padding:5px 0;font-size:14px}#result-list li b{color:#b44b30;min-width:30px}#result-list li small{margin:0 0 0 auto}#again[hidden]{display:none}
@media(max-width:1100px){.profile-panel>div{flex-wrap:wrap;gap:4px 7px}.online-note{max-width:90px;line-height:1.4}.rank{height:62px}.rank-name{font-size:13px}}
@media(max-width:650px){.race-dock{padding-left:8px;padding-right:8px}.rankings{gap:5px}.rank{height:57px;padding:3px;gap:2px 5px}.rank-name{font-size:12px}.rank-detail{font-size:12px}.dock-top{gap:6px}.dock-top>strong{font-size:13px}.roster-panel summary{font-size:12px}.future-panels{gap:6px;padding-top:8px}.future-panels>section{padding:6px 8px}.online-panel{flex-wrap:wrap;gap:2px 7px}.online-panel .dock-label{font-size:13px}.online-panel strong{font-size:23px}.online-note{max-width:none;margin:0;font-size:12px;width:100%}.profile-panel{gap:8px}.profile-panel>div{display:block}.profile-panel strong{font-size:14px}.profile-panel #points-storage{font-size:12px}.finish-card{padding:14px 18px}#result-list li{font-size:13px;padding:4px 0}.finish-card #reward-message{margin-bottom:4px}}
@media(max-height:500px) and (min-width:651px){.rank{height:49px}.race-dock{max-height:142px}.future-panels{padding-top:7px}.online-panel strong{font-size:21px}.finish-card{max-height:94%;padding:10px 18px}.finish-card h2{font-size:19px;margin:7px 0}#result-list{margin:6px 0}#result-list li{font-size:12px;padding:2px 0}.finish-card #close-result{padding:4px 18px}.finish-card #reward-message{margin:3px 0}}
/* Free-point betting uses the same small paper-ticket surfaces. */
.bet-panel{display:grid;grid-template-columns:minmax(180px,1fr) auto;align-items:center;gap:5px 14px;margin-top:9px;padding:9px 12px;background:#fff1bf;border:2px dashed #786039;border-radius:7px;color:#473423}.bet-ticket{display:flex;align-items:center;flex-wrap:wrap;gap:5px 10px;min-width:0}.bet-ticket .dock-label{margin:0;font-size:14px}.bet-ticket strong{font-size:14px}.bet-ticket small{font-size:13px;color:#705137}.bet-controls{display:flex;align-items:center;flex-wrap:wrap;gap:6px}.bet-controls label{font-size:14px}.bet-controls input{width:72px;min-height:36px;padding:5px;background:#fffaf0;border:2px solid #655035;border-radius:5px;font-family:inherit;font-size:16px;font-weight:700;color:#382f23}.bet-panel button,.profile-panel button,.profile-panel a{font-family:inherit;font-size:14px;font-weight:700;min-height:36px;border:2px solid #59442d;border-radius:5px;padding:5px 12px;background:#f9dda1;color:#3e3022}.profile-panel a{display:inline-flex;align-items:center;text-decoration:none}.bet-panel #bet-submit{background:#dd704c;color:#241b13}.bet-panel button:disabled,.pick-horse:disabled{opacity:.48;cursor:default}.bet-panel [hidden],.profile-panel [hidden]{display:none!important}#bet-message{margin:0;font-size:13px;line-height:1.45;grid-column:1/-1;min-height:19px}.settlement-note{font-size:12px;color:#745537;grid-column:1/-1}.rank{flex-wrap:wrap;height:auto;min-height:77px}.rank .pick-horse{font-size:14px;min-height:32px;flex-basis:100%;padding:3px 8px}.rank:has(.pick-horse[aria-pressed="true"]){outline:2px solid #c05d37;outline-offset:1px}.rank.is-selected{background:#efdf98}.bet-panel :focus-visible,.pick-horse:focus-visible,.profile-panel a:focus-visible{outline:3px solid #8b3923;outline-offset:2px}.profile-panel>div{flex-wrap:wrap}
@media(max-width:750px){.bet-panel{grid-template-columns:1fr;padding:7px 8px;gap:5px}.bet-controls{gap:5px}.bet-controls button{padding:5px 9px}.rank{height:92px;grid-template-rows:18px 14px 12px 32px;gap:2px 4px}.rank .pick-horse{grid-column:1/-1;width:90%;min-height:30px}.future-panels{gap:6px}.profile-panel{flex-wrap:wrap;gap:4px}.profile-panel>div{display:flex;align-items:center;gap:5px}.profile-panel .dock-label{font-size:12px}.profile-panel a,.profile-panel button{min-height:30px;padding:3px 7px}.game{min-height:760px}.viewport{min-height:310px}}
@media(max-height:500px) and (min-width:751px){.race-dock{max-height:215px;overflow:auto}.game{min-height:0}.rank{min-height:75px}.bet-panel{margin-top:7px}.viewport{min-height:210px}}
@media(max-width:750px){html,body{overflow:auto}.finish-card #close-result{position:sticky;bottom:0;z-index:1;box-shadow:0 0 0 5px #fff3cd,2px 2px 0 #42372a}}
/* Keep the stadium dominant: one compact account + betting strip. */
.stadium-online{position:absolute;right:15px;bottom:12px;z-index:2;padding:4px 8px;border:1px solid #655d4070;border-radius:5px;background:#fff2d0bd;color:#584b34;font-size:12px;line-height:1.25;pointer-events:none}.stadium-online strong{font-variant-numeric:tabular-nums;margin:0 3px;font-size:13px}
.wallet-bet-row{display:grid;grid-template-columns:minmax(190px,230px) minmax(0,1fr);gap:12px;align-items:center;margin-top:8px;padding:7px 10px;background:#fff1bf;border:2px dashed #786039;border-radius:7px}.wallet-bet-row .profile-panel{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:4px;padding:0 12px 0 0;border-right:1px dashed #ac9162;min-width:0}.wallet-bet-row .profile-panel>div{gap:5px 8px}.wallet-bet-row .bet-panel{margin:0;padding:0;border:0;border-radius:0;background:none;grid-template-columns:minmax(0,1fr) auto;gap:2px 10px;min-width:0}.wallet-bet-row .bet-ticket{gap:3px 8px}.wallet-bet-row .bet-ticket .dock-label{font-size:12px}.wallet-bet-row .bet-ticket small{font-size:12px}.wallet-bet-row .bet-controls{gap:5px}.wallet-bet-row .bet-controls input{min-height:32px;width:64px;padding:3px 5px}.wallet-bet-row button,.wallet-bet-row a{min-height:32px;padding:4px 9px}.wallet-bet-row #bet-message{grid-column:1;font-size:12px;min-height:18px;line-height:1.4}.wallet-bet-row .settlement-note{grid-column:2;grid-row:2;justify-self:end;align-self:center;font-size:12px}.race-dock{padding-top:0;padding-bottom:max(7px,env(safe-area-inset-bottom))}.dock-top{padding:6px 3px}
@media(min-width:1101px){.rank{display:grid;grid-template-columns:auto auto minmax(0,1fr) auto;grid-template-rows:20px 17px;min-height:51px;height:51px;padding:5px;gap:1px 5px}.rank-position{grid-column:1;grid-row:1/3;align-self:center;font-size:16px}.rank .runner-id{grid-column:2;grid-row:1/3;align-self:center}.rank-name{grid-column:3;grid-row:1;width:auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.rank-detail{grid-column:3;grid-row:2}.rank .pick-horse{grid-column:4;grid-row:1/3;min-height:32px;align-self:center;padding:3px 7px}}
@media(min-width:751px) and (max-width:1100px){.wallet-bet-row{grid-template-columns:180px minmax(0,1fr);gap:8px}.wallet-bet-row .bet-ticket{grid-column:1/-1}.wallet-bet-row .bet-controls{grid-row:2;grid-column:1/-1}.wallet-bet-row #bet-message{grid-row:3;grid-column:1/-1}.wallet-bet-row .settlement-note{grid-row:4;grid-column:1/-1;justify-self:start}.rank{min-height:64px}}
@media(max-width:750px){.game{min-height:640px}.wallet-bet-row{grid-template-columns:minmax(120px,.9fr) minmax(0,1fr);gap:5px 8px;padding:6px 8px;margin-top:7px}.wallet-bet-row .profile-panel{grid-column:1;grid-row:1;padding-right:6px;gap:2px;align-self:stretch}.wallet-bet-row .profile-panel>div{gap:3px 6px}.wallet-bet-row .profile-panel strong{font-size:14px}.wallet-bet-row .profile-panel .dock-label{font-size:12px}.wallet-bet-row .bet-panel{display:contents}.wallet-bet-row .bet-ticket{grid-column:2;grid-row:1;display:flex;flex-direction:column;align-items:flex-start;gap:2px;justify-content:center}.wallet-bet-row .bet-ticket strong{font-size:13px;overflow-wrap:anywhere}.wallet-bet-row .bet-controls{grid-column:1/-1;grid-row:2}.wallet-bet-row #bet-message{grid-column:1/-1;grid-row:3;line-height:1.3}.wallet-bet-row .settlement-note{grid-column:1/-1;grid-row:4;justify-self:start;font-size:12px}.rank{min-height:73px;height:73px;grid-template-rows:16px 14px 28px;padding:3px;gap:1px 4px}.rank-name{grid-row:1;grid-column:2;font-size:12px}.rank .runner-id{grid-row:1;grid-column:1;width:17px;height:17px;font-size:11px}.rank-position{position:absolute;left:4px;top:24px;font-size:12px}.rank-detail{grid-row:2;grid-column:1/-1}.rank .pick-horse{grid-row:3;grid-column:1/-1;min-height:28px;width:auto;padding:2px 12px}.stadium-online{right:8px;bottom:8px;padding:3px 6px;font-size:12px}.viewport{min-height:310px}}
@media(max-height:500px) and (min-width:751px){.wallet-bet-row{grid-template-columns:190px 1fr}.wallet-bet-row .bet-panel{grid-template-columns:minmax(0,1fr) auto}.wallet-bet-row .bet-ticket{grid-column:1;grid-row:1}.wallet-bet-row .bet-controls{grid-column:2;grid-row:1}.wallet-bet-row #bet-message{grid-column:1;grid-row:2}.wallet-bet-row .settlement-note{grid-column:2;grid-row:2}.race-dock{max-height:178px}.game{min-height:0}.viewport{min-height:210px}}
/* Result feedback reuses the account row without enlarging the dock. */
#settlement-message{font-size:14px;line-height:1.45;margin:7px 0;padding:7px;background:#efe5ba;border-radius:5px}#settlement-message.payout-win{background:#f5d48b;color:#763411;font-weight:700}.my-settlement{position:relative;font-size:12px}.my-settlement summary{cursor:pointer;text-decoration:underline;text-underline-offset:3px;color:#745537;width:max-content}.my-settlement p{position:absolute;left:0;bottom:100%;width:min(360px,75vw);padding:10px;border:2px solid #6e5032;background:#fff1bf;border-radius:5px;box-shadow:3px 3px #aa8f58;line-height:1.5;z-index:4;font-size:14px}.wallet-bet-row #pool-info{font-size:12px}.rank-detail{white-space:nowrap;font-variant-numeric:tabular-nums}
@media(max-width:750px){.my-settlement p{left:-45px;width:min(290px,75vw)}#settlement-message{font-size:13px}.rank-detail{font-size:11px}}

/* English copy stays compact around the original stadium. */
.brand-name{font-size:clamp(17px,2vw,27px);letter-spacing:-1px}.brand-race{letter-spacing:1px}.rules-copy{display:block;max-width:calc(100vw - 24px);line-height:1.5;font-size:13px}.rules-copy p{margin:8px 0}.rank-name{overflow:hidden;text-overflow:ellipsis;min-width:0}.dock-top{flex-wrap:wrap}.wallet-bet-row #pool-info{white-space:normal}.horse-card p{line-height:1.45}
@media(max-width:750px){.brand-name{font-size:17px}.brand-race{font-size:11px}.brand{gap:4px}.hud{gap:5px}.actions{gap:3px}.actions button{width:27px;height:27px}.dock-top{gap:5px 9px}.roster-panel summary{font-size:11px}.rank-name{text-align:left}.wallet-bet-row .bet-controls{gap:4px}.wallet-bet-row button{font-size:12px;padding:4px 7px}.rules-copy{right:0;left:auto}.race-info{gap:3px}}
/* Wallet stays in the header; the stadium keeps its existing height. */
.actions #connect-wallet{width:auto;padding:0 10px;font:700 12px system-ui;white-space:nowrap;background:#ffda72;color:#342b28}
.wallet-dialog{box-sizing:border-box;width:min(520px,calc(100vw - 24px));max-height:calc(100dvh - 32px);padding:18px;border:3px solid #473b31;border-radius:16px;background:#fff4d5;color:#342b28;box-shadow:5px 6px 0 #0003;font:14px/1.5 system-ui;overflow:auto}
.wallet-dialog::backdrop{background:#14271999}.wallet-title-row{display:flex;align-items:center;justify-content:space-between;gap:10px}.wallet-title-row h2{margin:0;font-size:20px}.wallet-dialog button{font:700 14px system-ui;padding:9px 12px;background:#ffdb75;border:2px solid #584a39;border-radius:8px;cursor:pointer}.wallet-dialog button:disabled{opacity:.45;cursor:default}.wallet-dialog p{margin:8px 0}.wallet-dialog #wallet-address{overflow-wrap:anywhere;font-size:12px}.test-badge{font-weight:800;color:#8b342a}.wallet-buttons{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0}.token-balances{display:flex;gap:12px;flex-wrap:wrap;padding:12px 0}.token-balances span{flex:1;min-width:90px}.token-balances b{display:block;font-size:18px}.wallet-dialog fieldset{margin:12px 0 0;border:1px dashed #86775c;border-radius:10px;padding:12px;min-width:0}.wallet-dialog legend{font-weight:800}.wallet-dialog label{display:block;margin:7px 0}.wallet-dialog input,.wallet-dialog select{box-sizing:border-box;max-width:100%;width:100%;border:1px solid #8b775b;background:white;border-radius:6px;padding:8px;font:16px system-ui}.wallet-dialog small{font-size:12px}.wallet-dialog ul{padding-left:20px}.wallet-dialog a{color:#375b35}
@media(max-width:600px){.actions #connect-wallet{font-size:10px;padding:0 5px}.hud{gap:4px}.actions{gap:3px}.brand-name{font-size:12px}}
/* Carrot phase 2: reuse the compact ticket layout. */
[data-portion][aria-pressed="true"]{background:#ffbd58;box-shadow:inset 0 0 0 2px #715637;transform:translateY(-1px)}
#daily-claim{background:#ffcf78;white-space:nowrap}.bet-controls{flex-wrap:wrap}.my-settlement p{max-width:min(440px,85vw);overflow-wrap:anywhere}
@media(max-width:600px){.bet-controls button{min-height:36px;padding:5px 9px}.bet-ticket small{white-space:normal}}

/* Keep carrot totals and boosts inside each racer card. */
.rank-detail{white-space:normal;overflow-wrap:anywhere;min-width:0;line-height:1.25}.pick-horse{white-space:nowrap}

/* Fixed card rows keep changing carrot amounts clear without moving the track. */
.rank-detail{overflow:hidden;line-height:13px;white-space:nowrap;overflow-wrap:normal}
.rank-detail>span{display:block;min-height:13px;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;white-space:nowrap}
.rank-detail>span::-webkit-scrollbar{display:none}
.rank .rank-position{pointer-events:none}
@media(min-width:1101px){.rank{height:88px;min-height:88px;grid-template-rows:20px 52px}.rank-detail{align-self:start}}
@media(min-width:751px) and (max-width:1100px){.rank{height:116px;min-height:116px}.rank-detail{flex-basis:100%;height:52px}}
@media(max-width:750px){.rank{height:106px;min-height:106px;grid-template-rows:16px 52px 28px}.rank-detail{height:52px;font-size:11px;text-align:center}.rank-position{top:5px;left:2px}.rankings .rank:has(.rank-position:not(:empty)) .runner-id{margin-left:9px}}
/* Retry belongs to feedback, never the portion-button row. */
.wallet-bet-row .feed-feedback{position:relative;grid-column:1;min-width:0;height:36px;padding-right:88px;display:flex;align-items:center}
.wallet-bet-row .feed-feedback #bet-message{max-height:36px;overflow-y:auto;min-height:0;line-height:18px}
.wallet-bet-row .feed-feedback #bet-retry{position:absolute;right:0;top:2px;min-height:32px;padding:3px 7px;font-size:12px}
@media(max-width:1100px){.wallet-bet-row .feed-feedback{grid-column:1/-1;grid-row:3}}
@media(max-height:500px) and (min-width:751px){.wallet-bet-row .feed-feedback{grid-column:1;grid-row:2}}
@media(max-width:750px){
 .wallet-bet-row .bet-controls{display:grid;grid-template-columns:repeat(3,minmax(0,1fr)) minmax(0,1.8fr);width:100%}
 .wallet-bet-row .bet-controls>.dock-label{display:none}
 .wallet-bet-row .bet-controls button{padding:4px 3px;min-width:0;white-space:nowrap}
 .wallet-bet-row .bet-ticket>.dock-label,.wallet-bet-row .bet-ticket>small{display:none}
 .dock-top{flex-wrap:nowrap;gap:5px}
 .viewport{min-height:250px}
 .race-dock{max-height:calc(100dvh - 250px);overflow-y:auto}
}

/* One selection and one compact feeding ticket. */
.rank-detail{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;height:auto;line-height:14px}
.wallet-bet-row .bet-ticket>small{display:block!important;font-size:12px;line-height:16px;min-height:32px}
.wallet-bet-row .bet-controls{display:flex;flex-wrap:nowrap;gap:5px}
.wallet-bet-row #feed-amount{width:72px;min-width:0;min-height:36px;font-size:16px}
.wallet-bet-row #feed-submit{background:#f3b951;min-height:36px}
@media(min-width:1101px){.rank{height:51px;min-height:51px;grid-template-rows:20px 17px}}
@media(min-width:751px) and (max-width:1100px){.rank{height:77px;min-height:77px}.rank-detail{height:14px}}
@media(max-width:750px){.rank{height:73px;min-height:73px;grid-template-rows:16px 14px 28px}.rank-detail{height:14px}.wallet-bet-row .bet-controls{display:grid;grid-template-columns:18px minmax(55px,1fr) minmax(50px,.85fr) minmax(100px,1.4fr)}.wallet-bet-row #feed-amount{width:100%}.wallet-bet-row .bet-ticket{min-height:66px}.wallet-bet-row .bet-ticket>small{display:block!important}.wallet-bet-row .feed-feedback{height:36px}}
.actions #language-toggle{width:auto;min-width:39px;padding:0 6px;font:700 12px system-ui;background:#fff1bf;white-space:nowrap}
.fans-grid{display:block;width:min(470px,calc(100vw - 24px));max-height:65dvh;overflow:auto;right:0;left:auto}
.fan-row{padding:7px;border-bottom:1px dashed #a98c54}.fan-row b,.fan-row span{display:block}.fan-row span{font-size:12px;margin-top:4px}.fans-grid small{display:block;font-size:12px;margin-top:8px}
@media(max-width:600px){.hud{flex-wrap:wrap;padding:8px}.hud .brand{order:0}.hud .actions{order:1;margin-left:auto}.hud .race-info{order:2;flex-basis:100%;justify-content:flex-start}.actions #language-toggle{font-size:11px;min-width:36px}.brand-name{font-size:11px}.actions #connect-wallet{max-width:88px;overflow:hidden;text-overflow:ellipsis}}
/* Expanded menus must escape the dock's scroll boundary on small screens. */
@media(max-width:750px){.roster-panel>.roster-grid{position:fixed;top:78px;bottom:auto;left:12px;right:12px;width:auto;max-height:55dvh;overflow:auto;z-index:30}}
.roster-panel>.roster-grid{display:block;padding-top:0}
.panel-toolbar{position:sticky;top:0;z-index:2;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 0;background:#fff1bf;border-bottom:1px dashed #a98c54;margin-bottom:8px}
.panel-toolbar button{min-width:76px;min-height:44px;padding:7px 12px;border:2px solid #59442d;border-radius:7px;background:#ffcf78;font-weight:700;font-size:14px}
.roster-items{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.quick-rules{padding-left:23px;margin:8px 0 14px;font-size:14px;line-height:1.5}.quick-rules li{margin:8px 0}.rules-copy>small{display:block;font-size:12px;line-height:1.5}
@media(max-width:750px){.roster-panel>.roster-grid{max-height:70dvh;top:65px}.roster-items{grid-template-columns:1fr}.panel-toolbar{padding-top:6px}}
.roster-panel>.roster-grid{max-height:70dvh;overflow:auto}.archive-race{border-top:1px dashed #a98c54;padding:9px 0}.archive-race>summary{font-size:14px;white-space:normal;line-height:1.5}.archive-race p{font-size:12px;line-height:1.4}.archive-race ol{padding:0;list-style:none}.archive-race li{display:flex;justify-content:space-between;gap:8px;padding:5px 0;font-size:12px}.archive-race li span{white-space:nowrap}#history-more{min-height:44px;padding:6px 12px;background:#ffcf78;border:2px solid #59442d;border-radius:7px}#horse-stats{overflow-x:auto}#horse-stats table{width:100%;border-collapse:collapse;font-size:12px}#horse-stats th,#horse-stats td{padding:7px 5px;border-bottom:1px dashed #a98c54;text-align:right}#horse-stats th:first-child{text-align:left}#history-status,#stats-status{font-size:12px;line-height:1.4}
#previous-rankings{grid-template-columns:repeat(2,minmax(0,1fr))}.archive-race>summary::after{content:'＋'}.archive-race[open]>summary::after{content:'−'}
/* HHR packs share the existing wallet dialog; the race keeps its full viewport. */
.wallet-dialog{max-height:85dvh;overflow-y:auto;overscroll-behavior:contain;box-sizing:border-box}.wallet-title-row{position:sticky;top:-1px;background:#fff3d0;z-index:2;padding-bottom:8px}.carrot-shop{border-top:2px dashed #b6a175;margin-top:20px;padding-top:12px;scroll-margin-top:64px}.carrot-shop h3,.carrot-shop h4{margin:8px 0}.carrot-shop p{font-size:14px;line-height:1.45}.carrot-shop small{display:block;font-size:12px;line-height:1.5;margin-top:8px}.shop-packs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.shop-pack{display:flex;flex-direction:column;gap:5px;align-items:center;padding:12px 4px;min-width:0;font-size:14px}.shop-pack[aria-pressed=true]{background:#ffca67;box-shadow:inset 0 0 0 2px #734d2e}.shop-pack strong,.shop-pack span{white-space:nowrap}.shop-pack small{margin:0;font-size:11px}.shop-order{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:12px 0;border-bottom:1px dashed #b6a175;font-size:13px}.shop-order>span{font-weight:bold}.shop-order small{margin:0}.shop-order a{color:#4d673a}.shop-order button{font-size:12px;min-height:36px}.carrot-shop>button{min-height:44px;width:100%}#shop-message{min-height:40px}#shop-quote{font-weight:bold}#open-shop{white-space:nowrap}@media(max-width:600px){.shop-packs{gap:5px}.shop-pack{font-size:12px}.wallet-dialog{padding:16px;width:calc(100vw - 24px)}.bet-controls{flex-wrap:wrap}}

/* Account and leaderboard reuse the game's paper cards without shrinking the track. */
#open-account{width:auto;padding:0 8px;font:700 12px system-ui;white-space:nowrap}#edit-profile{border:0;background:transparent;color:inherit;padding:0;cursor:pointer;text-align:left;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#open-leaderboard{font:700 12px system-ui;border:1px dashed #746440;border-radius:6px;background:#ffdc7b;color:#3a3322;padding:3px 7px;cursor:pointer}
#player-leaderboard{padding:0;list-style:none}#player-leaderboard li{display:grid;grid-template-columns:26px minmax(0,1fr) auto;gap:8px;align-items:center;padding:12px 8px;border-bottom:1px dashed #ad976b;font-size:14px}#player-leaderboard li>span{overflow-wrap:anywhere}#player-leaderboard .is-me{background:#ffe3a0;border-radius:8px}.mint-card,.reward-card{border-top:2px dashed #b6a175;margin-top:16px;padding-top:12px}.mint-card code{display:block;overflow-wrap:anywhere;user-select:all;margin:8px 0;font:14px/1.5 monospace}#nickname-form button{margin:12px 0}#nickname-form a{display:block}.reward-card a{overflow-wrap:anywhere}
@media(max-width:600px){#open-account{font-size:11px;padding:0 5px}.actions #connect-wallet{max-width:76px}.dock-top{flex-wrap:wrap;gap:6px}#open-leaderboard{font-size:11px}#edit-profile{font-size:13px}}
@media(max-width:750px){.wallet-bet-row .bet-controls #daily-claim{grid-column:2/-1;width:100%;min-height:32px}.hud .actions{flex-shrink:0}.hud .brand{max-width:100%}}
