@import url('https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500&display=swap');
:root{color-scheme:dark}*{box-sizing:border-box}body{margin:0;background:#000;color:#d5d9e0;font:16px Arial,sans-serif}button,input{font:inherit;color:inherit}button{cursor:pointer}a{color:inherit;text-decoration:none}button,a,input{outline-offset:5px}button:focus-visible,a:focus-visible,input:focus-visible{outline:2px solid #a7bddc}header{height:94px;max-width:1450px;margin:auto;padding:0 45px;display:flex;align-items:center;gap:25px;border-bottom:1px solid #242629}.logo{font:italic 34px Georgia,serif;letter-spacing:-2px}header>span{font:10px 'IBM Plex Mono',monospace;color:#777f8a;margin:auto;letter-spacing:1px}.search{display:flex;gap:10px;align-items:center;border-bottom:1px solid #40444b;padding:9px 0;width:190px}.search input{background:none;border:0;width:100%;min-width:0;font-size:12px}.search input::placeholder{color:#9096a0}main{max-width:1400px;margin:0 auto;padding:24px 40px 30px}.topline{display:flex;justify-content:space-between;font:10px 'IBM Plex Mono',monospace;letter-spacing:1px;color:#828b97}.workspace{display:grid;grid-template-columns:minmax(170px,1fr) minmax(360px,560px) minmax(170px,1fr);gap:35px;align-items:start;margin-top:34px}.stations{padding-top:75px}.stations h2{font:11px 'IBM Plex Mono',monospace;letter-spacing:2px;color:#8c94a1;border-bottom:1px solid #363a40;padding-bottom:19px;margin:0 0 4px}.station{display:block;width:100%;text-align:left;border:0;border-bottom:1px solid #292d33;background:none;padding:23px 12px;position:relative}.station:hover{background:#111318}.station.active{background:#11151b;box-shadow:inset 2px 0 #a8b9d1}.station-top{display:flex;justify-content:space-between;color:#a4adb9;font:10px 'IBM Plex Mono',monospace;letter-spacing:1px}.station strong{display:block;font:italic 30px Georgia,serif;color:#d9dfe9;margin:17px 0 9px}.station small{display:block;font-size:12px;line-height:1.65;color:#9da5b1}.station .provider{font:9px 'IBM Plex Mono',monospace;margin-top:20px;color:#6e7887;letter-spacing:.7px}.deck{min-width:0;text-align:center}.deck-top{display:flex;justify-content:space-between;align-items:center;font:9px 'IBM Plex Mono',monospace;letter-spacing:1px;color:#8e99a9;padding:0 24px}.device{position:relative;width:100%;aspect-ratio:1;margin:8px 0 -4px;isolation:isolate}.device>.base,.arm,.hub{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}.disc-window{position:absolute;left:20.8%;top:17.2%;width:67%;height:67%;border-radius:50%;overflow:hidden}.disc-window img{width:100%;height:100%;object-fit:cover;border-radius:50%;animation:spin 4s linear infinite;animation-play-state:paused}.device.is-playing .disc-window img{animation-play-state:running}.arm{clip-path:polygon(0 0,28% 0,28% 25%,42% 28%,47% 37%,46% 70%,38% 77%,30% 100%,0 100%)}.hub{clip-path:circle(13% at 53% 51%)}@keyframes spin{to{transform:rotate(360deg)}}.controls{display:flex;justify-content:center;align-items:center;gap:32px;margin:4px 0 25px}.controls button{width:43px;height:43px;border:1px solid #343c48;background:#090b0e;color:#c6d2e2;font-size:17px}.controls #play{width:57px;height:46px;background:#1b222c;border-color:#66758a}.controls button:hover{background:#303c4c}.song{min-height:114px;padding:0 12px}.caption{font:9px 'IBM Plex Mono',monospace;letter-spacing:2px;color:#7f8b9e}.song h1{font-size:23px;font-weight:400;line-height:1.3;margin:12px 0 8px;overflow-wrap:anywhere}.song p{font-size:14px;color:#a4b0c0;margin:0 0 10px}.song>span:last-child{font:10px 'IBM Plex Mono',monospace;color:#727f91}.volume{display:flex;align-items:center;justify-content:center;gap:14px;font-size:13px;color:#8593a7;margin-top:25px}.volume input{width:130px;height:3px;accent-color:#a2b5d2;cursor:pointer}#status{font-size:12px;line-height:1.6;color:#b2c0d5;min-height:19px;margin:15px 0 0}#empty{text-align:center;color:#aeb8c8;font-size:14px}footer{max-width:1360px;margin:5px auto 0;border-top:1px solid #24282e;padding:25px 40px;display:flex;justify-content:space-between;gap:25px;align-items:center;font:9px 'IBM Plex Mono',monospace;color:#798493;letter-spacing:.5px}footer p{font:11px Arial,sans-serif;margin:0}footer a:hover{color:#d8e2ef}
@media(min-width:1500px){.workspace{gap:55px;margin-top:40px}.stations{padding-top:100px}.station{padding:27px 18px}}
@media(max-width:1000px){header{padding:0 24px}header>span{display:none}.search{margin-left:auto}main{padding:24px}.workspace{gap:16px;grid-template-columns:minmax(145px,1fr) minmax(300px,1.8fr) minmax(145px,1fr)}.station{padding:18px 8px}.station strong{font-size:25px}.station small{font-size:11px}.stations{padding-top:45px}.controls{margin-top:8px}.song h1{font-size:21px}}
@media(max-width:720px){header{height:77px;padding:0 20px}.logo{font-size:29px}.search{width:145px}.search input{font-size:11px}main{padding:20px 16px}.topline{font-size:8px}.workspace{display:grid;grid-template-columns:1fr 1fr;gap:20px 12px;margin-top:25px}.deck{grid-column:1/-1;grid-row:1;width:100%;max-width:480px;justify-self:center}.stations{padding-top:0}.station{padding:17px 10px}.station strong{font-size:25px;margin:12px 0 8px}.station small{font-size:12px}.station .provider{font-size:8px}.stations h2{font-size:9px;padding-bottom:13px}.controls{margin-bottom:23px}.song h1{font-size:24px}.volume{margin-top:20px}footer{padding:20px 16px;flex-wrap:wrap;font-size:8px;gap:15px}footer p{order:3;width:100%;line-height:1.6;font-size:11px}footer a{margin-left:auto}}
@media(prefers-reduced-motion:reduce){.disc-window img{animation-duration:16s}}

.frame{position:absolute;inset:0;width:100%;height:100%;clip-path:url(#frame-mask)}

.stations{padding-top:40px}.station{padding:17px 12px}.station strong{font-size:26px;margin:12px 0 7px}.station .provider{margin-top:12px}.deck{position:sticky;top:20px}@media(max-width:720px){.deck{position:relative;top:auto}.stations{padding-top:0}.station strong{font-size:23px}.station .provider{font-size:8px}}

.device svg{width:100%;height:100%;display:block;overflow:visible}.device #disc{transform-origin:665px 620px;animation:spin 4s linear infinite;animation-play-state:paused}.device.is-playing #disc{animation-play-state:running}@media(prefers-reduced-motion:reduce){.device #disc{animation-duration:16s}}

/* Ambient motion */
body::before{content:"";position:fixed;inset:-15%;pointer-events:none;z-index:-1;background:radial-gradient(1px 1px at 13% 21%,#b8cde8 70%,transparent),radial-gradient(1px 1px at 72% 15%,#8e9ebc 70%,transparent),radial-gradient(1px 1px at 29% 74%,#788ba9 70%,transparent),radial-gradient(1px 1px at 83% 64%,#a2bada 70%,transparent),radial-gradient(1px 1px at 56% 39%,#7188ac 70%,transparent);background-size:281px 307px,431px 397px,373px 269px,521px 463px,307px 541px;opacity:.3;animation:drift 45s ease-in-out infinite alternate}
body{isolation:isolate}main{padding-bottom:45px}.device::before{content:"";position:absolute;inset:12%;z-index:-1;border-radius:50%;background:radial-gradient(circle,#597caf20 0%,#334c7720 35%,transparent 70%);filter:blur(25px);opacity:.3;transition:opacity 1.5s}.device.is-playing::before{opacity:1;animation:breathe 7s ease-in-out infinite}.device{transition:filter 1s}.device.is-playing{filter:drop-shadow(0 0 16px #7c9bd21a)}
header{animation:arrive .8s ease both}.deck{animation:arrive 1s .1s ease both}.stations{animation:arrive .9s .2s ease both}.right{animation-delay:.35s}.station{transition:background .25s,box-shadow .25s,transform .25s}.station:hover{transform:translateX(3px);box-shadow:inset 2px 0 #91add5,0 0 25px #35527a18}.right .station:hover{transform:translateX(-3px)}.station strong{transition:color .25s,letter-spacing .25s}.station:hover strong{color:#e4edff;letter-spacing:.4px}.controls button{transition:transform .2s,box-shadow .25s,background .25s}.controls button:hover{transform:translateY(-2px);box-shadow:0 0 18px #7295c32b}.controls button:active{transform:scale(.92)}.logo{transition:text-shadow .35s}.logo:hover{text-shadow:0 0 17px #aec6ee80}.signal-bars{height:30px;display:flex;align-items:center;justify-content:center;gap:4px;margin:-4px 0 15px;opacity:.3;transition:opacity 1s}.signal-bars i{height:var(--h);width:2px;background:#8ea9ce;transform:scaleY(.1);transform-origin:center;animation:signal calc(.65s + var(--i)*.031s) ease-in-out infinite alternate;animation-delay:calc(var(--i)*-.09s);animation-play-state:paused}.deck:has(.is-playing) .signal-bars{opacity:.75}.deck:has(.is-playing) .signal-bars i{animation-play-state:running}.volume output{font:10px 'IBM Plex Mono',monospace;min-width:30px;color:#aebfda}.volume input{transition:filter .3s}.volume input:hover{filter:drop-shadow(0 0 4px #abc5ec)}.stations{padding-top:25px}.station{padding:15px 12px}.station strong{font-size:24px}.station .provider{margin-top:8px}
@keyframes drift{to{transform:translate3d(12px,-45px,0)}}@keyframes breathe{50%{transform:scale(1.14);opacity:.55}}@keyframes arrive{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes signal{from{transform:scaleY(.15)}to{transform:scaleY(.95)}}
@media(prefers-reduced-motion:reduce){body::before,header,.deck,.stations,.device::before,.signal-bars i{animation:none!important}.station,.controls button,.logo,.device,.volume input{transition:none!important}.signal-bars i{transform:scaleY(.15)}.deck:has(.is-playing) .signal-bars i{transform:scaleY(.5)}}
@media(max-width:720px){.stations{padding-top:0}.station strong{font-size:22px}.signal-bars{margin-top:0}.device::before{filter:blur(15px)}}

.genre-search{margin:0 0 22px auto;width:180px}.topline{border-top:1px solid #242629;padding-top:20px}@media(max-width:720px){.genre-search{width:150px;margin-bottom:17px}}

@media(min-width:721px){.stations>div{max-height:78vh;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#455266 #080a0d;padding-right:5px}.stations h2{margin-bottom:10px}}

/* Compact station matrix */
.workspace{grid-template-columns:minmax(240px,1fr) minmax(340px,510px) minmax(240px,1fr);gap:25px}.stations{padding-top:40px}.stations>div{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;max-height:none;overflow:visible;padding:0}.station{height:92px;padding:12px 10px;border:1px solid #252b34;box-shadow:none;text-align:left;min-width:0;display:flex;flex-direction:column;justify-content:space-between;background:#080a0e}.station.active{border-color:#8096b6;background:#141c28;box-shadow:inset 0 0 20px #617ea312}.station-top{font-size:8px;letter-spacing:.5px}.station strong{font:14px/1.35 Arial,sans-serif;letter-spacing:0!important;margin:6px 0 0;overflow-wrap:anywhere}.station small,.station .provider{display:none}.station:hover,.right .station:hover{transform:translateY(-2px);border-color:#7e96b7;box-shadow:0 4px 18px #0008}.station:active{transform:scale(.97)}.stations h2{padding-bottom:14px;margin-bottom:12px}.deck{position:relative;top:auto}
@media(min-width:1500px){.workspace{gap:32px}.station{height:100px;padding:13px}.station strong{font-size:15px}}
@media(max-width:1100px){.workspace{grid-template-columns:minmax(185px,1fr) minmax(300px,1.5fr) minmax(185px,1fr);gap:15px}.station{height:91px;padding:10px 8px}.station strong{font-size:12px}.station-top{font-size:7px}}
@media(max-width:800px){.workspace{grid-template-columns:1fr 1fr;gap:20px 12px}.deck{grid-column:1/-1;grid-row:1;max-width:440px;width:100%;justify-self:center}.stations{padding-top:0}.stations>div{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}.station{height:85px;padding:10px 8px}.station strong{font-size:12px}.station-top{font-size:7px}}
@media(max-width:380px){.workspace{column-gap:8px}.station{padding:8px 6px}.station strong{font-size:11px}.station-top{font-size:6px}}

.station-top{font-size:10px}.station strong{font-size:14px}@media(max-width:1100px){.station-top{font-size:9px}.station strong{font-size:12px}}@media(max-width:380px){.station-top{font-size:9px}.station strong{font-size:12px}.station{height:95px}}

/* Slim single-column station rails */
.workspace{grid-template-columns:minmax(185px,1fr) minmax(340px,560px) minmax(185px,1fr);gap:40px}
.stations>div{grid-template-columns:minmax(0,1fr);gap:0;max-height:none;overflow:visible}
.station{height:43px;min-height:43px;padding:0 11px;display:grid;grid-template-columns:20px minmax(0,1fr);align-items:center;gap:10px;background:transparent;border:0;border-bottom:1px solid #20252c}
.station-top{font-size:0;display:block}.station-top>span:first-child{font-size:10px;display:block;width:16px;overflow:hidden;white-space:nowrap}.station-top>span:last-child{display:none}
.station strong{font:13px/1.35 Arial,sans-serif;margin:0;letter-spacing:0!important;overflow-wrap:normal}
.station.active{background:#111821;box-shadow:inset 2px 0 #a3b9d8;border-color:#29313e}
.station:hover,.right .station:hover{transform:none;background:#10161e;box-shadow:inset 2px 0 #6d86a9}
.stations{padding-top:40px}.stations h2{margin-bottom:8px}
@media(min-width:1500px){.station{height:46px;min-height:46px}.station strong{font-size:14px}}
@media(max-width:1100px){.workspace{grid-template-columns:minmax(165px,1fr) minmax(300px,1.7fr) minmax(165px,1fr);gap:20px}.station{padding:0 7px;gap:7px}.station strong{font-size:12px}}
@media(max-width:800px){.workspace{grid-template-columns:1fr 1fr;gap:24px 18px}.stations{padding-top:0}.stations>div{grid-template-columns:1fr}.station{height:46px;min-height:46px}.station strong{font-size:12px}}
