:root{color-scheme:dark;--bg: #06090f;--bg-deep: #02040a;--surface: #0a0f1a;--surface-2: #111a29;--raised: rgba(14, 21, 34, .72);--border: rgba(255, 255, 255, .07);--border-strong: rgba(255, 255, 255, .14);--text: #e8edfa;--text-dim: #94a1bb;--text-faint: #64708a;--accent: #67e8f9;--accent-ink: #04141a;--accent-soft: rgba(103, 232, 249, .13);--warm: #fbbf5a;--danger: #fb8a8a;--star-opacity: .55;--shadow-lg: 0 -8px 48px -12px rgba(0, 0, 0, .85), 0 -1px 0 rgba(255, 255, 255, .05);--shadow-sm: 0 4px 16px -6px rgba(0, 0, 0, .7);--globe-base: #3b475f;--globe-glow: #0b1424;--globe-signal: #4f7fd4;--globe-session: #67e8f9;--globe-playing: #f6c453;--globe-label-bg: rgba(9, 14, 25, .92);--globe-label: #e9eefb;--globe-outline: #67e8f9;--globe-country-fill: rgba(103, 232, 249, .13);--radius: 12px;--radius-lg: 18px;--mini: calc(68px + env(safe-area-inset-bottom)) ;--sheet: min(86dvh, 700px);--ease: cubic-bezier(.32, .72, 0, 1)}:root[data-theme=light]{color-scheme:light;--bg: #eef1f8;--bg-deep: #e3e8f3;--surface: #ffffff;--surface-2: #f2f5fb;--raised: rgba(255, 255, 255, .88);--border: rgba(16, 24, 40, .09);--border-strong: rgba(16, 24, 40, .18);--text: #0f172a;--text-dim: #56617a;--text-faint: #7c869c;--accent: #0e7490;--accent-ink: #ffffff;--accent-soft: rgba(14, 116, 144, .11);--warm: #b45309;--danger: #b42318;--star-opacity: 0;--shadow-lg: 0 -8px 40px -14px rgba(15, 23, 42, .28), 0 -1px 0 rgba(16, 24, 40, .06);--shadow-sm: 0 4px 14px -8px rgba(15, 23, 42, .35);--globe-base: #c7d2e4;--globe-glow: #dbe6f7;--globe-signal: #2563eb;--globe-session: #0e7490;--globe-playing: #b45309;--globe-label-bg: rgba(255, 255, 255, .95);--globe-label: #101828;--globe-outline: #0e7490;--globe-country-fill: rgba(14, 116, 144, .14)}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--text);font:14px/1.5 ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow:hidden;overscroll-behavior:none}button{font:inherit;color:inherit;background:none;border:none;padding:0;cursor:pointer;-webkit-tap-highlight-color:transparent}a{color:inherit}h1,h2{margin:0;font-weight:600}p{margin:0}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:6px}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.app{position:relative;display:grid;grid-template-columns:minmax(0,1fr) clamp(340px,27vw,420px);height:100dvh}.stage{position:relative;min-width:0;overflow:hidden;background:radial-gradient(110% 80% at 50% 38%,rgba(72,120,205,.18),transparent 62%),radial-gradient(90% 70% at 80% 100%,rgba(103,232,249,.08),transparent 60%),linear-gradient(180deg,var(--bg) 0%,var(--bg-deep) 100%)}.stage:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;opacity:var(--star-opacity);pointer-events:none;background-image:radial-gradient(1.2px 1.2px at 18% 24%,rgba(255,255,255,.55) 50%,transparent 51%),radial-gradient(1px 1px at 68% 12%,rgba(255,255,255,.4) 50%,transparent 51%),radial-gradient(1.4px 1.4px at 42% 78%,rgba(255,255,255,.32) 50%,transparent 51%),radial-gradient(1px 1px at 86% 62%,rgba(255,255,255,.42) 50%,transparent 51%),radial-gradient(1px 1px at 8% 68%,rgba(255,255,255,.28) 50%,transparent 51%);background-size:260px 260px,340px 340px,300px 300px,420px 420px,380px 380px}.globe{position:absolute;top:0;right:0;bottom:0;left:0}.globe canvas{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%}.globe-gl{contain:layout paint}.globe-overlay{touch-action:none}.stage-top,.stage-foot{position:absolute;left:max(18px,env(safe-area-inset-left));right:max(18px,env(safe-area-inset-right));display:flex;align-items:center;justify-content:space-between;gap:12px;pointer-events:none}.stage-top{top:max(16px,env(safe-area-inset-top))}.stage-foot{bottom:16px}.stage-top>*,.stage-foot>*{pointer-events:auto}.brand{display:flex;align-items:center;gap:8px;color:var(--text);font-size:13px;font-weight:600;letter-spacing:.02em}.brand svg{color:var(--accent)}.stage-status{padding:6px 12px;border:1px solid var(--border);border-radius:999px;background:var(--raised);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);color:var(--text-dim);font-size:12px;font-variant-numeric:tabular-nums}.stage-count{color:var(--text);font-weight:600}.stage-more{color:var(--text-faint)}.stage-status .warn{color:var(--danger)}.zoom{display:flex;gap:4px;padding:4px;border:1px solid var(--border);border-radius:999px;background:var(--raised);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.ghost{display:grid;place-items:center;width:34px;height:34px;border-radius:999px;color:var(--text-dim);transition:background .15s,color .15s}.stage-top .ghost{border:1px solid var(--border);background:var(--raised);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.ghost:hover{background:var(--accent-soft);color:var(--accent)}.ghost:active{transform:scale(.94)}.panel{position:relative;display:flex;flex-direction:column;min-height:0;border-left:1px solid var(--border);background:var(--surface)}.panel-head{flex:none;padding:16px 16px 12px;border-bottom:1px solid var(--border)}.search-field{position:relative;display:flex;align-items:center}.search-icon{position:absolute;left:12px;color:var(--text-faint);pointer-events:none}.search{width:100%;height:40px;padding:0 36px;border:1px solid var(--border-strong);border-radius:10px;background:var(--surface-2);color:var(--text);font:inherit;outline:none;transition:border-color .15s,background .15s}.search::placeholder{color:var(--text-faint)}.search:focus{border-color:var(--accent);background:var(--surface)}.search::-webkit-search-cancel-button{display:none}.search-clear{position:absolute;right:8px;display:grid;place-items:center;width:24px;height:24px;border-radius:999px;color:var(--text-faint)}.search-clear:hover{background:var(--surface-2);color:var(--text)}.tabs{display:flex;gap:4px;margin-top:10px;overflow-x:auto;scrollbar-width:none}.tabs::-webkit-scrollbar{display:none}.tab{display:flex;align-items:center;gap:6px;flex:none;max-width:46%;height:30px;padding:0 10px;border-radius:8px;color:var(--text-dim);font-size:12.5px;white-space:nowrap;transition:background .15s,color .15s}.tab-label{overflow:hidden;text-overflow:ellipsis}.tab:hover{background:var(--surface-2);color:var(--text)}.tab.is-active{background:var(--accent-soft);color:var(--accent);font-weight:600}.tab-count{padding:0 5px;border-radius:999px;background:var(--border);color:var(--text-dim);font-size:10.5px;font-variant-numeric:tabular-nums;line-height:16px}.tab.is-active .tab-count{background:var(--accent);color:var(--accent-ink)}.panel-list{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent}.panel-list::-webkit-scrollbar{width:10px}.panel-list::-webkit-scrollbar-thumb{border:3px solid transparent;border-radius:999px;background-clip:padding-box;background-color:var(--border-strong)}.empty{display:flex;flex-direction:column;align-items:center;gap:12px;padding:56px 32px;color:var(--text-dim);font-size:13px;text-align:center;text-wrap:balance}.stations{margin:0;padding:6px;list-style:none}.station{display:flex;align-items:center;border-radius:10px;transition:background .12s}.station:hover{background:var(--surface-2)}.station.is-selected{background:var(--accent-soft);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 35%,transparent)}.station-main{display:flex;align-items:center;gap:11px;flex:1 1 auto;min-width:0;padding:9px 4px 9px 10px;min-height:54px;text-align:left}.station-badge{display:grid;place-items:center;flex:none;width:28px;height:28px;border-radius:999px;background:var(--surface-2);color:var(--text-faint);transition:background .15s,color .15s}.station:hover .station-badge,.station.is-selected .station-badge{background:var(--border);color:var(--text)}.station.is-playing .station-badge{background:color-mix(in srgb,var(--warm) 18%,transparent);color:var(--warm)}.station-text{display:grid;gap:2px;min-width:0}.station-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.station.is-playing .station-name{color:var(--warm);font-weight:600}.station-meta{overflow:hidden;color:var(--text-dim);font-size:11.5px;text-overflow:ellipsis;white-space:nowrap}.station.is-off-air .station-name,.station.is-off-air .station-badge{opacity:.45}.station.is-off-air .station-meta{color:var(--danger);opacity:.75}.station-more{display:flex;align-items:center;justify-content:center;gap:8px;padding:18px;color:var(--text-faint);font-size:12px}.icon{display:grid;place-items:center;flex:none;width:38px;height:38px;margin-right:4px;border-radius:9px;color:var(--text-faint);opacity:.6;transition:opacity .15s,background .15s,color .15s}.station:hover .icon,.station.is-selected .icon,.icon:focus-visible,.icon.is-on{opacity:1}.icon:hover{background:var(--border);color:var(--text)}.icon.is-on{color:var(--warm)}.player{flex:none;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px 14px;padding:14px 16px calc(16px + env(safe-area-inset-bottom));border-top:1px solid var(--border);background:var(--surface)}.player-identity{min-width:0}.status{display:inline-flex;align-items:center;gap:6px;font-size:10.5px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--text-faint)}.status-dot{width:6px;height:6px;border-radius:999px;background:currentColor}.status-playing{color:var(--accent)}.status-playing .status-dot{animation:pulse 2s ease-in-out infinite}.status-connecting{color:var(--warm)}.status-error{color:var(--danger)}.player-name{margin:3px 0 1px;font-size:15.5px;letter-spacing:-.01em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.player-sub{display:flex;align-items:center;gap:6px;min-width:0;color:var(--text-dim);font-size:12px}.player-link{flex:none;color:var(--text-faint);line-height:0}.player-link:hover{color:var(--accent)}.player-error{margin-top:5px;color:var(--danger);font-size:11.5px}.player-note{margin-top:5px;color:var(--text-faint);font-size:11.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.player-actions{display:flex;align-items:center;gap:6px}.player-volume{grid-column:1 / -1;display:flex;align-items:center;gap:10px}.control{display:grid;place-items:center;flex:none;width:38px;height:38px;border:1px solid var(--border-strong);border-radius:10px;color:var(--text);transition:background .15s,border-color .15s,color .15s,transform .1s}.control:hover:not(:disabled){background:var(--surface-2);border-color:var(--accent);color:var(--accent)}.control:active:not(:disabled){transform:scale(.94)}.control:disabled{opacity:.32;cursor:default}.control.is-on{color:var(--warm);border-color:color-mix(in srgb,var(--warm) 50%,transparent)}.control-primary{width:46px;height:46px;border:none;border-radius:999px;background:var(--accent);color:var(--accent-ink);box-shadow:var(--shadow-sm)}.control-primary:hover:not(:disabled){background:var(--accent);color:var(--accent-ink);filter:brightness(1.08)}.control-quiet{border-color:transparent;color:var(--text-dim)}.volume-slider{flex:1 1 auto;min-width:0;height:4px;-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:999px;background:var(--border-strong);cursor:pointer}.volume-slider::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:14px;height:14px;border:none;border-radius:999px;background:var(--text);box-shadow:var(--shadow-sm)}.volume-slider::-moz-range-thumb{width:14px;height:14px;border:none;border-radius:999px;background:var(--text)}.scrim,.mini,.grabber{display:none}@media (max-width: 860px){.app{display:block}.stage{position:absolute;inset:0 0 var(--mini) 0}.stage-foot{bottom:14px}.scrim{display:block;position:fixed;top:0;right:0;bottom:0;left:0;z-index:25;border-radius:0;background:#02040a80;opacity:0;pointer-events:none;transition:opacity .32s var(--ease)}.app[data-sheet=full] .scrim{opacity:1;pointer-events:auto}.mini{display:block;position:fixed;left:0;right:0;bottom:0;z-index:20;height:var(--mini);padding:5px 12px env(safe-area-inset-bottom);border-top:1px solid var(--border);background:var(--raised);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);touch-action:none;transition:opacity .24s var(--ease)}.app[data-sheet=full] .mini{opacity:0;pointer-events:none}.mini-row{display:flex;align-items:center;gap:10px}.mini-body{display:grid;gap:1px;flex:1 1 auto;min-width:0;text-align:left}.mini-name{overflow:hidden;font-size:14px;font-weight:600;text-overflow:ellipsis;white-space:nowrap}.mini-meta{display:flex;align-items:center;gap:6px;overflow:hidden;color:var(--text-dim);font-size:11.5px;text-overflow:ellipsis;white-space:nowrap}.grabber{display:grid;place-items:center;flex:none;width:100%;height:22px;touch-action:none}.grabber-bar{display:block;width:38px;height:4px;margin:5px auto 0;border-radius:999px;background:var(--border-strong)}.panel{position:fixed;left:0;right:0;bottom:0;z-index:30;height:var(--sheet);border-left:none;border-top:1px solid var(--border);border-radius:var(--radius-lg) var(--radius-lg) 0 0;box-shadow:var(--shadow-lg);visibility:hidden;transform:translate3d(0,100%,0);transition:transform .38s var(--ease),visibility 0s linear .38s;will-change:transform}.app[data-sheet=full] .panel{visibility:visible;transform:translateZ(0);transition:transform .38s var(--ease),visibility 0s}.panel[data-dragging]{visibility:visible;transition:none}.panel-head{padding-top:4px}.tab{max-width:40%;height:34px}.player-volume{display:none}}@media (pointer: coarse){.control{width:44px;height:44px}.control-primary{width:50px;height:50px}.ghost{width:40px;height:40px}.icon{width:44px;height:44px;opacity:1}.station-main{min-height:58px}}.bars{display:flex;align-items:flex-end;gap:2px;height:13px}.bars i{width:2px;height:4px;border-radius:1px;background:currentColor;animation:equalise .9s ease-in-out infinite}.bars i:nth-child(2){animation-delay:.15s}.bars i:nth-child(3){animation-delay:.3s}.spinner{display:block;flex:none;width:15px;height:15px;border:2px solid var(--border-strong);border-top-color:var(--accent);border-radius:999px;animation:spin .7s linear infinite}@keyframes equalise{0%,to{height:4px}50%{height:13px}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.3}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.bars i{height:9px}}
