:root{font-family:"Hiragino Maru Gothic ProN","Hiragino Kaku Gothic ProN","Yu Gothic",sans-serif;color:#533e2e;background:#eaf4d8;font-synthesis:none}*{box-sizing:border-box}body{margin:0;width:100vw;height:100dvh;display:grid;place-items:center;overflow:hidden;overscroll-behavior:none}button{font:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent;touch-action:manipulation;color:inherit}button:focus-visible{outline:4px solid #754164;outline-offset:3px}button:disabled{cursor:wait;opacity:.6}[hidden]{display:none!important}#game{position:relative;width:min(100vw,177.77778dvh);height:min(56.25vw,100dvh);overflow:hidden;container-type:size;isolation:isolate;user-select:none;-webkit-user-select:none;touch-action:none}#world{width:100%;height:100%;display:block}.screen{position:absolute;inset:0;z-index:5}.intro{text-align:center;padding-top:5.2cqh}.eyebrow{font-weight:700;font-size:2.2cqh;letter-spacing:.1em}h1{font-size:6.7cqh;margin:1.1cqh 0 .5cqh;letter-spacing:.035em;color:#6e3f55;text-shadow:0 3px 0 #fff9db}p{margin:0;font-size:2.6cqh;line-height:1.65}#characters{display:flex;gap:1.3cqw;padding:0 5.5cqw;position:absolute;top:33cqh;width:100%}.character{width:20%;height:34cqh;border:3px solid transparent;border-radius:3cqh;background:#fff9e9cc;display:flex;align-items:center;flex-direction:column;justify-content:center;box-shadow:0 5px 0 #6b82401b;transition:transform .16s,background .16s}.character[aria-pressed=true]{background:#fff7d8;border-color:#97617d;transform:translateY(-1.5cqh);box-shadow:0 5px 0 #97617d55}.character canvas{width:90%;height:24cqh;object-fit:contain}.character strong{font-size:2.8cqh;margin-top:1cqh}.select-bottom{position:absolute;left:8cqw;right:8cqw;bottom:11cqh;display:flex;align-items:center;justify-content:space-between;gap:3cqw}.select-bottom p{font-size:2.4cqh}.select-bottom p span{color:#626244;font-size:2.2cqh}.primary{border:0;background:#8c4a70;color:#fffaf0;border-radius:99px;padding:2.4cqh 4.2cqw;font-weight:800;font-size:3cqh;box-shadow:0 5px 0 #683955;min-height:44px}.primary:active{transform:translateY(3px);box-shadow:0 2px 0 #683955}#hud{position:absolute;top:4cqh;left:3cqw;right:3cqw;display:flex;align-items:center;gap:2cqw;z-index:2}.stage{padding:1.5cqh 2cqw;background:#fff8e6f2;border-radius:3cqh;transform:rotate(-2deg);white-space:nowrap}.stage small{display:block;font-size:1.9cqh;letter-spacing:.06em}.stage strong{display:block;font-size:3cqh;margin-top:.5cqh}.progress-area{flex:1;margin:0 1cqw}.progress-label{display:flex;justify-content:space-between;font-size:2cqh;font-weight:700;margin-bottom:1.3cqh}.track{height:1.5cqh;border-radius:20px;background:#fff5df;position:relative}.track>div{height:100%;background:#76ab68;border-radius:20px}.dot{position:absolute;top:-.95cqh;width:3.5cqh;height:3.5cqh;border-radius:50%;display:grid;place-items:center;font-size:1.6cqh;border:2px solid #fff8e6;transform:translateX(-50%)}.player-dot{background:#955276;color:white;z-index:2}.rival-dot{background:#6e7560;color:white;top:1cqh}.inventory{background:#fff8e6ed;border-radius:99px;display:grid;grid-template-columns:auto auto;align-items:center;gap:0 1cqw;padding:1.2cqh 2cqw;min-width:14cqw}.inventory strong{font-size:3.8cqh}.inventory>span:last-child{grid-column:1/3;font-size:1.6cqh;text-align:center}.acorn-icon{width:2.6cqh;height:3.4cqh;display:block;background:#c88b4d;border:2px solid #6b4c32;border-radius:45% 45% 60% 60%;transform:rotate(22deg);position:relative}.acorn-icon:before{content:"";position:absolute;left:-.55cqh;top:-.2cqh;width:3.1cqh;height:1.3cqh;border-radius:70% 70% 30% 30%;background:#9c6c41;border:2px solid #6b4c32}.small-button{width:5cqh;height:5cqh;min-width:36px;min-height:36px;border:0;border-radius:50%;background:#fff9e9db;font-weight:900;font-size:2.5cqh;align-self:flex-start}#controls{position:absolute;inset:0;pointer-events:none;z-index:3}.lane-buttons{position:absolute;bottom:6cqh;left:3cqw;display:flex;flex-direction:column;gap:1.8cqh}#controls button{pointer-events:auto;background:#599e59ef;border:3px solid #396c42;color:#fffdf0;box-shadow:0 4px 0 #396c4277;touch-action:none}#controls button:active{background:#81b55c;transform:translateY(2px)}.lane-buttons button{width:10.5cqw;height:11.3cqh;min-height:44px;border-radius:4cqh;font-size:5cqh;line-height:1}#jump{position:absolute;right:3cqw;bottom:6cqh;width:15cqw;height:22cqh;border-radius:45%;font-size:3cqh;font-weight:900;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0}#jump span{font-size:8cqh;line-height:1.1}#race-caption{position:absolute;bottom:2.3cqh;left:18cqw;right:21cqw;display:flex;justify-content:space-between;align-items:center;font-size:2cqh;font-weight:700;z-index:2}#status-text{color:#75425e;background:#fff9e8d9;padding:.3cqh 1cqw;border-radius:99px;min-height:3.4cqh}#status-text:empty{visibility:hidden}#countdown{position:absolute;inset:0;display:grid;place-items:center;font-size:16cqh;font-weight:900;color:#fff8e6;text-shadow:4px 4px 0 #795b3c;z-index:4;pointer-events:none}.dialog{display:grid;place-items:center;background:#4b5b3644;backdrop-filter:blur(4px)}.result-card{background:#fff9e9;border-radius:5cqh;text-align:center;padding:3cqh 5cqw;min-width:47cqw;max-width:80cqw;box-shadow:0 12px 60px #4654312b}h2{font-size:5.8cqh;margin:.8cqh 0}.result-card p{font-size:2.4cqh}#result-art{height:22cqh;display:flex;justify-content:center}#result-art canvas{height:100%;width:auto;max-width:30cqw;object-fit:contain}.wins{display:flex;justify-content:center;gap:1.6cqw;margin:1.5cqh 0 2cqh;font-size:1.8cqh}.wins span{color:#988d77}.wins .won{color:#79623a;font-weight:900}.text-button{display:block;margin:2cqh auto 0;border:0;background:transparent;text-decoration:underline;text-underline-offset:4px;font-size:2cqh}.fullscreen{position:absolute;bottom:1.5cqh;right:1.5cqw;background:#fff8e6bd;border:0;border-radius:1cqh;width:4.5cqh;height:4.5cqh;font-size:3.5cqh;line-height:1;z-index:8}#keyboard-hint{position:absolute;bottom:2cqh;left:3cqw;font-size:1.6cqh;opacity:.7;pointer-events:none}body.racing #keyboard-hint{display:none}#rotate{display:none;text-align:center;padding:24px}.rotate-phone{font-size:80px;color:#8c4a70}#rotate h2{font-size:23px}#rotate p{font-size:14px}@media(orientation:portrait){#game{visibility:hidden;position:absolute}#rotate{display:block}}@media(pointer:coarse){#keyboard-hint{display:none}}@media(prefers-reduced-motion:reduce){.character{transition:none}}
/* Keep small landscape phone text readable without shrinking touch targets. */
.eyebrow{font-size:max(10px,2.2cqh)}.intro p{font-size:max(12px,2.6cqh)}.character strong{font-size:max(11px,2.8cqh)}.select-bottom p{font-size:max(10px,2.4cqh)}.select-bottom p span{font-size:max(10px,2.2cqh)}.primary{font-size:max(14px,3cqh)}.stage small{font-size:max(9px,1.9cqh)}.progress-label{font-size:max(10px,2cqh)}.inventory>span:last-child{font-size:max(9px,1.6cqh)}#race-caption{font-size:max(10px,2cqh)}.result-card p{font-size:max(11px,2.4cqh)}.wins{font-size:max(10px,1.8cqh)}.text-button{font-size:max(11px,2cqh);min-height:32px}

.rotate-start{margin-top:24px;padding:14px 22px;border:0;border-radius:99px;background:#8c4a70;color:#fffaf0;font-weight:700;font-size:16px;min-height:48px}
.hud-menu{display:flex;gap:1cqw;align-self:flex-start}.hud-menu .small-button{align-self:auto}.hud-menu #help{color:#75425e}.guide-layer{display:grid;place-items:center;background:#4b5b3638;backdrop-filter:blur(3px);z-index:6}.guide-card{width:min(49cqw,520px);background:#fff9e9;border-radius:4cqh;text-align:center;padding:3cqh 4cqw;box-shadow:0 12px 50px #46543130}.guide-card h2{font-size:4.5cqh;margin:.8cqh 0}.guide-card p{white-space:pre-line;font-size:2.5cqh;font-weight:700;line-height:1.7;margin-bottom:2.4cqh}.guide-card .primary{padding:1.7cqh 3.4cqw;font-size:2.5cqh}#jump{width:12cqh;height:12cqh;min-width:64px;min-height:64px;border-radius:50%;font-size:0}#jump span{font-size:6cqh;line-height:1}#jump-tip{display:none;position:absolute;right:16cqw;bottom:11cqh;z-index:7;padding:.8cqh 1.5cqw;border-radius:99px;background:#fff9e9;color:#75425e;font-size:2cqh;font-weight:800;box-shadow:0 3px 0 #75425e33;pointer-events:none}body.show-jump-tip #jump-tip{display:block}
@media(orientation:portrait){
 body.manual-landscape #rotate{display:none}
 body.manual-landscape #game{visibility:visible;position:absolute;left:50%;top:50%;width:min(100dvh,177.77778vw);height:min(56.25dvh,100vw);transform:translate(-50%,-50%) rotate(90deg)}
}
.start-actions{display:flex;align-items:center;gap:1.5cqw}.nearby-button{border:0;background:#fff9e9;color:#75425e;border-radius:99px;padding:1.7cqh 2.5cqw;font-weight:800;font-size:2.1cqh;box-shadow:0 3px 0 #75425e33;min-height:40px}.nearby-button:active{transform:translateY(2px)}
.multiplayer-layer{z-index:6;pointer-events:none}.multiplayer-card{pointer-events:auto;position:absolute;left:50%;bottom:6cqh;transform:translateX(-50%);width:min(54cqw,590px);padding:2.1cqh 3.4cqw;text-align:center;background:#fff9e9f5;border-radius:4cqh;box-shadow:0 12px 50px #46543130}.multiplayer-card h2{font-size:4cqh;margin:.4cqh 0}.multiplayer-card p{font-size:2.2cqh;font-weight:700}.multiplayer-actions{display:flex;justify-content:center;align-items:center;gap:1.5cqw;margin-top:1.6cqh}.multiplayer-actions .primary{padding:1.6cqh 3.2cqw;font-size:2.4cqh}.multiplayer-actions .text-button{margin:0;font-size:1.9cqh}.multiplayer-qr{display:flex;justify-content:center;margin:1cqh auto}.multiplayer-qr svg{width:min(20cqh,150px);height:min(20cqh,150px);padding:7px;background:#fff;border-radius:1cqh}.multiplayer-link{max-width:44cqw;margin:.5cqh auto 0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:1.7cqh;color:#665648;user-select:text;-webkit-user-select:text}
/* Lobby: keep selection and readiness together; reserve QR space for the host. */
body.multiplayer-lobby .intro{width:62cqw;padding-top:6cqh}
body.multiplayer-lobby .intro h1{font-size:5cqh}
body.multiplayer-lobby .intro p{font-size:max(12px,2.4cqh)}
body.multiplayer-lobby #characters{left:3cqw;right:38cqw;width:auto;padding:0;top:35cqh;gap:.8cqw}
body.multiplayer-lobby .character{flex:1;min-width:0;height:34cqh;border-radius:2.5cqh}
body.multiplayer-lobby .character canvas{height:23cqh}
body.multiplayer-lobby .character strong{font-size:max(11px,2.3cqh);margin-top:.5cqh;white-space:nowrap}
.multiplayer-lobby .multiplayer-card{left:auto;right:3cqw;bottom:auto;top:8cqh;transform:none;width:32cqw;padding:2.5cqh 1.5cqw;box-shadow:0 5px 20px #46543118}
.multiplayer-lobby .multiplayer-card h2{display:none}
.multiplayer-lobby .multiplayer-card p{font-size:max(11px,2cqh);line-height:1.5}
.multiplayer-lobby .multiplayer-qr{margin:1.2cqh auto}
.multiplayer-lobby .multiplayer-qr svg{width:clamp(120px,36cqh,160px);height:clamp(120px,36cqh,160px);padding:6px}
.multiplayer-lobby .multiplayer-link{max-width:28cqw;font-size:max(9px,1.5cqh)}
.multiplayer-lobby .multiplayer-actions{margin-top:1.5cqh;gap:.4cqh 1.2cqw;flex-wrap:wrap}
.multiplayer-lobby .multiplayer-actions .primary{order:-1;flex-basis:100%;padding:1.2cqh 1.8cqw;font-size:max(13px,2.5cqh);white-space:nowrap;min-height:44px}
.multiplayer-lobby .multiplayer-actions .text-button{font-size:max(11px,2cqh);white-space:nowrap;min-height:32px}
body.multiplayer-lobby[data-multiplayer-role="guest"] .intro{width:100%;padding-top:5cqh}
body.multiplayer-lobby[data-multiplayer-role="guest"] .intro h1{font-size:6cqh}
body.multiplayer-lobby[data-multiplayer-role="guest"] #characters{left:7cqw;right:7cqw;top:29cqh;gap:1.3cqw}
body.multiplayer-lobby[data-multiplayer-role="guest"] .character{height:35cqh}
body.multiplayer-lobby[data-multiplayer-role="guest"] .character canvas{height:25cqh}
body.multiplayer-lobby[data-multiplayer-role="guest"] .multiplayer-card{left:7cqw;right:7cqw;top:69cqh;width:auto;padding:0;background:none;box-shadow:none}
body.multiplayer-lobby[data-multiplayer-role="guest"] #multiplayer-kicker{display:none}
body.multiplayer-lobby[data-multiplayer-role="guest"] .multiplayer-actions{margin-top:1cqh;gap:2cqw;flex-wrap:nowrap}
body.multiplayer-lobby[data-multiplayer-role="guest"] .multiplayer-actions .primary{flex-basis:auto;padding:1.7cqh 4cqw}
