*{box-sizing:border-box}html,body{user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent}input,textarea{user-select:text;-webkit-user-select:text}.game{position:fixed;top:0;left:0;width:100vw;height:100%;touch-action:none}.ui{position:absolute;top:0;left:0;width:100%;height:100%;z-index:1;font-size:12px;color:#fff;pointer-events:none}.ui a{color:inherit;pointer-events:auto}.ui-top{display:flex;align-items:flex-start;gap:8px;position:absolute;left:50%;top:max(12px,env(safe-area-inset-top));transform:translate(-50%);pointer-events:none}.ui-top>*{pointer-events:auto}.controls{display:flex;align-items:flex-end;gap:24px;position:absolute;left:0;bottom:0;padding:16px;font-family:Helvetica,Arial,sans-serif;color:#fff;pointer-events:none;-webkit-user-select:none;user-select:none;opacity:1;transition:opacity .75s ease}.controls--hidden{opacity:0}.controls .control{display:flex;align-items:flex-end;gap:8px}.controls .label{display:flex;align-items:center;height:18px;font-size:14px;white-space:nowrap}.controls .keys,.controls .wasd{display:flex;flex-direction:column;align-items:center;gap:2px}.controls .wasd__row{display:flex;gap:2px}.controls .key{display:flex;align-items:center;justify-content:center;height:18px;min-width:18px;padding:0 4px;border:1px solid #ffffff;border-radius:3px;font-size:10px;line-height:1}.controls .key--wide{min-width:42px}.touch-controls{position:absolute;top:0;left:0;width:100%;height:100%;font-family:Helvetica,Arial,sans-serif;pointer-events:none}.touch-controls .touch-joystick,.touch-controls .touch-button{position:absolute;pointer-events:auto;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.touch-controls .touch-joystick{left:24px;bottom:max(24px,env(safe-area-inset-bottom));width:128px;height:128px;border:1px solid rgba(255,255,255,.4);border-radius:50%;background:rgba(255,255,255,.12)}.touch-controls .touch-joystick__nub{position:absolute;left:50%;top:50%;width:48px;height:48px;margin:-24px 0 0 -24px;border-radius:50%;background:rgba(255,255,255,.5);pointer-events:none}.touch-controls .touch-button{display:flex;align-items:center;justify-content:center;border:1px solid rgba(255,255,255,.4);border-radius:50%;background:rgba(255,255,255,.12);color:#fff;font-size:12px;text-transform:uppercase;letter-spacing:.05em}.touch-controls .touch-button:active{background:rgba(255,255,255,.35)}.touch-controls .touch-button--jump{right:24px;bottom:max(24px,env(safe-area-inset-bottom));width:88px;height:88px}.touch-controls .touch-button--dash{right:128px;bottom:max(24px,env(safe-area-inset-bottom));width:64px;height:64px}.emoji-picker{display:flex;align-items:center;gap:6px;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;font-family:Helvetica,Arial,sans-serif;opacity:1;transition:opacity .75s ease}.emoji-picker--hidden{opacity:0;pointer-events:none}.emoji-picker__item,.emoji-picker__toggle{display:flex;align-items:center;justify-content:center;width:34px;height:34px;padding:0;border:1px solid rgba(255,255,255,.25);border-radius:50%;background:rgba(255,255,255,.1);color:#fff;font-size:18px;line-height:1;cursor:pointer;touch-action:none;opacity:.65;transition:opacity .2s ease,background .2s ease}.emoji-picker__item:hover,.emoji-picker__toggle:hover{opacity:1}.emoji-picker__toggle{font-size:16px}.emoji-picker__toggle--open{opacity:1;background:rgba(255,255,255,.25)}.radio{position:relative;pointer-events:auto;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;font-family:Helvetica,Arial,sans-serif}.radio__pill{display:flex;align-items:center;gap:7px;height:34px;padding:0 14px;border:1px solid rgba(255,255,255,.25);border-radius:17px;background:rgba(255,255,255,.1);color:#fff;font-family:inherit;font-size:11px;letter-spacing:.14em;line-height:1;cursor:pointer;touch-action:none;opacity:.65;transition:opacity .2s ease,background .2s ease}.radio__pill:hover{opacity:1}.radio__pill--open{opacity:1;background:rgba(255,255,255,.25)}.radio__note{font-size:13px;opacity:.9}.radio__eq{display:flex;align-items:flex-end;gap:2px;height:11px}.radio__eq span{width:2px;height:100%;border-radius:1px;background:currentColor;transform-origin:bottom;animation:radio-eq .9s ease-in-out infinite}.radio__eq span:nth-child(2){animation-delay:.25s}.radio__eq span:nth-child(3){animation-delay:.55s}@keyframes radio-eq{0%,to{transform:scaleY(.3)}45%{transform:scaleY(1)}70%{transform:scaleY(.55)}}.radio__panel{position:absolute;top:calc(100% + 8px);left:50%;width:min(300px,calc(100vw - 24px));padding:8px;border:1px solid rgba(255,255,255,.25);border-radius:14px;background:rgba(12,18,24,.55);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);box-shadow:0 12px 32px #0000002e;opacity:0;visibility:hidden;transform:translate(-50%) translateY(-6px);transition:opacity .25s ease,transform .25s ease,visibility .25s}.radio__panel--open{opacity:1;visibility:visible;transform:translate(-50%) translateY(0)}.radio__screen{margin-bottom:8px}.radio__screen iframe{display:block;width:100%;aspect-ratio:16 / 9;border:1px solid rgba(255,255,255,.15);border-radius:8px;background:#000000}.radio__stations{display:flex;flex-direction:column;gap:2px;max-height:min(280px,42vh);overflow-y:auto;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.25) transparent}.radio__station{display:flex;align-items:center;gap:10px;width:100%;padding:8px 10px;border:none;border-radius:8px;background:transparent;color:#ffffffbf;font-family:inherit;font-size:12px;text-align:left;line-height:1.3;cursor:pointer;touch-action:none;transition:background .2s ease,color .2s ease}.radio__station:hover{background:rgba(255,255,255,.08);color:#fff}.radio__station--live{background:rgba(255,255,255,.12);color:#fff}.radio__freq{flex-shrink:0;min-width:38px;font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:11px;letter-spacing:.06em;opacity:.55}.radio__station--live .radio__freq{opacity:.9}.radio__title{flex:1;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.radio__station .radio__eq{flex-shrink:0;height:9px}.radio__station--intense{color:#ffc478d9;background:rgba(255,140,40,.08)}.radio__station--intense:hover{color:#ffd9a0;background:rgba(255,140,40,.16)}.radio__station--intense.radio__station--live{color:#ffe0b0;background:rgba(255,140,40,.22)}.radio__station--intense .radio__freq{opacity:.75}.radio__zap{font-size:10px;letter-spacing:-.1em}
