.rally{display:flex;flex-direction:column;gap:8px;width:min(100%,760px);min-height:100dvh;margin:0 auto;padding:10px 14px 0}.rally-hud{display:flex;align-items:center;justify-content:space-between}.rally-hud__round{color:#fff;font-weight:600;text-shadow:0 2px 0 var(--sky-deep)}.rally-prompt{color:#fff;font-size:clamp(1.5rem,6vw,2.4rem);text-align:center;text-shadow:0 3px 0 var(--sky-deep),0 8px 16px rgb(42 139 209 / .4)}.rally-time{display:flex;align-items:center;gap:8px;min-height:24px}.rally-time__track{position:relative;flex:1;height:12px;overflow:hidden;border-radius:999px;background:#fff9}.rally-time__fill{display:block;width:0;height:100%;border-radius:inherit;background:var(--mint)}.rally-time__track.is-urgent .rally-time__fill{background:var(--coral)}.rally-time__gate{position:absolute;top:0;bottom:0;width:3px;background:var(--ink);opacity:.55}.rally-time__gate[hidden]{display:none}.rally-time__text{min-width:2ch;color:#fff;font-weight:700;text-align:right;text-shadow:0 2px 0 var(--sky-deep)}.space{position:relative;flex:1;min-height:300px;overflow:hidden;border-radius:var(--radius-l);background:#191446;box-shadow:var(--shadow-card)}.space__canvas{position:absolute;inset:0;display:block;width:100%;height:100%}.rally-count{position:absolute;inset:0;z-index:4;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#1914466b;color:#fff;text-align:center}.rally-count[hidden]{display:none}.rally-count__big{font-size:clamp(4rem,22vw,7rem);font-weight:700;line-height:1;text-shadow:0 5px 0 var(--coral-deep)}.rally-count__big.is-in{animation:rally-pop .42s cubic-bezier(.3,1.6,.6,1)}.rally-count__small{font-size:1.2rem;font-weight:600}@keyframes rally-pop{0%{transform:scale(.5)}}.rally-banner{position:absolute;top:12px;left:50%;z-index:3;max-width:calc(100% - 24px);padding:5px 16px;border-radius:999px;background:var(--sun);box-shadow:0 4px 0 var(--sun-deep);color:var(--ink);font-weight:700;text-align:center;transform:translate(-50%)}.rally-banner.is-in{animation:rally-banner-in .48s cubic-bezier(.3,1.6,.6,1)}@keyframes rally-banner-in{0%{opacity:0;transform:translate(-50%,-24px) scale(.8)}}.tier--common{background:#c9f1ff;color:var(--ink)}.tier--uncommon{background:var(--mint);color:var(--ink)}.tier--rare{background:var(--sun);color:var(--ink)}.tier--stellar{background:var(--grape);color:#fff}.tier--cosmic{background:var(--ink);color:var(--sun)}.tier--bonus{background:var(--tang);color:var(--ink)}.tier--bad{background:var(--coral);color:#fff}.tier--none{background:#e2dff0;color:var(--ink-soft)}.rally-dock{position:sticky;bottom:0;z-index:5;margin:0 -14px;padding:8px 14px calc(10px + env(safe-area-inset-bottom));border-radius:var(--radius-m) var(--radius-m) 0 0;background:#fffffff5;box-shadow:0 -6px 18px #2b23501a;transition:background-color .24s}.rally-dock.is-common{background:var(--sun)}.rally-dock.is-rare{background:#f3b6e6}.rally-dock__head{display:flex;align-items:center;gap:8px;margin-bottom:6px}.rally-dock__pilot{position:relative;flex:none;width:54px;height:54px}.rally-dock__pilot .buddy{position:absolute;top:50%;left:50%;width:124%;transform:translate(-50%,-54%)}.rally-dock__stage{flex:1;min-width:0}.rally-dock__status{min-height:1.3em;margin:0 0 3px;font-weight:600;line-height:1.25}.rally-pips{display:flex;align-items:center;gap:5px}.rally-pip{width:16px;height:16px;border:2px solid rgb(43 35 80 / .35);border-radius:50%;transition:transform .2s cubic-bezier(.3,1.6,.6,1)}.rally-pip:not([class*=tier--]){background:#ffffff8c}.rally-pip[class*=tier--]{border-color:var(--ink);transform:scale(1.12)}.rally-pip--rare:nth-child(4){margin-left:9px}.rally-dock__form{display:flex;gap:8px}.rally-dock__form[hidden]{display:none}.rally-dock__form.is-off{opacity:.55;pointer-events:none}.rally-dock__form.shake{animation:rally-shake .32s}@keyframes rally-shake{25%{transform:translate(-7px)}50%{transform:translate(6px)}75%{transform:translate(-3px)}}.rally-dock__input{flex:1;min-width:0;font-size:1.2rem}.rally-dock__send{flex:none;padding-inline:18px}.rally-toast{position:absolute;bottom:calc(100% + 8px);left:50%;width:max-content;max-width:calc(100% - 28px);padding:6px 14px;border-radius:999px;box-shadow:0 4px #2b235040;font-weight:600;text-align:center;transform:translate(-50%);animation:rally-toast-in .26s cubic-bezier(.3,1.6,.6,1)}.rally-toast[hidden]{display:none}@keyframes rally-toast-in{0%{opacity:0;transform:translate(-50%,10px) scale(.9)}}.rally-results,.rally-standing{display:flex;flex-direction:column;gap:4px;width:100%;margin:0;padding:0;list-style:none}.rally-results{max-height:42dvh;overflow-y:auto}.rally-results[hidden]{display:none}.rally-standing{padding:12px;border-radius:var(--radius-l)}.rally-result{display:flex;align-items:center;gap:8px;padding:3px 8px 3px 4px;border-radius:var(--radius-s)}.rally-result.is-you{background:#ffc23347}.rally-result .avatar{flex:none;width:36px;height:36px}.rally-result__who{display:flex;flex:1;flex-direction:column;gap:1px;min-width:0;color:var(--ink-soft);font-size:.82rem;line-height:1.25}.rally-result__who strong{overflow:hidden;color:var(--ink);font-size:1rem;text-overflow:ellipsis;white-space:nowrap}.rally-result__badge{flex:none;line-height:0}.rally-result__gain{flex:none;font-weight:700}.rally-chips{display:flex;flex-wrap:wrap;gap:3px}.rally-chip{padding:0 7px;border-radius:999px;font-size:.76rem;font-weight:600;line-height:1.5}.rally-title{font-size:clamp(2.1rem,8vw,3.2rem)}.rally-hero{position:relative;width:min(52vw,28dvh,210px);margin-bottom:92px}.rally-hero__planet{position:absolute;top:68%;left:50%;margin-left:-85px;line-height:0;animation:rally-spin-in .9s cubic-bezier(.3,1.4,.6,1)}.rally-hero .buddy{position:relative}@keyframes rally-spin-in{0%{opacity:0;transform:scale(.3) rotate(-40deg)}}.rally-map{display:flex;align-items:flex-end;justify-content:space-between;width:min(100%,520px);margin:0;padding:10px 12px 12px;border-radius:var(--radius-m);background:linear-gradient(120deg,#191446,#4a2b86);list-style:none}.rally-map__stop{display:flex;flex-direction:column;align-items:center;gap:2px;min-width:0}.rally-map__crew{display:flex;flex-direction:column-reverse;align-items:center}.rally-map__crew .avatar{width:26px;height:26px;margin-top:-9px;animation:bob 2.6s ease-in-out infinite}@keyframes bob{50%{transform:translateY(-3px)}}@media(max-height:780px){.space{min-height:220px}.rally-results{max-height:30dvh}}@media(min-width:720px){.rally-dock{margin:0}}
