:root{font-family:'Trebuchet MS',Arial,sans-serif;color:#35264d;background:#bcdcf9;font-synthesis:none;font-weight:600}*{box-sizing:border-box}body{margin:0;overflow:hidden}button,input,select{font:inherit}button{cursor:pointer}button:disabled{cursor:default;opacity:.5}button:focus-visible,a:focus-visible{outline:3px solid #5241a5;outline-offset:4px}input:focus,select:focus{outline:2px solid #9381d8;outline-offset:2px}.hidden,[hidden]{display:none!important}#gameCanvas{position:fixed;inset:0;width:100%;height:100%;display:block;touch-action:none}.topbar{position:fixed;top:0;left:0;right:0;z-index:5;display:flex;align-items:center;justify-content:space-between;padding:24px 34px;pointer-events:none}.topbar>*{pointer-events:auto}.brand{display:flex;align-items:center;gap:2px;font-weight:1000;font-size:25px;letter-spacing:-1.5px;color:#3b2c54;text-decoration:none}.brand>span:not(.brand-star){color:#ee638c}.brand-star{background:#ffdf76;border:2px solid #fff1c5;border-radius:12px;width:35px;height:35px;display:grid;place-items:center;margin-right:8px;box-shadow:0 4px 0 #dca554;transform:rotate(-8deg);color:#8b559e}.brand b{letter-spacing:0;font-size:10px;background:#6654a0;color:#fff;padding:4px 5px;border-radius:5px;margin-left:5px;transform:rotate(8deg)}.top-right{display:flex;align-items:center;gap:9px}.connection{font-size:10px;font-weight:900;letter-spacing:1px;padding:10px 13px;border:1px solid #fff9;background:#fff8;border-radius:30px;display:flex;align-items:center;gap:7px}.connection i{width:7px;height:7px;border-radius:50%;background:#b5a4c0}.connection.online i{background:#34b386;box-shadow:0 0 0 3px #34b38620}.connection.offline i{background:#f27f83}.icon-button{width:37px;height:37px;border-radius:12px;background:#fff9;border:1px solid #fff;color:#5a4482;font-size:20px;box-shadow:0 3px 0 #67559518}.panel{background:#fffbf4ef;border:2px solid #fff;border-radius:24px;box-shadow:0 15px 45px #39325726,0 6px 0 #65528a12;backdrop-filter:blur(18px)}.menu-panel{position:fixed;left:clamp(20px,5vw,90px);top:50%;transform:translateY(-46%);width:420px;padding:28px 28px 16px;z-index:3}.eyebrow{display:flex;align-items:center;gap:7px;font-size:9px;letter-spacing:1.5px;font-weight:900;color:#886b98}.eyebrow i{width:7px;height:7px;border-radius:50%;background:#e57499}.menu-panel h1{font-size:45px;font-weight:1000;line-height:.97;letter-spacing:-2.7px;margin:17px 0 13px}.menu-panel h1 span{color:#ef719b}.intro{font-size:14px;color:#8b799b;line-height:1.5;margin:0 0 22px}.profile{border-top:1px solid #e8dfeb;padding-top:15px;display:grid;grid-template-columns:1fr 1.2fr;gap:7px 13px;align-items:center}.profile label{font-size:9px;letter-spacing:1.1px;font-weight:900;grid-column:1/-1}input,select{background:#f5eef4;border:1px solid #e4dbea;border-radius:9px;color:#5d4978;min-width:0}input{height:39px;padding:0 12px;width:100%;font-size:13px}.swatches{display:flex;gap:6px;justify-content:flex-end}.swatch{border:2px solid #fff;width:24px;height:24px;border-radius:50%;box-shadow:0 2px 0 #50406925;padding:0;flex-shrink:0}.swatch.selected{outline:2px solid #766292;outline-offset:2px;transform:translateY(-1px)}.course-label{display:flex;justify-content:space-between;font-size:9px;letter-spacing:.7px;font-weight:900;margin:22px 0 9px}.course-label span{font-size:7px;letter-spacing:0;color:#ab9bb5;align-self:center}.course-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:7px;margin-bottom:18px}.course-card{position:relative;overflow:hidden;display:flex;flex-direction:column;text-align:left;border:1.5px solid #e9dfeb;background:#faf6f6;border-radius:11px;padding:0 0 9px;color:#614e76;transition:transform .15s}.course-card:hover{transform:translateY(-3px)}.course-card.selected{border:2px solid #8870bb;background:#eee6f6}.course-art{height:50px;width:100%;display:grid;place-items:center;font-size:30px;color:#fff;background:var(--color);text-shadow:0 3px 0 #5552}.course-card b{font-size:9px;margin:8px 7px 0;letter-spacing:-.2px}.course-card small{font-size:7px;color:#a391b3;margin:3px 7px 0}.course-card.selected{border-color:#8870bb;background:#eee6f6}.button{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;min-height:43px;border-radius:10px;font-size:11px;letter-spacing:.8px;font-weight:900;border:0;transition:transform .12s,filter .12s}.button:hover:not(:disabled){transform:translateY(-2px);filter:brightness(1.025)}.button:active:not(:disabled){transform:translateY(2px)}.primary{background:#ffcf66;color:#60417a;box-shadow:0 4px 0 #dda64e}.primary span{font-size:21px;margin-left:auto}.secondary{background:#eae0f2;border:1px solid #dfd2eb;color:#72538d;box-shadow:0 3px 0 #cbbbdc}.menu-panel>.primary{justify-content:space-between;padding:0 17px;font-size:12px;min-height:47px}.join-row{display:grid;grid-template-columns:1fr 1.3fr;gap:8px;margin-top:13px}.join-row input{text-align:center;height:43px;font-size:12px;letter-spacing:2px;text-transform:uppercase}.join-row .button{font-size:10px}.text-button{background:transparent;border:0;color:#9b819f;font-size:11px;font-weight:700;padding:10px 0}.menu-panel>.text-button{display:block;width:100%;margin:7px auto 1px;font-size:10px}.text-button span{margin-left:4px}.menu-meta{display:flex;justify-content:space-between;font-size:7px;letter-spacing:.3px;color:#b4a2b7;border-top:1px solid #eae2eb;padding-top:12px;margin-top:3px}.scene-caption{position:fixed;right:5%;bottom:100px;z-index:1;text-align:right;pointer-events:none}.scene-caption>span{font-size:10px;letter-spacing:2px;color:#6b6585;background:#fff8;border-radius:20px;padding:8px 14px}.scene-caption strong{display:block;font-size:46px;line-height:1.05;letter-spacing:-2px;color:white;text-shadow:0 3px 0 #587aab45;margin:18px 0}.caption-pills{display:flex;justify-content:flex-end;gap:5px}.caption-pills span{padding:7px 10px;border:1px solid #fffc;background:#ffffff45;border-radius:20px;font-size:8px;color:#596185;letter-spacing:1px}.control-hint{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);display:flex;gap:17px;white-space:nowrap;align-items:center;padding:10px 17px;border-radius:13px;background:#fff7;backdrop-filter:blur(8px);color:#645579;font-size:8px;letter-spacing:.5px;z-index:2}kbd{font:900 9px 'Trebuchet MS',sans-serif;background:#fff9;border:1px solid #ffffffbb;border-bottom:2px solid #b5a5c5;border-radius:4px;padding:3px 5px;margin-right:4px}.loading{position:fixed;inset:0;z-index:30;background:#d5ddf4;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;padding:30px}.loading h1{font-size:24px;letter-spacing:-1px;margin:15px 0 0}.loading p{font-size:14px;color:#7e6b90;line-height:1.6;max-width:500px}.loading-bean{font-size:65px;color:#ef7aa6;text-shadow:0 5px #bf669b;animation:bob 1s ease-in-out infinite}
.lobby-panel{position:fixed;z-index:4;left:clamp(20px,5vw,90px);top:50%;transform:translateY(-46%);width:420px;padding:24px;max-height:calc(100dvh - 145px);overflow:auto;scrollbar-width:thin}.lobby-heading{display:flex;align-items:center;justify-content:space-between}.lobby-heading h1{font-size:34px;letter-spacing:-1.5px;margin:7px 0 14px}.invite-card{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:13px 14px;background:#eee6f6;border:1px dashed #c5b3d5;border-radius:12px}.invite-card small{display:block;font-size:8px;color:#9e85ae;letter-spacing:1px}.invite-card strong{font-size:27px;letter-spacing:4px}.invite-card .button{width:auto;font-size:8px;padding:0 11px;min-height:34px}.small-copy{font-size:10px;color:#a08da9;line-height:1.45;margin:9px 0 15px}.roster-heading{display:flex;justify-content:space-between;font-size:9px;letter-spacing:1px;margin:18px 0 9px}.roster-heading span{color:#a48ead}.roster{display:grid;grid-template-columns:1fr 1fr;gap:6px;max-height:200px;overflow:auto;scrollbar-width:thin}.roster-member{display:flex;align-items:center;gap:7px;border-radius:8px;background:#f3edf5;padding:8px;font-size:10px;min-width:0}.roster-member .mini-jelly{width:21px;height:25px;border-radius:45% 45% 35% 35%;background:var(--color);box-shadow:inset -4px -3px #0001;flex-shrink:0;position:relative}.mini-jelly:after{content:'••';letter-spacing:2px;color:#463451;background:white;border-radius:7px;font-size:8px;position:absolute;top:8px;left:4px;width:14px;text-align:center;line-height:9px}.roster-member .member-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.roster-member .member-status{font-size:9px;color:#b19cbe}.roster-member.ready .member-status{color:#54ac8a}.host-settings{display:grid;grid-template-columns:1.3fr 1fr;gap:12px 9px;border-top:1px solid #e4dbea;padding-top:16px;margin-top:17px}.host-settings label{font-size:8px;letter-spacing:.8px}.host-settings select{display:block;width:100%;height:36px;font-size:11px;margin-top:7px;padding:0 7px}.host-settings .check-label{grid-column:1/-1;display:grid;grid-template-columns:18px 1fr;align-items:center;column-gap:5px;font-size:11px;letter-spacing:0}.check-label input{width:15px;height:15px;accent-color:#8e6daf}.check-label span{grid-column:2;font-size:9px;color:#ac96b6;margin-top:4px}.lobby-actions{display:flex;gap:9px;margin-top:18px}.lobby-actions .primary{padding:0 13px}.guest-settings{font-size:11px;color:#9e85ad;padding:15px 0;border-top:1px solid #eadfeb;margin-top:15px}.race-hud{position:fixed;z-index:3;left:34px;right:34px;top:85px;display:flex;align-items:flex-start;justify-content:space-between;pointer-events:none}.race-title{background:#fffbf2ef;border:2px solid #fff;border-radius:14px;padding:11px 17px;box-shadow:0 4px 0 #76608a20}.race-title small{display:block;color:#b69eb7;font-size:8px;font-weight:900;letter-spacing:1.5px;margin-bottom:5px}.race-title strong{display:block;font-size:22px;letter-spacing:-.6px}.race-title>span{display:block;color:#9d89aa;font-size:10px;margin-top:4px}.hud-stats{display:flex;gap:8px}.hud-stats>div{padding:9px 15px;background:#fffbf1ed;border:2px solid white;border-radius:13px;box-shadow:0 4px 0 #76608a20;min-width:87px}.hud-stats small{display:block;font-size:8px;letter-spacing:1px;color:#aa93b0;margin-bottom:4px}.hud-stats strong{font-size:23px;letter-spacing:-1px}.hud-stats em{font-style:normal;font-size:11px;letter-spacing:0;color:#b09bb8;margin-left:3px}.countdown{position:fixed;inset:0;display:grid;place-items:center;font-size:140px;font-weight:1000;letter-spacing:-10px;color:#fff4a9;text-shadow:0 7px 0 #956099,0 15px 25px #69518b40;z-index:6;pointer-events:none;animation:pop .3s ease-out}.race-banner{position:fixed;z-index:4;top:30%;left:50%;transform:translate(-50%,-50%) rotate(-3deg);font-size:24px;font-weight:1000;text-align:center;white-space:nowrap;letter-spacing:-1px;background:#ffdc7b;border:3px solid #fff3c9;border-radius:13px;padding:14px 30px;box-shadow:0 6px 0 #b88598;pointer-events:none}.standings{position:fixed;right:34px;top:186px;width:178px;background:#fffbf2d9;border:1px solid white;backdrop-filter:blur(8px);border-radius:12px;padding:12px;z-index:2;pointer-events:none}.standings-heading{display:flex;justify-content:space-between;font-size:8px;color:#aa91b2;letter-spacing:1px;margin-bottom:10px}.standings-heading span{letter-spacing:0;color:#b4a5b9;font-size:7px}.standings ol{list-style:none;margin:0;padding:0}.standings li{display:flex;align-items:center;gap:6px;padding:5px 0;font-size:9px;color:#9784a2}.standings li b{width:13px;color:#a990b4}.standings li i{width:7px;height:7px;border-radius:50%;flex-shrink:0}.standings li span{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.standings li.self{color:#6b4684;font-weight:900}.standings li em{font-style:normal;color:#7ebc9e;font-size:8px}.race-progress{position:fixed;left:50%;bottom:72px;transform:translateX(-50%);width:300px;display:flex;align-items:center;gap:10px;z-index:2;font-size:9px;color:#6d5a85;pointer-events:none}.race-progress>div{position:relative;flex:1;height:9px;background:#fff8;border:2px solid white;border-radius:10px}.race-progress i{display:block;height:100%;width:0;border-radius:10px;background:#f179a5}.race-progress b{position:absolute;top:-7px;left:0;font-size:17px;color:#f179a5;text-shadow:0 1px 0 white}.race-progress>span:last-child{font-size:25px;color:#c7934e}.result-panel{position:fixed;left:50%;top:50%;transform:translate(-50%,-46%);z-index:8;width:430px;padding:22px 28px;text-align:center;max-height:calc(100dvh - 100px);overflow:auto;scrollbar-width:thin}.result-crown{font-size:51px;line-height:1;color:#e6ac4c;text-shadow:0 3px 0 #ffecc0}.result-panel .eyebrow{justify-content:center;margin-top:10px}.result-panel h1{font-size:36px;letter-spacing:-1.8px;margin:9px 0 4px}.result-panel>p{font-size:12px;color:#a18cad;margin:0 0 17px}.results-header{display:flex;justify-content:space-between;font-size:8px;color:#af99b7;border-bottom:1px solid #e5dbea;padding:10px 2px}.results-list{list-style:none;padding:0;margin:0 0 18px;text-align:left;max-height:260px;overflow:auto}.results-list li{display:flex;align-items:center;gap:9px;padding:9px 4px;border-bottom:1px solid #ede4ee;font-size:12px}.results-list li.self{background:#f1e6fa;border-radius:6px}.results-list b{width:22px;color:#ac90bc}.results-list .result-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}.results-list .result-name{flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.results-list small{font-size:9px;color:#a88db7}.result-panel .primary{padding:0 15px}.result-panel>.text-button{font-size:10px;margin-top:7px}.modal-backdrop{position:fixed;inset:0;display:grid;place-items:center;background:#35214b45;backdrop-filter:blur(6px);z-index:10}.pause-card{width:330px;padding:28px;text-align:center}.pause-card h2{font-size:29px;letter-spacing:-1px;margin:13px 0}.pause-card p{font-size:12px;color:#a18bac;line-height:1.6;margin-bottom:22px}.pause-card .eyebrow{justify-content:center}.pause-card .secondary{margin:12px 0}.toast{position:fixed;z-index:50;bottom:30px;left:50%;transform:translateX(-50%);max-width:90%;padding:13px 20px;background:#4f3769;color:#fff5e7;border:1px solid #9e86b5;border-radius:12px;box-shadow:0 8px 28px #36234b25;font-size:12px;text-align:center}.touch-controls{position:fixed;inset:auto 0 20px;z-index:4;display:none;align-items:center;justify-content:space-between;padding:0 25px;pointer-events:none}.joystick{width:112px;height:112px;border:2px solid #fff8;border-radius:50%;background:#50456c22;position:relative;pointer-events:auto;touch-action:none;user-select:none}.joystick>div{position:absolute;width:48px;height:48px;left:30px;top:30px;border-radius:50%;background:#fff9;border:2px solid white;box-shadow:0 4px 0 #63537822;pointer-events:none}.touch-buttons{display:flex;align-items:center;gap:13px;pointer-events:auto}.touch-buttons button{width:61px;height:61px;border-radius:50%;background:#f8aed5bd;border:2px solid #fff8;color:#6a4384;font-size:11px;letter-spacing:1px;font-weight:900;touch-action:none;user-select:none}.touch-buttons button:last-child{width:75px;height:75px;background:#ffe08ccc;color:#796042}.touch-buttons button.active{transform:scale(.92)}
@keyframes bob{50%{transform:translateY(-10px)}}@keyframes pop{from{scale:1.5;opacity:.3}to{scale:1;opacity:1}}
.menu-panel{max-height:calc(100dvh - 125px);overflow-y:auto;scrollbar-width:thin}
.menu-panel>.bot-play-button{font-size:15px;min-height:47px;margin:16px 0 14px;letter-spacing:.8px;color:#624382;background:#e6d8f1}.bot-play-button span{font-size:20px;margin-left:4px}.leave-game-button{position:fixed;top:202px;left:34px;z-index:7;min-height:44px;padding:0 16px;border:2px solid #fff;border-radius:11px;background:#fff5f5f2;color:#9d4665;font-size:12px;font-weight:900;letter-spacing:.6px;box-shadow:0 3px 0 #a66a8a30}.leave-game-button:hover{background:#ffe4ed}.leave-game-button:active{transform:translateY(2px)}
.course-cards{grid-template-columns:none;grid-template-rows:repeat(2,1fr);grid-auto-flow:column;grid-auto-columns:108px;overflow-x:auto;padding:3px 2px 9px;scrollbar-width:thin;scrollbar-color:#baa0d3 transparent;scroll-snap-type:x proximity}.course-card{scroll-snap-align:start}.course-card small{font-size:6px}.course-art{height:34px}.round-track{display:flex;gap:4px;margin-top:9px}.round-track i{height:5px;width:15px;border-radius:3px;background:#e5dce9}.round-track .done{background:#63bd99}.round-track .current{background:#ef81ad;box-shadow:0 0 0 2px #f8d2e2}.next-course{border:1px solid #d7c8e5;border-radius:12px;background:#f0e8f7;text-align:left;padding:12px 14px;display:grid;grid-template-columns:1fr auto;gap:5px;margin-bottom:16px}.next-course small{font-size:8px;color:#a38bb4;grid-column:1/-1;letter-spacing:1px}.next-course strong{font-size:14px}.next-course span{font-size:10px;color:#9678af;align-self:center}.results-list li.qualified small{color:#318d6e;font-weight:900}.results-list li.eliminated small{color:#c0768f}.spectator-controls{position:fixed;z-index:4;bottom:45px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:15px;background:#fffbf4ef;border:2px solid white;border-radius:15px;padding:9px 12px;box-shadow:0 4px 0 #76608a20}.spectator-controls button{width:35px;height:35px;border:0;border-radius:9px;background:#e8dbf2;color:#78528f;font-size:20px}.spectator-controls span{font-size:10px;letter-spacing:1px;min-width:140px;text-align:center}
@media(max-height:780px) and (min-width:701px){.menu-panel{padding:21px 24px 13px;transform:translateY(-44%);width:395px}.menu-panel h1{font-size:39px;margin:12px 0 9px}.intro{font-size:12px;margin-bottom:14px}.profile{padding-top:10px}.course-label{margin-top:15px}.course-art{height:39px}.course-cards{margin-bottom:13px}.menu-meta{font-size:6px}.control-hint{bottom:14px}.scene-caption{bottom:95px}.scene-caption strong{font-size:39px}}
@media(max-width:1000px){.scene-caption{right:4%;bottom:100px}.scene-caption strong{font-size:34px}.scene-caption>span{font-size:8px}.caption-pills span{font-size:6px}.camera-hint{display:none}.menu-panel,.lobby-panel{left:24px}.standings{right:20px;width:150px}.topbar{padding:19px 23px}.race-hud{left:23px;right:23px;top:76px}}
@media(max-width:700px){.topbar{padding:13px 16px}.brand{font-size:22px}.brand-star{width:29px;height:29px;font-size:21px}.brand b{font-size:8px}.connection{font-size:8px;padding:8px;letter-spacing:.3px}.icon-button{width:31px;height:31px}.top-right{gap:6px}.menu-panel{left:50%;top:auto;bottom:22px;transform:translateX(-50%);width:min(93%,390px);padding:20px 23px 15px;max-height:calc(100dvh - 80px);overflow:auto}.menu-panel h1{font-size:38px;margin:13px 0 10px}.intro{font-size:12px;margin-bottom:16px}.eyebrow{font-size:8px}.profile{padding-top:12px}.course-label{margin-top:17px}.course-label span{font-size:6px}.course-art{height:38px}.course-cards{margin-bottom:14px}.scene-caption,.control-hint{display:none}.menu-meta{font-size:6px}.lobby-panel{left:50%;width:min(94%,410px);max-height:calc(100dvh - 83px);top:55%;transform:translate(-50%,-50%);padding:21px}.race-hud{top:61px;left:12px;right:12px;gap:8px}.race-title{padding:8px 10px}.race-title small{font-size:7px}.race-title strong{font-size:16px}.race-title>span{font-size:8px}.hud-stats{gap:4px}.hud-stats>div{min-width:52px;padding:8px 8px;border-radius:10px}.hud-stats>div:last-child{display:none}.hud-stats small{font-size:7px}.hud-stats strong{font-size:19px}.hud-stats em{font-size:8px}.standings{top:145px;right:12px;width:123px;padding:9px;max-height:185px;overflow:hidden}.standings li{font-size:8px;padding:4px 0}.standings li:nth-child(n+6){display:none}.standings-heading{font-size:7px}.race-progress{bottom:153px;width:230px}.result-panel{width:min(94%,410px);padding:20px;top:53%;max-height:calc(100dvh - 84px)}.result-panel h1{font-size:30px}.results-list{max-height:230px}.race-banner{font-size:19px;padding:11px 19px}.countdown{font-size:105px}.toast{bottom:18px;font-size:11px;width:max-content}.roster{max-height:170px}}
@media(pointer:coarse){.touch-controls:not(.hidden){display:flex}.control-hint{display:none}.race-progress{bottom:150px}}
@media(max-width:700px){.hud-stats>div:last-child{display:block;min-width:64px}.hud-stats>div:first-child{display:none}.race-title{max-width:57%}.race-title strong{font-size:14px}.race-title>span{font-size:9px}.round-track{gap:3px}.round-track i{width:11px}.spectator-controls{bottom:25px}.course-cards{grid-auto-columns:100px}}
@media(max-width:700px){.profile{grid-template-columns:minmax(0,1fr) auto}.swatches{gap:5px}.swatch{width:21px;height:21px}}
@media(max-width:1000px){.leave-game-button{left:23px;top:194px}}@media(max-width:700px){.leave-game-button{left:12px;top:170px;min-height:44px;font-size:11px;padding:0 12px}}
@media(max-height:590px) and (orientation:landscape){.menu-panel{top:60px;bottom:15px;left:25px;transform:none;width:365px;padding:15px 20px;max-height:none;overflow:auto}.menu-panel h1{font-size:29px}.intro{display:none}.profile{padding-top:8px}.course-label{margin-top:13px}.menu-meta{display:none}.course-art{height:27px}.course-cards{margin-bottom:12px}.topbar{padding:11px 20px}.lobby-panel{top:55px;bottom:12px;transform:none;left:24px;max-height:none;width:380px}.roster{max-height:110px}.touch-controls{bottom:10px}.joystick{width:90px;height:90px}.joystick>div{left:19px;top:19px}.standings{display:none}.race-progress{bottom:25px;width:220px}.result-panel{top:54%;max-height:calc(100dvh - 65px)}.results-list{max-height:125px}.result-crown{font-size:29px}.result-panel h1{font-size:26px}.result-panel>p{margin-bottom:3px}}
