:root{--void:#04050c;--night:#070914;--glass:rgba(13,16,34,.66);--glass-strong:rgba(12,15,32,.9);--raise:rgba(255,255,255,.04);--hover:rgba(255,255,255,.06);--line:rgba(190,196,255,.1);--line-strong:rgba(190,196,255,.18);--fg:#f2f3fb;--muted:#a3a7c4;--dim:#6c7194;--glow:#ffb547;--glow-hi:#ffe2ad;--glow-soft:rgba(255,181,71,.14);--glow-line:rgba(255,181,71,.42);--ink:#1b1104;--ion:#8f89ff;--live:#ff5468;--font-display:"Instrument Serif","Iowan Old Style",Georgia,serif;--font-body:"Geist","Segoe UI",system-ui,-apple-system,sans-serif;--font-mono:"Geist Mono",ui-monospace,"SFMono-Regular",Menlo,Consolas,monospace;--r-s:10px;--r:16px;--r-l:22px;--ease:cubic-bezier(.2,.8,.2,1);--ease-spring:cubic-bezier(.34,1.56,.64,1);--shadow:0 1px 0 rgba(255,255,255,.05) inset,0 18px 48px rgba(0,0,0,.45);--blur:blur(20px) saturate(150%);--panel-w:400px;--player-h:84px;--gutter:22px;color-scheme:dark}*{box-sizing:border-box}html,body{height:100%;margin:0;overscroll-behavior:none}body{background:radial-gradient(70% 60% at 32% 42%,rgba(64,60,170,.22),transparent 70%),radial-gradient(50% 40% at 85% 100%,rgba(255,150,60,.06),transparent 70%),radial-gradient(120% 100% at 30% 40%,#10132e 0%,#090b1c 50%,var(--void) 100%);background-color:var(--void);color:var(--fg);font:400 14.5px/1.45 var(--font-body);overflow:hidden;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-tap-highlight-color:transparent;font-feature-settings:"ss01","cv11"}[hidden]{display:none!important}button{font:inherit;color:inherit;cursor:pointer;border:0;background:none;padding:0}button:disabled{cursor:default}button:focus-visible,input:focus-visible,a:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--glow);outline-offset:2px;border-radius:var(--r-s)}img{max-width:100%}::selection{background:#ffb54759;color:#fff}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}app-globe-stage .globe canvas{outline:none}app-globe-stage .globe.hot canvas{cursor:pointer!important}.glass{background:var(--glass);border:1px solid var(--line);backdrop-filter:var(--blur);-webkit-backdrop-filter:var(--blur);box-shadow:var(--shadow)}.kbd{display:inline-grid;place-items:center;min-width:20px;height:20px;padding:0 5px;border-radius:6px;font:500 10.5px/1 var(--font-mono);color:var(--muted);background:#ffffff0d;border:1px solid var(--line);box-shadow:0 1px #ffffff0a}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:42px;padding:0 18px;border-radius:999px;font:600 14px var(--font-body);white-space:nowrap;transition:transform .15s var(--ease),background .2s,box-shadow .2s}.btn:active{transform:scale(.97)}.btn-primary{background:linear-gradient(180deg,#ffc469,var(--glow));color:var(--ink);box-shadow:0 1px #fff6 inset,0 8px 24px #ffaa3c47}.btn-primary:hover{box-shadow:0 1px #fff6 inset,0 10px 30px #ffaa3c6b}.btn-ghost{background:var(--raise);border:1px solid var(--line);color:var(--fg)}.btn-ghost:hover{background:var(--hover);border-color:var(--line-strong)}.btn .kbd{background:#0000001f;border-color:#00000024;color:#1b1104b3;box-shadow:none}.icon-btn{width:40px;height:40px;border-radius:12px;display:grid;place-items:center;color:var(--muted);transition:color .15s,background .15s,transform .15s var(--ease)}.icon-btn:hover{color:var(--fg);background:var(--hover)}.icon-btn:active{transform:scale(.92)}.icon-btn:disabled{opacity:.35;background:none;color:var(--muted);transform:none}.logo{width:44px;height:44px;border-radius:12px;overflow:hidden;flex:none;position:relative;display:grid;place-items:center;font:600 16px var(--font-body);color:var(--ink);background:linear-gradient(140deg,var(--glow-hi),var(--glow) 60%,#f08a34);box-shadow:0 0 0 1px #ffffff0f inset}.logo img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;background:#fff}.eq{display:inline-flex;gap:2px;align-items:flex-end;height:12px}.eq i{width:2.5px;border-radius:2px;background:currentColor;animation:eq 1s ease-in-out infinite}.eq i:nth-child(2){animation-delay:-.4s}.eq i:nth-child(3){animation-delay:-.75s}.eq i:nth-child(4){animation-delay:-.2s}@keyframes eq{0%,to{height:3px}50%{height:12px}}.spinner{width:16px;height:16px;border-radius:50%;flex:none;border:2px solid rgba(255,255,255,.14);border-top-color:var(--glow);animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.boot{--t:0ms;position:fixed;inset:0;z-index:60;display:grid;place-items:center;text-align:center;padding:24px;background:radial-gradient(50% 45% at 50% 42%,rgba(90,84,230,.22),transparent 70%),radial-gradient(90% 80% at 50% 45%,#0f1230,var(--void));transition:opacity .9s var(--ease),visibility .9s}.boot.done{opacity:0;visibility:hidden}.boot.done .boot-inner{transform:scale(1.06);opacity:0}.boot-inner{display:flex;flex-direction:column;align-items:center;transition:transform .9s var(--ease),opacity .6s}.boot-stage{position:relative;width:148px;height:148px;margin-bottom:26px}.boot-stage .ripple{position:absolute;inset:0;border-radius:50%;border:1px solid rgba(255,181,71,.45);opacity:0;animation:ripple 2.8s cubic-bezier(.2,.6,.3,1) var(--t) infinite}.boot-stage .ripple:nth-child(2){animation-delay:calc(var(--t) + .93s)}.boot-stage .ripple:nth-child(3){animation-delay:calc(var(--t) + 1.86s)}.boot-stage .mark{position:absolute;inset:14px;animation:float 5s ease-in-out var(--t) infinite}.boot-stage svg.mark{width:120px;height:120px;overflow:visible}.boot-stage .orbit{stroke-dasharray:1;stroke-dashoffset:1;animation:draw 1.5s var(--ease) calc(var(--t) + .15s) forwards}.boot-stage .orbit.b{animation-delay:calc(var(--t) + .35s)}.boot-stage .sat{transform-box:fill-box;transform-origin:center;opacity:0;animation:pop .6s var(--ease-spring) calc(var(--t) + 1.2s) forwards}@keyframes ripple{0%{transform:scale(.3);opacity:1}to{transform:scale(1.3);opacity:0}}@keyframes draw{to{stroke-dashoffset:0}}@keyframes pop{0%{opacity:0;transform:scale(.2)}to{opacity:1;transform:none}}@keyframes float{50%{transform:translateY(-4px)}}.boot-word{margin:0;font:600 clamp(38px,7vw,52px)/1 var(--font-body);letter-spacing:-.045em}.boot-tag{margin:10px 0 0;font:400 italic clamp(18px,3vw,21px)/1.3 var(--font-display);color:var(--muted)}.boot-bar{position:relative;width:180px;height:2px;margin:30px 0 14px;border-radius:2px;background:#ffffff14;overflow:hidden}.boot-bar i{position:absolute;inset:0 auto 0 0;width:40%;border-radius:2px;background:linear-gradient(90deg,transparent,var(--glow),transparent);animation:scan 1.4s var(--ease) var(--t) infinite}@keyframes scan{0%{transform:translate(-100%)}to{transform:translate(250%)}}.boot-msg{margin:0;color:var(--dim);font:400 11.5px var(--font-mono);letter-spacing:.04em;max-width:42ch}.boot.failed .boot-bar{display:none}.boot.failed .boot-msg{color:var(--muted);margin-top:26px}.boot .btn{margin-top:20px}@media(display-mode:standalone){app-top-bar,app-station-panel .tabs,app-genre-chips,app-continent-legend,app-player-bar,.boot{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}}@media(min-width:761px)and (max-width:1080px){:root{--panel-w:340px;--gutter:18px}}@media(max-width:760px){:root{--panel-w:0px;--player-h:72px;--gutter:14px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:1ms!important;animation-iteration-count:1!important;transition-duration:1ms!important}}
