@font-face{font-family:Baloo;src:url('../../assets/fonts/baloo.woff2') format('woff2');font-display:swap;font-weight:400 800}
@font-face{font-family:Nunito;src:url('../../assets/fonts/nunito.woff2') format('woff2');font-display:swap;font-weight:200 900}
:root{color-scheme:dark;--ink:#102e32;--gold:#f8c563;--cream:#fff5d8;--mint:#8be4c6;--line:#c9ead32b;--panel:#10383de8;--visible-viewport-height:100dvh}
*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;background:var(--ink);color:var(--cream);font-family:Nunito,sans-serif}button,a{-webkit-tap-highlight-color:transparent}button{font:800 14px Nunito,sans-serif;cursor:pointer;color:inherit}button:disabled{cursor:default;opacity:.45}button:focus-visible,a:focus-visible{outline:3px solid #fff9d1;outline-offset:4px}button{touch-action:manipulation}button:active:not(:disabled){transform:translateY(2px)}[hidden]{display:none!important}#game{width:100%;height:100vh;height:100dvh;position:relative;isolation:isolate;overflow:hidden;background:#102e32}#arena{width:100%;height:100%;display:block;touch-action:none;position:absolute;inset:0}.topbar{position:absolute;inset:0 0 auto;z-index:5;display:flex;justify-content:space-between;align-items:center;padding:18px max(24px,env(safe-area-inset-right)) 18px max(24px,env(safe-area-inset-left));gap:12px;background:linear-gradient(#0b232be8,transparent);pointer-events:none}.topbar>*{pointer-events:auto}.brand{display:flex;align-items:center;gap:10px;color:var(--cream);text-decoration:none;font-weight:900;font-size:18px;letter-spacing:.06em;line-height:1.1}.brand small{display:block;font-size:9px;letter-spacing:.24em;color:#acd2cc;margin-top:6px}.brand-symbol{display:grid;place-items:center;font:bold 44px Baloo;color:#142e30;background:var(--gold);width:44px;height:44px;border-radius:50% 50% 44% 22%;box-shadow:inset 0 2px #fff9d8,0 3px 0 #825f29}.tools{display:flex;gap:7px}.tools button{border:1px solid #b9e0d02e;background:#113139dc;border-radius:24px;min-height:42px;padding:8px 13px;font-size:12px}.tools button[aria-pressed=true]{background:#376059;border-color:var(--mint);color:#e1ffed}.screen{position:absolute;z-index:4;inset:0}.lobby{display:flex;align-items:center;justify-content:space-between;padding:110px 7% 35px;gap:5%;overflow-y:auto;background:linear-gradient(90deg,#092629fa 0%,#092629b8 39%,#0e2c3435 67%,#0e2c3400)}.lobby-copy{flex:1;max-width:570px;padding-bottom:90px;pointer-events:none}.eyebrow{font-weight:900;font-size:11px;letter-spacing:.2em;color:var(--mint);margin:0 0 15px}h1{font:800 clamp(60px,6.2vw,104px)/.98 Baloo,Nunito,sans-serif;letter-spacing:-.035em;margin:0 0 24px;text-shadow:0 5px 28px #00181560}h1 em{font-style:normal;color:var(--gold)}.intro{color:#d0e7df;font-size:19px;line-height:1.6}.feature-row{display:flex;flex-wrap:wrap;gap:17px;font-size:9px;font-weight:900;letter-spacing:.1em;margin-top:28px;color:#a7c7bd}.feature-row span+span:before{content:'+';margin-right:17px;color:var(--gold)}.lobby-controls{width:370px;max-width:100%;flex-shrink:0;background:linear-gradient(135deg,#224b48f2,#102e34f7);border:1px solid #a3c5ac40;box-shadow:0 18px 65px #031c3670,inset 0 1px #c7eaca33;border-radius:26px;padding:24px}.section-label{display:flex;justify-content:space-between;gap:8px;font-size:12px;color:#deebe1;margin-bottom:10px}.section-label>span{color:#a8c6bd;font-size:10px;align-self:center}.arena-select{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.arena-choice{padding:0;text-align:left;border:1px solid #d5e2b42b;background:#15393a;border-radius:13px;min-height:110px;position:relative;overflow:hidden}.arena-choice.selected{border-color:var(--gold);box-shadow:0 0 0 1px var(--gold)}.arena-choice:disabled{opacity:.55}.arena-choice strong{display:block;font-size:11px;line-height:1.2;padding:9px}.arena-choice .scene{height:61px;display:block;position:relative;overflow:hidden;background:radial-gradient(ellipse at 50% 120%,#90ba774d,transparent 80%),linear-gradient(145deg,#234f49,#123138)}.arena-choice .scene:before{content:'';position:absolute;left:22%;top:30%;width:60%;height:50%;border:6px solid #fbc774;border-right-color:transparent;border-radius:50%;transform:rotate(-20deg);filter:drop-shadow(0 2px 3px #0007)}.arena-choice:nth-child(2) .scene{background:linear-gradient(140deg,#185a71,#3a9696)}.arena-choice:nth-child(2) .scene:before{border-color:#88fff0;border-right-color:transparent}.arena-choice:nth-child(3) .scene{background:linear-gradient(140deg,#693b3b,#a87544)}.arena-choice:nth-child(3) .scene:before{border-color:#ff9d70;border-right-color:transparent}.arena-choice .tag{position:absolute;right:5px;top:4px;background:#061b24c9;font-size:8px;border-radius:8px;padding:3px 5px}.arena-description{font-size:12px;line-height:1.5;color:#abc8bc;min-height:37px;margin:12px 0 16px}.customise{display:flex;align-items:center;justify-content:space-between;padding:12px 0 18px;border-top:1px solid var(--line)}.customise .section-label{font-size:9px;font-weight:900;letter-spacing:.1em}.skins{display:flex;gap:8px}.skin{width:31px;height:31px;border-radius:50%;border:3px solid #0b2a2e;background:var(--skin);box-shadow:inset 0 3px 2px #fff6}.skin.selected{outline:2px solid var(--cream);outline-offset:2px}.skin:disabled{filter:grayscale(.9);opacity:.3}.best{font-size:9px;letter-spacing:.1em;color:#a1c1b9;text-align:right}.best b{display:block;font:bold 25px Baloo;color:var(--gold);letter-spacing:0}.primary{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;border:1px solid #fff0b5;border-radius:15px;padding:14px 20px;background:linear-gradient(#ffe59a,#f4b74d);box-shadow:0 4px 0 #8c5c27,0 6px 26px #b88a2625;color:#24352e;font-size:18px;min-height:54px}.primary>span{font-size:26px}.primary:hover{filter:brightness(1.07)}.practice{border:0;background:none;width:100%;padding:17px 2px 10px;color:#d2eadc;font-size:13px}.practice span{display:block;color:#96b7b1;font-weight:500;font-size:11px;margin-top:3px}.howto{border-top:1px solid var(--line);margin-top:4px;padding-top:9px;color:#a3c2ba;font-size:10px;line-height:1.45}.howto p{margin:5px 0}.howto b{color:#d9eadd}.save-note{font-size:10px;color:var(--gold);margin:0}.save-note:empty{display:none}#hud{position:absolute;left:max(24px,env(safe-area-inset-left));top:98px;display:flex;gap:18px;z-index:2;pointer-events:none}.mission{width:220px;border-left:3px solid var(--gold);padding:8px 14px;background:linear-gradient(90deg,#0c292bf0,#0c292b20);border-radius:0 12px 12px 0}.mission>span{font-weight:900;font-size:12px}.scoreline{display:flex;align-items:baseline;gap:8px}.scoreline strong{font:800 40px/1.2 Baloo}.scoreline small{font-size:13px;color:#b4cabc}.progress{height:4px;border-radius:5px;background:#e6edbb22;overflow:hidden}.progress i{display:block;background:var(--gold);height:100%;width:0;transition:width .2s}.mission p{font-size:10px;color:#e6eacf;margin:6px 0 0}.round-clock{border-radius:14px;background:#0d3035d9;padding:10px 16px;align-self:flex-start;text-align:center}.round-clock small{display:block;font-size:8px;letter-spacing:.15em;color:#b6d3c7}.round-clock strong{display:block;font:800 30px/1.2 Baloo;font-variant-numeric:tabular-nums}.round-clock>span{font-size:10px;color:var(--gold)}#standings{position:absolute;right:26px;top:95px;width:193px;z-index:2;border-radius:16px;padding:13px 15px;background:#0a252bd9;pointer-events:none}#standings p{font-size:10px;font-weight:900;margin:0 0 9px;color:var(--gold)}#standings p span{display:block;font-size:8px;color:#9abbb0;margin-top:3px}#standings ol{padding:0;list-style-position:inside;margin:0;font-size:11px;color:#bbd4cb}#standings li{padding:4px 0}#standings li.you{color:#ffe098;font-weight:900}#standings li b{float:right}#power-status{position:absolute;bottom:70px;left:50%;transform:translateX(-50%);border-radius:20px;background:#12383adc;border:1px solid #beefcd45;padding:9px 16px;color:#bfffe9;font-size:12px;z-index:2;pointer-events:none}#toast{position:absolute;left:50%;top:24%;transform:translate(-50%,-10px);padding:10px 20px;border-radius:30px;font-weight:900;font-size:15px;z-index:6;color:#fff4c9;background:#102d30d9;border:1px solid #ffdc8360;opacity:0;transition:opacity .2s,transform .2s;pointer-events:none;text-align:center;max-width:80%}#toast.visible{opacity:1;transform:translate(-50%,0)}.modal{display:grid;place-items:center;padding:90px 20px 20px;background:#071d26b3;backdrop-filter:blur(9px);overflow-y:auto}.dialog{border:1px solid #cdd69a44;border-radius:25px;padding:30px;width:420px;max-width:100%;text-align:center;background:linear-gradient(145deg,#29554dfc,#0e2c36fc);box-shadow:0 30px 100px #001b2a77}.dialog h2{font:800 38px/1.1 Baloo;margin:10px 0}.dialog>p:not(.eyebrow){font-size:14px;line-height:1.6;color:#c2dccb}.dialog .primary{margin-top:18px;justify-content:center}.secondary{width:100%;border:1px solid #c8dabc50;background:#193c3f;border-radius:14px;padding:13px;margin-top:12px;min-height:46px}.text-button{background:none;border:0;padding:18px 10px 4px;color:#b7d9cf}.result-medal{width:70px;height:70px;border-radius:23px;background:linear-gradient(#f8dd89,#cf8f35);box-shadow:0 6px 0 #806133,inset 0 2px #ffffd2;color:#4b411e;display:grid;place-items:center;font-size:48px;margin:0 auto 20px;transform:rotate(-8deg)}.result-stats{display:grid;grid-template-columns:repeat(3,1fr);padding:16px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.result-stats small{font-size:8px;letter-spacing:.05em;color:#9bc1b0}.result-stats b{display:block;font:800 30px Baloo;color:var(--gold)}.unlock-note{color:var(--gold)!important}.modal:not([hidden]) .dialog{animation:arrive .35s ease-out}@keyframes arrive{from{opacity:0;transform:translateY(15px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}#touch-controls{position:absolute;bottom:max(24px,env(safe-area-inset-bottom));inset-inline:24px;z-index:3;display:flex;justify-content:space-between;align-items:center;pointer-events:none}#joystick{width:105px;height:105px;border:1px solid #bfeee140;border-radius:50%;background:radial-gradient(#59d8b80d,#09252b55);position:relative;touch-action:none;pointer-events:auto}#joystick:before,#joystick:after{content:'';position:absolute;left:50%;top:50%;width:55px;height:1px;background:#d0efe933;transform:translate(-50%,-50%)}#joystick:after{transform:translate(-50%,-50%) rotate(90deg)}#joystick i{position:absolute;width:38px;height:38px;left:32px;top:32px;border-radius:50%;border:1px solid #cfeadb55;background:radial-gradient(at 30% 20%,#80ad9699,#376b6055);box-shadow:0 4px 10px #00282855}#joystick span{position:absolute;font-size:8px;font-weight:900;bottom:6px;left:0;right:0;text-align:center;color:#b6d6be}.boost-wrap{pointer-events:auto;text-align:center}#boost{border-radius:50%;width:84px;height:84px;background:radial-gradient(at 35% 20%,#fff1b0,#eeb246 65%,#ad7831);box-shadow:0 5px 0 #604523,0 0 0 5px #fce6ad25,0 9px 27px #031c21aa;border:2px solid #ffebad;color:#32413a;display:flex;flex-direction:column;align-items:center;justify-content:center;touch-action:none}#boost>span{font:bold 45px/25px Nunito;transform:rotate(-90deg);margin-bottom:10px}#boost b{font-size:10px;letter-spacing:.12em}#boost[aria-pressed=true]{filter:brightness(1.2);transform:translateY(3px);box-shadow:0 2px 0 #604523,0 0 22px #fce6ad55}.energy-track{height:5px;background:#193a3c;margin:12px 3px 0;border-radius:4px;overflow:hidden}.energy-track i{display:block;background:var(--gold);height:100%;width:100%}#play-hint{position:absolute;bottom:24px;left:50%;transform:translateX(-50%);color:#b5d4c7;font-size:11px;z-index:2;white-space:nowrap;pointer-events:none}#play-hint span{margin-left:16px;color:#88aca4}#loading-error{position:absolute;inset:40%;z-index:9;background:#123;padding:20px;min-width:200px}.immersive #game{position:fixed;inset:0}#game:fullscreen{width:100vw;height:100vh}
@media(min-width:1600px){.lobby-controls{width:420px;padding:28px}.arena-choice{min-height:125px}.arena-choice .scene{height:72px}.howto{font-size:12px}}
@media(max-width:1000px){.lobby{padding:95px 4% 24px;gap:3%}.lobby-controls{width:350px}.lobby-copy h1{font-size:70px}.intro{font-size:16px}.feature-row{font-size:8px;gap:8px}.feature-row span+span:before{margin-right:8px}.tools button{padding:8px 10px}.brand{font-size:15px}.brand-symbol{width:38px;height:38px;font-size:36px}}
@media(max-width:690px){.topbar{padding:12px 14px;align-items:flex-start}.brand{font-size:12px;gap:6px;margin-top:1px}.brand-symbol{width:32px;height:32px;font-size:30px}.brand small{font-size:6px;letter-spacing:.17em;margin-top:4px}.tools{gap:4px;max-width:215px;justify-content:flex-end;flex-wrap:wrap}.tools button{font-size:9px;min-height:34px;padding:6px 9px}.lobby{display:block;padding:93px 20px 25px;background:linear-gradient(100deg,#092629eb,#09262988);scroll-padding:100px 0 20px}.lobby-copy{padding:0 0 18px}.lobby-copy .eyebrow{font-size:8px;letter-spacing:.14em;margin:0 0 8px}.lobby-copy h1{font-size:54px;line-height:.97;margin-bottom:10px}.intro{font-size:13px;line-height:1.5;margin:8px 0}.feature-row{margin-top:12px;font-size:7px;gap:10px}.lobby-controls{width:100%;padding:18px;border-radius:20px;background:#173c3cda;box-shadow:0 12px 24px #031c3640}.arena-choice{min-height:89px}.arena-choice .scene{height:43px}.arena-choice strong{font-size:10px;padding:7px}.arena-description{font-size:11px;min-height:30px;margin:10px 0}.customise{padding:10px 0 14px}.primary{font-size:16px;min-height:50px;padding:10px 15px}.practice{padding-top:14px}.howto{font-size:9px}.section-label{font-size:11px}#hud{top:99px;left:14px;right:14px;justify-content:space-between;gap:10px}.mission{width:184px;padding:6px 10px}.mission>span{font-size:10px}.scoreline strong{font-size:32px}.scoreline small{font-size:11px}.mission p{font-size:9px}.round-clock{padding:8px 12px}.round-clock strong{font-size:26px}#standings{display:none!important}#touch-controls{inset-inline:21px;bottom:max(25px,env(safe-area-inset-bottom))}#play-hint{bottom:10px;font-size:9px}#play-hint span{display:none}#power-status{bottom:130px;font-size:10px;white-space:nowrap;padding:8px 12px}#toast{top:27%;font-size:12px;padding:10px 14px;width:max-content}#joystick{width:95px;height:95px}#joystick i{left:27px;top:27px}.dialog{padding:24px}.dialog h2{font-size:33px}.modal{padding-top:90px}.dialog .eyebrow{font-size:9px}}
@media(max-width:360px){.brand>span:last-child{font-size:10px}.tools{max-width:173px}.tools button{font-size:8px;padding:6px 7px}.lobby{padding-inline:14px}.lobby-copy h1{font-size:47px}.lobby-controls{padding:14px}.feature-row{font-size:6px}.arena-choice strong{font-size:9px}}
@media(max-height:620px) and (min-width:691px){.lobby{align-items:flex-start;padding-top:90px;padding-bottom:25px}.lobby-copy{position:sticky;top:0;padding-bottom:0}.lobby-copy h1{font-size:60px}.lobby-controls{padding:18px}.arena-choice{min-height:85px}.arena-choice .scene{height:40px}.arena-description{margin:8px 0;min-height:0}.customise{padding:8px 0 12px}.howto{font-size:9px}.topbar{padding:10px 20px}#hud{top:77px}#standings{top:77px}#touch-controls{bottom:16px}#joystick{width:75px;height:75px}#joystick i{left:17px;top:17px}#boost{width:64px;height:64px}#boost>span{font-size:34px;line-height:18px;margin-bottom:7px}#play-hint{bottom:12px}.dialog{padding:20px;width:450px}.dialog h2{font-size:27px}.dialog .eyebrow{margin-bottom:8px}.result-medal{display:none}.result-stats{padding:8px 0}.modal{padding-top:77px;place-items:start center}#power-status{bottom:46px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
/* A modal's grid track must shrink below the dialog's preferred desktop width. */
.modal{grid-template-columns:minmax(0,1fr)}.dialog{min-width:0}
@media(max-height:620px) and (min-width:691px){#hud{right:20px;justify-content:space-between}.mission{width:185px}.mission p{display:none}.scoreline strong{font-size:26px}.round-clock{padding:6px 12px}.round-clock strong{font-size:24px}#standings{display:none!important}#toast{top:auto;bottom:95px;font-size:12px}#play-hint{font-size:9px}}
/* iPhone does not always expose native element fullscreen. Keep the game locked
   to the visible viewport while the browser's address bar changes height. */
.immersive,.immersive body{position:fixed;inset:0;width:100%;height:var(--visible-viewport-height);overflow:hidden}.immersive #game{position:fixed;inset:0;width:100%;height:var(--visible-viewport-height)}#game:fullscreen,#game:-webkit-full-screen{width:100vw;height:100vh}
